+ );
+}
+
+export default Content;
diff --git a/packages/react/src/components/cookieConsent/__storybook__/Demo.tsx b/packages/react/src/components/cookieConsent/__storybook__/Demo.tsx
new file mode 100644
index 0000000000..085ba99e75
--- /dev/null
+++ b/packages/react/src/components/cookieConsent/__storybook__/Demo.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+
+import Application from './Application';
+import { CookieConsent } from '../CookieConsent';
+
+function Demo(): React.ReactElement {
+ return (
+
+
+
+
+ );
+}
+
+export default Demo;
diff --git a/packages/react/src/components/cookieConsent/__storybook__/Details.tsx b/packages/react/src/components/cookieConsent/__storybook__/Details.tsx
new file mode 100644
index 0000000000..132b114e83
--- /dev/null
+++ b/packages/react/src/components/cookieConsent/__storybook__/Details.tsx
@@ -0,0 +1,46 @@
+import React from 'react';
+
+import styles from './styles.module.scss';
+import { ViewProps } from '../types';
+import RequiredConsents from './RequiredConsents';
+import OptionalConsents from './OptionalConsents';
+import { Button } from '../../button/Button';
+
+function Details({ onClick }: ViewProps): React.ReactElement {
+ return (
+
+
+ Tietoa sivustolla käytetyistä evästeistä
+
+
+ Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta
+ kategoriasta ja sallia tai kieltää evästeiden käytön.
+
+ Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
+ Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
+ näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
+ käytön.
+
+
+ Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
+ Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
+ näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
+ käytön.
+
-
);
}
diff --git a/packages/react/src/components/cookieConsent/details/Details.tsx b/packages/react/src/components/cookieConsent/details/Details.tsx
index fea8731e50..fca58b9456 100644
--- a/packages/react/src/components/cookieConsent/details/Details.tsx
+++ b/packages/react/src/components/cookieConsent/details/Details.tsx
@@ -8,14 +8,7 @@ import OptionalConsents from '../optionalConsents/OptionalConsents';
function Details({ onClick }: ViewProps): React.ReactElement {
return (
- Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
- Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
- näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
- käytön.
-
Evästesuostumukset
@@ -40,7 +39,7 @@ function Content({ onClick }: ViewProps): React.ReactElement {
FI
-
+
Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
diff --git a/packages/react/src/components/cookieConsent/details/Details.tsx b/packages/react/src/components/cookieConsent/details/Details.tsx
index fca58b9456..d8c5d86839 100644
--- a/packages/react/src/components/cookieConsent/details/Details.tsx
+++ b/packages/react/src/components/cookieConsent/details/Details.tsx
@@ -8,7 +8,7 @@ import OptionalConsents from '../optionalConsents/OptionalConsents';
function Details({ onClick }: ViewProps): React.ReactElement {
return (
-
+
Tietoa sivustolla käytetyistä evästeistä
diff --git a/packages/react/src/components/cookieConsent/optionalConsents/OptionalConsents.tsx b/packages/react/src/components/cookieConsent/optionalConsents/OptionalConsents.tsx
index 3ff2412995..2a3e16c151 100644
--- a/packages/react/src/components/cookieConsent/optionalConsents/OptionalConsents.tsx
+++ b/packages/react/src/components/cookieConsent/optionalConsents/OptionalConsents.tsx
@@ -32,7 +32,7 @@ function OptionalConsents({ onClick }: ViewProps): React.ReactElement {
}));
return (
<>
-
+
Muut evästeet
Voit hyväksyä tai jättää hyväksymättä muut evästeet.
- Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
- Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
- näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
- käytön.
-
+
{mainText}
- Tietoa sivustolla käytetyistä evästeistä
+ {detailsTitle}
-
- Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta
- kategoriasta ja sallia tai kieltää evästeiden käytön.
-
+ Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
+ Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
+ näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
+ käytön.
+
+
+
+
+
+ Näytä asetukset
+
+
+
+
+
+ Tietoa sivustolla käytetyistä evästeistä
+
+
+ Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta
+ kategoriasta ja sallia tai kieltää evästeiden käytön.
+
+
+ Välttämättömät evästeet
+
+
+ Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat sivuston käyttäjäystävällisyyteen.
+
+
+
+
+
+
+
+
+ - requiredConsent1Text
+
+
+
+
+
+
+
+
+ - requiredConsent2Text
+
+
+
+
+ Muut evästeet
+
+
+ Voit hyväksyä tai jättää hyväksymättä muut evästeet.
+
+
+
+
+
+
+
+
+ - optionalConsent1Text
+
+
+
+
+
+
+
+
+ - optionalConsent2Text
+
+
+
+
+
+
+
+
+ Hyväksy kaikki evästeet
+
+
+
+
+ Hyväksy vain pakolliset evästeet
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/react/src/components/cookieConsent/test.util.ts b/packages/react/src/components/cookieConsent/test.util.ts
index 3c9c126bdf..b4c9a289af 100644
--- a/packages/react/src/components/cookieConsent/test.util.ts
+++ b/packages/react/src/components/cookieConsent/test.util.ts
@@ -30,13 +30,27 @@ export function extractSetCookieArguments(
export const getContent = (): Content => {
return {
+ mainTitle: 'Evästesuostumukset',
+ mainText: `Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
+ Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
+ näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
+ käytön.`,
+ detailsTitle: 'Tietoa sivustolla käytetyistä evästeistä',
+ detailsText: `Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta
+ kategoriasta ja sallia tai kieltää evästeiden käytön.`,
+ requiredConsentsTitle: 'Välttämättömät evästeet',
+ requiredConsentsText:
+ 'Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat sivuston käyttäjäystävällisyyteen.',
+ optionalConsentsTitle: 'Muut evästeet',
+ optionalConsentsText: 'Voit hyväksyä tai jättää hyväksymättä muut evästeet.',
consents: {},
- approveAllConsents: 'approveAllConsents',
- approveRequiredAndSelectedConsents: 'approveRequiredAndSelectedConsents',
- approveOnlyRequiredConsents: 'approveOnlyRequiredConsents',
- showSettings: 'showSettings',
- hideSettings: 'hideSettings',
- language: 'af',
- languageOptions: [{ code: 'af', label: 'AF' }],
+ approveAllConsents: 'Hyväksy kaikki evästeet',
+ approveRequiredAndSelectedConsents: 'Hyväksy valitut ja pakolliset evästeet',
+ approveOnlyRequiredConsents: 'Hyväksy vain pakolliset evästeet',
+ showSettings: 'Näytä asetukset',
+ hideSettings: 'Piilota asetukset',
+ language: 'fi',
+ languageOptions: [{ code: 'fi', label: 'Suomeksi (FI)' }],
+ languageSelectorAriaLabel: 'Kieli: Suomi. Vaihda kieli. Change language. Ändra språk.',
} as Content;
};
From 296e3b1f9ffd33a086d2ac065c697427d0c236f2 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Fri, 21 Jan 2022 17:00:43 +0200
Subject: [PATCH 037/292] Reformat code
---
.../src/components/cookieConsent/CookieConsent.test.tsx | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.test.tsx b/packages/react/src/components/cookieConsent/CookieConsent.test.tsx
index f6700abd52..97e93c44d1 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.test.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsent.test.tsx
@@ -176,6 +176,7 @@ describe(' ', () => {
verifyElementExistsByTestId(result, dataTestIds.screenReaderNotification);
expect(mockedCookieControls.mockSet).toHaveBeenCalledTimes(1);
};
+
it('Approve -button approves all consents when details are not shown', () => {
const result = renderCookieConsent(defaultConsentData);
const consentResult = {
@@ -188,6 +189,7 @@ describe(' ', () => {
clickElement(result, dataTestIds.approveButton);
checkCookiesAreSetAndConsentModalHidden(result, consentResult);
});
+
it('Approve required -button approves only required consents and clears selected consents', async () => {
const result = renderCookieConsent(defaultConsentData);
const consentResult = {
@@ -203,6 +205,7 @@ describe(' ', () => {
clickElement(result, dataTestIds.approveRequiredButton);
checkCookiesAreSetAndConsentModalHidden(result, consentResult);
});
+
it('Close -button will approve only required consents when details are not shown', () => {
const result = renderCookieConsent(defaultConsentData);
const consentResult = {
@@ -215,6 +218,7 @@ describe(' ', () => {
clickElement(result, dataTestIds.closeButton);
checkCookiesAreSetAndConsentModalHidden(result, consentResult);
});
+
it('Close -button will approve required and selected consents when details are shown', async () => {
const result = renderCookieConsent(defaultConsentData);
const consentResult = {
@@ -229,6 +233,7 @@ describe(' ', () => {
clickElement(result, dataTestIds.closeButton);
checkCookiesAreSetAndConsentModalHidden(result, consentResult);
});
+
it('Approve -button will approve required and selected consents when details are shown', async () => {
const result = renderCookieConsent(defaultConsentData);
const consentResult = {
@@ -251,6 +256,7 @@ describe(' ', () => {
await openAccordion(result);
return result;
};
+
it('required and optional consents are rendered', async () => {
const result = await initDetailsView(defaultConsentData);
defaultConsentData.requiredConsents.forEach((consent) => {
@@ -260,6 +266,7 @@ describe(' ', () => {
verifyElementExistsByTestId(result, dataTestIds.getOptionalConsentId(consent));
});
});
+
it('Approve and close button texts change when accordion is open vs closed', async () => {
const result = await initDetailsView(defaultConsentData);
const approveButtonTextWhileOpen = (result.getByTestId(dataTestIds.approveButton) as HTMLElement).innerHTML;
From e94ec3329f3f57277df472ab7e26afe3ee1dc714 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Fri, 21 Jan 2022 17:00:51 +0200
Subject: [PATCH 038/292] Add initial loki-test reference images
---
.../chrome_iphone7_Components_CookieConsent_Example.png | 3 +++
.../chrome_laptop_Components_CookieConsent_Example.png | 3 +++
2 files changed, 6 insertions(+)
create mode 100644 packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Example.png
create mode 100644 packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Example.png
diff --git a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Example.png b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Example.png
new file mode 100644
index 0000000000..eef91aae9f
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Example.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9fcfa21635b58f6ff9780bceeedeaaefb9aeafcf84b20df768759bd4bbf3f06e
+size 95047
diff --git a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Example.png b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Example.png
new file mode 100644
index 0000000000..d3c871fd91
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Example.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43ba8d76623752b35383a8d23e54695a28c2e2c438035a5c3dad4257080f6f24
+size 37860
From e872d7251a51444706fc53feb6f519a6b9a36020 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Mon, 24 Jan 2022 08:43:49 +0200
Subject: [PATCH 039/292] Reformat code
---
.../src/components/cookieConsent/CookieConsent.test.tsx | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.test.tsx b/packages/react/src/components/cookieConsent/CookieConsent.test.tsx
index 97e93c44d1..07f1e12938 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.test.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsent.test.tsx
@@ -43,7 +43,11 @@ const renderCookieConsent = (
jest.useFakeTimers();
mockedCookieControls.init({ [COOKIE_NAME]: JSON.stringify(cookieWithInjectedUnknowns) });
const result = render(
-
+ ,
);
From 0bc0168a68e6b73973259c705c422b3b303c1623 Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Mon, 24 Jan 2022 09:31:18 +0200
Subject: [PATCH 040/292] Test onLanguageChange is called
Added second language to test content.
Updated snapshot
---
.../cookieConsent/CookieConsent.test.tsx | 22 +++++++++++++------
.../__snapshots__/CookieConsent.test.tsx.snap | 11 ++++++++++
.../src/components/cookieConsent/test.util.ts | 5 ++++-
3 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.test.tsx b/packages/react/src/components/cookieConsent/CookieConsent.test.tsx
index 07f1e12938..0ff15357e3 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.test.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsent.test.tsx
@@ -7,7 +7,7 @@ import { act } from 'react-dom/test-utils';
import { CookieConsent } from './CookieConsent';
import { ConsentList, ConsentObject, COOKIE_NAME } from './cookieConsentController';
-import { Provider as CookieContextProvider } from './CookieConsentContext';
+import { Content, Provider as CookieContextProvider } from './CookieConsentContext';
import mockDocumentCookie from './__mocks__/mockDocumentCookie';
import { extractSetCookieArguments, getContent } from './test.util';
@@ -15,6 +15,7 @@ type ConsentData = {
requiredConsents?: ConsentList;
optionalConsents?: ConsentList;
cookie?: ConsentObject;
+ contentOverrides?: Partial;
};
const defaultConsentData = {
@@ -31,7 +32,7 @@ const unknownConsents = {
const mockedCookieControls = mockDocumentCookie();
const renderCookieConsent = (
- { requiredConsents = [], optionalConsents = [], cookie = {} }: ConsentData,
+ { requiredConsents = [], optionalConsents = [], cookie = {}, contentOverrides = {} }: ConsentData,
withRealTimers = false,
): RenderResult => {
// inject unknown consents to verify those are
@@ -40,14 +41,14 @@ const renderCookieConsent = (
...cookie,
...unknownConsents,
};
+ const content = {
+ ...getContent(),
+ ...contentOverrides,
+ };
jest.useFakeTimers();
mockedCookieControls.init({ [COOKIE_NAME]: JSON.stringify(cookieWithInjectedUnknowns) });
const result = render(
-
+ ,
);
@@ -168,6 +169,13 @@ describe(' ', () => {
verifyElementDoesNotExistsByTestId(result, dataTestIds.container);
verifyElementDoesNotExistsByTestId(result, dataTestIds.screenReaderNotification);
});
+ it('changing language calls content.onLanguageChange', () => {
+ const onLanguageChange = jest.fn();
+ const result = renderCookieConsent({ ...defaultConsentData, contentOverrides: { onLanguageChange } });
+ result.container.querySelector('#cookie-consent-language-selector-button').click();
+ result.container.querySelector('a[lang="sv"]').click();
+ expect(onLanguageChange).toHaveBeenLastCalledWith('sv');
+ });
});
describe(`Approve and close buttons will
diff --git a/packages/react/src/components/cookieConsent/__snapshots__/CookieConsent.test.tsx.snap b/packages/react/src/components/cookieConsent/__snapshots__/CookieConsent.test.tsx.snap
index add601453c..7f56ab9fce 100644
--- a/packages/react/src/components/cookieConsent/__snapshots__/CookieConsent.test.tsx.snap
+++ b/packages/react/src/components/cookieConsent/__snapshots__/CookieConsent.test.tsx.snap
@@ -86,6 +86,17 @@ exports[` spec renders the component 1`] = `
Suomeksi (FI)
+
+
+ På svenska (SV)
+
+
diff --git a/packages/react/src/components/cookieConsent/test.util.ts b/packages/react/src/components/cookieConsent/test.util.ts
index b4c9a289af..2b4b5454ff 100644
--- a/packages/react/src/components/cookieConsent/test.util.ts
+++ b/packages/react/src/components/cookieConsent/test.util.ts
@@ -50,7 +50,10 @@ export const getContent = (): Content => {
showSettings: 'Näytä asetukset',
hideSettings: 'Piilota asetukset',
language: 'fi',
- languageOptions: [{ code: 'fi', label: 'Suomeksi (FI)' }],
+ languageOptions: [
+ { code: 'fi', label: 'Suomeksi (FI)' },
+ { code: 'sv', label: 'På svenska (SV)' },
+ ],
languageSelectorAriaLabel: 'Kieli: Suomi. Vaihda kieli. Change language. Ändra språk.',
} as Content;
};
From 4f5eef609e5bb9efc5a2194cacd12e3687d5bc54 Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Mon, 24 Jan 2022 15:20:35 +0200
Subject: [PATCH 041/292] Focus an element when CookieConsent is closed
Also improved matomo related commenting in onConsentsParsed and onAllConsentsGiven
---
.../cookieConsent/CookieConsent.stories.tsx | 22 +++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
index c43eb8fb3e..0524dc195a 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
@@ -21,7 +21,10 @@ export const Example = () => {
style={willRenderCookieConsentDialog ? { overflow: 'hidden', maxHeight: '100vh' } : {}}
aria-hidden={willRenderCookieConsentDialog ? 'true' : 'false'}
>
-
Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
- Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
- näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
- käytön.
+ Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
+ näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
+ käytön.
spec renders the component 1`] = `
Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta
- kategoriasta ja sallia tai kieltää evästeiden käytön.
-
-
- Välttämättömät evästeet
-
-
- Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat sivuston käyttäjäystävällisyyteen.
+ kategoriasta ja sallia tai kieltää evästeiden käytön.
-
-
+
-
- - requiredConsent1Text
-
-
-
-
-
-
+
+
+ Consent group description for requiredConsentGroup0
+
+
+ checkboxAriaLabel for requiredConsentGroup0
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ Host name
+
+
+ Path
+
+
+ Description
+
+
+ Expiration
+
+
+
+
+
+
+ Name of requiredConsent1
+
+
+ HostName of requiredConsent1
+
+
+ Path of requiredConsent1
+
+
+ Description of requiredConsent1
+
+
+ Expiration of requiredConsent1
+
+
+
+
+ Name of requiredConsent2
+
+
+ HostName of requiredConsent2
+
+
+ Path of requiredConsent2
+
+
+ Description of requiredConsent2
+
+
+ Expiration of requiredConsent2
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ Name of requiredConsent1
+
+
+
+
+ Host name
+
+
+ HostName of requiredConsent1
+
+
+
+ );
+}
diff --git a/packages/react/src/components/cookieConsent/page/__snapshots__/Page.test.tsx.snap b/packages/react/src/components/cookieConsent/page/__snapshots__/Page.test.tsx.snap
new file mode 100644
index 0000000000..731f92ae4a
--- /dev/null
+++ b/packages/react/src/components/cookieConsent/page/__snapshots__/Page.test.tsx.snap
@@ -0,0 +1,848 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[` spec renders the component 1`] = `
+
+
+
+
+
+ Evästesuostumukset
+
+
+ Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
+ Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
+ näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
+ käytön.
+
+
+
+
+ Tietoa sivustolla käytetyistä evästeistä
+
+
+ Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta
+ kategoriasta ja sallia tai kieltää evästeiden käytön.
+
+
+
+
+
+
+ Title for required consents
+
+
+
+
+ Text for required consents
+
+
+ checkboxAriaLabel
+
+
+
+
+
+
+
+
+ Consent group title for requiredConsentGroup0
+
+
+
+
+
+ Consent group description for requiredConsentGroup0
+
+
+ checkboxAriaLabel for requiredConsentGroup0
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ Host name
+
+
+ Path
+
+
+ Description
+
+
+ Expiration
+
+
+
+
+
+
+ Name of requiredConsent1
+
+
+ HostName of requiredConsent1
+
+
+ Path of requiredConsent1
+
+
+ Description of requiredConsent1
+
+
+ Expiration of requiredConsent1
+
+
+
+
+ Name of requiredConsent2
+
+
+ HostName of requiredConsent2
+
+
+ Path of requiredConsent2
+
+
+ Description of requiredConsent2
+
+
+ Expiration of requiredConsent2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Consent group title for requiredConsentGroup1
+
+
+
+
+
+ Consent group description for requiredConsentGroup1
+
+
+ checkboxAriaLabel for requiredConsentGroup1
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ Host name
+
+
+ Path
+
+
+ Description
+
+
+ Expiration
+
+
+
+
+
+
+ Name of requiredConsent3
+
+
+ HostName of requiredConsent3
+
+
+ Path of requiredConsent3
+
+
+ Description of requiredConsent3
+
+
+ Expiration of requiredConsent3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Title for optional consents
+
+
+
+
+ Text for optional consents
+
+
+ checkboxAriaLabel
+
+
+
+
+
+
+
+
+ Consent group title for optionalConsentGroups0
+
+
+
+
+
+ Consent group description for optionalConsentGroups0
+
+
+ checkboxAriaLabel for optionalConsentGroups0
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ Host name
+
+
+ Path
+
+
+ Description
+
+
+ Expiration
+
+
+
+
+
+
+ Name of optionalConsent1
+
+
+ HostName of optionalConsent1
+
+
+ Path of optionalConsent1
+
+
+ Description of optionalConsent1
+
+
+ Expiration of optionalConsent1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Consent group title for optionalConsentGroups1
+
+
+
+
+
+ Consent group description for optionalConsentGroups1
+
+
+ checkboxAriaLabel for optionalConsentGroups1
+
+
+
+
+
+
+
+
+
+
+
+ Name
+
+
+ Host name
+
+
+ Path
+
+
+ Description
+
+
+ Expiration
+
+
+
+
+
+
+ Name of optionalConsent2
+
+
+ HostName of optionalConsent2
+
+
+ Path of optionalConsent2
+
+
+ Description of optionalConsent2
+
+
+ Expiration of optionalConsent2
+
+
+
+
+ Name of optionalConsent3
+
+
+ HostName of optionalConsent3
+
+
+ Path of optionalConsent3
+
+
+ Description of optionalConsent3
+
+
+ Expiration of optionalConsent3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hyväksy valitut ja pakolliset evästeet
+
+
+
+
+ Hyväksy vain pakolliset evästeet
+
+
+
+
+
+
+`;
From 898817c95b14b4f0b6d8e9c7096668acee4bd989 Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Tue, 26 Apr 2022 09:42:00 +0300
Subject: [PATCH 075/292] cookie-consent Rename const for readability
---
.../src/components/cookieConsent/modal/Modal.tsx | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/modal/Modal.tsx b/packages/react/src/components/cookieConsent/modal/Modal.tsx
index 534111a080..91c8ab83d2 100644
--- a/packages/react/src/components/cookieConsent/modal/Modal.tsx
+++ b/packages/react/src/components/cookieConsent/modal/Modal.tsx
@@ -8,13 +8,13 @@ import Content from '../content/Content';
export function Modal(): React.ReactElement | null {
const cookieConsentContext = useContext(CookieConsentContext);
- const shouldShowCookieConsents = !cookieConsentContext.hasUserHandledAllConsents();
- const { settingsSaved } = useCookieConsentUiTexts();
- const [cookieConsentDialogIsShown] = useState(shouldShowCookieConsents);
+ const shouldShowModal = !cookieConsentContext.hasUserHandledAllConsents();
+ const [isModalInitiallyShown] = useState(shouldShowModal);
const [popupTimerComplete, setPopupTimerComplete] = useState(false);
const popupDelayInMs = 500;
- // if hasUserHandledAllConsents() was false at first and then later true, user must have saved them.
- const showScreenReaderSaveNotification = cookieConsentDialogIsShown && !shouldShowCookieConsents;
+ // if hasUserHandledAllConsents() was false at first and then later true, user must have saved consents.
+ const showScreenReaderSaveNotification = isModalInitiallyShown && !shouldShowModal;
+ const { settingsSaved } = useCookieConsentUiTexts();
useEffect(() => {
setTimeout(() => setPopupTimerComplete(true), popupDelayInMs);
}, []);
@@ -29,7 +29,7 @@ export function Modal(): React.ReactElement | null {
);
}
- if (!shouldShowCookieConsents) {
+ if (!shouldShowModal) {
return null;
}
From 08dd8c4c1cdfa84c30beedcc7b9db33468f8cb6b Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Tue, 26 Apr 2022 09:48:49 +0300
Subject: [PATCH 076/292] cookie-consent Adjust the modal height not to fill
whole view.
Added a long element to story, so the underlaying page has a scroll bar too.
---
.../cookieConsent/CookieConsent.module.scss | 5 ++---
.../cookieConsent/CookieConsent.stories.tsx | 17 ++++++++++++-----
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.module.scss b/packages/react/src/components/cookieConsent/CookieConsent.module.scss
index 925700160f..f3601472c2 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.module.scss
+++ b/packages/react/src/components/cookieConsent/CookieConsent.module.scss
@@ -13,7 +13,8 @@
z-index: 2;
width: 100%;
overflow-y: scroll;
- max-height: 100vh;
+ max-height: 80vh;
+ border-top: 8px solid var(--color-bus);
}
.container .aligner {
@@ -47,13 +48,11 @@
background: #ffffff;
width: 100%;
box-sizing: border-box;
- border-top: 8px solid var(--color-bus);
}
.page .content {
padding-top: 0;
padding-bottom: 0;
- border-top: 0;
}
.language-switcher {
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
index 5b25a57767..0c324d9e33 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
@@ -247,23 +247,29 @@ export const ModalVersion = () => {
);
};
+ const ForcePageScrollBarForModalTesting = () => {
+ return (
+
- Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
- Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
- näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
- käytön.
+ Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden käytön.
spec renders the component 1`] = `
Tietoa sivustolla käytetyistä evästeistä
- Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta
- kategoriasta ja sallia tai kieltää evästeiden käytön.
+ Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta kategoriasta ja sallia tai kieltää evästeiden käytön.
- Evästesuostumukset
+ Test site evästesuostumukset
- Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan.
- Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön
- näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden
- käytön.
+ Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden käytön.
spec renders the component 1`] = `
Tietoa sivustolla käytetyistä evästeistä
- Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta
- kategoriasta ja sallia tai kieltää evästeiden käytön.
+ Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta kategoriasta ja sallia tai kieltää evästeiden käytön.
- Text for required consents
+ Text for required cookies
spec renders the component 1`] = `
class="label"
for="required-consents-group-0-checkbox"
>
- Consent group title for requiredConsentGroup0
+ Cookie group title for requiredCookieGroup0
- Consent group description for requiredConsentGroup0
+ Cookie group description for requiredCookieGroup0
- checkboxAriaLabel for requiredConsentGroup0
+ checkboxAriaLabel for requiredCookieGroup0
spec renders the component 1`] = `
spec renders the component 1`] = `
class="label"
for="required-consents-group-1-checkbox"
>
- Consent group title for requiredConsentGroup1
+ Cookie group title for requiredCookieGroup1
- Consent group description for requiredConsentGroup1
+ Cookie group description for requiredCookieGroup1
- checkboxAriaLabel for requiredConsentGroup1
+ checkboxAriaLabel for requiredCookieGroup1
spec renders the component 1`] = `
spec renders the component 1`] = `
class="label"
for="optional-consents-checkbox"
>
- Title for optional consents
+ Title for optional cookies
- Text for optional consents
+ Text for optional cookies
spec renders the component 1`] = `
class="label"
for="optional-consents-group-0-checkbox"
>
- Consent group title for optionalConsentGroups0
+ Cookie group title for optionalCookieGroups0
- Consent group description for optionalConsentGroups0
+ Cookie group description for optionalCookieGroups0
- checkboxAriaLabel for optionalConsentGroups0
+ checkboxAriaLabel for optionalCookieGroups0
spec renders the component 1`] = `
spec renders the component 1`] = `
class="label"
for="optional-consents-group-1-checkbox"
>
- Consent group title for optionalConsentGroups1
+ Cookie group title for optionalCookieGroups1
@@ -791,18 +791,18 @@ exports[` spec renders the component 1`] = `
- Consent group description for optionalConsentGroups1
+ Cookie group description for optionalCookieGroups1
- checkboxAriaLabel for optionalConsentGroups1
+ checkboxAriaLabel for optionalCookieGroups1
- Text for required consents
+ Text for required cookies
spec renders the component 1`] = `
class="label"
for="required-consents-group-0-checkbox"
>
- Consent group title for requiredConsentGroup0
+ Cookie group title for requiredCookieGroup0
@@ -115,18 +115,18 @@ exports[` spec renders the component 1`] = `
- Consent group description for requiredConsentGroup0
+ Cookie group description for requiredCookieGroup0
- checkboxAriaLabel for requiredConsentGroup0
+ checkboxAriaLabel for requiredCookieGroup0
spec renders the component 1`] = `
spec renders the component 1`] = `
class="label"
for="required-consents-group-1-checkbox"
>
- Consent group title for requiredConsentGroup1
+ Cookie group title for requiredCookieGroup1
@@ -302,18 +302,18 @@ exports[` spec renders the component 1`] = `
- Consent group description for requiredConsentGroup1
+ Cookie group description for requiredCookieGroup1
- checkboxAriaLabel for requiredConsentGroup1
+ checkboxAriaLabel for requiredCookieGroup1
spec renders the component 1`] = `
spec renders the component 1`] = `
class="label"
for="optional-consents-checkbox"
>
- Title for optional consents
+ Title for optional cookies
- Text for optional consents
+ Text for optional cookies
spec renders the component 1`] = `
class="label"
for="optional-consents-group-0-checkbox"
>
- Consent group title for optionalConsentGroups0
+ Cookie group title for optionalCookieGroups0
@@ -504,18 +504,18 @@ exports[` spec renders the component 1`] = `
- Consent group description for optionalConsentGroups0
+ Cookie group description for optionalCookieGroups0
- checkboxAriaLabel for optionalConsentGroups0
+ checkboxAriaLabel for optionalCookieGroups0
spec renders the component 1`] = `
spec renders the component 1`] = `
class="label"
for="optional-consents-group-1-checkbox"
>
- Consent group title for optionalConsentGroups1
+ Cookie group title for optionalCookieGroups1
@@ -662,18 +662,18 @@ exports[` spec renders the component 1`] = `
- Consent group description for optionalConsentGroups1
+ Cookie group description for optionalCookieGroups1
- checkboxAriaLabel for optionalConsentGroups1
+ checkboxAriaLabel for optionalCookieGroups1
{/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}
@@ -164,15 +167,7 @@ export const ModalVersion = (args) => {
This is an example application with cookie consent modal
The modal will be shown when required. If user has given consents, it will not be shown.
- {willRenderCookieConsentDialog ? (
- <>
-
Consents are not given. Modal is shown.
- >
- ) : (
- <>
-
Cookie consents have been given. Remove the cookie to see the modal again.
- >
- )}
+
If hidden, remove the cookie to see the modal again.
This is an example how to get all data from the cookie consent context.
- The same contentSource can be passed to context and context provides access to the content built from the
- source.
+ The same contentSource can be passed to the context and it provides access to the content built from the
+ source. There are multiple hooks for getting the context, content, texts, etc. You can also trigger actions to
+ store consents.
+
All consents have been given: {String(!willRenderCookieConsentDialog)}
There is a random cookie, so modal is always shown.
+
+ To see all consents in the cookie, open DevTools, goto Application tab and select Storage/Cookies from the
+ side panel
+
spec renders the component 1`] = `
>
@@ -111,13 +112,21 @@ exports[` spec renders the component 1`] = `
-
+
Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden käytön.
-
-
- Cookie group title for requiredCookieGroup1
-
+
+
+ Cookie group title for requiredCookieGroup1
+
+
-
-
-
- Cookie group description for requiredCookieGroup1
-
- checkboxAriaLabel for requiredCookieGroup1
-
-
-
-
+
+ checkboxAriaLabel for requiredCookieGroup1
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
- Nimi
-
-
- Osoite
-
-
- Kuvaus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of requiredConsent3
-
-
- HostName of requiredConsent3
-
-
- Description of requiredConsent3
-
-
- Expiration of requiredConsent3
-
-
-
-
+
+
+
+ Nimi
+
+
+ Osoite
+
+
+ Kuvaus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of requiredConsent3
+
+
+ HostName of requiredConsent3
+
+
+ Description of requiredConsent3
+
+
+ Expiration of requiredConsent3
+
+
+
+
+
-
-
-
-
-
+
+
+
-
-
- Title for optional cookies
-
-
-
-
- Text for optional cookies
-
-
- checkboxAriaLabel
-
-
-
+
+
+ Title for optional cookies
+
+
+
+
+ Text for optional cookies
+
+
+ checkboxAriaLabel
+
+
+
-
-
- Cookie group title for optionalCookieGroups0
-
+
+
+ Cookie group title for optionalCookieGroups0
+
+
-
-
-
- Cookie group description for optionalCookieGroups0
-
- checkboxAriaLabel for optionalCookieGroups0
-
-
-
-
+
+ checkboxAriaLabel for optionalCookieGroups0
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
- Nimi
-
-
- Osoite
-
-
- Kuvaus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of optionalConsent1
-
-
- HostName of optionalConsent1
-
-
- Description of optionalConsent1
-
-
- Expiration of optionalConsent1
-
-
-
-
+
+
+
+ Nimi
+
+
+ Osoite
+
+
+ Kuvaus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of optionalConsent1
+
+
+ HostName of optionalConsent1
+
+
+ Description of optionalConsent1
+
+
+ Expiration of optionalConsent1
+
+
+
+
+
-
-
-
-
+
+
-
-
- Cookie group title for optionalCookieGroups1
-
+
+
+ Cookie group title for optionalCookieGroups1
+
+
-
-
-
- Cookie group description for optionalCookieGroups1
-
- checkboxAriaLabel for optionalCookieGroups1
-
-
-
-
+
+ checkboxAriaLabel for optionalCookieGroups1
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
- Nimi
-
-
- Osoite
-
-
- Kuvaus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of optionalConsent2
-
-
- HostName of optionalConsent2
-
-
- Description of optionalConsent2
-
-
- Expiration of optionalConsent2
-
-
-
-
- Name of optionalConsent3
-
-
- HostName of optionalConsent3
-
-
- Description of optionalConsent3
-
-
- Expiration of optionalConsent3
-
-
-
-
+
+
+
+ Nimi
+
+
+ Osoite
+
+
+ Kuvaus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of optionalConsent2
+
+
+ HostName of optionalConsent2
+
+
+ Description of optionalConsent2
+
+
+ Expiration of optionalConsent2
+
+
+
+
+ Name of optionalConsent3
+
+
+ HostName of optionalConsent3
+
+
+ Description of optionalConsent3
+
+
+ Expiration of optionalConsent3
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
- Hyväksy kaikki evästeet
-
-
-
-
+ Hyväksy kaikki evästeet
+
+
+
- Hyväksy vain pakolliset evästeet
-
-
+
+ Hyväksy vain pakolliset evästeet
+
+
+
+
+ Focus me
+
`;
diff --git a/packages/react/src/components/cookieConsent/modal/Modal.tsx b/packages/react/src/components/cookieConsent/modal/Modal.tsx
index 2696b2a43f..5025c53f72 100644
--- a/packages/react/src/components/cookieConsent/modal/Modal.tsx
+++ b/packages/react/src/components/cookieConsent/modal/Modal.tsx
@@ -3,7 +3,7 @@ import { VisuallyHidden } from '@react-aria/visually-hidden';
import classNames from '../../../utils/classNames';
import styles from '../CookieConsent.module.scss';
-import { CookieConsentContext, useCookieConsentUiTexts } from '../CookieConsentContext';
+import { CookieConsentContext, useCookieConsentUiTexts, useFocusShift } from '../CookieConsentContext';
import { Content } from '../content/Content';
export function Modal(): React.ReactElement | null {
@@ -17,9 +17,24 @@ export function Modal(): React.ReactElement | null {
// if hasUserHandledAllConsents() was false at first and then later true, user must have saved consents.
const showScreenReaderSaveNotification = isModalInitiallyShown && !shouldShowModal;
const { settingsSaved } = useCookieConsentUiTexts();
+ const shiftFocus = useFocusShift();
+
useEffect(() => {
setTimeout(() => setPopupTimerComplete(true), popupDelayInMs);
}, []);
+ useEffect(() => {
+ // Set focus outside when esc is pressed.
+ const handleEscKey = (event: KeyboardEvent) => {
+ const key = event.key || event.keyCode;
+ if (key === 'Escape' || key === 'Esc' || key === 27) {
+ shiftFocus();
+ }
+ };
+ document.addEventListener('keyup', handleEscKey);
+ return () => {
+ document.removeEventListener('keyup', handleEscKey);
+ };
+ });
if (showScreenReaderSaveNotification) {
return (
diff --git a/packages/react/src/components/cookieConsent/test.util.ts b/packages/react/src/components/cookieConsent/test.util.ts
index b3481c4317..ee2406d282 100644
--- a/packages/react/src/components/cookieConsent/test.util.ts
+++ b/packages/react/src/components/cookieConsent/test.util.ts
@@ -89,6 +89,7 @@ export const getContentSource = (
siteName: 'Test site',
noCommonConsentCookie: true,
currentLanguage: 'fi',
+ focusTargetSelector: '#focus-target',
...contentOverrides,
...contentSourceOverrides,
};
@@ -149,8 +150,8 @@ export const commonTestProps = {
function createConsentObject(consentList: ConsentList, source: TestConsentData, approved: boolean): ConsentObject {
const flattenArrayReducer = (acc: unknown[], val: unknown) => acc.concat(val);
- const flatRequired = source.requiredConsents.reduce(flattenArrayReducer, []) as ConsentList;
- const flatOptional = source.optionalConsents.reduce(flattenArrayReducer, []) as ConsentList;
+ const flatRequired = source.requiredConsents?.reduce(flattenArrayReducer, []) as ConsentList;
+ const flatOptional = source.optionalConsents?.reduce(flattenArrayReducer, []) as ConsentList;
const allConsents = [...flatRequired, ...flatOptional];
const consents = allConsents.reduce((currentValue, currentConsent) => {
// eslint-disable-next-line no-param-reassign
@@ -183,7 +184,9 @@ export async function openAllAccordions(
dataTestIds: typeof commonTestProps['dataTestIds'],
): Promise {
const openAccordions = async (groupParent: TestGroupParent) => {
- const list = groupParent === 'required' ? content.requiredCookies.groups : content.optionalCookies.groups;
+ const list = (groupParent === 'required'
+ ? content.requiredCookies?.groups
+ : content.optionalCookies?.groups) as CookieGroup[];
let index = 0;
/* eslint-disable no-restricted-syntax */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -198,3 +201,16 @@ export async function openAllAccordions(
await openAccordions('required');
await openAccordions('optional');
}
+
+type ElementGetterResult = HTMLElement | Element | null;
+
+export const getActiveElement = (anyElement?: ElementGetterResult): Element | null =>
+ anyElement ? anyElement.ownerDocument.activeElement : null;
+
+export const waitForElementFocus = async (elementGetter: () => ElementGetterResult): Promise =>
+ waitFor(() => {
+ const target = elementGetter();
+ if (target) {
+ expect(getActiveElement(target)).toEqual(target);
+ }
+ });
From f63ade2a24c1ec0cf0ed643a46499680723d91cf Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Fri, 17 Jun 2022 15:55:25 +0300
Subject: [PATCH 156/292] cookie-consent Safari showed focus outline for
content element
---
.../react/src/components/cookieConsent/CookieConsent.module.scss | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.module.scss b/packages/react/src/components/cookieConsent/CookieConsent.module.scss
index 115ab747fe..acf02edc8f 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.module.scss
+++ b/packages/react/src/components/cookieConsent/CookieConsent.module.scss
@@ -252,6 +252,7 @@
--common-spacing: var(--spacing-xs);
padding-top: var(--common-spacing);
padding-bottom: var(--common-spacing);
+ outline: none;
.visuallyHiddenWithoutFocus {
position: absolute;
opacity: 0;
From 82f4d3495991a4d2248d2ad820ce6249148d9c7d Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Mon, 20 Jun 2022 10:03:20 +0300
Subject: [PATCH 157/292] cookie-consent Fix click issue with read more button.
In chrome the focus is set on mouse down, and on focus the button is hidden. And if focused element is hidden, focus moves to body.
The onClick won't trigger. Changed to onMousedown.
---
packages/react/src/components/cookieConsent/content/Content.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/react/src/components/cookieConsent/content/Content.tsx b/packages/react/src/components/cookieConsent/content/Content.tsx
index cfd4270dfc..ea9b17bbd8 100644
--- a/packages/react/src/components/cookieConsent/content/Content.tsx
+++ b/packages/react/src/components/cookieConsent/content/Content.tsx
@@ -58,7 +58,7 @@ export function Content(): React.ReactElement {
{
+ onMouseDown={(e) => {
e.preventDefault();
setFocusToTitle();
}}
From e944820d54b8441c3d74f9b84ef49f92f033fb6d Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Wed, 29 Jun 2022 10:41:17 +0300
Subject: [PATCH 158/292] cookie-consent yarn.lock update
Ran "yarn" after rebase and resulted in some cleanup.
---
yarn.lock | 91 ++++++-------------------------------------------------
1 file changed, 10 insertions(+), 81 deletions(-)
diff --git a/yarn.lock b/yarn.lock
index 5dfda6915b..8137e52d86 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8400,11 +8400,6 @@ accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
mime-types "~2.1.34"
negotiator "0.6.3"
-acorn-dynamic-import@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
- integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
-
acorn-globals@^4.1.0, acorn-globals@^4.3.0:
version "4.3.4"
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
@@ -8446,7 +8441,7 @@ acorn-walk@^8.0.0:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
-acorn@^5.0.3, acorn@^5.5.3:
+acorn@^5.5.3:
version "5.7.4"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e"
integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==
@@ -12446,11 +12441,6 @@ detect-libc@^2.0.0, detect-libc@^2.0.1:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
-detect-newline@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
- integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==
-
detect-newline@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
@@ -12524,21 +12514,6 @@ diff-sequences@^24.9.0:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==
-diff-match-patch@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37"
- integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==
-
-diff-sequences@^24.9.0:
- version "24.9.0"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
- integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==
-
-diff-sequences@^25.2.6:
- version "25.2.6"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
- integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
-
diff-sequences@^26.6.2:
version "26.6.2"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"
@@ -13281,7 +13256,7 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-escodegen@^1.11.0, escodegen@^1.8.1, escodegen@^1.9.1:
+escodegen@^1.11.0, escodegen@^1.9.1:
version "1.14.3"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
@@ -18044,16 +18019,6 @@ jest-diff@^24.9.0:
jest-get-type "^24.9.0"
pretty-format "^24.9.0"
-jest-diff@^25.5.0:
- version "25.5.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9"
- integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==
- dependencies:
- chalk "^3.0.0"
- diff-sequences "^25.2.6"
- jest-get-type "^25.2.6"
- pretty-format "^25.5.0"
-
jest-diff@^26.0.0, jest-diff@^26.6.2:
version "26.6.2"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394"
@@ -18185,11 +18150,6 @@ jest-get-type@^24.9.0:
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e"
integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==
-jest-get-type@^25.2.6:
- version "25.2.6"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877"
- integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==
-
jest-get-type@^26.3.0:
version "26.3.0"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0"
@@ -19614,36 +19574,16 @@ lodash.ismatch@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37"
integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=
-lodash.isnumber@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
- integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=
-
lodash.isobject@3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d"
integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=
-lodash.isplainobject@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
- integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
-
-lodash.isstring@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
- integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
-
lodash.isundefined@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48"
integrity sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=
-lodash.iteratee@^4.5.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz#be4177db289a8ccc3c0990f1db26b5b22fc1554c"
- integrity sha1-vkF32yiajMw8CZDx2ya1si/BVUw=
-
lodash.map@^4.4.0, lodash.map@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
@@ -21970,6 +21910,14 @@ parse-url@^6.0.0:
parse-path "^4.0.0"
protocols "^1.4.0"
+parse5-htmlparser2-tree-adapter@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1"
+ integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==
+ dependencies:
+ domhandler "^5.0.2"
+ parse5 "^7.0.0"
+
parse5@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
@@ -23490,16 +23438,6 @@ pretty-format@^24.9.0:
ansi-styles "^3.2.0"
react-is "^16.8.4"
-pretty-format@^25.5.0:
- version "25.5.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
- integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==
- dependencies:
- "@jest/types" "^25.5.0"
- ansi-regex "^5.0.0"
- ansi-styles "^4.0.0"
- react-is "^16.12.0"
-
pretty-format@^26.0.0, pretty-format@^26.6.2:
version "26.6.2"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"
@@ -28082,15 +28020,6 @@ unist-util-visit@^1.1.0, unist-util-visit@^1.4.1:
dependencies:
unist-util-visit-parents "^2.0.0"
-unist-util-visit@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.0.tgz#f41e407a9e94da31594e6b1c9811c51ab0b3d8f5"
- integrity sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==
- dependencies:
- "@types/unist" "^2.0.0"
- unist-util-is "^5.0.0"
- unist-util-visit-parents "^5.0.0"
-
universal-user-agent@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557"
From 53c40ae76b107a43e9aa7b100f96f73bcd067f2e Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Wed, 29 Jun 2022 10:41:48 +0300
Subject: [PATCH 159/292] cookie-consent Hook for esc key press
---
.../src/components/cookieConsent/useEscKey.ts | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 packages/react/src/components/cookieConsent/useEscKey.ts
diff --git a/packages/react/src/components/cookieConsent/useEscKey.ts b/packages/react/src/components/cookieConsent/useEscKey.ts
new file mode 100644
index 0000000000..1e28f9c6ac
--- /dev/null
+++ b/packages/react/src/components/cookieConsent/useEscKey.ts
@@ -0,0 +1,16 @@
+import { useEffect } from 'react';
+
+export function useEscKey(callBack: (e?: KeyboardEvent) => void): void {
+ useEffect(() => {
+ const handleEscKey = (event: KeyboardEvent) => {
+ const key = event.key || event.keyCode;
+ if (key === 'Escape' || key === 'Esc' || key === 27) {
+ callBack(event);
+ }
+ };
+ document.addEventListener('keyup', handleEscKey);
+ return () => {
+ document.removeEventListener('keyup', handleEscKey);
+ };
+ });
+}
From 683bf659f412d680876c50af1f9026639ca3b350 Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Wed, 29 Jun 2022 10:52:58 +0300
Subject: [PATCH 160/292] cookie-consent useEscKey to Modal.tsx
---
.../components/cookieConsent/modal/Modal.tsx | 17 +++--------------
1 file changed, 3 insertions(+), 14 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/modal/Modal.tsx b/packages/react/src/components/cookieConsent/modal/Modal.tsx
index 5025c53f72..c3bd9355ef 100644
--- a/packages/react/src/components/cookieConsent/modal/Modal.tsx
+++ b/packages/react/src/components/cookieConsent/modal/Modal.tsx
@@ -5,6 +5,7 @@ import classNames from '../../../utils/classNames';
import styles from '../CookieConsent.module.scss';
import { CookieConsentContext, useCookieConsentUiTexts, useFocusShift } from '../CookieConsentContext';
import { Content } from '../content/Content';
+import { useEscKey } from '../useEscKey';
export function Modal(): React.ReactElement | null {
const cookieConsentContext = useContext(CookieConsentContext);
@@ -17,24 +18,12 @@ export function Modal(): React.ReactElement | null {
// if hasUserHandledAllConsents() was false at first and then later true, user must have saved consents.
const showScreenReaderSaveNotification = isModalInitiallyShown && !shouldShowModal;
const { settingsSaved } = useCookieConsentUiTexts();
- const shiftFocus = useFocusShift();
useEffect(() => {
setTimeout(() => setPopupTimerComplete(true), popupDelayInMs);
}, []);
- useEffect(() => {
- // Set focus outside when esc is pressed.
- const handleEscKey = (event: KeyboardEvent) => {
- const key = event.key || event.keyCode;
- if (key === 'Escape' || key === 'Esc' || key === 27) {
- shiftFocus();
- }
- };
- document.addEventListener('keyup', handleEscKey);
- return () => {
- document.removeEventListener('keyup', handleEscKey);
- };
- });
+
+ useEscKey(useFocusShift());
if (showScreenReaderSaveNotification) {
return (
From aa31c36dcc2e259f3a183e529624336301d7d310 Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Wed, 29 Jun 2022 10:54:58 +0300
Subject: [PATCH 161/292] cookie-consent useEscKey to close settings accordion
---
.../components/cookieConsent/content/Content.tsx | 5 ++++-
.../cookieConsent/cookieModal/CookieModal.test.tsx | 14 ++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/packages/react/src/components/cookieConsent/content/Content.tsx b/packages/react/src/components/cookieConsent/content/Content.tsx
index ea9b17bbd8..76729724bd 100644
--- a/packages/react/src/components/cookieConsent/content/Content.tsx
+++ b/packages/react/src/components/cookieConsent/content/Content.tsx
@@ -9,9 +9,10 @@ import { Card } from '../../card/Card';
import { useCookieConsentSectionTexts, useCookieConsentUiTexts } from '../CookieConsentContext';
import { LanguageSwitcher } from '../languageSwitcher/LanguageSwitcher';
import classNames from '../../../utils/classNames';
+import { useEscKey } from '../useEscKey';
export function Content(): React.ReactElement {
- const { isOpen, buttonProps, contentProps } = useAccordion({
+ const { isOpen, buttonProps, contentProps, closeAccordion } = useAccordion({
initiallyOpen: false,
});
const { hideSettings, showSettings, readMore } = useCookieConsentUiTexts();
@@ -38,6 +39,8 @@ export function Content(): React.ReactElement {
setFocusToTitle();
}, [setFocusToTitle]);
+ useEscKey(closeAccordion);
+
return (
', () => {
verifyElementExistsByTestId(result, dataTestIds.screenReaderNotification);
expect(mockedCookieControls.mockSet).toHaveBeenCalledTimes(1);
});
+
+ it('esc button closes the accordion', async () => {
+ const result = await initDetailsView(defaultConsentData);
+ await waitFor(() => {
+ expect(result.getByTestId(dataTestIds.detailsComponent)).toBeVisible();
+ });
+ fireEvent.keyUp(result.container.ownerDocument, {
+ key: 'Escape',
+ code: 27,
+ });
+ await waitFor(() => {
+ expect(result.getByTestId(dataTestIds.detailsComponent)).not.toBeVisible();
+ });
+ });
});
describe('Accordions of each consent group can be opened and ', () => {
it('all consents in the group are rendered', async () => {
From 5ee9b096fe77e79304c4053f93d95b0281c98a35 Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Wed, 29 Jun 2022 11:57:44 +0300
Subject: [PATCH 162/292] cookie-consent Change primary button to secondary
---
packages/react/src/components/cookieConsent/buttons/Buttons.tsx | 2 +-
.../cookieModal/__snapshots__/CookieModal.test.tsx.snap | 2 +-
.../cookiePage/__snapshots__/CookiePage.test.tsx.snap | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/buttons/Buttons.tsx b/packages/react/src/components/cookieConsent/buttons/Buttons.tsx
index 153b7e1e07..868f30a69f 100644
--- a/packages/react/src/components/cookieConsent/buttons/Buttons.tsx
+++ b/packages/react/src/components/cookieConsent/buttons/Buttons.tsx
@@ -22,7 +22,7 @@ export function Buttons({ detailsAreShown, onClick = () => undefined }: Props):
return (
{
triggerAction(primaryButtonAction);
onClick();
diff --git a/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap b/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
index 25994a4ef5..52f9bd959f 100644
--- a/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
+++ b/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
@@ -928,7 +928,7 @@ exports[` spec renders the component 1`] = `
class="buttons visuallyHiddenWithoutFocus"
>
diff --git a/packages/react/src/components/cookieConsent/cookiePage/__snapshots__/CookiePage.test.tsx.snap b/packages/react/src/components/cookieConsent/cookiePage/__snapshots__/CookiePage.test.tsx.snap
index 31f286c844..94d8fc6a2b 100644
--- a/packages/react/src/components/cookieConsent/cookiePage/__snapshots__/CookiePage.test.tsx.snap
+++ b/packages/react/src/components/cookieConsent/cookiePage/__snapshots__/CookiePage.test.tsx.snap
@@ -766,7 +766,7 @@ exports[` spec renders the component 1`] = `
class="buttons"
>
From 6ea9a71a1cdd5284918251b1cfbd9b9067df0ce1 Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Wed, 29 Jun 2022 13:59:24 +0300
Subject: [PATCH 163/292] cookie-consent Fix modal minimizing on language
change
---
.../src/components/cookieConsent/content/Content.tsx | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/content/Content.tsx b/packages/react/src/components/cookieConsent/content/Content.tsx
index 76729724bd..7ecd8d70f3 100644
--- a/packages/react/src/components/cookieConsent/content/Content.tsx
+++ b/packages/react/src/components/cookieConsent/content/Content.tsx
@@ -6,7 +6,11 @@ import { useAccordion } from '../../accordion';
import { Details } from '../details/Details';
import styles from '../CookieConsent.module.scss';
import { Card } from '../../card/Card';
-import { useCookieConsentSectionTexts, useCookieConsentUiTexts } from '../CookieConsentContext';
+import {
+ useCookieConsentLanguage,
+ useCookieConsentSectionTexts,
+ useCookieConsentUiTexts,
+} from '../CookieConsentContext';
import { LanguageSwitcher } from '../languageSwitcher/LanguageSwitcher';
import classNames from '../../../utils/classNames';
import { useEscKey } from '../useEscKey';
@@ -17,6 +21,7 @@ export function Content(): React.ReactElement {
});
const { hideSettings, showSettings, readMore } = useCookieConsentUiTexts();
const { title, text } = useCookieConsentSectionTexts('main');
+ const { current: currentLanguage } = useCookieConsentLanguage();
const titleRef = useRef();
const Icon = isOpen ? IconAngleUp : IconAngleDown;
const settingsButtonText = isOpen ? hideSettings : showSettings;
@@ -33,7 +38,7 @@ export function Content(): React.ReactElement {
if (titleRef.current) {
titleRef.current.focus();
}
- }, [titleRef]);
+ }, [titleRef, currentLanguage]);
useEffect(() => {
setFocusToTitle();
From 97c508479232bf5e19061ccd1f6cde8a4f1acd1f Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Wed, 29 Jun 2022 14:18:48 +0300
Subject: [PATCH 164/292] Added cookie consent texts and translations
---
.../src/components/cookieConsent/content.json | 358 ++++++++++++++----
1 file changed, 279 insertions(+), 79 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/content.json b/packages/react/src/components/cookieConsent/content.json
index beac844a9b..bac5136d5e 100644
--- a/packages/react/src/components/cookieConsent/content.json
+++ b/packages/react/src/components/cookieConsent/content.json
@@ -4,79 +4,79 @@
"main": {
"fi": {
"title": "{{siteName}} käyttää evästeitä",
- "text": "Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden käytön."
+ "text": "Tämä sivusto käyttää pakollisia evästeitä sivun perustoimintojen ja suorituskyvyn varmistamiseksi. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja yksilöidyn sisällön näyttämiseen."
},
"sv": {
- "title": "SV: {{siteName}} käyttää evästeitä",
- "text": "SV: Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden käytön."
+ "title": "{{siteName}} använder kakor",
+ "text": "Denna webbplats använder obligatoriska kakor för att säkerställa de grundläggande funktionerna och prestandan. Dessutom använder vi inriktningskakor för bättre användarupplevelse, analytik och individualiserat innehåll."
},
"en": {
- "title": "EN: {{siteName}} käyttää evästeitä",
- "text": "EN: Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden käytön."
+ "title": "{{siteName}} uses cookies",
+ "text": "This website uses required cookies to ensure the basic functionality and performance. In addition, we use targeting cookies to improve the user experience, perform analytics and display personalised content."
}
},
"details": {
"fi": {
"title": "Tietoa sivustolla käytetyistä evästeistä",
- "text": "Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta kategoriasta ja sallia tai kieltää evästeiden käytön."
+ "text": "Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea eri luokista ja sallia tai kieltää evästeiden käytön."
},
"sv": {
- "title": "SV: Tietoa sivustolla käytetyistä evästeistä",
- "text": "SV: Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta kategoriasta ja sallia tai kieltää evästeiden käytön."
+ "title": "Information om kakor som används på webbplatsen",
+ "text": "Kakorna som används på webbplatsen har klassificerats enligt användningsändamål. Du kan läsa om de olika klasserna och acceptera eller förbjuda användningen av kakor."
},
"en": {
- "title": "EN: Tietoa sivustolla käytetyistä evästeistä",
- "text": "EN: Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta kategoriasta ja sallia tai kieltää evästeiden käytön."
+ "title": "About the cookies used on the website",
+ "text": "The cookies used on the website have been classified according to their intended use. Below, you can read about the various categories and accept or reject the use of cookies."
}
}
},
"ui": {
"fi": {
- "showSettings": "Näytä asetukset",
+ "showSettings": "Näytä evästeasetukset",
"hideSettings": "Piilota asetukset",
"approveAllConsents": "Hyväksy kaikki evästeet",
- "approveRequiredAndSelectedConsents": "Hyväksy valitut ja pakolliset evästeet",
+ "approveRequiredAndSelectedConsents": "Hyväksy valitut evästeet",
"approveOnlyRequiredConsents": "Hyväksy vain pakolliset evästeet",
"settingsSaved": "Asetukset tallennettu!",
"readMore": "Lue lisää"
},
"sv": {
- "showSettings": "SV: Näytä asetukset",
- "hideSettings": "SV: Piilota asetukset",
- "approveAllConsents": "SV: Hyväksy kaikki evästeet",
- "approveRequiredAndSelectedConsents": "SV: Hyväksy valitut ja pakolliset evästeet",
- "approveOnlyRequiredConsents": "SV: Hyväksy vain pakolliset evästeet",
- "settingsSaved": "SV: Asetukset tallennettu!",
- "readMore": "SV: Lue lisää"
+ "showSettings": "Visa kakinställningarna",
+ "hideSettings": "Stänga kakinställningarna",
+ "approveAllConsents": "Acceptera alla kakor",
+ "approveRequiredAndSelectedConsents": "Acceptera valda kakor",
+ "approveOnlyRequiredConsents": "Acceptera endast nödvändiga",
+ "settingsSaved": "Inställningar sparade!",
+ "readMore": "Läs mer"
},
"en": {
- "showSettings": "EN: Näytä asetukset",
- "hideSettings": "EN: Piilota asetukset",
- "approveAllConsents": "EN: Hyväksy kaikki evästeet",
- "approveRequiredAndSelectedConsents": "EN: Hyväksy valitut ja pakolliset evästeet",
- "approveOnlyRequiredConsents": "EN: Hyväksy vain pakolliset evästeet",
- "settingsSaved": "EN: Asetukset tallennettu!",
- "readMore": "EN: Lue lisää"
+ "showSettings": "Show cookie settings",
+ "hideSettings": "Hide cookie settings",
+ "approveAllConsents": "Accept all cookies",
+ "approveRequiredAndSelectedConsents": "Accept selected cookies",
+ "approveOnlyRequiredConsents": "Accept required cookies only",
+ "settingsSaved": "Settings saved!",
+ "readMore": "Read more"
}
},
"tableHeadings": {
"fi": {
"name": "Nimi",
- "hostName": "Osoite",
- "description": "Kuvaus",
+ "hostName": "Evästeen asettaja",
+ "description": "Käyttötarkoitus",
"expiration": "Voimassaoloaika"
},
"sv": {
- "name": "SV: Nimi",
- "hostName": "SV: Osoite",
- "description": "SV: Kuvaus",
- "expiration": "SV: Voimassaoloaika"
+ "name": "Namn",
+ "hostName": "Den som lagrat kakan",
+ "description": "Användning",
+ "expiration": "Giltighetstid"
},
"en": {
- "name": "EN: Nimi",
- "hostName": "EN: Osoite",
- "description": "EN: Kuvaus",
- "expiration": "EN: Voimassaoloaika"
+ "name": "Name",
+ "hostName": "Cookie set by",
+ "description": "Purpose of use",
+ "expiration": "Period of validity"
}
}
},
@@ -91,94 +91,294 @@
"requiredCookies": {
"fi": {
"title": "Välttämättömät evästeet",
- "text": "Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat sivuston käyttäjäystävällisyyteen.",
- "checkboxAriaDescription": "Näitä eväisteitä käytetään sivuston perustoiminnoissa. Perustoimintoihin littyvien evästeiden käyttöä ei voi kieltää."
+ "text": "Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat käytettävyyteen.",
+ "checkboxAriaDescription": "Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat käytettävyyteen."
},
"sv": {
- "title": "SV: Välttämättömät evästeet",
- "text": "SV: Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat sivuston käyttäjäystävällisyyteen.",
- "checkboxAriaDescription": "SV: Näitä eväisteitä käytetään sivuston perustoiminnoissa. Perustoimintoihin littyvien evästeiden käyttöä ei voi kieltää."
+ "title": "Nödvändig kakor",
+ "text": "Du kan inte förbjuda användningen av nödvändiga kakorna. De möjliggör webbplatsens funktioner och påverkar användbarheten.",
+ "checkboxAriaDescription": "Du kan inte förbjuda användningen av nödvändiga kakor. De möjliggör webbplatsens funktioner och påverkar användbarheten."
},
"en": {
- "title": "EN: Välttämättömät evästeet",
- "text": "EN: Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat sivuston käyttäjäystävällisyyteen.",
- "checkboxAriaDescription": "EN: Näitä eväisteitä käytetään sivuston perustoiminnoissa. Perustoimintoihin littyvien evästeiden käyttöä ei voi kieltää."
+ "title": "Necessary cookies",
+ "text": "Necessary cookies cannot be rejected. They enable the proper functioning of the website and affect the usability.",
+ "checkboxAriaDescription": "Necessary cookies cannot be rejected. They enable the proper functioning of the website and affect the usability."
}
},
"optionalCookies": {
"fi": {
- "title": "Muut evästeet",
- "text": "Voit hyväksyä tai jättää hyväksymättä muut evästeet. Praesent vel vestibulum nunc, at eleifend sapien. Integer cursus ut orci eu pretium. Ut a orci felis. In eu eros turpis. Sed ullamcorper lacinia lorem, id ullamcorper dui accumsan in. Integer dictum fermentum mi, sit amet accumsan lacus facilisis id. Quisque blandit lacus ac sem porta.",
- "checkboxAriaDescription": "Voit hyväksyä tai jättää hyväksymättä muut evästeet."
+ "title": "Valinnainen evästeet",
+ "text": "Voit hyväksyä tai kieltää valinnaiset evästeet.",
+ "checkboxAriaDescription": "Voit hyväksyä tai kieltää valinnaiset evästeet."
},
"sv": {
- "title": "SV: Muut evästeet",
- "text": "SV: Voit hyväksyä tai jättää hyväksymättä muut evästeet. Praesent vel vestibulum nunc, at eleifend sapien. Integer cursus ut orci eu pretium. Ut a orci felis. In eu eros turpis. Sed ullamcorper lacinia lorem, id ullamcorper dui accumsan in. Integer dictum fermentum mi, sit amet accumsan lacus facilisis id. Quisque blandit lacus ac sem porta.",
- "checkboxAriaDescription": "SV: Voit hyväksyä tai jättää hyväksymättä muut evästeet."
+ "title": "Valfri kakor",
+ "text": "Du kan acceptera eller förbjuda de valfria kakorna.",
+ "checkboxAriaDescription": "Du kan acceptera eller förbjuda de valfria kakorna."
},
"en": {
- "title": "EN: Muut evästeet",
- "text": "EN: Voit hyväksyä tai jättää hyväksymättä muut evästeet. Praesent vel vestibulum nunc, at eleifend sapien. Integer cursus ut orci eu pretium. Ut a orci felis. In eu eros turpis. Sed ullamcorper lacinia lorem, id ullamcorper dui accumsan in. Integer dictum fermentum mi, sit amet accumsan lacus facilisis id. Quisque blandit lacus ac sem porta.",
- "checkboxAriaDescription": "EN: Voit hyväksyä tai jättää hyväksymättä muut evästeet."
+ "title": "Optional cookies",
+ "text": "You can accept or reject optional cookies.",
+ "checkboxAriaDescription": "You can accept or reject optional cookies."
}
},
"commonGroups": {
"login": {
"fi": {
- "title": "Evästeet kirjautumista varten",
+ "title": "Kirjautuminen",
"text": "Näitä eväisteitä käytetään kirjautumisessa",
"expandAriaLabel": "Näytä kirjautumiseen littyvien evästeiden tiedot",
"checkboxAriaDescription": "Näitä eväisteitä käytetään kirjautumisessa. Kirjautumiseen littyvien evästeiden käyttöä ei voi kieltää."
},
"sv": {
- "title": "SV: Evästeet kirjautumista varten",
- "text": "SV: Näitä eväisteitä käytetään kirjautumisessa",
+ "title": "Inloggning",
+ "text": "Inloggningskakor används när användaren loggar in på tjänsten.",
"expandAriaLabel": "SV: Näytä kirjautumiseen littyvien evästeiden tiedot",
"checkboxAriaDescription": "SV: Näitä eväisteitä käytetään kirjautumisessa. Kirjautumiseen littyvien evästeiden käyttöä ei voi kieltää."
},
"en": {
- "title": "EN: Evästeet kirjautumista varten",
- "text": "EN: Näitä eväisteitä käytetään kirjautumisessa",
+ "title": "Login",
+ "text": "Login cookies are used when the user logs in to the service.",
"expandAriaLabel": "EN: Näytä kirjautumiseen littyvien evästeiden tiedot",
"checkboxAriaDescription": "EN: Näitä eväisteitä käytetään kirjautumisessa. Kirjautumiseen littyvien evästeiden käyttöä ei voi kieltää."
}
},
"marketing": {
"fi": {
- "title": "Markkinointievästeet",
- "text": "Markkinointievästeillä kohdennetaan markkinointia. Nulla facilisi. Nullam mattis sapien sem, nec venenatis lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus.",
- "expandAriaLabel": "Näytä markkinointievästeiden tiedot",
+ "title": "Mainonta ja markkinointi",
+ "text": "Markkinointievästeiden avulla sivuston käyttäjille voidaan kohdentaa sisältöjä.",
+ "expandAriaLabel": "Näytä mainontaan ja markkinointiin liittyvien evästeiden tiedot",
"checkboxAriaDescription": "Markkinointievästeillä kohdennetaan markkinointia. Hyväksy tai jätä hyväksymättä kaikki markkinointiin liittyvät evästeet"
},
"sv": {
- "title": "SV: Markkinointievästeet",
- "text": "SV: Markkinointievästeillä kohdennetaan markkinointia. Nulla facilisi. Nullam mattis sapien sem, nec venenatis lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus.",
+ "title": "Reklam och marknadsföring",
+ "text": "Med hjälp av marknadsföringskakor kan innehåll riktas till webbplatsens användare.",
"expandAriaLabel": "SV: Näytä markkinointievästeiden tiedot",
"checkboxAriaDescription": "SV: Markkinointievästeillä kohdennetaan markkinointia. Hyväksy tai jätä hyväksymättä kaikki markkinointiin liittyvät evästeet"
},
"en": {
- "title": "EN: Markkinointievästeet",
- "text": "EN: Markkinointievästeillä kohdennetaan markkinointia. Nulla facilisi. Nullam mattis sapien sem, nec venenatis lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus.",
+ "title": "Advertising and marketing",
+ "text": "Marketing cookies can be used to target content to users of the website.",
"expandAriaLabel": "EN: Näytä markkinointievästeiden tiedot",
"checkboxAriaDescription": "EN: Markkinointievästeillä kohdennetaan markkinointia. Hyväksy tai jätä hyväksymättä kaikki markkinointiin liittyvät evästeet"
}
},
"preferences": {
"fi": {
- "title": "Asetuksiin liittyvät evästeet",
- "text": "Evästeisiin tallennetaan käyttäjän tekemiä Donec lacus ligula, consequat id ligula sed, dapibus blandit nunc. Phasellus efficitur nec tellus et tempus. Sed tempor tristique purus, at auctor lectus. Ut pretium rutrum viverra. Sed felis arcu, sodales fermentum finibus in, pretium id tellus. Morbi eget eros congue, pulvinar leo ut, aliquam lectus. Cras consectetur sit amet tortor nec vulputate. Integer scelerisque dignissim auctor. Fusce pharetra dui nulla, vel elementum leo mattis vitae.",
- "expandAriaLabel": "Näytä asetuksiin liittyvien evästeiden tiedot",
+ "title": "Mieltymykset",
+ "text": "Mieltymysevästeet mukauttavat sivuston ulkoasua ja toimintaa käyttäjän tekemien valintojen perusteella.",
+ "expandAriaLabel": "Näytä mieltymyksiin liittyvien evästeiden tiedot",
"checkboxAriaDescription": "Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
},
"sv": {
- "title": "SV: Asetuksiin liittyvät evästeet",
- "text": "SV: Evästeisiin tallennetaan käyttäjän tekemiä Donec lacus ligula, consequat id ligula sed, dapibus blandit nunc. Phasellus efficitur nec tellus et tempus. Sed tempor tristique purus, at auctor lectus. Ut pretium rutrum viverra. Sed felis arcu, sodales fermentum finibus in, pretium id tellus. Morbi eget eros congue, pulvinar leo ut, aliquam lectus. Cras consectetur sit amet tortor nec vulputate. Integer scelerisque dignissim auctor. Fusce pharetra dui nulla, vel elementum leo mattis vitae.",
- "expandAriaLabel": "SV: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "title": "Preferenser",
+ "text": "Preferenskakor ändrar webbplatsens utseende och funktioner enligt användarens tidigare val.",
+ "expandAriaLabel": "SV: Näytä mieltymyksiin littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "Preferences",
+ "text": "Preference cookies customise the layout and operation of the website based on the choices made by the user.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "userInputs": {
+ "fi": {
+ "title": "Käyttäjän syötteet",
+ "text": "Syöte-evästeillä voidaan tallentaa käyttäjän palveluun syöttämiä tietoja.",
+ "expandAriaLabel": "Näytä käyttäjän syötteisiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Användarens input",
+ "text": "Med inputskakor kan man lagra information som användaren matar in i tjänsten.",
+ "expandAriaLabel": "SV: Näytä käyttäjän syötteisiin littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "User input",
+ "text": "User-input cookies can be used to store information entered by the user in the service.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "informationSecurity": {
+ "fi": {
+ "title": "Tietoturva",
+ "text": "Tietoturvaevästeet mahdollistavat turvallisen tiedonsiirron käyttäjän ja palvelun välillä.",
+ "expandAriaLabel": "Näytä tietoturvaan liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Datasäkerhet",
+ "text": "Datasäkerhetskakor möjliggör en säker dataöverföring mellan användaren och tjänsten.",
+ "expandAriaLabel": "SV: Näytä tietoturvaan littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "Information security",
+ "text": "Security cookies enable secure data transfer between the user and the service.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "socialMedia": {
+ "fi": {
+ "title": "Sosiaalinen media",
+ "text": "Sosiaalisen median evästeet liittyvät erilaisten sosiaalisen median palveluiden ominaisuuksiin.",
+ "expandAriaLabel": "Näytä sosiaaliseen mediaan liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Sociala medier",
+ "text": "Sociala medier-kakor förknippas med olika sociala medie-tjänsters egenskaper.",
+ "expandAriaLabel": "SV: Näytä sosiaaliseen mediaan littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "Social media",
+ "text": "Social media cookies are related to the characteristics of various social media services.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "accessibility": {
+ "fi": {
+ "title": "Saavutettavuus",
+ "text": "Saavutettavuusevästeet mahdollistavat palvelun joitakin saavutettavuusominaisuuksia.",
+ "expandAriaLabel": "Näytä saavutettavuuteen liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Tillgänglighet",
+ "text": "Tillgänglighetskakor möjliggör vissa egenskaper för tjänstens tillgänglighet.",
+ "expandAriaLabel": "SV: Näytä saavutettavuuteen littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "Accessibility",
+ "text": "Accessibility cookies enable some of the service’s accessibility features.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "deviceInfo": {
+ "fi": {
+ "title": "Laitetiedot",
+ "text": "Laitetietoevästeet sisältävät sellaisia käyttäjän laitteelta kerättyjä tietoja, joilla varmistetaan palvelun toiminta.",
+ "expandAriaLabel": "Näytä laitetietoihin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Enhetsuppgifter",
+ "text": "Kakor för enhetsuppgifterna innehåller sådana uppgifter som samlats in från användarens enhet med vilka tjänstens funktioner säkerställs.",
+ "expandAriaLabel": "SV: Näytä laitetietohini littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "Device information",
+ "text": "Device information cookies contain information collected from the user’s device that ensures the functionality of the service.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "chat": {
+ "fi": {
+ "title": "Chat-palvelut",
+ "text": "Chat-palveluiden evästeet mahdollistavat yhteydenpidon käyttäjän ja palvelun välillä.",
+ "expandAriaLabel": "Näytä chat-palveluihin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Chattjänster",
+ "text": "Kakor för chattjänsterna möjliggör kontakten mellan användaren och tjänsten.",
+ "expandAriaLabel": "SV: Näytä chat-palveluihin littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "Chat services",
+ "text": "Chat service cookies enable communication between the user and the service.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "thirdParty": {
+ "fi": {
+ "title": "Kolmannen osapuolen palvelut",
+ "text": "Evästeet mahdollistavat ulkopuolisten palvelujen (kuten sosiaalisen median alustojen) toiminnan tällä sivustolla.",
+ "expandAriaLabel": "Näytä kolmansiin osapuoliin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Tredje parts tjänster",
+ "text": "Kakor möjliggör utomstående tjänsters (såsom sociala medie-plattformar) funktioner på denna webbplats.",
+ "expandAriaLabel": "SV: Näytä kolmansiin osapuoliin littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "Third-party services",
+ "text": "Cookies allow external services (such as social media platforms) to operate on this website.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "content": {
+ "fi": {
+ "title": "Sisällön esittäminen",
+ "text": "Evästeitä hyödynnetään erilaisten sisältöjen näyttämiseen käyttäjälle.",
+ "expandAriaLabel": "Näytä sisällön esittämiseen liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Visning av innehåll",
+ "text": "Kakor utnyttjas för att visa olika innehåll för användaren.",
+ "expandAriaLabel": "SV: Näytä sisällön esittämiseen littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "Content presentation",
+ "text": "Cookies are used to display various types of content to the user.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "location": {
+ "fi": {
+ "title": "Sijainti",
+ "text": "Sijaintievästeiden avulla voidaan hyödyntää käyttäjän laitteelta saatua sijaintitietoa (GPS).",
+ "expandAriaLabel": "Näytä sijaintiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Läge",
+ "text": "Med hjälp av lägeskakor kan man utnyttja lägesdata som fåtts från användarens enhet (GPS).",
+ "expandAriaLabel": "SV: Näytä sijaintiin littyvien evästeiden tiedot",
+ "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "en": {
+ "title": "Location",
+ "text": "Location cookies can be used to utilise location information (GPS) received from the user’s device.",
+ "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ }
+ },
+ "loadBalancing": {
+ "fi": {
+ "title": "Kuormantasaus",
+ "text": "Kuormantasausevästeiden avulla varmistetaan, että palvelu latautuu ja toimii nopeasti ja tehokkaasti.",
+ "expandAriaLabel": "Näytä kuormantasaukseen liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ },
+ "sv": {
+ "title": "Belastningsutjämning",
+ "text": "Med hjälp av belastningsutjämningskakor säkerställer man att tjänsten laddas och fungerar snabbt och effektivt.",
+ "expandAriaLabel": "SV: Näytä sisällön esittämiseen littyvien evästeiden tiedot",
"checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
},
"en": {
- "title": "EN: Asetuksiin liittyvät evästeet",
- "text": "EN: Evästeisiin tallennetaan käyttäjän tekemiä Donec lacus ligula, consequat id ligula sed, dapibus blandit nunc. Phasellus efficitur nec tellus et tempus. Sed tempor tristique purus, at auctor lectus. Ut pretium rutrum viverra. Sed felis arcu, sodales fermentum finibus in, pretium id tellus. Morbi eget eros congue, pulvinar leo ut, aliquam lectus. Cras consectetur sit amet tortor nec vulputate. Integer scelerisque dignissim auctor. Fusce pharetra dui nulla, vel elementum leo mattis vitae.",
+ "title": "Load balancing",
+ "text": "Load-balancing cookies ensure that the service loads and works quickly and efficiently.",
"expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
"checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
}
@@ -205,20 +405,20 @@
},
"statistics": {
"fi": {
- "title": "Tilastointiin liittyvät evästeet",
- "text": "Tilastoinnilla parannetaan...",
+ "title": "Tilastointi",
+ "text": "Tilastointievästeiden keräämää tietoa käytetään verkkosivuston kehittämiseen.",
"expandAriaLabel": "Näytä tilastointiin liittyvien evästeiden tiedot",
"checkboxAriaDescription": "Tilastoinnilla parannetaan sivustoa. Hyväksy tai jätä hyväksymättä kaikki tilastointiin liittyvät evästeet"
},
"sv": {
- "title": "SV: Tilastointiin liittyvät evästeet",
- "text": "SV: Tilastoinnilla parannetaan...",
+ "title": "Statistik",
+ "text": "Data från statistikkakorna används för att utveckla webbplatsen.",
"expandAriaLabel": "SV: Näytä tilastointiin liittyvien evästeiden tiedot",
"checkboxAriaDescription": "SV: Tilastoinnilla parannetaan sivustoa. Hyväksy tai jätä hyväksymättä kaikki tilastointiin liittyvät evästeet"
},
"en": {
- "title": "EN: Tilastointiin liittyvät evästeet",
- "text": "EN: Tilastoinnilla parannetaan...",
+ "title": "Statistics",
+ "text": "The information collected by statistics cookies is used to develop the website.",
"expandAriaLabel": "EN: Näytä tilastointiin liittyvien evästeiden tiedot",
"checkboxAriaDescription": "EN: Tilastoinnilla parannetaan sivustoa. Hyväksy tai jätä hyväksymättä kaikki tilastointiin liittyvät evästeet"
}
From e1617d566eba77b5efd70ec056825586251b38e8 Mon Sep 17 00:00:00 2001
From: NikoHelle
Date: Fri, 1 Jul 2022 11:10:49 +0300
Subject: [PATCH 165/292] cookie-consent Updated snapshots
---
.../__snapshots__/CookieModal.test.tsx.snap | 22 +++++++++----------
.../__snapshots__/CookiePage.test.tsx.snap | 22 +++++++++----------
2 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap b/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
index 52f9bd959f..2c14f63ec4 100644
--- a/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
+++ b/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
@@ -116,7 +116,7 @@ exports[` spec renders the component 1`] = `
- Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden käytön.
+ Tämä sivusto käyttää pakollisia evästeitä sivun perustoimintojen ja suorituskyvyn varmistamiseksi. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja yksilöidyn sisällön näyttämiseen.
spec renders the component 1`] = `
- Näytä asetukset
+ Näytä evästeasetukset
spec renders the component 1`] = `
Tietoa sivustolla käytetyistä evästeistä
- Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta kategoriasta ja sallia tai kieltää evästeiden käytön.
+ Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea eri luokista ja sallia tai kieltää evästeiden käytön.
spec renders the component 1`] = `
- Osoite
+ Evästeen asettaja
- Kuvaus
+ Käyttötarkoitus
spec renders the component 1`] = `
- Osoite
+ Evästeen asettaja
- Kuvaus
+ Käyttötarkoitus
spec renders the component 1`] = `
- Osoite
+ Evästeen asettaja
- Kuvaus
+ Käyttötarkoitus
spec renders the component 1`] = `
- Osoite
+ Evästeen asettaja
- Kuvaus
+ Käyttötarkoitus
spec renders the component 1`] = `
Test site käyttää evästeitä
- Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi sekä yleisen käytön seurantaan. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja kohdistetun sisällön näyttämiseen. Jatkamalla sivuston käyttöä ilman asetusten muuttamista hyväksyt välttämättömien evästeiden käytön.
+ Tämä sivusto käyttää pakollisia evästeitä sivun perustoimintojen ja suorituskyvyn varmistamiseksi. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja yksilöidyn sisällön näyttämiseen.
spec renders the component 1`] = `
Tietoa sivustolla käytetyistä evästeistä
- Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea tietoa jokaisesta kategoriasta ja sallia tai kieltää evästeiden käytön.
+ Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea eri luokista ja sallia tai kieltää evästeiden käytön.
document.getElementById(containerId);
const [isDomReady, setIsDomReady] = useState(false);
From 3f6cca3b4388b65c180b5c13520214706cf2e3e5 Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Tue, 4 Jan 2022 13:49:17 +0200
Subject: [PATCH 171/292] Draft of the cookie compliance page
---
.../src/docs/components/cookie_compliance.mdx | 88 +++++++++++++++++++
1 file changed, 88 insertions(+)
create mode 100644 site/src/docs/components/cookie_compliance.mdx
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
new file mode 100644
index 0000000000..8b59111971
--- /dev/null
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -0,0 +1,88 @@
+---
+name: Cookie compliance
+menu: Components
+route: /components/cookie-compliance
+---
+
+import { Playground } from "docz";
+import { StatusLabel, FileInput } from "hds-react";
+
+import LargeParagraph from "../../src/components/LargeParagraph";
+import Link from "../../src/components/Link";
+
+# Cookie compliance
+Draft
+
+
+ The cookie compliance component informs users about cookie usage. This banner is shown when they visit a website or an application for the first time.
+
+
+
+## Principles
+
+### Language selection
+The default UI componentes and cookie descriptions are delivered in Finnish, Swedish and English.
+
+### Cookie selection
+The cookies are divided to mandatory and optional cookies. The mandatory cookies are displayed "grayed-out" to visually support the fact that they cannot be unselected.
+
+#### Default mandatory cookies
+** - Login cookies:** A mandatory cookie that allows the visitor to visit the site.
+
+** - Language cookies:** We store the interface language you have selected.
+
+#### Default optional cookies
+** - Statistic cookies:** The information collected by statistical cookies is used to develop the website further.
+
+** - Preference cookiess:** Preference cookies customize E.g. the look and feel of a site based on a user's choices.
+
+** - Marketing cookies:** Marketing cookies can be applied to target specific content to users.
+
+
+## Usage
+
+### When to use
+ - When you need to inform users about cookie usage.
+
+### When not to use
+ - For any other usage except informing about cookie usage.
+
+### Checklist
+ - Make sure that cookie consent is the first item in the page tab order.
+ - If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
+
+## Variations
+
+### Cookie compliance banner closed
+
+React code example:
+
+### Cookie compliance banner open
+
+React code example:
+
+## Accessibility
+
+This component has been validated to meet the WCAG 2.1 AA accessibility guidelines.
+
+
+- Always make sure that cookie consent is either the first item in the page tab order or a link is placed leading to it.
+- Always provide `accessibleLabel` property for assistive technology to replace the visible “OK” text in the action button.
+- When providing a “read more” link, it’s required to give some additional information to users of assistive technologies by using visually hidden components.
+- Cookie Consent uses `tabindex="0"` to make it possible to access it using the tab key or programmatically move focus to it.
+
+## Security
+
+TBA
+
+## Demos & API
+
+TBA
+
+### Core
+
+TBA
+
+### React
+
+TBA
\ No newline at end of file
From af931cc858dbfb0355bb739a3b905b6e79909f70 Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Tue, 4 Jan 2022 13:57:05 +0200
Subject: [PATCH 172/292] Made minor adjustments
---
.../src/docs/components/cookie_compliance.mdx | 27 ++++++++++++-------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 8b59111971..cc179f67d3 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -20,23 +20,32 @@ import Link from "../../src/components/Link";
## Principles
-### Language selection
+### UI components
+
+#### 1. Language selection
The default UI componentes and cookie descriptions are delivered in Finnish, Swedish and English.
-### Cookie selection
+#### 2. Cookie selection
The cookies are divided to mandatory and optional cookies. The mandatory cookies are displayed "grayed-out" to visually support the fact that they cannot be unselected.
-#### Default mandatory cookies
-** - Login cookies:** A mandatory cookie that allows the visitor to visit the site.
+#### Default checkboxes for cookie consent
+
+**Mandatory cookies** (visually grayed-out / disabled)
-** - Language cookies:** We store the interface language you have selected.
+- Login cookies: A mandatory cookie that allows the visitor to visit the site.
+- Language cookies: We store the interface language you have selected.
-#### Default optional cookies
-** - Statistic cookies:** The information collected by statistical cookies is used to develop the website further.
+**Optional cookies**
-** - Preference cookiess:** Preference cookies customize E.g. the look and feel of a site based on a user's choices.
+- Statistic cookies: The information collected by statistical cookies is used to develop the website further.
+- Preference cookiess: Preference cookies customize E.g. the look and feel of a site based on a user's choices.
+- Marketing cookies: Marketing cookies can be applied to target specific content to users.
-** - Marketing cookies:** Marketing cookies can be applied to target specific content to users.
+#### 3. Consent confirmation buttons
+- Accept all cookies
+- Only necessary
+- Continue with selected (TBD)
+- Opt out (TBD)
## Usage
From f1ba7f4333c99fdfb37f74a59728356f75cce8dc Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 07:46:42 +0200
Subject: [PATCH 173/292] Added cookie banner type table
---
site/src/docs/components/cookie_compliance.mdx | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index cc179f67d3..f072316687 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -43,11 +43,20 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
#### 3. Consent confirmation buttons
- Accept all cookies
-- Only necessary
+- Only mandatory
- Continue with selected (TBD)
- Opt out (TBD)
+### When to use each banner type?
+| Site uses cookies | Cookie type | What to do and how to inform the user? | Example
+| ------------------------------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
+| Yes | Only mandatory cookies | Cookie information needs to be conveyed to the user. Only requires acknowledgment and no choices from the user. | Acknowlege -button.
+| | Only optional cookies | User is given the option to choose individual cookies or accept all cookies. | Cookie description(s) + duration(s) + select cookies or accept all -button.
+| | Mandatory and optional cookies | User is given the option to choose individual cookies, accept all cookies or only mandatory cookies. | Cookie description(s) + duration(s) + select cookies or accept only mandatory -button.
+| No | – | **No action needed**. | -
+
+
## Usage
### When to use
From 5c6f081827fa403b8129e9eb81a1edd6f7a140d8 Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 07:48:19 +0200
Subject: [PATCH 174/292] Legibility improvements
---
site/src/docs/components/cookie_compliance.mdx | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index f072316687..5c9afa017d 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -47,6 +47,13 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
- Continue with selected (TBD)
- Opt out (TBD)
+## Usage
+
+### When to use
+ - When you need to inform users about cookie usage.
+
+### When not to use
+ - For any other usage except informing about cookie usage.
### When to use each banner type?
| Site uses cookies | Cookie type | What to do and how to inform the user? | Example
@@ -57,14 +64,6 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
| No | – | **No action needed**. | -
-## Usage
-
-### When to use
- - When you need to inform users about cookie usage.
-
-### When not to use
- - For any other usage except informing about cookie usage.
-
### Checklist
- Make sure that cookie consent is the first item in the page tab order.
- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
From e685979721a686458c6f8f58f018c3a36e227cac Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 09:33:55 +0200
Subject: [PATCH 175/292] Text recommendations update
---
.../src/docs/components/cookie_compliance.mdx | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 5c9afa017d..41afcc616e 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -20,6 +20,32 @@ import Link from "../../src/components/Link";
## Principles
+### Cookie clauses in English (EN)
+
+#### Banner text (accordion closed)
+**Headline:** [Service name] uses cookies
+
+**Bodycopy:** This website uses essential cookies to ensure site performance and for basic analytics. In addition, we use uses targeting cookies to improve the user experience, for analytics and showing targeted content. By continuing to use the site, you agree to the use of essential cookies.
+
+#### Banner text (accordion open)
+**Headline:** [Service name] uses cookies
+
+**Bodycopy:** This website uses essential cookies to ensure site performance and for basic analytics. In addition, we use uses targeting cookies to improve the user experience, for analytics and showing targeted content. By continuing to use the site, you agree to the use of essential cookies.
+
+**Subhead:** Information about the cookies used on the website
+
+**Bodycopy:** The cookies used on this website are classified according to their purpose. You can find information about each category below and allow or deny the use of cookies.
+
+**H:** Mandatory cookies
+
+**B:** The use of mandatory cookies cannot be denied. They enable the operation of the site and affect E.g. the usability of the site.
+(Checkbox + duration + information about the cookie)
+
+**H:** Optional cookies
+
+**B:** You can accept or decline optional cookies.
+(Checkbox + duration + information about the cookie)
+
### UI components
#### 1. Language selection
@@ -46,6 +72,7 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
- Only mandatory
- Continue with selected (TBD)
- Opt out (TBD)
+- Close (cross icon) -button
## Usage
@@ -67,6 +94,7 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
### Checklist
- Make sure that cookie consent is the first item in the page tab order.
- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
+ - Never use an overlay behind the banner or otherwise restrict use of the site.
## Variations
From 91b5d02dd4ca75c07683e7c9257a12fd4891a54b Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 10:07:11 +0200
Subject: [PATCH 176/292] Traficom link added +
---
site/src/docs/components/cookie_compliance.mdx | 3 +++
1 file changed, 3 insertions(+)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 41afcc616e..ff1a9f20b9 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -95,6 +95,9 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
- Make sure that cookie consent is the first item in the page tab order.
- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
- Never use an overlay behind the banner or otherwise restrict use of the site.
+ - Be sure to add a description about the cookie that stores information about accepted cookies.
+
+ **For more information about cookie policies, please visit** Traficom guidelines for service providers.
## Variations
From 215bc864942d1cad084185a4b552ab57e6ca08c3 Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 12:46:59 +0200
Subject: [PATCH 177/292] Fixed typo
---
site/src/docs/components/cookie_compliance.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index ff1a9f20b9..5cc7009fe6 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -64,7 +64,7 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
**Optional cookies**
- Statistic cookies: The information collected by statistical cookies is used to develop the website further.
-- Preference cookiess: Preference cookies customize E.g. the look and feel of a site based on a user's choices.
+- Preference cookies: Preference cookies customize E.g. the look and feel of a site based on a user's choices.
- Marketing cookies: Marketing cookies can be applied to target specific content to users.
#### 3. Consent confirmation buttons
From 58caf47bd034e7ac98688db78158ac0b47774de0 Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Thu, 21 Apr 2022 15:56:22 +0300
Subject: [PATCH 178/292] More work on the cookie compliance pattern
documentation
---
site/docs/patterns/cookie_compliance.mdx | 74 ++++++++++++++++++++++++
1 file changed, 74 insertions(+)
create mode 100644 site/docs/patterns/cookie_compliance.mdx
diff --git a/site/docs/patterns/cookie_compliance.mdx b/site/docs/patterns/cookie_compliance.mdx
new file mode 100644
index 0000000000..2629619e25
--- /dev/null
+++ b/site/docs/patterns/cookie_compliance.mdx
@@ -0,0 +1,74 @@
+---
+name: Cookie compliance
+menu: Patterns
+route: /patterns/cookie-compliance
+---
+
+import { StatusLabel, Notification } from "hds-react";
+
+import LargeParagraph from "../../src/components/LargeParagraph";
+import Link from "../../src/components/Link";
+import Text from "../../src/components/Text";
+import Image from "../../src/components/Image";
+
+# Cookie compliance
+
+Draft
+
+
+ The cookie compliance pattern describes how the user is informed about the use of cookies. The pattern also offers a way to accept or decline non-essential cookies and change the consent later if needed.
+
+
+
The city of Helsinki cookie pattern is based on Traficom's cookie guidelines for service provider.
+
+## Cookie basics
+
+### What are cookies?
+
+### Which cookies are essential and which non-essential?
+
+### When the consent for cookies should be asked?
+
+## Cookie information and categorisation
+
+The cookie consent needs to be asked when your service becomes public (even during alpha/beta periods). [Service under Hel.fi? / Service on its own?]
+
+To prepare to use the HDS cookie compliance component, you have to:
+1. List all the cookies related to your service
+2. Gather all needed information for each cookie
+3. Categorise cookies into predefined categories
+
+| Cookie data | Description |
+| ---------------- | ------------------ |
+| **Name** | |
+| **Host name** | |
+| **Path** | |
+| **Description** | |
+| **Expiration** | |
+
+| Category | Description | Is essential? | Examples |
+| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
+| **Authentication** | Cookies related to authentication are used when users log into a service or an application. | Session-specific cookies are considered essential. Permanent login cookies always need a consent. | Session cookies |
+| **User preferences** | These cookies can be used to remember user selected preferences. | Preferences that improve usability between service uses (e.g. language) can be considered essential. | Language choices, appearance settings, accessibility preferences |
+| **User input** | These cookies are required if the service wants to remember user inputted data. | If using the service would not be possible without input related cookies, they can be considered essential. | Search history, last used search filters, shopping cart contents |
+| **Advertisement and marketing** | Cookies that store user’s interests or action history data. The information is used to display targeted advertising. | Never essential. | User’s interests or service usage history |
+| **Security** | Cookies that ensure safe data transfer between the service and the user. | Always essential. | CAPTCHA results |
+| **Social media** | Cookies related to plug-ins, tools and extensions connected to social media platforms. | Never essential. | Social media feeds, social media share buttons |
+| **Accessibility** | Cookies that aim to improve the accessibility of the service. | Always essential. | Accessibility related preferences such as audio descriptions |
+| **Analytics** | These cookies are used to collect data on how users use the service. This data is used in research or product development. | Usually not essential. If analytics are considered absolutely necessary for the service, cookies can be considered essential and this must be clearly informed to the user. | Unique visitor IP addresses, page views count, measurements how the user uses the service |
+| **Device information** | Cookies used to gather extra information about the device that is used to open the website. | Usually not essential unless this information is absolutely necessary for the service to operate. | Device information, OS and browser information |
+| **Real-time communication** | Cookies that enable real-time communication between the user and the service. | Can only be considered essential if real-time communication is the main purpose of the service. | Chat provider cookies |
+| **Third-party services** | These cookies are often required when content provided by a third-party service is presented in the service. | Not considered essential unless cookies are used only after opening the third-party service (e.g. a chat window). | Cookies used by embedded media such as videos or podcasts |
+| **Displaying content** | Cookies used to present specific content. | Can be considered essential if the cookie is strictly related to presenting the content and not gathering data. | Monitoring how the user is using specific content |
+| **Location** | Cookies used to store an accurate location of the user’s device. | Never essential. | Accurate GPS location |
+
+
+## Using the cookie compliance component
+
+- Make sure that cookie consent is the first item in the page tab order.
+- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
+- Never use an overlay behind the banner or otherwise restrict use of the site.
+- Be sure to add a description about the cookie that stores information about accepted cookies.
+
+## Editing and updating cookie consent
+
From ad88cf65e6758a33c17afb814491c77423255725 Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Tue, 4 Jan 2022 13:49:17 +0200
Subject: [PATCH 179/292] Draft of the cookie compliance page
---
.../src/docs/components/cookie_compliance.mdx | 66 +++----------------
1 file changed, 9 insertions(+), 57 deletions(-)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 5cc7009fe6..8b59111971 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -20,59 +20,24 @@ import Link from "../../src/components/Link";
## Principles
-### Cookie clauses in English (EN)
-
-#### Banner text (accordion closed)
-**Headline:** [Service name] uses cookies
-
-**Bodycopy:** This website uses essential cookies to ensure site performance and for basic analytics. In addition, we use uses targeting cookies to improve the user experience, for analytics and showing targeted content. By continuing to use the site, you agree to the use of essential cookies.
-
-#### Banner text (accordion open)
-**Headline:** [Service name] uses cookies
-
-**Bodycopy:** This website uses essential cookies to ensure site performance and for basic analytics. In addition, we use uses targeting cookies to improve the user experience, for analytics and showing targeted content. By continuing to use the site, you agree to the use of essential cookies.
-
-**Subhead:** Information about the cookies used on the website
-
-**Bodycopy:** The cookies used on this website are classified according to their purpose. You can find information about each category below and allow or deny the use of cookies.
-
-**H:** Mandatory cookies
-
-**B:** The use of mandatory cookies cannot be denied. They enable the operation of the site and affect E.g. the usability of the site.
-(Checkbox + duration + information about the cookie)
-
-**H:** Optional cookies
-
-**B:** You can accept or decline optional cookies.
-(Checkbox + duration + information about the cookie)
-
-### UI components
-
-#### 1. Language selection
+### Language selection
The default UI componentes and cookie descriptions are delivered in Finnish, Swedish and English.
-#### 2. Cookie selection
+### Cookie selection
The cookies are divided to mandatory and optional cookies. The mandatory cookies are displayed "grayed-out" to visually support the fact that they cannot be unselected.
-#### Default checkboxes for cookie consent
+#### Default mandatory cookies
+** - Login cookies:** A mandatory cookie that allows the visitor to visit the site.
-**Mandatory cookies** (visually grayed-out / disabled)
+** - Language cookies:** We store the interface language you have selected.
-- Login cookies: A mandatory cookie that allows the visitor to visit the site.
-- Language cookies: We store the interface language you have selected.
+#### Default optional cookies
+** - Statistic cookies:** The information collected by statistical cookies is used to develop the website further.
-**Optional cookies**
+** - Preference cookiess:** Preference cookies customize E.g. the look and feel of a site based on a user's choices.
-- Statistic cookies: The information collected by statistical cookies is used to develop the website further.
-- Preference cookies: Preference cookies customize E.g. the look and feel of a site based on a user's choices.
-- Marketing cookies: Marketing cookies can be applied to target specific content to users.
+** - Marketing cookies:** Marketing cookies can be applied to target specific content to users.
-#### 3. Consent confirmation buttons
-- Accept all cookies
-- Only mandatory
-- Continue with selected (TBD)
-- Opt out (TBD)
-- Close (cross icon) -button
## Usage
@@ -82,22 +47,9 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
### When not to use
- For any other usage except informing about cookie usage.
-### When to use each banner type?
-| Site uses cookies | Cookie type | What to do and how to inform the user? | Example
-| ------------------------------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
-| Yes | Only mandatory cookies | Cookie information needs to be conveyed to the user. Only requires acknowledgment and no choices from the user. | Acknowlege -button.
-| | Only optional cookies | User is given the option to choose individual cookies or accept all cookies. | Cookie description(s) + duration(s) + select cookies or accept all -button.
-| | Mandatory and optional cookies | User is given the option to choose individual cookies, accept all cookies or only mandatory cookies. | Cookie description(s) + duration(s) + select cookies or accept only mandatory -button.
-| No | – | **No action needed**. | -
-
-
### Checklist
- Make sure that cookie consent is the first item in the page tab order.
- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
- - Never use an overlay behind the banner or otherwise restrict use of the site.
- - Be sure to add a description about the cookie that stores information about accepted cookies.
-
- **For more information about cookie policies, please visit** Traficom guidelines for service providers.
## Variations
From e464029f8f64f8fdf7029ee51a1a7f802a805d92 Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Tue, 4 Jan 2022 13:57:05 +0200
Subject: [PATCH 180/292] Made minor adjustments
---
.../src/docs/components/cookie_compliance.mdx | 27 ++++++++++++-------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 8b59111971..cc179f67d3 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -20,23 +20,32 @@ import Link from "../../src/components/Link";
## Principles
-### Language selection
+### UI components
+
+#### 1. Language selection
The default UI componentes and cookie descriptions are delivered in Finnish, Swedish and English.
-### Cookie selection
+#### 2. Cookie selection
The cookies are divided to mandatory and optional cookies. The mandatory cookies are displayed "grayed-out" to visually support the fact that they cannot be unselected.
-#### Default mandatory cookies
-** - Login cookies:** A mandatory cookie that allows the visitor to visit the site.
+#### Default checkboxes for cookie consent
+
+**Mandatory cookies** (visually grayed-out / disabled)
-** - Language cookies:** We store the interface language you have selected.
+- Login cookies: A mandatory cookie that allows the visitor to visit the site.
+- Language cookies: We store the interface language you have selected.
-#### Default optional cookies
-** - Statistic cookies:** The information collected by statistical cookies is used to develop the website further.
+**Optional cookies**
-** - Preference cookiess:** Preference cookies customize E.g. the look and feel of a site based on a user's choices.
+- Statistic cookies: The information collected by statistical cookies is used to develop the website further.
+- Preference cookiess: Preference cookies customize E.g. the look and feel of a site based on a user's choices.
+- Marketing cookies: Marketing cookies can be applied to target specific content to users.
-** - Marketing cookies:** Marketing cookies can be applied to target specific content to users.
+#### 3. Consent confirmation buttons
+- Accept all cookies
+- Only necessary
+- Continue with selected (TBD)
+- Opt out (TBD)
## Usage
From 5c83c35388483ba8b68a0baa2bd5cc1e99d8e17f Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 07:46:42 +0200
Subject: [PATCH 181/292] Added cookie banner type table
---
site/src/docs/components/cookie_compliance.mdx | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index cc179f67d3..f072316687 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -43,11 +43,20 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
#### 3. Consent confirmation buttons
- Accept all cookies
-- Only necessary
+- Only mandatory
- Continue with selected (TBD)
- Opt out (TBD)
+### When to use each banner type?
+| Site uses cookies | Cookie type | What to do and how to inform the user? | Example
+| ------------------------------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
+| Yes | Only mandatory cookies | Cookie information needs to be conveyed to the user. Only requires acknowledgment and no choices from the user. | Acknowlege -button.
+| | Only optional cookies | User is given the option to choose individual cookies or accept all cookies. | Cookie description(s) + duration(s) + select cookies or accept all -button.
+| | Mandatory and optional cookies | User is given the option to choose individual cookies, accept all cookies or only mandatory cookies. | Cookie description(s) + duration(s) + select cookies or accept only mandatory -button.
+| No | – | **No action needed**. | -
+
+
## Usage
### When to use
From ee3fffd73fe2e215861f7b7eaa3d42a834ec167f Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 07:48:19 +0200
Subject: [PATCH 182/292] Legibility improvements
---
site/src/docs/components/cookie_compliance.mdx | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index f072316687..5c9afa017d 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -47,6 +47,13 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
- Continue with selected (TBD)
- Opt out (TBD)
+## Usage
+
+### When to use
+ - When you need to inform users about cookie usage.
+
+### When not to use
+ - For any other usage except informing about cookie usage.
### When to use each banner type?
| Site uses cookies | Cookie type | What to do and how to inform the user? | Example
@@ -57,14 +64,6 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
| No | – | **No action needed**. | -
-## Usage
-
-### When to use
- - When you need to inform users about cookie usage.
-
-### When not to use
- - For any other usage except informing about cookie usage.
-
### Checklist
- Make sure that cookie consent is the first item in the page tab order.
- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
From 0f090d6f7fa9516a90a8037138ecae71e31acdf7 Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 09:33:55 +0200
Subject: [PATCH 183/292] Text recommendations update
---
.../src/docs/components/cookie_compliance.mdx | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 5c9afa017d..41afcc616e 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -20,6 +20,32 @@ import Link from "../../src/components/Link";
## Principles
+### Cookie clauses in English (EN)
+
+#### Banner text (accordion closed)
+**Headline:** [Service name] uses cookies
+
+**Bodycopy:** This website uses essential cookies to ensure site performance and for basic analytics. In addition, we use uses targeting cookies to improve the user experience, for analytics and showing targeted content. By continuing to use the site, you agree to the use of essential cookies.
+
+#### Banner text (accordion open)
+**Headline:** [Service name] uses cookies
+
+**Bodycopy:** This website uses essential cookies to ensure site performance and for basic analytics. In addition, we use uses targeting cookies to improve the user experience, for analytics and showing targeted content. By continuing to use the site, you agree to the use of essential cookies.
+
+**Subhead:** Information about the cookies used on the website
+
+**Bodycopy:** The cookies used on this website are classified according to their purpose. You can find information about each category below and allow or deny the use of cookies.
+
+**H:** Mandatory cookies
+
+**B:** The use of mandatory cookies cannot be denied. They enable the operation of the site and affect E.g. the usability of the site.
+(Checkbox + duration + information about the cookie)
+
+**H:** Optional cookies
+
+**B:** You can accept or decline optional cookies.
+(Checkbox + duration + information about the cookie)
+
### UI components
#### 1. Language selection
@@ -46,6 +72,7 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
- Only mandatory
- Continue with selected (TBD)
- Opt out (TBD)
+- Close (cross icon) -button
## Usage
@@ -67,6 +94,7 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
### Checklist
- Make sure that cookie consent is the first item in the page tab order.
- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
+ - Never use an overlay behind the banner or otherwise restrict use of the site.
## Variations
From c2695ce02df9ffa90bf35cf89ba323a609a547c6 Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 10:07:11 +0200
Subject: [PATCH 184/292] Traficom link added +
---
site/src/docs/components/cookie_compliance.mdx | 3 +++
1 file changed, 3 insertions(+)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 41afcc616e..ff1a9f20b9 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -95,6 +95,9 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
- Make sure that cookie consent is the first item in the page tab order.
- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
- Never use an overlay behind the banner or otherwise restrict use of the site.
+ - Be sure to add a description about the cookie that stores information about accepted cookies.
+
+ **For more information about cookie policies, please visit** Traficom guidelines for service providers.
## Variations
From d1033235ccccf5bd19526577f1e9974251d93a52 Mon Sep 17 00:00:00 2001
From: Petri Lahdelma
Date: Wed, 5 Jan 2022 12:46:59 +0200
Subject: [PATCH 185/292] Fixed typo
---
site/src/docs/components/cookie_compliance.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index ff1a9f20b9..5cc7009fe6 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -64,7 +64,7 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
**Optional cookies**
- Statistic cookies: The information collected by statistical cookies is used to develop the website further.
-- Preference cookiess: Preference cookies customize E.g. the look and feel of a site based on a user's choices.
+- Preference cookies: Preference cookies customize E.g. the look and feel of a site based on a user's choices.
- Marketing cookies: Marketing cookies can be applied to target specific content to users.
#### 3. Consent confirmation buttons
From 179db3c5f6ca3210f7672a0b1c7b999514fbec18 Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Fri, 22 Apr 2022 15:29:14 +0300
Subject: [PATCH 186/292] More work on the cookie consent documentation
---
site/docs/patterns/cookie_compliance.mdx | 35 ++++++++++++++++++++++--
1 file changed, 33 insertions(+), 2 deletions(-)
diff --git a/site/docs/patterns/cookie_compliance.mdx b/site/docs/patterns/cookie_compliance.mdx
index 2629619e25..00ff4484d2 100644
--- a/site/docs/patterns/cookie_compliance.mdx
+++ b/site/docs/patterns/cookie_compliance.mdx
@@ -25,19 +25,31 @@ import Image from "../../src/components/Image";
### What are cookies?
-### Which cookies are essential and which non-essential?
+Cookies are pieces of data that are stores on the user's device. They are a way to store persistent information about how the user is using the service. The use of cookies is controlled with a law. The law requires that cookies that are not essential for the service must be asked consent from the user.
### When the consent for cookies should be asked?
+The consent needs to be asked for a cookie that is not essential for the use of the service. This means that the service's main functions are available even without these cookies. In the future, we refer to these cookies as **non-essential cookies**.
+
+If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need a consent from the user but they still have to be informed.
+
## Cookie information and categorisation
The cookie consent needs to be asked when your service becomes public (even during alpha/beta periods). [Service under Hel.fi? / Service on its own?]
To prepare to use the HDS cookie compliance component, you have to:
1. List all the cookies related to your service
-2. Gather all needed information for each cookie
+2. Decide which cookies are essential
3. Categorise cookies into predefined categories
+We will go over each step in the following chapters.
+
+### 1. List all the cookies related to your service
+
+First, you need to list all the cookies your service is using. It is also a good moment to review the list of cookies. Aim to use as few cookies as possible and only gather information your service **currently** needs. You should easily be able to justify the need for each cookie to the user.
+
+For each cookie, you need to gather and display the following information. This information will be displayed in the cookie consent windows if the user wishes to get more information about a specific cookie.
+
| Cookie data | Description |
| ---------------- | ------------------ |
| **Name** | |
@@ -46,6 +58,16 @@ To prepare to use the HDS cookie compliance component, you have to:
| **Description** | |
| **Expiration** | |
+### 2. Decide which cookies are essential
+
+The next step is to determinate which cookies can be considered essential. Generally, you will need to ask consent for all cookies that are not absolutely vital to your service to operate. If you feel that the user can utilise the main functions of your service without a specific cookie, the cookie cannot be considered essential.
+
+If you have hard time determininig whether a cookie is an essential cookie, refer to the cookie category table in the next chapter for more examples.
+
+### 3. Categorise cookies into predefined categories
+
+
To help the user understand the reasoning behind cookies, it is required to group cookies into pre-determined categories. These categories are based on Traficom's cookie guidelines for service provider.
+
| Category | Description | Is essential? | Examples |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| **Authentication** | Cookies related to authentication are used when users log into a service or an application. | Session-specific cookies are considered essential. Permanent login cookies always need a consent. | Session cookies |
@@ -62,9 +84,18 @@ To prepare to use the HDS cookie compliance component, you have to:
| **Displaying content** | Cookies used to present specific content. | Can be considered essential if the cookie is strictly related to presenting the content and not gathering data. | Monitoring how the user is using specific content |
| **Location** | Cookies used to store an accurate location of the user’s device. | Never essential. | Accurate GPS location |
+#### Can I use a custom category?
+
+If your cookies do not fit into any of the pre-defined categories, you are allowed to use custom categories.
+
+#### We only have a handful of cookies. Do we still have to categorize them?
+
+Yes, cookies always have to be put into a category. If you have a small about of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
## Using the cookie compliance component
+The cookie consent is asked using the HDS provided CookieConsent component. This component is shown when the service loads.
+
- Make sure that cookie consent is the first item in the page tab order.
- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
- Never use an overlay behind the banner or otherwise restrict use of the site.
From bba6b79f4a1e11ace3c000c029a0709f707f9441 Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Mon, 25 Apr 2022 09:22:51 +0300
Subject: [PATCH 187/292] Cookie consent docs typo fixes
---
site/docs/patterns/cookie_compliance.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/site/docs/patterns/cookie_compliance.mdx b/site/docs/patterns/cookie_compliance.mdx
index 00ff4484d2..4dc2e4e6e1 100644
--- a/site/docs/patterns/cookie_compliance.mdx
+++ b/site/docs/patterns/cookie_compliance.mdx
@@ -31,7 +31,7 @@ Cookies are pieces of data that are stores on the user's device. They are a way
The consent needs to be asked for a cookie that is not essential for the use of the service. This means that the service's main functions are available even without these cookies. In the future, we refer to these cookies as **non-essential cookies**.
-If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need a consent from the user but they still have to be informed.
+If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need a consent from the user but they still have to be informed. Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be essential and which should not.
## Cookie information and categorisation
@@ -48,7 +48,7 @@ We will go over each step in the following chapters.
First, you need to list all the cookies your service is using. It is also a good moment to review the list of cookies. Aim to use as few cookies as possible and only gather information your service **currently** needs. You should easily be able to justify the need for each cookie to the user.
-For each cookie, you need to gather and display the following information. This information will be displayed in the cookie consent windows if the user wishes to get more information about a specific cookie.
+For each cookie, you need to gather and display the following information. This information will be displayed in the cookie consent window if the user wishes to get more information about a specific cookie.
| Cookie data | Description |
| ---------------- | ------------------ |
From 66945e08b334386e421316c52b23ca3ec7ef51df Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Thu, 5 May 2022 16:06:43 +0300
Subject: [PATCH 188/292] Finalised Cookie consent pattern. More work on the
component docs.
---
site/docs/patterns/cookie_compliance.mdx | 30 +++--
.../src/docs/components/cookie_compliance.mdx | 106 +++++-------------
2 files changed, 54 insertions(+), 82 deletions(-)
diff --git a/site/docs/patterns/cookie_compliance.mdx b/site/docs/patterns/cookie_compliance.mdx
index 4dc2e4e6e1..72fe2b9edf 100644
--- a/site/docs/patterns/cookie_compliance.mdx
+++ b/site/docs/patterns/cookie_compliance.mdx
@@ -31,7 +31,14 @@ Cookies are pieces of data that are stores on the user's device. They are a way
The consent needs to be asked for a cookie that is not essential for the use of the service. This means that the service's main functions are available even without these cookies. In the future, we refer to these cookies as **non-essential cookies**.
-If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need a consent from the user but they still have to be informed. Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be essential and which should not.
+If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need a consent from the user but they still have to be informed. The user cannot deny the use of essential cookies - these selections are grayed out in the cookie consent component. Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be essential and which should not.
+
+| Site uses cookies | Cookie type | What to do and how to inform the user? | Example
+| ------------------------------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
+| Yes | Only mandatory cookies | Cookie information needs to be conveyed to the user. Only requires acknowledgment and no choices from the user. | Acknowlege -button.
+| | Only optional cookies | User is given the option to choose individual cookies or accept all cookies. | Cookie description(s) + duration(s) + select cookies or accept all -button.
+| | Mandatory and optional cookies | User is given the option to choose individual cookies, accept all cookies or only mandatory cookies. | Cookie description(s) + duration(s) + select cookies or accept only mandatory -button.
+| No | – | **No action needed**. | -
## Cookie information and categorisation
@@ -90,16 +97,25 @@ If your cookies do not fit into any of the pre-defined categories, you are allow
#### We only have a handful of cookies. Do we still have to categorize them?
-Yes, cookies always have to be put into a category. If you have a small about of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
+Yes, cookies always have to be put into a category. If you have a small amount of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
## Using the cookie compliance component
-The cookie consent is asked using the HDS provided CookieConsent component. This component is shown when the service loads.
+The cookie consent is asked using the HDS provided CookieConsent component. If the user has not given consent for cookies yet, this component will be shown when the service loads.
+### When are where to show the cookie consent modal?
+- The cookie consent modal must to be shown if the user has not accepted or denied the non-essential cookies of the service.
+ - If cookies have changed since the last time the user accepted or denied them, the consent must be shown again.
+- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
- Make sure that cookie consent is the first item in the page tab order.
-- If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
-- Never use an overlay behind the banner or otherwise restrict use of the site.
-- Be sure to add a description about the cookie that stores information about accepted cookies.
-## Editing and updating cookie consent
+### How the cookie consent modal effects other content of the service?
+- The cookie consent modal should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
+- There may be elements or content on your page that do not work properly until the user gives a consent to cookies. It is recommended to show clear error messages at the position of these elements to clearly indicate why they are not available.
+ - If your page has a chat button in the lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
+### What happens after the user has accepted or denied the non-essential cookies?
+- The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page which allows changing viewing the cookies and changing consent.
+ - The link to this page should be placed to the footer element of the page.
+ - Note that the HDS CookieConsent component offers a functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
+- If new cookies are added or current ones changed, the consent should be asked from the user again the next time the service is used.
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 5cc7009fe6..1e349da5f7 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -5,7 +5,7 @@ route: /components/cookie-compliance
---
import { Playground } from "docz";
-import { StatusLabel, FileInput } from "hds-react";
+import { StatusLabel, Notification } from "hds-react";
import LargeParagraph from "../../src/components/LargeParagraph";
import Link from "../../src/components/Link";
@@ -17,42 +17,21 @@ import Link from "../../src/components/Link";
The cookie compliance component informs users about cookie usage. This banner is shown when they visit a website or an application for the first time.
+
+ This documentation page is about HDS CookieCompliance component. If you are looking for documentation about building multi-page forms, please refer to HDS multi-page form pattern documentation page.
+
## Principles
+TODO
-### Cookie clauses in English (EN)
-
-#### Banner text (accordion closed)
-**Headline:** [Service name] uses cookies
-
-**Bodycopy:** This website uses essential cookies to ensure site performance and for basic analytics. In addition, we use uses targeting cookies to improve the user experience, for analytics and showing targeted content. By continuing to use the site, you agree to the use of essential cookies.
-
-#### Banner text (accordion open)
-**Headline:** [Service name] uses cookies
-
-**Bodycopy:** This website uses essential cookies to ensure site performance and for basic analytics. In addition, we use uses targeting cookies to improve the user experience, for analytics and showing targeted content. By continuing to use the site, you agree to the use of essential cookies.
-
-**Subhead:** Information about the cookies used on the website
-
-**Bodycopy:** The cookies used on this website are classified according to their purpose. You can find information about each category below and allow or deny the use of cookies.
-
-**H:** Mandatory cookies
-
-**B:** The use of mandatory cookies cannot be denied. They enable the operation of the site and affect E.g. the usability of the site.
-(Checkbox + duration + information about the cookie)
-
-**H:** Optional cookies
-
-**B:** You can accept or decline optional cookies.
-(Checkbox + duration + information about the cookie)
-
-### UI components
-
-#### 1. Language selection
-The default UI componentes and cookie descriptions are delivered in Finnish, Swedish and English.
+## Accessibility
+- Always make sure that cookie consent is either the first item in the page tab order or a link is placed leading to it.
+- Always provide `accessibleLabel` property for assistive technology to replace the visible “OK” text in the action button.
+- When providing a “read more” link, it’s required to give some additional information to users of assistive technologies by using visually hidden components.
+- Cookie Consent uses `tabindex="0"` to make it possible to access it using the tab key or programmatically move focus to it.
-#### 2. Cookie selection
-The cookies are divided to mandatory and optional cookies. The mandatory cookies are displayed "grayed-out" to visually support the fact that they cannot be unselected.
+## Security
+TODO
#### Default checkboxes for cookie consent
@@ -74,63 +53,40 @@ The cookies are divided to mandatory and optional cookies. The mandatory cookies
- Opt out (TBD)
- Close (cross icon) -button
-## Usage
-
-### When to use
- - When you need to inform users about cookie usage.
-
-### When not to use
- - For any other usage except informing about cookie usage.
-
-### When to use each banner type?
-| Site uses cookies | Cookie type | What to do and how to inform the user? | Example
-| ------------------------------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
-| Yes | Only mandatory cookies | Cookie information needs to be conveyed to the user. Only requires acknowledgment and no choices from the user. | Acknowlege -button.
-| | Only optional cookies | User is given the option to choose individual cookies or accept all cookies. | Cookie description(s) + duration(s) + select cookies or accept all -button.
-| | Mandatory and optional cookies | User is given the option to choose individual cookies, accept all cookies or only mandatory cookies. | Cookie description(s) + duration(s) + select cookies or accept only mandatory -button.
-| No | – | **No action needed**. | -
-
-
-### Checklist
- - Make sure that cookie consent is the first item in the page tab order.
- - If your page has a chat button in lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
- - Never use an overlay behind the banner or otherwise restrict use of the site.
- - Be sure to add a description about the cookie that stores information about accepted cookies.
-
- **For more information about cookie policies, please visit** Traficom guidelines for service providers.
-
-## Variations
+## Usage & variations
-### Cookie compliance banner closed
+### Banner
+TODO
-React code example:
+
-### Cookie compliance banner open
+
-React code example:
+#### React code example:
+```tsx
-## Accessibility
+```
-This component has been validated to meet the WCAG 2.1 AA accessibility guidelines.
+### Rendered as a page
+TODO
+
-- Always make sure that cookie consent is either the first item in the page tab order or a link is placed leading to it.
-- Always provide `accessibleLabel` property for assistive technology to replace the visible “OK” text in the action button.
-- When providing a “read more” link, it’s required to give some additional information to users of assistive technologies by using visually hidden components.
-- Cookie Consent uses `tabindex="0"` to make it possible to access it using the tab key or programmatically move focus to it.
+
-## Security
+#### React code example:
+```tsx
-TBA
+```
## Demos & API
-TBA
-
### Core
-TBA
+_Not included in hds-core!_
### React
-TBA
\ No newline at end of file
+[CookieCompliance in hds-react](/storybook/react/?path=/story/components-dateinput--default)
+
+[CookieCompliance API](/storybook/react/?path=/docs/components-dateinput--default)
\ No newline at end of file
From 1017b0fc703312d459908dcd16dd3cc6f1665845 Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Fri, 6 May 2022 15:38:15 +0300
Subject: [PATCH 189/292] More work on the cookie consent documentation
---
site/docs/patterns/cookie_compliance.mdx | 71 ++++++++++---------
.../src/docs/components/cookie_compliance.mdx | 40 ++++-------
2 files changed, 48 insertions(+), 63 deletions(-)
diff --git a/site/docs/patterns/cookie_compliance.mdx b/site/docs/patterns/cookie_compliance.mdx
index 72fe2b9edf..60de2e1364 100644
--- a/site/docs/patterns/cookie_compliance.mdx
+++ b/site/docs/patterns/cookie_compliance.mdx
@@ -25,20 +25,22 @@ import Image from "../../src/components/Image";
### What are cookies?
-Cookies are pieces of data that are stores on the user's device. They are a way to store persistent information about how the user is using the service. The use of cookies is controlled with a law. The law requires that cookies that are not essential for the service must be asked consent from the user.
+Cookies are pieces of data that are stored on the user's device. They are a way to store persistent information about how the user is using the service. The use of cookies is controlled by law. The law requires that cookies that are not essential for the service must be asked for consent from the user.
### When the consent for cookies should be asked?
The consent needs to be asked for a cookie that is not essential for the use of the service. This means that the service's main functions are available even without these cookies. In the future, we refer to these cookies as **non-essential cookies**.
-If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need a consent from the user but they still have to be informed. The user cannot deny the use of essential cookies - these selections are grayed out in the cookie consent component. Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be essential and which should not.
+If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need consent from the user but they still have to be informed. The user cannot deny the use of essential cookies - these selections are grayed out in the cookie consent component. The table below demonstrates when consent is needed and when it is not.
-| Site uses cookies | Cookie type | What to do and how to inform the user? | Example
-| ------------------------------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
-| Yes | Only mandatory cookies | Cookie information needs to be conveyed to the user. Only requires acknowledgment and no choices from the user. | Acknowlege -button.
-| | Only optional cookies | User is given the option to choose individual cookies or accept all cookies. | Cookie description(s) + duration(s) + select cookies or accept all -button.
-| | Mandatory and optional cookies | User is given the option to choose individual cookies, accept all cookies or only mandatory cookies. | Cookie description(s) + duration(s) + select cookies or accept only mandatory -button.
-| No | – | **No action needed**. | -
+| Types of cookies | Is consent needed? | What needs to be done?
+| ----------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------ |
+| Only essential cookies | No | The cookie consent banner does not need to be shown. The list of cookies has to be available on a separate cookies page.
+| Only optional cookies | Yes | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
+| Both essential and optional cookies | Yes, for all optional cookies | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
+| No cookies at all | No | No actions needed.
+
+Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be essential and which should not.
## Cookie information and categorisation
@@ -53,23 +55,22 @@ We will go over each step in the following chapters.
### 1. List all the cookies related to your service
-First, you need to list all the cookies your service is using. It is also a good moment to review the list of cookies. Aim to use as few cookies as possible and only gather information your service **currently** needs. You should easily be able to justify the need for each cookie to the user.
+First, you need to list all the cookies your service is using. It is also a good moment to review the list of cookies. Aim to use as few cookies as possible and only gather the information your service **currently** needs. You should easily be able to justify the need for each cookie to the user.
For each cookie, you need to gather and display the following information. This information will be displayed in the cookie consent window if the user wishes to get more information about a specific cookie.
-| Cookie data | Description |
-| ---------------- | ------------------ |
-| **Name** | |
-| **Host name** | |
-| **Path** | |
-| **Description** | |
-| **Expiration** | |
+| Cookie data | Description | Example |
+| ---------------- | ------------------------------------------------------------------------------------------------- | ------- |
+| **Name** | What is the name of the cookie file? | cookie-agreed
+| **Provider** | What domain is the provider of this cookie? | hel.fi
+| **Purpose** | Why the cookie is needed? What purpose does it serve? | Used to store information about whether visitors have given or declined the use of cookie categories used on this service.
+| **Validity** | How long the cookie will be valid? This means time to expire from the creation of the cookie. | 100 days
### 2. Decide which cookies are essential
-The next step is to determinate which cookies can be considered essential. Generally, you will need to ask consent for all cookies that are not absolutely vital to your service to operate. If you feel that the user can utilise the main functions of your service without a specific cookie, the cookie cannot be considered essential.
+The next step is to determine which cookies can be considered essential. Generally, you will need to ask consent for all cookies that are not vital to your service to operate. If you feel that the user can utilise the main functions of your service without a specific cookie, the cookie cannot be considered essential.
-If you have hard time determininig whether a cookie is an essential cookie, refer to the cookie category table in the next chapter for more examples.
+If you have a hard time determining whether a cookie is an essential cookie, refer to the cookie category table in the next chapter for more examples.
### 3. Categorise cookies into predefined categories
@@ -77,19 +78,19 @@ If you have hard time determininig whether a cookie is an essential cookie, refe
| Category | Description | Is essential? | Examples |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
-| **Authentication** | Cookies related to authentication are used when users log into a service or an application. | Session-specific cookies are considered essential. Permanent login cookies always need a consent. | Session cookies |
-| **User preferences** | These cookies can be used to remember user selected preferences. | Preferences that improve usability between service uses (e.g. language) can be considered essential. | Language choices, appearance settings, accessibility preferences |
-| **User input** | These cookies are required if the service wants to remember user inputted data. | If using the service would not be possible without input related cookies, they can be considered essential. | Search history, last used search filters, shopping cart contents |
+| **Authentication** | Cookies related to authentication are used when users log into a service or an application. | Session-specific cookies are considered essential. Permanent login cookies always need consent. | Session cookies |
+| **User preferences** | These cookies can be used to remember user-selected preferences. | Preferences that improve usability between service uses (e.g. language) can be considered essential. | Language choices, appearance settings, accessibility preferences |
+| **User input** | These cookies are required if the service wants to remember user-inputted data. | If using the service would not be possible without input-related cookies, they can be considered essential. | Search history, last used search filters, shopping cart contents |
| **Advertisement and marketing** | Cookies that store user’s interests or action history data. The information is used to display targeted advertising. | Never essential. | User’s interests or service usage history |
| **Security** | Cookies that ensure safe data transfer between the service and the user. | Always essential. | CAPTCHA results |
-| **Social media** | Cookies related to plug-ins, tools and extensions connected to social media platforms. | Never essential. | Social media feeds, social media share buttons |
+| **Social media** | Cookies related to plug-ins, tools, and extensions connected to social media platforms. | Never essential. | Social media feeds, social media share buttons |
| **Accessibility** | Cookies that aim to improve the accessibility of the service. | Always essential. | Accessibility related preferences such as audio descriptions |
-| **Analytics** | These cookies are used to collect data on how users use the service. This data is used in research or product development. | Usually not essential. If analytics are considered absolutely necessary for the service, cookies can be considered essential and this must be clearly informed to the user. | Unique visitor IP addresses, page views count, measurements how the user uses the service |
-| **Device information** | Cookies used to gather extra information about the device that is used to open the website. | Usually not essential unless this information is absolutely necessary for the service to operate. | Device information, OS and browser information |
+| **Analytics** | These cookies are used to collect data on how users use the service. This data is used in research or product development. | Usually not essential. If analytics are considered necessary for the service, cookies can be considered essential and this must be informed to the user. | Unique visitor IP addresses, page views count, measurements of how the user uses the service |
+| **Device information** | Cookies are used to gather extra information about the device that is used to open the website. | Usually not essential unless this information is necessary for the service to operate. | Device information, OS, and browser information |
| **Real-time communication** | Cookies that enable real-time communication between the user and the service. | Can only be considered essential if real-time communication is the main purpose of the service. | Chat provider cookies |
| **Third-party services** | These cookies are often required when content provided by a third-party service is presented in the service. | Not considered essential unless cookies are used only after opening the third-party service (e.g. a chat window). | Cookies used by embedded media such as videos or podcasts |
-| **Displaying content** | Cookies used to present specific content. | Can be considered essential if the cookie is strictly related to presenting the content and not gathering data. | Monitoring how the user is using specific content |
-| **Location** | Cookies used to store an accurate location of the user’s device. | Never essential. | Accurate GPS location |
+| **Displaying content** | Cookies are used to present specific content. | Can be considered essential if the cookie is strictly related to presenting the content and not gathering data. | Monitoring how the user is using specific content |
+| **Location** | Cookies are used to store an accurate location of the user’s device. | Never essential. | Accurate GPS location |
#### Can I use a custom category?
@@ -97,25 +98,25 @@ If your cookies do not fit into any of the pre-defined categories, you are allow
#### We only have a handful of cookies. Do we still have to categorize them?
-Yes, cookies always have to be put into a category. If you have a small amount of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
+Yes, cookies always have to be put into a category. If you have a small number of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
## Using the cookie compliance component
The cookie consent is asked using the HDS provided CookieConsent component. If the user has not given consent for cookies yet, this component will be shown when the service loads.
-### When are where to show the cookie consent modal?
-- The cookie consent modal must to be shown if the user has not accepted or denied the non-essential cookies of the service.
+### When and where to show the cookie consent modal?
+- The cookie consent modal must be shown if the user has not accepted or denied the non-essential cookies of the service.
- If cookies have changed since the last time the user accepted or denied them, the consent must be shown again.
- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
- Make sure that cookie consent is the first item in the page tab order.
-### How the cookie consent modal effects other content of the service?
+### How does the cookie consent modal affect other content of the service?
- The cookie consent modal should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
-- There may be elements or content on your page that do not work properly until the user gives a consent to cookies. It is recommended to show clear error messages at the position of these elements to clearly indicate why they are not available.
+- There may be elements or content on your page that do not work properly until the user gives consent to cookies. It is recommended to show clear error messages at the position of these elements to indicate why they are not available.
- If your page has a chat button in the lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
### What happens after the user has accepted or denied the non-essential cookies?
-- The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page which allows changing viewing the cookies and changing consent.
- - The link to this page should be placed to the footer element of the page.
- - Note that the HDS CookieConsent component offers a functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
-- If new cookies are added or current ones changed, the consent should be asked from the user again the next time the service is used.
+- The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page that allows changing viewing the cookies and changing consent.
+ - The link to this page should be placed on the footer element of the page.
+ - Note that the HDS CookieConsent component offers functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
+- If new cookies are added or current ones changed, consent should be asked from the user again the next time the service is used.
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 1e349da5f7..5d562084a3 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -18,45 +18,29 @@ import Link from "../../src/components/Link";
- This documentation page is about HDS CookieCompliance component. If you are looking for documentation about building multi-page forms, please refer to HDS multi-page form pattern documentation page.
+ This documentation page is about HDS CookieCompliance component. If you are looking for documentation about cookies in general, please refer to HDS cookie compliance pattern documentation page.
## Principles
-TODO
+- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
+- The cookie consent can be rendered either as a modal or as a page. This allows using the same cookie data for both presentation variations.
+ - Use the modal variant as a banner when the user enters the site.
+ - Use the page variant as a full page that the user can access from the page [Footer](/components/footer) element.
+- You must offer the cookie consent modal and page in all languages that your service supports.
+ - By default, the cookie consent banner should use the same language as the service is using.
+ - The component has its language switcher so the user can easily switch the language of the dialog even if they opened the service with a language they do not understand.
## Accessibility
-- Always make sure that cookie consent is either the first item in the page tab order or a link is placed leading to it.
-- Always provide `accessibleLabel` property for assistive technology to replace the visible “OK” text in the action button.
-- When providing a “read more” link, it’s required to give some additional information to users of assistive technologies by using visually hidden components.
-- Cookie Consent uses `tabindex="0"` to make it possible to access it using the tab key or programmatically move focus to it.
+- Make sure that cookie consent is the first item in the page tab order.
+- The cookie consent modal should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
## Security
TODO
-#### Default checkboxes for cookie consent
-
-**Mandatory cookies** (visually grayed-out / disabled)
-
-- Login cookies: A mandatory cookie that allows the visitor to visit the site.
-- Language cookies: We store the interface language you have selected.
-
-**Optional cookies**
-
-- Statistic cookies: The information collected by statistical cookies is used to develop the website further.
-- Preference cookies: Preference cookies customize E.g. the look and feel of a site based on a user's choices.
-- Marketing cookies: Marketing cookies can be applied to target specific content to users.
-
-#### 3. Consent confirmation buttons
-- Accept all cookies
-- Only mandatory
-- Continue with selected (TBD)
-- Opt out (TBD)
-- Close (cross icon) -button
-
## Usage & variations
### Banner
-TODO
+The default banner variant opens at the bottom of the viewport. It is opened if the consent for cookies has not been given or if the cookies have changed. The banner can be expanded to view and change cookie settings.
@@ -68,7 +52,7 @@ TODO
```
### Rendered as a page
-TODO
+The cookie consent expanded settings page can be rendered as a separate page. This is used to create a cookie page that the user can access via a link in the [Footer](/components/footer) element. This allows the user to view or edit cookie settings after the initial consent has been given.
From 0ed2bb9bda4f0c1748c30140efadd423f4667edc Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Mon, 9 May 2022 14:28:50 +0300
Subject: [PATCH 190/292] Added cookie consent documentation to the new
docsite. Added cookie consent API docs.
---
new-site/yarn.lock | 13755 ++++++++++++++++
.../cookie-consent/accessibility.mdx | 14 +
.../docs/components/cookie-consent/api.mdx | 39 +
.../docs/components/cookie-consent/code.mdx | 50 +
.../docs/components/cookie-consent/index.mdx | 48 +
.../docs/components/cookie-consent/tabs.mdx | 33 +
.../src/docs/components/cookie_compliance.mdx | 30 +-
site/src/docs/patterns/cookies.mdx | 122 +
8 files changed, 14090 insertions(+), 1 deletion(-)
create mode 100644 new-site/yarn.lock
create mode 100644 site/src/docs/components/cookie-consent/accessibility.mdx
create mode 100644 site/src/docs/components/cookie-consent/api.mdx
create mode 100644 site/src/docs/components/cookie-consent/code.mdx
create mode 100644 site/src/docs/components/cookie-consent/index.mdx
create mode 100644 site/src/docs/components/cookie-consent/tabs.mdx
create mode 100644 site/src/docs/patterns/cookies.mdx
diff --git a/new-site/yarn.lock b/new-site/yarn.lock
new file mode 100644
index 0000000000..fb72df145b
--- /dev/null
+++ b/new-site/yarn.lock
@@ -0,0 +1,13755 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ampproject/remapping@^2.1.0":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34"
+ integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.0"
+
+"@ardatan/aggregate-error@0.0.6":
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz#fe6924771ea40fc98dc7a7045c2e872dc8527609"
+ integrity sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==
+ dependencies:
+ tslib "~2.0.1"
+
+"@babel/code-frame@7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
+ integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
+"@babel/code-frame@7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
+ integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
+ integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
+ dependencies:
+ "@babel/highlight" "^7.16.7"
+
+"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34"
+ integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==
+
+"@babel/core@7.12.9":
+ version "7.12.9"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
+ integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/generator" "^7.12.5"
+ "@babel/helper-module-transforms" "^7.12.1"
+ "@babel/helpers" "^7.12.5"
+ "@babel/parser" "^7.12.7"
+ "@babel/template" "^7.12.7"
+ "@babel/traverse" "^7.12.9"
+ "@babel/types" "^7.12.7"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.1"
+ json5 "^2.1.2"
+ lodash "^4.17.19"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
+"@babel/core@^7.15.5":
+ version "7.17.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225"
+ integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==
+ dependencies:
+ "@ampproject/remapping" "^2.1.0"
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.3"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helpers" "^7.17.2"
+ "@babel/parser" "^7.17.3"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.3"
+ "@babel/types" "^7.17.0"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.1.2"
+ semver "^6.3.0"
+
+"@babel/eslint-parser@^7.15.4":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz#eabb24ad9f0afa80e5849f8240d0e5facc2d90d6"
+ integrity sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==
+ dependencies:
+ eslint-scope "^5.1.1"
+ eslint-visitor-keys "^2.1.0"
+ semver "^6.3.0"
+
+"@babel/generator@^7.12.5", "@babel/generator@^7.15.4", "@babel/generator@^7.16.8", "@babel/generator@^7.17.3":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200"
+ integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==
+ dependencies:
+ "@babel/types" "^7.17.0"
+ jsesc "^2.5.1"
+ source-map "^0.5.0"
+
+"@babel/helper-annotate-as-pure@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
+ integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b"
+ integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
+ integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
+ dependencies:
+ "@babel/compat-data" "^7.16.4"
+ "@babel/helper-validator-option" "^7.16.7"
+ browserslist "^4.17.5"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6":
+ version "7.17.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9"
+ integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-member-expression-to-functions" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+
+"@babel/helper-create-regexp-features-plugin@^7.16.7":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1"
+ integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ regexpu-core "^5.0.1"
+
+"@babel/helper-define-polyfill-provider@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665"
+ integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.13.0"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/traverse" "^7.13.0"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+ semver "^6.1.2"
+
+"@babel/helper-environment-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
+ integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-explode-assignable-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a"
+ integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
+ integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-get-function-arity@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
+ integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-hoist-variables@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
+ integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-member-expression-to-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0"
+ integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
+ integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7":
+ version "7.17.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0"
+ integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.3"
+ "@babel/types" "^7.17.0"
+
+"@babel/helper-optimise-call-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2"
+ integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-plugin-utils@7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
+ integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
+ integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==
+
+"@babel/helper-remap-async-to-generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3"
+ integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-wrap-function" "^7.16.8"
+ "@babel/types" "^7.16.8"
+
+"@babel/helper-replace-supers@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1"
+ integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-member-expression-to-functions" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-simple-access@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
+ integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.16.0":
+ version "7.16.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09"
+ integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==
+ dependencies:
+ "@babel/types" "^7.16.0"
+
+"@babel/helper-split-export-declaration@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
+ integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-validator-identifier@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
+ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
+
+"@babel/helper-validator-option@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
+ integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
+
+"@babel/helper-wrap-function@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200"
+ integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==
+ dependencies:
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.8"
+ "@babel/types" "^7.16.8"
+
+"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.2":
+ version "7.17.2"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417"
+ integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.0"
+ "@babel/types" "^7.17.0"
+
+"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7":
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88"
+ integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.12.7", "@babel/parser@^7.15.5", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0"
+ integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050"
+ integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9"
+ integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.16.7"
+
+"@babel/plugin-proposal-async-generator-functions@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8"
+ integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
+"@babel/plugin-proposal-class-properties@^7.14.0", "@babel/plugin-proposal-class-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0"
+ integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-proposal-class-static-block@^7.16.7":
+ version "7.17.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c"
+ integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.17.6"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+
+"@babel/plugin-proposal-dynamic-import@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2"
+ integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
+"@babel/plugin-proposal-export-namespace-from@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163"
+ integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-proposal-json-strings@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8"
+ integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
+"@babel/plugin-proposal-logical-assignment-operators@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea"
+ integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99"
+ integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-proposal-numeric-separator@^7.14.5", "@babel/plugin-proposal-numeric-separator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9"
+ integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-object-rest-spread@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
+ integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
+ "@babel/plugin-transform-parameters" "^7.12.1"
+
+"@babel/plugin-proposal-object-rest-spread@^7.14.7", "@babel/plugin-proposal-object-rest-spread@^7.16.7":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390"
+ integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==
+ dependencies:
+ "@babel/compat-data" "^7.17.0"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.16.7"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf"
+ integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-proposal-optional-chaining@^7.14.5", "@babel/plugin-proposal-optional-chaining@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a"
+ integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-proposal-private-methods@^7.16.11":
+ version "7.16.11"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50"
+ integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.16.10"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-proposal-private-property-in-object@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce"
+ integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2"
+ integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-syntax-async-generators@^7.8.4":
+ version "7.8.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-class-properties@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-class-static-block@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-dynamic-import@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.3"
+
+"@babel/plugin-syntax-json-strings@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-jsx@7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926"
+ integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-jsx@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665"
+ integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-private-property-in-object@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-top-level-await@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-typescript@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8"
+ integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-arrow-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154"
+ integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-async-to-generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808"
+ integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
+
+"@babel/plugin-transform-block-scoped-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620"
+ integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-block-scoping@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87"
+ integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-classes@^7.15.4", "@babel/plugin-transform-classes@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00"
+ integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470"
+ integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-destructuring@^7.16.7":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc"
+ integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241"
+ integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-duplicate-keys@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9"
+ integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-exponentiation-operator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b"
+ integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-for-of@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c"
+ integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf"
+ integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1"
+ integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-member-expression-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384"
+ integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-modules-amd@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186"
+ integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-commonjs@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe"
+ integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-systemjs@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7"
+ integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-umd@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618"
+ integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252"
+ integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+
+"@babel/plugin-transform-new-target@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244"
+ integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-object-super@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94"
+ integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+
+"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f"
+ integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-property-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55"
+ integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-react-display-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340"
+ integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-react-jsx-development@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8"
+ integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==
+ dependencies:
+ "@babel/plugin-transform-react-jsx" "^7.16.7"
+
+"@babel/plugin-transform-react-jsx@^7.16.7":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1"
+ integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-jsx" "^7.16.7"
+ "@babel/types" "^7.17.0"
+
+"@babel/plugin-transform-react-pure-annotations@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67"
+ integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-regenerator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb"
+ integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==
+ dependencies:
+ regenerator-transform "^0.14.2"
+
+"@babel/plugin-transform-reserved-words@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586"
+ integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-runtime@^7.15.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70"
+ integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ babel-plugin-polyfill-corejs2 "^0.3.0"
+ babel-plugin-polyfill-corejs3 "^0.5.0"
+ babel-plugin-polyfill-regenerator "^0.3.0"
+ semver "^6.3.0"
+
+"@babel/plugin-transform-shorthand-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a"
+ integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-spread@^7.14.6", "@babel/plugin-transform-spread@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44"
+ integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+
+"@babel/plugin-transform-sticky-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660"
+ integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-template-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab"
+ integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-typeof-symbol@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e"
+ integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-typescript@^7.16.7":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0"
+ integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-typescript" "^7.16.7"
+
+"@babel/plugin-transform-unicode-escapes@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3"
+ integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-unicode-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2"
+ integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/preset-env@^7.15.4":
+ version "7.16.11"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982"
+ integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==
+ dependencies:
+ "@babel/compat-data" "^7.16.8"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7"
+ "@babel/plugin-proposal-async-generator-functions" "^7.16.8"
+ "@babel/plugin-proposal-class-properties" "^7.16.7"
+ "@babel/plugin-proposal-class-static-block" "^7.16.7"
+ "@babel/plugin-proposal-dynamic-import" "^7.16.7"
+ "@babel/plugin-proposal-export-namespace-from" "^7.16.7"
+ "@babel/plugin-proposal-json-strings" "^7.16.7"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7"
+ "@babel/plugin-proposal-numeric-separator" "^7.16.7"
+ "@babel/plugin-proposal-object-rest-spread" "^7.16.7"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.16.7"
+ "@babel/plugin-proposal-optional-chaining" "^7.16.7"
+ "@babel/plugin-proposal-private-methods" "^7.16.11"
+ "@babel/plugin-proposal-private-property-in-object" "^7.16.7"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.16.7"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@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"
+ "@babel/plugin-transform-arrow-functions" "^7.16.7"
+ "@babel/plugin-transform-async-to-generator" "^7.16.8"
+ "@babel/plugin-transform-block-scoped-functions" "^7.16.7"
+ "@babel/plugin-transform-block-scoping" "^7.16.7"
+ "@babel/plugin-transform-classes" "^7.16.7"
+ "@babel/plugin-transform-computed-properties" "^7.16.7"
+ "@babel/plugin-transform-destructuring" "^7.16.7"
+ "@babel/plugin-transform-dotall-regex" "^7.16.7"
+ "@babel/plugin-transform-duplicate-keys" "^7.16.7"
+ "@babel/plugin-transform-exponentiation-operator" "^7.16.7"
+ "@babel/plugin-transform-for-of" "^7.16.7"
+ "@babel/plugin-transform-function-name" "^7.16.7"
+ "@babel/plugin-transform-literals" "^7.16.7"
+ "@babel/plugin-transform-member-expression-literals" "^7.16.7"
+ "@babel/plugin-transform-modules-amd" "^7.16.7"
+ "@babel/plugin-transform-modules-commonjs" "^7.16.8"
+ "@babel/plugin-transform-modules-systemjs" "^7.16.7"
+ "@babel/plugin-transform-modules-umd" "^7.16.7"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8"
+ "@babel/plugin-transform-new-target" "^7.16.7"
+ "@babel/plugin-transform-object-super" "^7.16.7"
+ "@babel/plugin-transform-parameters" "^7.16.7"
+ "@babel/plugin-transform-property-literals" "^7.16.7"
+ "@babel/plugin-transform-regenerator" "^7.16.7"
+ "@babel/plugin-transform-reserved-words" "^7.16.7"
+ "@babel/plugin-transform-shorthand-properties" "^7.16.7"
+ "@babel/plugin-transform-spread" "^7.16.7"
+ "@babel/plugin-transform-sticky-regex" "^7.16.7"
+ "@babel/plugin-transform-template-literals" "^7.16.7"
+ "@babel/plugin-transform-typeof-symbol" "^7.16.7"
+ "@babel/plugin-transform-unicode-escapes" "^7.16.7"
+ "@babel/plugin-transform-unicode-regex" "^7.16.7"
+ "@babel/preset-modules" "^0.1.5"
+ "@babel/types" "^7.16.8"
+ babel-plugin-polyfill-corejs2 "^0.3.0"
+ babel-plugin-polyfill-corejs3 "^0.5.0"
+ babel-plugin-polyfill-regenerator "^0.3.0"
+ core-js-compat "^3.20.2"
+ semver "^6.3.0"
+
+"@babel/preset-modules@^0.1.5":
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9"
+ integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
+"@babel/preset-react@^7.14.0":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852"
+ integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-transform-react-display-name" "^7.16.7"
+ "@babel/plugin-transform-react-jsx" "^7.16.7"
+ "@babel/plugin-transform-react-jsx-development" "^7.16.7"
+ "@babel/plugin-transform-react-pure-annotations" "^7.16.7"
+
+"@babel/preset-typescript@^7.15.0":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9"
+ integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-transform-typescript" "^7.16.7"
+
+"@babel/runtime-corejs3@^7.10.2":
+ version "7.17.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13"
+ integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg==
+ dependencies:
+ core-js-pure "^3.20.2"
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@7.11.2":
+ version "7.11.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
+ integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.4", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
+ version "7.17.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941"
+ integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/template@^7.12.7", "@babel/template@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
+ integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3":
+ version "7.17.3"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57"
+ integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.3"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.17.3"
+ "@babel/types" "^7.17.0"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0-beta.49", "@babel/types@^7.12.7", "@babel/types@^7.15.4", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.4.4":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
+ integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ to-fast-properties "^2.0.0"
+
+"@emotion/styled-base@^11.0.0":
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-11.0.0.tgz#d84547eb39869d406db593cce1fbcbf9c435dbaa"
+ integrity sha512-/NY/PXrQkl/wI0+0E3QWd+m9kMg7h4THmjbPEe0VVnplNtdJC6db0VHDqmaC2tsEDcda6zvy3b8giM9DHa6BLw==
+
+"@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz#eea4635828dde372838b0909693ebd9aafeec22d"
+ integrity sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==
+ dependencies:
+ lodash.get "^4"
+ make-error "^1"
+ ts-node "^9"
+ tslib "^2"
+
+"@eslint/eslintrc@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
+ integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.1.1"
+ espree "^7.3.0"
+ globals "^13.9.0"
+ ignore "^4.0.6"
+ import-fresh "^3.2.1"
+ js-yaml "^3.13.1"
+ minimatch "^3.0.4"
+ strip-json-comments "^3.1.1"
+
+"@gar/promisify@^1.0.1":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
+ integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
+
+"@gatsbyjs/parcel-namer-relative-to-cwd@0.0.2":
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-0.0.2.tgz#e1586f1796aa773e53e0909025ea16e423c14391"
+ integrity sha512-ZeGxCbx13+zjpE/0HuJ/tjox9zfiYq9fGoAAi+RHP5vHSJCmJVO5hZbexQ/umlUyAkkkzC4p1WIpw1cYQTA8SA==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ "@parcel/plugin" "2.3.1"
+ gatsby-core-utils "^3.8.2"
+
+"@gatsbyjs/reach-router@^1.3.6":
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/@gatsbyjs/reach-router/-/reach-router-1.3.6.tgz#4e8225836959be247890b66f21a3198a0589e34d"
+ integrity sha512-RW9ZBir9kqtw4IWm+Z+DLWGOeoJxoaTvNVrnR5fV9zD8EmfAhbBN/hS6i6VnTMFZ7rdd6mnpx2/XtnMvYfsaVQ==
+ dependencies:
+ invariant "^2.2.3"
+ prop-types "^15.6.1"
+ react-lifecycles-compat "^3.0.4"
+
+"@gatsbyjs/webpack-hot-middleware@^2.25.2":
+ version "2.25.2"
+ resolved "https://registry.yarnpkg.com/@gatsbyjs/webpack-hot-middleware/-/webpack-hot-middleware-2.25.2.tgz#bad1a8bfacc2a0ff4f2c991f8aee488e2f38294a"
+ integrity sha512-IFxleSfFQlvEXho2sDRa0PM+diTI+6tlb38jeUo/Lsi+mDzyjPte5Cj4aWL6PR8FpKGMl+DYfq1jxNvjH2gqkA==
+ dependencies:
+ ansi-html "0.0.7"
+ html-entities "^2.1.0"
+ querystring "^0.2.0"
+ strip-ansi "^6.0.0"
+
+"@graphql-tools/batch-execute@^7.1.2":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz#35ba09a1e0f80f34f1ce111d23c40f039d4403a0"
+ integrity sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg==
+ dependencies:
+ "@graphql-tools/utils" "^7.7.0"
+ dataloader "2.0.0"
+ tslib "~2.2.0"
+ value-or-promise "1.0.6"
+
+"@graphql-tools/delegate@^7.0.1", "@graphql-tools/delegate@^7.1.5":
+ version "7.1.5"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.1.5.tgz#0b027819b7047eff29bacbd5032e34a3d64bd093"
+ integrity sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g==
+ dependencies:
+ "@ardatan/aggregate-error" "0.0.6"
+ "@graphql-tools/batch-execute" "^7.1.2"
+ "@graphql-tools/schema" "^7.1.5"
+ "@graphql-tools/utils" "^7.7.1"
+ dataloader "2.0.0"
+ tslib "~2.2.0"
+ value-or-promise "1.0.6"
+
+"@graphql-tools/graphql-file-loader@^6.0.0":
+ version "6.2.7"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz#d3720f2c4f4bb90eb2a03a7869a780c61945e143"
+ integrity sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ==
+ dependencies:
+ "@graphql-tools/import" "^6.2.6"
+ "@graphql-tools/utils" "^7.0.0"
+ tslib "~2.1.0"
+
+"@graphql-tools/import@^6.2.6":
+ version "6.6.6"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.6.6.tgz#a4ff216e6b8a49c392bb8a4378d4e9caf2b303d7"
+ integrity sha512-a0aVajxqu1MsL8EwavA44Osw20lBOIhq8IM2ZIHFPP62cPAcOB26P+Sq57DHMsSyX5YQ0ab9XPM2o4e1dQhs0w==
+ dependencies:
+ "@graphql-tools/utils" "8.6.2"
+ resolve-from "5.0.0"
+ tslib "~2.3.0"
+
+"@graphql-tools/json-file-loader@^6.0.0":
+ version "6.2.6"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz#830482cfd3721a0799cbf2fe5b09959d9332739a"
+ integrity sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA==
+ dependencies:
+ "@graphql-tools/utils" "^7.0.0"
+ tslib "~2.0.1"
+
+"@graphql-tools/load@^6.0.0":
+ version "6.2.8"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.8.tgz#16900fb6e75e1d075cad8f7ea439b334feb0b96a"
+ integrity sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA==
+ dependencies:
+ "@graphql-tools/merge" "^6.2.12"
+ "@graphql-tools/utils" "^7.5.0"
+ globby "11.0.3"
+ import-from "3.0.0"
+ is-glob "4.0.1"
+ p-limit "3.1.0"
+ tslib "~2.2.0"
+ unixify "1.0.0"
+ valid-url "1.0.9"
+
+"@graphql-tools/merge@6.0.0 - 6.2.14":
+ version "6.2.14"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.14.tgz#694e2a2785ba47558e5665687feddd2935e9d94e"
+ integrity sha512-RWT4Td0ROJai2eR66NHejgf8UwnXJqZxXgDWDI+7hua5vNA2OW8Mf9K1Wav1ZkjWnuRp4ztNtkZGie5ISw55ow==
+ dependencies:
+ "@graphql-tools/schema" "^7.0.0"
+ "@graphql-tools/utils" "^7.7.0"
+ tslib "~2.2.0"
+
+"@graphql-tools/merge@^6.2.12":
+ version "6.2.17"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.17.tgz#4dedf87d8435a5e1091d7cc8d4f371ed1e029f1f"
+ integrity sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow==
+ dependencies:
+ "@graphql-tools/schema" "^8.0.2"
+ "@graphql-tools/utils" "8.0.2"
+ tslib "~2.3.0"
+
+"@graphql-tools/merge@^8.2.3":
+ version "8.2.3"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.2.3.tgz#a2861fec230ee7be9dc42d72fed2ac075c31669f"
+ integrity sha512-XCSmL6/Xg8259OTWNp69B57CPWiVL69kB7pposFrufG/zaAlI9BS68dgzrxmmSqZV5ZHU4r/6Tbf6fwnEJGiSw==
+ dependencies:
+ "@graphql-tools/utils" "^8.6.2"
+ tslib "~2.3.0"
+
+"@graphql-tools/schema@^7.0.0", "@graphql-tools/schema@^7.1.5":
+ version "7.1.5"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-7.1.5.tgz#07b24e52b182e736a6b77c829fc48b84d89aa711"
+ integrity sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==
+ dependencies:
+ "@graphql-tools/utils" "^7.1.2"
+ tslib "~2.2.0"
+ value-or-promise "1.0.6"
+
+"@graphql-tools/schema@^8.0.2":
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.3.2.tgz#5b949d7a2cc3936f73507d91cc609996f1266d11"
+ integrity sha512-77feSmIuHdoxMXRbRyxE8rEziKesd/AcqKV6fmxe7Zt+PgIQITxNDew2XJJg7qFTMNM43W77Ia6njUSBxNOkwg==
+ dependencies:
+ "@graphql-tools/merge" "^8.2.3"
+ "@graphql-tools/utils" "^8.6.2"
+ tslib "~2.3.0"
+ value-or-promise "1.0.11"
+
+"@graphql-tools/url-loader@^6.0.0":
+ version "6.10.1"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz#dc741e4299e0e7ddf435eba50a1f713b3e763b33"
+ integrity sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw==
+ dependencies:
+ "@graphql-tools/delegate" "^7.0.1"
+ "@graphql-tools/utils" "^7.9.0"
+ "@graphql-tools/wrap" "^7.0.4"
+ "@microsoft/fetch-event-source" "2.0.1"
+ "@types/websocket" "1.0.2"
+ abort-controller "3.0.0"
+ cross-fetch "3.1.4"
+ extract-files "9.0.0"
+ form-data "4.0.0"
+ graphql-ws "^4.4.1"
+ is-promise "4.0.0"
+ isomorphic-ws "4.0.1"
+ lodash "4.17.21"
+ meros "1.1.4"
+ subscriptions-transport-ws "^0.9.18"
+ sync-fetch "0.3.0"
+ tslib "~2.2.0"
+ valid-url "1.0.9"
+ ws "7.4.5"
+
+"@graphql-tools/utils@8.0.2":
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.0.2.tgz#795a8383cdfdc89855707d62491c576f439f3c51"
+ integrity sha512-gzkavMOgbhnwkHJYg32Adv6f+LxjbQmmbdD5Hty0+CWxvaiuJq+nU6tzb/7VSU4cwhbNLx/lGu2jbCPEW1McZQ==
+ dependencies:
+ tslib "~2.3.0"
+
+"@graphql-tools/utils@8.6.2", "@graphql-tools/utils@^8.6.2":
+ version "8.6.2"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.6.2.tgz#095408135f091aac68fe18a0a21b708e685500da"
+ integrity sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA==
+ dependencies:
+ tslib "~2.3.0"
+
+"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.1.2", "@graphql-tools/utils@^7.5.0", "@graphql-tools/utils@^7.7.0", "@graphql-tools/utils@^7.7.1", "@graphql-tools/utils@^7.8.1", "@graphql-tools/utils@^7.9.0":
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.10.0.tgz#07a4cb5d1bec1ff1dc1d47a935919ee6abd38699"
+ integrity sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==
+ dependencies:
+ "@ardatan/aggregate-error" "0.0.6"
+ camel-case "4.1.2"
+ tslib "~2.2.0"
+
+"@graphql-tools/wrap@^7.0.4":
+ version "7.0.8"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-7.0.8.tgz#ad41e487135ca3ea1ae0ea04bb3f596177fb4f50"
+ integrity sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg==
+ dependencies:
+ "@graphql-tools/delegate" "^7.1.5"
+ "@graphql-tools/schema" "^7.1.5"
+ "@graphql-tools/utils" "^7.8.1"
+ tslib "~2.2.0"
+ value-or-promise "1.0.6"
+
+"@hapi/address@2.x.x":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
+ integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==
+
+"@hapi/bourne@1.x.x":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a"
+ integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==
+
+"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0":
+ version "8.5.1"
+ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06"
+ integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==
+
+"@hapi/hoek@^9.0.0":
+ version "9.2.1"
+ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17"
+ integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==
+
+"@hapi/joi@^15.0.0":
+ version "15.1.1"
+ resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7"
+ integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==
+ dependencies:
+ "@hapi/address" "2.x.x"
+ "@hapi/bourne" "1.x.x"
+ "@hapi/hoek" "8.x.x"
+ "@hapi/topo" "3.x.x"
+
+"@hapi/topo@3.x.x":
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29"
+ integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==
+ dependencies:
+ "@hapi/hoek" "^8.3.0"
+
+"@hapi/topo@^5.0.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012"
+ integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+
+"@html-validate/stylish@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@html-validate/stylish/-/stylish-2.0.1.tgz#a21dac99e7bbf7d25a564b8560d9d2a17aa84dd4"
+ integrity sha512-iRLjgQnNq66rcsTukun6KwMhPEoUV2R3atPbTSapnEvD1aETjD+pfS+1yYrmaPeJFgXHzfsSYjAuyUVq7EID/Q==
+ dependencies:
+ kleur "^4.0.0"
+ text-table "^0.2.0"
+
+"@humanwhocodes/config-array@^0.5.0":
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
+ integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
+ dependencies:
+ "@humanwhocodes/object-schema" "^1.2.0"
+ debug "^4.1.1"
+ minimatch "^3.0.4"
+
+"@humanwhocodes/object-schema@^1.2.0":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
+ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+
+"@iarna/toml@^2.2.5":
+ version "2.2.5"
+ resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
+ integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==
+
+"@jimp/bmp@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.14.0.tgz#6df246026554f276f7b354047c6fff9f5b2b5182"
+ integrity sha512-5RkX6tSS7K3K3xNEb2ygPuvyL9whjanhoaB/WmmXlJS6ub4DjTqrapu8j4qnIWmO4YYtFeTbDTXV6v9P1yMA5A==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+ bmp-js "^0.1.0"
+
+"@jimp/core@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.14.0.tgz#870c9ca25b40be353ebda1d2abb48723d9010055"
+ integrity sha512-S62FcKdtLtj3yWsGfJRdFXSutjvHg7aQNiFogMbwq19RP4XJWqS2nOphu7ScB8KrSlyy5nPF2hkWNhLRLyD82w==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+ any-base "^1.1.0"
+ buffer "^5.2.0"
+ exif-parser "^0.1.12"
+ file-type "^9.0.0"
+ load-bmfont "^1.3.1"
+ mkdirp "^0.5.1"
+ phin "^2.9.1"
+ pixelmatch "^4.0.2"
+ tinycolor2 "^1.4.1"
+
+"@jimp/custom@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.14.0.tgz#1dbbf0094df7403f4e03bc984ed92e7458842f74"
+ integrity sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/core" "^0.14.0"
+
+"@jimp/gif@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.14.0.tgz#db159f57c3cfd1566bbe8b124958791998614960"
+ integrity sha512-DHjoOSfCaCz72+oGGEh8qH0zE6pUBaBxPxxmpYJjkNyDZP7RkbBkZJScIYeQ7BmJxmGN4/dZn+MxamoQlr+UYg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+ gifwrap "^0.9.2"
+ omggif "^1.0.9"
+
+"@jimp/jpeg@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.14.0.tgz#8a687a6a653bbbae38c522edef8f84bb418d9461"
+ integrity sha512-561neGbr+87S/YVQYnZSTyjWTHBm9F6F1obYHiyU3wVmF+1CLbxY3FQzt4YolwyQHIBv36Bo0PY2KkkU8BEeeQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+ jpeg-js "^0.4.0"
+
+"@jimp/plugin-blit@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.14.0.tgz#5eb374be1201313b2113899fb842232d8fcfd345"
+ integrity sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-blur@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.14.0.tgz#fe07e4932d5a2f5d8c9831e245561553224bfc60"
+ integrity sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-circle@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-circle/-/plugin-circle-0.14.0.tgz#82c0e904a34e90fa672fb9c286bc892e92088ddf"
+ integrity sha512-o5L+wf6QA44tvTum5HeLyLSc5eVfIUd5ZDVi5iRfO4o6GT/zux9AxuTSkKwnjhsG8bn1dDmywAOQGAx7BjrQVA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-color@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.14.0.tgz#772bd2d80a88bc66ea1331d010207870f169a74b"
+ integrity sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+ tinycolor2 "^1.4.1"
+
+"@jimp/plugin-contain@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.14.0.tgz#c68115420d182e696f81bbe76fb5e704909b2b6a"
+ integrity sha512-RX2q233lGyaxiMY6kAgnm9ScmEkNSof0hdlaJAVDS1OgXphGAYAeSIAwzESZN4x3ORaWvkFefeVH9O9/698Evg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-cover@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.14.0.tgz#4755322589c5885e44e14e31b86b542e907297ce"
+ integrity sha512-0P/5XhzWES4uMdvbi3beUgfvhn4YuQ/ny8ijs5kkYIw6K8mHcl820HahuGpwWMx56DJLHRl1hFhJwo9CeTRJtQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-crop@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.14.0.tgz#4cbd856ca84ffc37230fad2534906f2f75aa3057"
+ integrity sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-displace@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.14.0.tgz#b0e6a57d00cb1f893f541413fe9d737d23c3b70c"
+ integrity sha512-c75uQUzMgrHa8vegkgUvgRL/PRvD7paFbFJvzW0Ugs8Wl+CDMGIPYQ3j7IVaQkIS+cAxv+NJ3TIRBQyBrfVEOg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-dither@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.14.0.tgz#9185ec4c38e02edc9e5831f5d709f6ba891e1b93"
+ integrity sha512-g8SJqFLyYexXQQsoh4dc1VP87TwyOgeTElBcxSXX2LaaMZezypmxQfLTzOFzZoK8m39NuaoH21Ou1Ftsq7LzVQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-fisheye@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.14.0.tgz#9f26346cf2fbc660cc2008cd7fd30a83b5029e78"
+ integrity sha512-BFfUZ64EikCaABhCA6mR3bsltWhPpS321jpeIQfJyrILdpFsZ/OccNwCgpW1XlbldDHIoNtXTDGn3E+vCE7vDg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-flip@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.14.0.tgz#7966d6aa3b5fe1aa4d2d561ff12b8ef5ccb9b071"
+ integrity sha512-WtL1hj6ryqHhApih+9qZQYA6Ye8a4HAmdTzLbYdTMrrrSUgIzFdiZsD0WeDHpgS/+QMsWwF+NFmTZmxNWqKfXw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-gaussian@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.14.0.tgz#452bc1971a4467ad9b984aa67f4c200bf941bb65"
+ integrity sha512-uaLwQ0XAQoydDlF9tlfc7iD9drYPriFe+jgYnWm8fbw5cN+eOIcnneEX9XCOOzwgLPkNCxGox6Kxjn8zY6GxtQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-invert@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.14.0.tgz#cd31a555860e9f821394936d15af161c09c42921"
+ integrity sha512-UaQW9X9vx8orQXYSjT5VcITkJPwDaHwrBbxxPoDG+F/Zgv4oV9fP+udDD6qmkgI9taU+44Fy+zm/J/gGcMWrdg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-mask@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.14.0.tgz#52619643ac6222f85e6b27dee33c771ca3a6a4c9"
+ integrity sha512-tdiGM69OBaKtSPfYSQeflzFhEpoRZ+BvKfDEoivyTjauynbjpRiwB1CaiS8En1INTDwzLXTT0Be9SpI3LkJoEA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-normalize@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.14.0.tgz#bf39e356b6d473f582ce95633ad49c9cdb82492b"
+ integrity sha512-AfY8sqlsbbdVwFGcyIPy5JH/7fnBzlmuweb+Qtx2vn29okq6+HelLjw2b+VT2btgGUmWWHGEHd86oRGSoWGyEQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-print@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.14.0.tgz#1c43c2a92a7adc05b464863882cb89ce486d63e6"
+ integrity sha512-MwP3sH+VS5AhhSTXk7pui+tEJFsxnTKFY3TraFJb8WFbA2Vo2qsRCZseEGwpTLhENB7p/JSsLvWoSSbpmxhFAQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+ load-bmfont "^1.4.0"
+
+"@jimp/plugin-resize@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.14.0.tgz#ef7fc6c2e45f8bcab62456baf8fd3bc415b02b64"
+ integrity sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-rotate@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.14.0.tgz#3632bc159bf1c3b9ec9f459d9c05d02a11781ee7"
+ integrity sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-scale@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.14.0.tgz#d30f0cd1365b8e68f43fa423300ae7f124e9bf10"
+ integrity sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-shadow@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-shadow/-/plugin-shadow-0.14.0.tgz#471fdb9f109ff2d9e20d533d45e1e18e0b48c749"
+ integrity sha512-p2igcEr/iGrLiTu0YePNHyby0WYAXM14c5cECZIVnq/UTOOIQ7xIcWZJ1lRbAEPxVVXPN1UibhZAbr3HAb5BjQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugin-threshold@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugin-threshold/-/plugin-threshold-0.14.0.tgz#ebd72721c7d1d518c5bb6e494e55d97ac3351d3b"
+ integrity sha512-N4BlDgm/FoOMV/DQM2rSpzsgqAzkP0DXkWZoqaQrlRxQBo4zizQLzhEL00T/YCCMKnddzgEhnByaocgaaa0fKw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+
+"@jimp/plugins@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.14.0.tgz#41dba85f15ab8dadb4162100eb54e5f27b93ee2c"
+ integrity sha512-vDO3XT/YQlFlFLq5TqNjQkISqjBHT8VMhpWhAfJVwuXIpilxz5Glu4IDLK6jp4IjPR6Yg2WO8TmRY/HI8vLrOw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/plugin-blit" "^0.14.0"
+ "@jimp/plugin-blur" "^0.14.0"
+ "@jimp/plugin-circle" "^0.14.0"
+ "@jimp/plugin-color" "^0.14.0"
+ "@jimp/plugin-contain" "^0.14.0"
+ "@jimp/plugin-cover" "^0.14.0"
+ "@jimp/plugin-crop" "^0.14.0"
+ "@jimp/plugin-displace" "^0.14.0"
+ "@jimp/plugin-dither" "^0.14.0"
+ "@jimp/plugin-fisheye" "^0.14.0"
+ "@jimp/plugin-flip" "^0.14.0"
+ "@jimp/plugin-gaussian" "^0.14.0"
+ "@jimp/plugin-invert" "^0.14.0"
+ "@jimp/plugin-mask" "^0.14.0"
+ "@jimp/plugin-normalize" "^0.14.0"
+ "@jimp/plugin-print" "^0.14.0"
+ "@jimp/plugin-resize" "^0.14.0"
+ "@jimp/plugin-rotate" "^0.14.0"
+ "@jimp/plugin-scale" "^0.14.0"
+ "@jimp/plugin-shadow" "^0.14.0"
+ "@jimp/plugin-threshold" "^0.14.0"
+ timm "^1.6.1"
+
+"@jimp/png@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.14.0.tgz#0f2dddb5125c0795ca7e67c771204c5437fcda4b"
+ integrity sha512-0RV/mEIDOrPCcNfXSPmPBqqSZYwGADNRVUTyMt47RuZh7sugbYdv/uvKmQSiqRdR0L1sfbCBMWUEa5G/8MSbdA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/utils" "^0.14.0"
+ pngjs "^3.3.3"
+
+"@jimp/tiff@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.14.0.tgz#a5b25bbe7c43fc3b07bad4e2ab90e0e164c1967f"
+ integrity sha512-zBYDTlutc7j88G/7FBCn3kmQwWr0rmm1e0FKB4C3uJ5oYfT8645lftUsvosKVUEfkdmOaMAnhrf4ekaHcb5gQw==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ utif "^2.0.1"
+
+"@jimp/types@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.14.0.tgz#ef681ff702883c5f105b5e4e30d49abf39ee9e34"
+ integrity sha512-hx3cXAW1KZm+b+XCrY3LXtdWy2U+hNtq0rPyJ7NuXCjU7lZR3vIkpz1DLJ3yDdS70hTi5QDXY3Cd9kd6DtloHQ==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/bmp" "^0.14.0"
+ "@jimp/gif" "^0.14.0"
+ "@jimp/jpeg" "^0.14.0"
+ "@jimp/png" "^0.14.0"
+ "@jimp/tiff" "^0.14.0"
+ timm "^1.6.1"
+
+"@jimp/utils@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.14.0.tgz#296254e63118554c62c31c19ac6b8c4bfe6490e5"
+ integrity sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ regenerator-runtime "^0.13.3"
+
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
+ integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.11"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
+ integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==
+
+"@jridgewell/trace-mapping@^0.3.0":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3"
+ integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@juggle/resize-observer@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.2.0.tgz#5e0b448d27fe3091bae6216456512c5904d05661"
+ integrity sha512-fsLxt0CHx2HCV9EL8lDoVkwHffsA0snUpddYjdLyXcG5E41xaamn9ZyQqOE9TUJdrRlH8/hjIf+UdOdDeKCUgg==
+
+"@mdx-js/mdx@^1.6.22":
+ version "1.6.22"
+ resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba"
+ integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==
+ dependencies:
+ "@babel/core" "7.12.9"
+ "@babel/plugin-syntax-jsx" "7.12.1"
+ "@babel/plugin-syntax-object-rest-spread" "7.8.3"
+ "@mdx-js/util" "1.6.22"
+ babel-plugin-apply-mdx-type-prop "1.6.22"
+ babel-plugin-extract-import-names "1.6.22"
+ camelcase-css "2.0.1"
+ detab "2.0.4"
+ hast-util-raw "6.0.1"
+ lodash.uniq "4.5.0"
+ mdast-util-to-hast "10.0.1"
+ remark-footnotes "2.0.0"
+ remark-mdx "1.6.22"
+ remark-parse "8.0.3"
+ remark-squeeze-paragraphs "4.0.0"
+ style-to-object "0.3.0"
+ unified "9.2.0"
+ unist-builder "2.0.3"
+ unist-util-visit "2.0.3"
+
+"@mdx-js/react@^1.6.22":
+ version "1.6.22"
+ resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573"
+ integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==
+
+"@mdx-js/util@1.6.22":
+ version "1.6.22"
+ resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b"
+ integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==
+
+"@microsoft/fetch-event-source@2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz#9ceecc94b49fbaa15666e38ae8587f64acce007d"
+ integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@npmcli/fs@^1.0.0":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257"
+ integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==
+ dependencies:
+ "@gar/promisify" "^1.0.1"
+ semver "^7.3.5"
+
+"@npmcli/git@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.0.tgz#466a18980da6b646a8112a7676688ae5347deba3"
+ integrity sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA==
+ dependencies:
+ "@npmcli/promise-spawn" "^1.3.2"
+ lru-cache "^7.3.1"
+ mkdirp "^1.0.4"
+ npm-pick-manifest "^7.0.0"
+ proc-log "^2.0.0"
+ promise-inflight "^1.0.1"
+ promise-retry "^2.0.1"
+ semver "^7.3.5"
+ which "^2.0.2"
+
+"@npmcli/installed-package-contents@^1.0.7":
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa"
+ integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==
+ dependencies:
+ npm-bundled "^1.1.1"
+ npm-normalize-package-bin "^1.0.1"
+
+"@npmcli/move-file@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674"
+ integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==
+ dependencies:
+ mkdirp "^1.0.4"
+ rimraf "^3.0.2"
+
+"@npmcli/node-gyp@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33"
+ integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==
+
+"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5"
+ integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==
+ dependencies:
+ infer-owner "^1.0.4"
+
+"@npmcli/run-script@^3.0.0":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-3.0.1.tgz#9d10b46586300074cc9e53ef320130a69567e1ce"
+ integrity sha512-o2fkld5hYwu9sKYzoXTpqEocMnDLaigobaPzLaGB63k/ExmLBTaB+KpfKlpcIePPnuP8RFR+0GDI4KopJCM6Xg==
+ dependencies:
+ "@npmcli/node-gyp" "^1.0.3"
+ "@npmcli/promise-spawn" "^1.3.2"
+ node-gyp "^9.0.0"
+ read-package-json-fast "^2.0.3"
+
+"@parcel/bundler-default@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.3.2.tgz#329f171e210dfb22beaa52ae706ccde1dae384c1"
+ integrity sha512-JUrto4mjSD0ic9dEqRp0loL5o3HVYHja1ZIYSq+rBl2UWRV6/9cGTb07lXOCqqm0BWE+hQ4krUxB76qWaF0Lqw==
+ dependencies:
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/hash" "2.3.2"
+ "@parcel/plugin" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ nullthrows "^1.1.1"
+
+"@parcel/cache@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.3.1.tgz#259da8fecdfaa2ae6d481338d264f2dd3c993c71"
+ integrity sha512-8Wvm0VERtocUepIfkZ6xVs1LHZqttnzdrM7oSc0bXhwtz8kZB++N88g0rQskbUchW87314eYdzBtEL0aiq0bgQ==
+ dependencies:
+ "@parcel/fs" "2.3.1"
+ "@parcel/logger" "2.3.1"
+ "@parcel/utils" "2.3.1"
+ lmdb "^2.0.2"
+
+"@parcel/cache@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.3.2.tgz#ba8c2af02fd45b90c7bc6f829bfc566d1ded0a13"
+ integrity sha512-Xxq+ekgcFEme6Fn1v7rEOBkyMOUOUu7eNqQw0l6HQS+INZ2Q7YzzfdW7pI8rEOAAICVg5BWKpmBQZpgJlT+HxQ==
+ dependencies:
+ "@parcel/fs" "2.3.2"
+ "@parcel/logger" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ lmdb "^2.0.2"
+
+"@parcel/codeframe@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.3.1.tgz#7855498b51d43c19181d6cd6dc8177dab2c83f40"
+ integrity sha512-sdNvbg9qYS2pwzqyyyt+wZfNGuy7EslzDLbzQclFZmhD6e770mcYoi8/7i7D/AONbXiI15vwNmgOdcUIXtPxbA==
+ dependencies:
+ chalk "^4.1.0"
+
+"@parcel/codeframe@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.3.2.tgz#73fb5a89910b977342808ca8f6ece61fa01b7690"
+ integrity sha512-ireQALcxxrTdIEpzTOoMo/GpfbFm1qlyezeGl3Hce3PMvHLg3a5S6u/Vcy7SAjdld5GfhHEqVY+blME6Z4CyXQ==
+ dependencies:
+ chalk "^4.1.0"
+
+"@parcel/compressor-raw@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.3.2.tgz#1a808ae9e61ed86f655935e1d2a984383b3c00a7"
+ integrity sha512-8dIoFwinYK6bOTpnZOAwwIv0v73y0ezsctPmfMnIqVQPn7wJwfhw/gbKVcmK5AkgQMkyid98hlLZoaZtGF1Mdg==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+
+"@parcel/core@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.3.2.tgz#1b9a79c1ff96dba5e0f53d4277bed4e7ab4590d0"
+ integrity sha512-gdJzpsgeUhv9H8T0UKVmyuptiXdduEfKIUx0ci+/PGhq8cCoiFnlnuhW6H7oLr79OUc+YJStabDJuG4U2A6ysw==
+ dependencies:
+ "@parcel/cache" "2.3.2"
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/events" "2.3.2"
+ "@parcel/fs" "2.3.2"
+ "@parcel/graph" "2.3.2"
+ "@parcel/hash" "2.3.2"
+ "@parcel/logger" "2.3.2"
+ "@parcel/package-manager" "2.3.2"
+ "@parcel/plugin" "2.3.2"
+ "@parcel/source-map" "^2.0.0"
+ "@parcel/types" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ "@parcel/workers" "2.3.2"
+ abortcontroller-polyfill "^1.1.9"
+ base-x "^3.0.8"
+ browserslist "^4.6.6"
+ clone "^2.1.1"
+ dotenv "^7.0.0"
+ dotenv-expand "^5.1.0"
+ json-source-map "^0.6.1"
+ json5 "^2.2.0"
+ msgpackr "^1.5.1"
+ nullthrows "^1.1.1"
+ semver "^5.7.1"
+
+"@parcel/diagnostic@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.3.1.tgz#821040ab49c862463f47b44b8c7725b3ec3bf9bb"
+ integrity sha512-hBMcg4WVMdSIy6RpI4gSto5dZ3OoUbnrCZzVw3J1tzQJn7x9na/+014IaE58vJtAqJ8/jc/TqWIcwsSLe898rA==
+ dependencies:
+ json-source-map "^0.6.1"
+ nullthrows "^1.1.1"
+
+"@parcel/diagnostic@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.3.2.tgz#1d3f0b55bfd9839c6f41d704ebbc89a96cca88dc"
+ integrity sha512-/xW93Az4AOiifuYW/c4CDbUcu3lx5FcUDAj9AGiR9NSTsF/ROC/RqnxvQ3AGtqa14R7vido4MXEpY3JEp6FsqA==
+ dependencies:
+ json-source-map "^0.6.1"
+ nullthrows "^1.1.1"
+
+"@parcel/events@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.3.1.tgz#77108bd706638831339b96eaab39a0e9137aa92e"
+ integrity sha512-J2rWKGl1Z2IvwwDwWYz/4gUxC1P4LsioUyOo1HYGT+N5+r41P8ZB5CM/aosI2qu5mMsH8rTpclOv5E36vCSQxw==
+
+"@parcel/events@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.3.2.tgz#b6bcfbbc96d883716ee9d0e6ab232acdee862790"
+ integrity sha512-WiYIwXMo4Vd+pi58vRoHkul8TPE5VEfMY+3FYwVCKPl/LYqSD+vz6wMx9uG18mEbB1d/ofefv5ZFQNtPGKO4tQ==
+
+"@parcel/fs-search@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.3.1.tgz#a97d5a98ec13bf47e636006c40eedf8031ede3d5"
+ integrity sha512-JsBIDttjmgJIMD6Q6MV83M+mwr5NqUm55iA+SewimboiWzSPzIJxRaegniSsNfsrBASJ6nSZFHcLPd/VJ5iqJw==
+ dependencies:
+ detect-libc "^1.0.3"
+
+"@parcel/fs-search@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.3.2.tgz#18611877ac1b370932c71987c2ec0e93a4a7e53d"
+ integrity sha512-u3DTEFnPtKuZvEtgGzfVjQUytegSSn3POi7WfwMwPIaeDPfYcyyhfl+c96z7VL9Gk/pqQ99/cGyAwFdFsnxxXA==
+ dependencies:
+ detect-libc "^1.0.3"
+
+"@parcel/fs@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.3.1.tgz#f60503921e1d3c17c6b43cf26fb76b08fe3fee2b"
+ integrity sha512-FKqyf8KF0zOw8gfj/feEAMj4Kzqkgt9Zxa2A7UDdMWRvxLR8znqnWjD++xqq6rxJp2Y1zm4fH3JOTK4CRddUSg==
+ dependencies:
+ "@parcel/fs-search" "2.3.1"
+ "@parcel/types" "2.3.1"
+ "@parcel/utils" "2.3.1"
+ "@parcel/watcher" "^2.0.0"
+ "@parcel/workers" "2.3.1"
+
+"@parcel/fs@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.3.2.tgz#9628441a84c2582e1f6e69549feb0da0cc143e40"
+ integrity sha512-XV+OsnRpN01QKU37lBN0TFKvv7uPKfQGbqFqYOrMbXH++Ae8rBU0Ykz+Yu4tv2h7shMlde+AMKgRnRTAJZpWEQ==
+ dependencies:
+ "@parcel/fs-search" "2.3.2"
+ "@parcel/types" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ "@parcel/watcher" "^2.0.0"
+ "@parcel/workers" "2.3.2"
+
+"@parcel/graph@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-2.3.2.tgz#4194816952ab322ab22a17f7d9ea17befbade64d"
+ integrity sha512-ltTBM3IEqumgmy4ABBFETT8NtAwSsjD9mY3WCyJ5P8rUshfVCg093rvBPbpuJYMaH/TV1AHVaWfZqaZ4JQDIQQ==
+ dependencies:
+ "@parcel/utils" "2.3.2"
+ nullthrows "^1.1.1"
+
+"@parcel/hash@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.3.1.tgz#7da61cd0a7358cabe9d6fdc4d103d6fb7b54526f"
+ integrity sha512-IYhSQE+CIKWjPfiLmsrXHupkNd+hMlTlI9DR5qLiD8ydyPwg0XE/bOYTcbdsSl6HTackY0XYVSJwTtEgvtYVfw==
+ dependencies:
+ detect-libc "^1.0.3"
+ xxhash-wasm "^0.4.2"
+
+"@parcel/hash@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.3.2.tgz#33b8ff04bb44f6661bdc1054b302ef1b6bd3acb3"
+ integrity sha512-SMtYTsHihws/wqdVnOr0QAGyGYsW9rJSJkkoRujUxo8l2ctnBN1ztv89eOUrdtgHsmcnj/oz1yw6sN38X+BUng==
+ dependencies:
+ detect-libc "^1.0.3"
+ xxhash-wasm "^0.4.2"
+
+"@parcel/logger@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.3.1.tgz#042f8742c6655ca01b5a64a041c228525e72c9c2"
+ integrity sha512-swNPInULCJrpCJCLOgZcf+xNcUF0NjD7LyNcB349BkyO7i6st14nfBjXf6eAJJu0z7RMmi6zp9CQB47e4cI6+g==
+ dependencies:
+ "@parcel/diagnostic" "2.3.1"
+ "@parcel/events" "2.3.1"
+
+"@parcel/logger@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.3.2.tgz#b5fc7a9c1664ee0286d0f67641c7c81c8fec1561"
+ integrity sha512-jIWd8TXDQf+EnNWSa7Q10lSQ6C1LSH8OZkTlaINrfVIw7s+3tVxO3I4pjp7/ARw7RX2gdNPlw6fH4Gn/HvvYbw==
+ dependencies:
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/events" "2.3.2"
+
+"@parcel/markdown-ansi@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.3.1.tgz#076f9d4cdf5cc63e16eb1ddf36d799e8741e8063"
+ integrity sha512-M4Hi25pKtSh1KF/ppMDBk5QuLpYAQjgB/MSP+nz7NzXQlYPCN5oEk9TUkrmQ9J+vOvVwefxfy7ahSErEuQbTFw==
+ dependencies:
+ chalk "^4.1.0"
+
+"@parcel/markdown-ansi@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.3.2.tgz#2a5be7ce76a506a9d238ea2257cb28e43abe4902"
+ integrity sha512-l01ggmag5QScCk9mYA0xHh5TWSffR84uPFP2KvaAMQQ9NLNufcFiU0mn/Mtr3pCb5L5dSzmJ+Oo9s7P1Kh/Fmg==
+ dependencies:
+ chalk "^4.1.0"
+
+"@parcel/namer-default@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.3.2.tgz#84e17abfc84fd293b23b3f405280ed2e279c75d8"
+ integrity sha512-3QUMC0+5+3KMKfoAxYAbpZtuRqTgyZKsGDWzOpuqwemqp6P8ahAvNPwSCi6QSkGcTmvtYwBu9/NHPSONxIFOfg==
+ dependencies:
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/plugin" "2.3.2"
+ nullthrows "^1.1.1"
+
+"@parcel/node-resolver-core@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-2.3.2.tgz#dd360f405949fdcd62980cd44825052ab28f6135"
+ integrity sha512-wmrnMNzJN4GuHw2Ftho+BWgSWR6UCkW3XoMdphqcxpw/ieAdS2a+xYSosYkZgQZ6lGutSvLyJ1CkVvP6RLIdQQ==
+ dependencies:
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ nullthrows "^1.1.1"
+
+"@parcel/optimizer-terser@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/optimizer-terser/-/optimizer-terser-2.3.2.tgz#790b69e6ecc6ef0d8f25b57e9a13806e1f1c2943"
+ integrity sha512-dOapHhfy0xiNZa2IoEyHGkhhla07xsja79NPem14e5jCqY6Oi40jKNV4ab5uu5u1elWUjJuw69tiYbkDZWbKQw==
+ dependencies:
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/plugin" "2.3.2"
+ "@parcel/source-map" "^2.0.0"
+ "@parcel/utils" "2.3.2"
+ nullthrows "^1.1.1"
+ terser "^5.2.0"
+
+"@parcel/package-manager@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.3.1.tgz#c0f49fab9d1108bc9bf8d4357c53eead8d28c48d"
+ integrity sha512-w2XOkD3SU8RxhUDW+Soy/TjvEVvfUsBmHy02asllt4b/ZtyZVAsQmonGExHDDkRn3TNDR6Y96Yw6M7purt+b9w==
+ dependencies:
+ "@parcel/diagnostic" "2.3.1"
+ "@parcel/fs" "2.3.1"
+ "@parcel/logger" "2.3.1"
+ "@parcel/types" "2.3.1"
+ "@parcel/utils" "2.3.1"
+ "@parcel/workers" "2.3.1"
+ semver "^5.7.1"
+
+"@parcel/package-manager@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.3.2.tgz#380f0741c9d0c79c170c437efae02506484df315"
+ integrity sha512-pAQfywKVORY8Ee+NHAyKzzQrKbnz8otWRejps7urwhDaTVLfAd5C/1ZV64ATZ9ALYP9jyoQ8bTaxVd4opcSuwg==
+ dependencies:
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/fs" "2.3.2"
+ "@parcel/logger" "2.3.2"
+ "@parcel/types" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ "@parcel/workers" "2.3.2"
+ semver "^5.7.1"
+
+"@parcel/packager-js@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.3.2.tgz#2d2566bde0da921042b79aa827c71109665d795c"
+ integrity sha512-3OP0Ro9M1J+PIKZK4Ec2N5hjIPiqk++B2kMFeiUqvaNZjJgKrPPEICBhjS52rma4IE/NgmIMB3aI5pWqE/KwNA==
+ dependencies:
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/hash" "2.3.2"
+ "@parcel/plugin" "2.3.2"
+ "@parcel/source-map" "^2.0.0"
+ "@parcel/utils" "2.3.2"
+ globals "^13.2.0"
+ nullthrows "^1.1.1"
+
+"@parcel/packager-raw@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.3.2.tgz#869cc3e7bee8ff3655891a0af400cf4e7dd4f144"
+ integrity sha512-RnoZ7WgNAFWkEPrEefvyDqus7xfv9XGprHyTbfLittPaVAZpl+4eAv43nXyMfzk77Cgds6KcNpkosj3acEpNIQ==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+
+"@parcel/plugin@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.3.1.tgz#d7abc685ede4d7ae25bb15ccfcfa2a59e8d7c51d"
+ integrity sha512-ROOWbgFze7BCF3RkEh8VbcKGlR5UGBuJ8lfCaFrG1VOk7Rxgl8Bmk96TRbZREm/1jB74p2O8twVKyPSC13riow==
+ dependencies:
+ "@parcel/types" "2.3.1"
+
+"@parcel/plugin@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.3.2.tgz#7701c40567d2eddd5d5b2b6298949cd03a2a22fa"
+ integrity sha512-SaLZAJX4KH+mrAmqmcy9KJN+V7L+6YNTlgyqYmfKlNiHu7aIjLL+3prX8QRcgGtjAYziCxvPj0cl1CCJssaiGg==
+ dependencies:
+ "@parcel/types" "2.3.2"
+
+"@parcel/reporter-dev-server@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.3.2.tgz#46ee4c53ad08c8b8afd2c79fb37381b6ba55cfb5"
+ integrity sha512-E7LtnjAX4iiWMw2qKUyFBi3+bDz0UGjqgHoPQylUYYLi6opXjJz/oC+cCcCy4e3RZlkrl187XonvagS59YjDxA==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+ "@parcel/utils" "2.3.2"
+
+"@parcel/resolver-default@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.3.2.tgz#286070412ad7fe506f7c88409f39b362d2041798"
+ integrity sha512-y3r+xOwWsATrNGUWuZ6soA7q24f8E5tY1AZ9lHCufnkK2cdKZJ5O1cyd7ohkAiKZx2/pMd+FgmVZ/J3oxetXkA==
+ dependencies:
+ "@parcel/node-resolver-core" "2.3.2"
+ "@parcel/plugin" "2.3.2"
+
+"@parcel/runtime-browser-hmr@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.3.2.tgz#cb23a850324ea792168438a9be6a345ebb66eb6d"
+ integrity sha512-nRD6uOyF1+HGylP9GASbYmvUDOsDaNwvaxuGTSh8+5M0mmCgib+hVBiPEKbwdmKjGbUPt9wRFPyMa/JpeQZsIQ==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+ "@parcel/utils" "2.3.2"
+
+"@parcel/runtime-js@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.3.2.tgz#c0e14251ce43f95977577e23bb9ac5c2487f3bb1"
+ integrity sha512-SJepcHvYO/7CEe/Q85sngk+smcJ6TypuPh4D2R8kN+cAJPi5WvbQEe7+x5BEgbN+5Jumi/Uo3FfOOE5mYh+F6g==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ nullthrows "^1.1.1"
+
+"@parcel/runtime-react-refresh@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.3.2.tgz#11961d7429ae3333b7efe14c4f57515df57eb5f2"
+ integrity sha512-P+GRPO2XVDSBQ4HmRSj2xfbHSQvL9+ahTE/AB74IJExLTITv5l4SHAV3VsiKohuHYUAYHW3A/Oe7tEFCAb6Cug==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ react-refresh "^0.9.0"
+
+"@parcel/runtime-service-worker@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.3.2.tgz#aa91797e57d1bb5b2aac04ac62c5410709ae0a27"
+ integrity sha512-iREHj/eapphC4uS/zGUkiTJvG57q+CVbTrfE42kB8ECtf/RYNo5YC9htdvPZjRSXDPrEPc5NCoKp4X09ENNikw==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ nullthrows "^1.1.1"
+
+"@parcel/source-map@^2.0.0":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.0.2.tgz#9aa0b00518cee31d5634de6e9c924a5539b142c1"
+ integrity sha512-NnUrPYLpYB6qyx2v6bcRPn/gVigmGG6M6xL8wIg/i0dP1GLkuY1nf+Hqdf63FzPTqqT7K3k6eE5yHPQVMO5jcA==
+ dependencies:
+ detect-libc "^1.0.3"
+
+"@parcel/transformer-js@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.3.2.tgz#24bcb488d5f82678343a5630fe4bbe822789ac33"
+ integrity sha512-U1fbIoAoqR5P49S+DMhH8BUd9IHRPwrTTv6ARYGsYnhuNsjTFhNYE0kkfRYboe/e0z7vEbeJICZXjnZ7eQDw5A==
+ dependencies:
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/plugin" "2.3.2"
+ "@parcel/source-map" "^2.0.0"
+ "@parcel/utils" "2.3.2"
+ "@parcel/workers" "2.3.2"
+ "@swc/helpers" "^0.2.11"
+ browserslist "^4.6.6"
+ detect-libc "^1.0.3"
+ nullthrows "^1.1.1"
+ regenerator-runtime "^0.13.7"
+ semver "^5.7.1"
+
+"@parcel/transformer-json@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.3.2.tgz#4c470e86659e87ee13b1f31e75a3621d3615b6bd"
+ integrity sha512-Pv2iPaxKINtFwOk5fDbHjQlSm2Vza/NLimQY896FLxiXPNAJxWGvMwdutgOPEBKksxRx9LZPyIOHiRVZ0KcA3w==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+ json5 "^2.2.0"
+
+"@parcel/transformer-raw@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.3.2.tgz#40d21773e295bae3b16bfe7a89e414ccf534b9c5"
+ integrity sha512-lY7eOCaALZ90+GH+4PZRmAPGQRXoZ66NakSdhEtH6JSSAYOmZKDvNLGTMRo/vK1oELzWMuAHGdqvbcPDtNLLVw==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+
+"@parcel/transformer-react-refresh-wrap@^2.3.1":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.3.2.tgz#43ecfe6f4567b88abb81db9fe56b8d860d6a69f7"
+ integrity sha512-FZaderyCExn0SBZ6D+zHPWc8JSn9YDcbfibv0wkCl+D7sYfeWZ22i7MRp5NwCe/TZ21WuxDWySCggEp/Waz2xg==
+ dependencies:
+ "@parcel/plugin" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ react-refresh "^0.9.0"
+
+"@parcel/types@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.3.1.tgz#50e34487a060dc6c5366ef8c23db5093cf441b5c"
+ integrity sha512-i2UyUoA4DzyYxe9rZRDuMAZ6TD3Mq3tTTqeJ2/zA6w83Aon3cqdE9va91peu1fKRGyRqE5lwWRtA7ktF1A2SVA==
+ dependencies:
+ "@parcel/cache" "2.3.1"
+ "@parcel/diagnostic" "2.3.1"
+ "@parcel/fs" "2.3.1"
+ "@parcel/package-manager" "2.3.1"
+ "@parcel/source-map" "^2.0.0"
+ "@parcel/workers" "2.3.1"
+ utility-types "^3.10.0"
+
+"@parcel/types@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.3.2.tgz#7eb6925bc852a518dd75b742419e51292418769f"
+ integrity sha512-C77Ct1xNM7LWjPTfe/dQ/9rq1efdsX5VJu2o8/TVi6qoFh64Wp/c5/vCHwKInOTBZUTchVO6z4PGJNIZoUVJuA==
+ dependencies:
+ "@parcel/cache" "2.3.2"
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/fs" "2.3.2"
+ "@parcel/package-manager" "2.3.2"
+ "@parcel/source-map" "^2.0.0"
+ "@parcel/workers" "2.3.2"
+ utility-types "^3.10.0"
+
+"@parcel/utils@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.3.1.tgz#e1e582c850e7f7b131292cb45b8a177f59903413"
+ integrity sha512-OFdh/HuAcce753/U3QoORzYU3N5oZqCfQNRb0i3onuz/qpli5TyxUl/k1BuTqlKYr6Px3kj05g6GFi9kRBOMbw==
+ dependencies:
+ "@parcel/codeframe" "2.3.1"
+ "@parcel/diagnostic" "2.3.1"
+ "@parcel/hash" "2.3.1"
+ "@parcel/logger" "2.3.1"
+ "@parcel/markdown-ansi" "2.3.1"
+ "@parcel/source-map" "^2.0.0"
+ chalk "^4.1.0"
+
+"@parcel/utils@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.3.2.tgz#4aab052fc9f3227811a504da7b9663ca75004f55"
+ integrity sha512-xzZ+0vWhrXlLzGoz7WlANaO5IPtyWGeCZruGtepUL3yheRWb1UU4zFN9xz7Z+j++Dmf1Fgkc3qdk/t4O8u9HLQ==
+ dependencies:
+ "@parcel/codeframe" "2.3.2"
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/hash" "2.3.2"
+ "@parcel/logger" "2.3.2"
+ "@parcel/markdown-ansi" "2.3.2"
+ "@parcel/source-map" "^2.0.0"
+ chalk "^4.1.0"
+
+"@parcel/watcher@^2.0.0":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.5.tgz#f913a54e1601b0aac972803829b0eece48de215b"
+ integrity sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw==
+ dependencies:
+ node-addon-api "^3.2.1"
+ node-gyp-build "^4.3.0"
+
+"@parcel/workers@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.3.1.tgz#f0bfbd61785bea0667908989878fdf2d953c17e3"
+ integrity sha512-e2P/9p5AYBLfNRs8n+57ChGrn5171oHwY54dz/jj0CrXKN1q0b+rNwzYsPaAtOicBoqmm1s5I3cjfO6GfJP65A==
+ dependencies:
+ "@parcel/diagnostic" "2.3.1"
+ "@parcel/logger" "2.3.1"
+ "@parcel/types" "2.3.1"
+ "@parcel/utils" "2.3.1"
+ chrome-trace-event "^1.0.2"
+ nullthrows "^1.1.1"
+
+"@parcel/workers@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.3.2.tgz#05ffa2da9169bfb83335892c2b8abce55686ceb1"
+ integrity sha512-JbOm+Ceuyymd1SuKGgodC2EXAiPuFRpaNUSJpz3NAsS3lVIt2TDAPMOWBivS7sML/KltspUfl/Q9YwO0TPUFNw==
+ dependencies:
+ "@parcel/diagnostic" "2.3.2"
+ "@parcel/logger" "2.3.2"
+ "@parcel/types" "2.3.2"
+ "@parcel/utils" "2.3.2"
+ chrome-trace-event "^1.0.2"
+ nullthrows "^1.1.1"
+
+"@pmmmwh/react-refresh-webpack-plugin@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766"
+ integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==
+ dependencies:
+ ansi-html "^0.0.7"
+ error-stack-parser "^2.0.6"
+ html-entities "^1.2.1"
+ native-url "^0.2.6"
+ schema-utils "^2.6.5"
+ source-map "^0.7.3"
+
+"@popperjs/core@2.5.3":
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.5.3.tgz#4982b0b66b7a4cf949b86f5d25a8cf757d3cfd9d"
+ integrity sha512-RFwCobxsvZ6j7twS7dHIZQZituMIDJJNHS/qY6iuthVebxS3zhRY+jaC2roEKiAYaVuTcGmX6Luc6YBcf6zJVg==
+
+"@reach/observe-rect@^1.1.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@reach/observe-rect/-/observe-rect-1.2.0.tgz#d7a6013b8aafcc64c778a0ccb83355a11204d3b2"
+ integrity sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==
+
+"@react-aria/interactions@^3.2.0":
+ version "3.8.2"
+ resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.8.2.tgz#fa11833915938e2e539391b5db4670668a830e7f"
+ integrity sha512-AyTTwflthmyNcgIfjzHLdrQTcUJpLer9jMtB7IyTJ90c1eYbd+iy40WbyBZYhQhI8Zkq+q9bfeIOQFlEMDWh8A==
+ dependencies:
+ "@babel/runtime" "^7.6.2"
+ "@react-aria/utils" "^3.11.3"
+ "@react-types/shared" "^3.11.2"
+
+"@react-aria/ssr@^3.1.2":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.1.2.tgz#665a6fd56385068c7417922af2d0d71b0618e52d"
+ integrity sha512-amXY11ImpokvkTMeKRHjsSsG7v1yzzs6yeqArCyBIk60J3Yhgxwx9Cah+Uu/804ATFwqzN22AXIo7SdtIaMP+g==
+ dependencies:
+ "@babel/runtime" "^7.6.2"
+
+"@react-aria/utils@^3.11.3", "@react-aria/utils@^3.2.0":
+ version "3.11.3"
+ resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.11.3.tgz#fd870e1c4b994967883d5d5dae6b14b4e6da2d16"
+ integrity sha512-EH3SyA3FtbhuOj1cgGveiEYidKe3CgGYkP8D57O46rlTWcgTxhGHUEibGeJw3PFXxmbgm5RIOdBo29YwItvtcQ==
+ dependencies:
+ "@babel/runtime" "^7.6.2"
+ "@react-aria/ssr" "^3.1.2"
+ "@react-stately/utils" "^3.4.1"
+ "@react-types/shared" "^3.11.2"
+ clsx "^1.1.1"
+
+"@react-aria/visually-hidden@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/visually-hidden/-/visually-hidden-3.2.0.tgz#740730368c8572de397c9d82ff5700fd7e034907"
+ integrity sha512-eqLfU4ISWyRb8UM1YFRnxXdjNpjQNixj0sHT8usWJNuQrZt0ebDdu/Kv2Ir3VUYr+GldoeKGYMDFHKwFLll1Hg==
+ dependencies:
+ "@babel/runtime" "^7.6.2"
+ "@react-aria/interactions" "^3.2.0"
+ "@react-aria/utils" "^3.2.0"
+ clsx "^1.1.1"
+
+"@react-spring/animated@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.3.2.tgz#bda85e92e9e9b6861c259f2dacb54270a37b0f39"
+ integrity sha512-pBvKydRHbTzuyaeHtxGIOvnskZxGo/S5/YK1rtYm88b9NQZuZa95Rgd3O0muFL+99nvBMBL8cvQGD0UJmsqQsg==
+ dependencies:
+ "@react-spring/shared" "~9.3.0"
+ "@react-spring/types" "~9.3.0"
+
+"@react-spring/core@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.3.2.tgz#d1dc5810666ac18550db89c58567f28fbe04fb07"
+ integrity sha512-kMRjkgdQ6LJ0lmb/wQlONpghaMT83UxglXHJC6m9kZS/GKVmN//TYMEK85xN1rC5Gg+BmjG61DtLCSkkLDTfNw==
+ dependencies:
+ "@react-spring/animated" "~9.3.0"
+ "@react-spring/shared" "~9.3.0"
+ "@react-spring/types" "~9.3.0"
+
+"@react-spring/konva@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.3.2.tgz#726d567c68bdd4b74c8683764c662fae08321910"
+ integrity sha512-LLpmj6bj7Z2LYZDM75JkQ+dNasvdH56+th7VXcoMcOouAcogfI+iJ5tIFFz4yI2f2oTJzy/RkjeovmHMYIP+KQ==
+ dependencies:
+ "@react-spring/animated" "~9.3.0"
+ "@react-spring/core" "~9.3.0"
+ "@react-spring/shared" "~9.3.0"
+ "@react-spring/types" "~9.3.0"
+
+"@react-spring/native@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.3.2.tgz#0d2e4e9f3383e70c7568a5dd94937794bdc669f8"
+ integrity sha512-UQS07N639JIEJBGNGiFre6el6Sk5QEcOQeyBFyA7JmT4ewpRH7mM6JQ7Sd3DNduplsFmypIsWg+9+lmE2d52Rw==
+ dependencies:
+ "@react-spring/animated" "~9.3.0"
+ "@react-spring/core" "~9.3.0"
+ "@react-spring/shared" "~9.3.0"
+ "@react-spring/types" "~9.3.0"
+
+"@react-spring/rafz@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.3.2.tgz#0cbd296cd17bbf1e7e49d3b3616884e026d5fb67"
+ integrity sha512-YtqNnAYp5bl6NdnDOD5TcYS40VJmB+Civ4LPtcWuRPKDAOa/XAf3nep48r0wPTmkK936mpX8aIm7h+luW59u5A==
+
+"@react-spring/shared@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.3.2.tgz#967ce1d8a16d820a99e6eeb2a8f7ca9311d9dfa0"
+ integrity sha512-ypGQQ8w7mWnrELLon4h6mBCBxdd8j1pgLzmHXLpTC/f4ya2wdP+0WIKBWXJymIf+5NiTsXgSJra5SnHP5FBY+A==
+ dependencies:
+ "@react-spring/rafz" "~9.3.0"
+ "@react-spring/types" "~9.3.0"
+
+"@react-spring/three@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.3.2.tgz#e4321c1253077661b1a3de74d8a38a167368ef23"
+ integrity sha512-nZHHjOl4GksoOFNTwvP4h5bACm5OymCUsR3nejWFigqCPep8prUHaawX4kZRwfUbWTYgkp15yM5hy7BkWNN16A==
+ dependencies:
+ "@react-spring/animated" "~9.3.0"
+ "@react-spring/core" "~9.3.0"
+ "@react-spring/shared" "~9.3.0"
+ "@react-spring/types" "~9.3.0"
+
+"@react-spring/types@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.3.2.tgz#0277d436e50d7a824897dd7bb880f4842fbcd0fe"
+ integrity sha512-u+IK9z9Re4hjNkBYKebZr7xVDYTai2RNBsI4UPL/k0B6lCNSwuqWIXfKZUDVlMOeZHtDqayJn4xz6HcSkTj3FQ==
+
+"@react-spring/web@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.3.2.tgz#07620c17bf50b5b0b8bbf9cd8f1312d13778b207"
+ integrity sha512-zzM95rqanap6s0udRCoI4gerONjQjyI6I0h23UZ0X36w5sXmuzv/tBtjGPbsASo377EGM7tRIg9po1KHwb6yQg==
+ dependencies:
+ "@react-spring/animated" "~9.3.0"
+ "@react-spring/core" "~9.3.0"
+ "@react-spring/shared" "~9.3.0"
+ "@react-spring/types" "~9.3.0"
+
+"@react-spring/zdog@~9.3.0":
+ version "9.3.2"
+ resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.3.2.tgz#e25307cda0c7171119f8f536f10ce25ef607c372"
+ integrity sha512-E8MtTG4kNBcW/sEu0Im7L2FZXmhZDfeHSNbaL35cebfBlL5iI6+Pdlr7A/RPJ2pCUUKJRLlxYu3DVTuaqwf6hQ==
+ dependencies:
+ "@react-spring/animated" "~9.3.0"
+ "@react-spring/core" "~9.3.0"
+ "@react-spring/shared" "~9.3.0"
+ "@react-spring/types" "~9.3.0"
+
+"@react-stately/utils@^3.4.1":
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.4.1.tgz#56f049aa1704d338968b5973c796ee606e9c0c62"
+ integrity sha512-mjFbKklj/W8KRw1CQSpUJxHd7lhUge4i00NwJTwGxbzmiJgsTWlKKS/1rBf48ey9hUBopXT5x5vG/AxQfWTQug==
+ dependencies:
+ "@babel/runtime" "^7.6.2"
+
+"@react-types/shared@^3.11.2":
+ version "3.11.2"
+ resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.11.2.tgz#b269c0cf6223664ac42d980b7add1b67b51b87d4"
+ integrity sha512-MIjjjkFi/DTzMVmeFJJrpc51eS/PLNzLZEv6o/QJPhQ9uOMElYqA790qAcG75u3tR0XGU2Vv9RyeOC7+ppw8/Q==
+
+"@sideway/address@^4.1.3":
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27"
+ integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+
+"@sideway/formula@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c"
+ integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==
+
+"@sideway/pinpoint@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
+ integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
+
+"@sidvind/better-ajv-errors@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@sidvind/better-ajv-errors/-/better-ajv-errors-1.1.1.tgz#310d4f38fb0bb631b464bebf036fa5b5ff50b400"
+ integrity sha512-CXnmMcV4QoyWuFA0zlDk0AWMHftaMFAIFWz68AH4EXOO2iUEq0gsonJEhY3OjM08xHYobqqDeCAPPEsL5E+8QA==
+ dependencies:
+ "@babel/code-frame" "^7.16.0"
+ chalk "^4.1.0"
+
+"@sindresorhus/is@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
+ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
+
+"@sindresorhus/is@^4.0.0":
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
+ integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
+
+"@sindresorhus/slugify@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/slugify/-/slugify-1.1.2.tgz#c2c0129298b8caace2d9156176fe244d0e83156c"
+ integrity sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==
+ dependencies:
+ "@sindresorhus/transliterate" "^0.1.1"
+ escape-string-regexp "^4.0.0"
+
+"@sindresorhus/transliterate@^0.1.1":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz#ffce368271d153550e87de81486004f2637425af"
+ integrity sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==
+ dependencies:
+ escape-string-regexp "^2.0.0"
+ lodash.deburr "^4.1.0"
+
+"@swc/helpers@^0.2.11":
+ version "0.2.14"
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.2.14.tgz#20288c3627442339dd3d743c944f7043ee3590f0"
+ integrity sha512-wpCQMhf5p5GhNg2MmGKXzUNwxe7zRiCsmqYsamez2beP7mKPCSiu+BjZcdN95yYSzO857kr0VfQewmGpS77nqA==
+
+"@szmarczak/http-timer@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
+ integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
+ dependencies:
+ defer-to-connect "^1.0.1"
+
+"@szmarczak/http-timer@^4.0.5":
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807"
+ integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==
+ dependencies:
+ defer-to-connect "^2.0.0"
+
+"@tokenizer/token@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
+ integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==
+
+"@tootallnate/once@2":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
+ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
+
+"@trysound/sax@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
+ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
+
+"@turist/fetch@^7.1.7":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@turist/fetch/-/fetch-7.2.0.tgz#57df869df1cd9b299588554eec4b8543effcc714"
+ integrity sha512-2x7EGw+6OJ29phunsbGvtxlNmSfcuPcyYudkMbi8gARCP9eJ1CtuMvnVUHL//O9Ixi9SJiug8wNt6lj86pN8XQ==
+ dependencies:
+ "@types/node-fetch" "2"
+
+"@turist/time@^0.0.2":
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/@turist/time/-/time-0.0.2.tgz#32fe0ce708ea0f4512776bd313409f1459976dda"
+ integrity sha512-qLOvfmlG2vCVw5fo/oz8WAZYlpe5a5OurgTj3diIxJCdjRHpapC+vQCz3er9LV79Vcat+DifBjeAhOAdmndtDQ==
+
+"@types/buble@^0.20.0":
+ version "0.20.1"
+ resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.20.1.tgz#cba009801fd417b0d2eb8fa6824b537842e05803"
+ integrity sha512-itmN3lGSTvXg9IImY5j290H+n0B3PpZST6AgEfJJDXfaMx2cdJJZro3/Ay+bZZdIAa25Z5rnoo9rHiPCbANZoQ==
+ dependencies:
+ magic-string "^0.25.0"
+
+"@types/cacheable-request@^6.0.1":
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9"
+ integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==
+ dependencies:
+ "@types/http-cache-semantics" "*"
+ "@types/keyv" "*"
+ "@types/node" "*"
+ "@types/responselike" "*"
+
+"@types/common-tags@^1.8.1":
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/@types/common-tags/-/common-tags-1.8.1.tgz#a5a49ca5ebbb58e0f8947f3ec98950c8970a68a9"
+ integrity sha512-20R/mDpKSPWdJs5TOpz3e7zqbeCNuMCPhV7Yndk9KU2Rbij2r5W4RzwDPkzC+2lzUqXYu9rFzTktCBnDjHuNQg==
+
+"@types/component-emitter@^1.2.10":
+ version "1.2.11"
+ resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506"
+ integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==
+
+"@types/configstore@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6"
+ integrity sha1-zR6FU2M60xhcPy8jns/10mQ+krY=
+
+"@types/cookie@^0.4.0":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d"
+ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==
+
+"@types/cors@^2.8.8":
+ version "2.8.12"
+ resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
+ integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==
+
+"@types/debug@^0.0.30":
+ version "0.0.30"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.30.tgz#dc1e40f7af3b9c815013a7860e6252f6352a84df"
+ integrity sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ==
+
+"@types/eslint-scope@^3.7.3":
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224"
+ integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==
+ dependencies:
+ "@types/eslint" "*"
+ "@types/estree" "*"
+
+"@types/eslint@*":
+ version "8.4.1"
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304"
+ integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==
+ dependencies:
+ "@types/estree" "*"
+ "@types/json-schema" "*"
+
+"@types/eslint@^7.28.2":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78"
+ integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==
+ dependencies:
+ "@types/estree" "*"
+ "@types/json-schema" "*"
+
+"@types/estree@*", "@types/estree@^0.0.51":
+ version "0.0.51"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
+ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
+
+"@types/get-port@^3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@types/get-port/-/get-port-3.2.0.tgz#f9e0a11443cc21336470185eae3dfba4495d29bc"
+ integrity sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q==
+
+"@types/glob@*", "@types/glob@^7.1.1":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb"
+ integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
+ dependencies:
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/glob@^5.0.34":
+ version "5.0.37"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.37.tgz#d0982abc88f9aebbd62099d3d70440cbcea692de"
+ integrity sha512-ATA/xrS7CZ3A2WCPVY4eKdNpybq56zqlTirnHhhyOztZM/lPxJzusOBI3BsaXbu6FrUluqzvMlI4sZ6BDYMlMg==
+ dependencies:
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/hast@^2.0.0":
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc"
+ integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/http-cache-semantics@*":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812"
+ integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==
+
+"@types/http-proxy@^1.17.7":
+ version "1.17.8"
+ resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55"
+ integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==
+ dependencies:
+ "@types/node" "*"
+
+"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8":
+ version "7.0.9"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
+ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
+
+"@types/json5@^0.0.29":
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
+ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
+
+"@types/keyv@*":
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41"
+ integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/lodash@^4.14.92":
+ version "4.14.179"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.179.tgz#490ec3288088c91295780237d2497a3aa9dfb5c5"
+ integrity sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w==
+
+"@types/mdast@^3.0.0":
+ version "3.0.10"
+ resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
+ integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==
+ dependencies:
+ "@types/unist" "*"
+
+"@types/minimatch@*":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
+ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
+
+"@types/mkdirp@^0.5.2":
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f"
+ integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/node-fetch@2":
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975"
+ integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==
+ dependencies:
+ "@types/node" "*"
+ form-data "^3.0.0"
+
+"@types/node@*", "@types/node@>=10.0.0":
+ version "17.0.21"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644"
+ integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==
+
+"@types/node@^8.5.7":
+ version "8.10.66"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3"
+ integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==
+
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+"@types/parse5@^5.0.0":
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109"
+ integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==
+
+"@types/prop-types@*":
+ version "15.7.4"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
+ integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
+
+"@types/q@^1.5.1":
+ version "1.5.5"
+ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df"
+ integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==
+
+"@types/reach__router@^1.3.10":
+ version "1.3.10"
+ resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.10.tgz#141d500213a452d9d9d71d5ad96c4104094f55a3"
+ integrity sha512-iHAFGaVOrWi00/q7oBybggGsz5TOmwOW4M1H9sT7i9lly4qFC8XOgsdf6jUsoaOz2sknFHALEtZqCoDbokdJ2Q==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*":
+ version "17.0.40"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.40.tgz#dc010cee6254d5239a138083f3799a16638e6bad"
+ integrity sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ==
+ dependencies:
+ "@types/prop-types" "*"
+ "@types/scheduler" "*"
+ csstype "^3.0.2"
+
+"@types/responselike@*", "@types/responselike@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29"
+ integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==
+ dependencies:
+ "@types/node" "*"
+
+"@types/rimraf@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.5.tgz#368fb04d59630b727fc05a74d2ca557f64a8ef98"
+ integrity sha512-YyP+VfeaqAyFmXoTh3HChxOQMyjByRMsHU7kc5KOJkSlXudhMhQIALbYV7rHh/l8d2lX3VUQzprrcAgWdRuU8g==
+ dependencies:
+ "@types/glob" "*"
+ "@types/node" "*"
+
+"@types/scheduler@*":
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
+ integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
+
+"@types/sharp@^0.29.5":
+ version "0.29.5"
+ resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.29.5.tgz#9c7032d30d138ad16dde6326beaff2af757b91b3"
+ integrity sha512-3TC+S3H5RwnJmLYMHrcdfNjz/CaApKmujjY9b6PU/pE6n0qfooi99YqXGWoW8frU9EWYj/XTI35Pzxa+ThAZ5Q==
+ dependencies:
+ "@types/node" "*"
+
+"@types/tmp@^0.0.33":
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.0.33.tgz#1073c4bc824754ae3d10cfab88ab0237ba964e4d"
+ integrity sha1-EHPEvIJHVK49EM+riKsCN7qWTk0=
+
+"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
+ integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
+
+"@types/vfile-message@*":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5"
+ integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==
+ dependencies:
+ vfile-message "*"
+
+"@types/vfile@^3.0.0":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9"
+ integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==
+ dependencies:
+ "@types/node" "*"
+ "@types/unist" "*"
+ "@types/vfile-message" "*"
+
+"@types/websocket@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.2.tgz#d2855c6a312b7da73ed16ba6781815bf30c6187a"
+ integrity sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/yoga-layout@1.9.2":
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a"
+ integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==
+
+"@typescript-eslint/eslint-plugin@^4.33.0":
+ version "4.33.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
+ integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "4.33.0"
+ "@typescript-eslint/scope-manager" "4.33.0"
+ debug "^4.3.1"
+ functional-red-black-tree "^1.0.1"
+ ignore "^5.1.8"
+ regexpp "^3.1.0"
+ semver "^7.3.5"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/experimental-utils@4.33.0":
+ version "4.33.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
+ integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==
+ dependencies:
+ "@types/json-schema" "^7.0.7"
+ "@typescript-eslint/scope-manager" "4.33.0"
+ "@typescript-eslint/types" "4.33.0"
+ "@typescript-eslint/typescript-estree" "4.33.0"
+ eslint-scope "^5.1.1"
+ eslint-utils "^3.0.0"
+
+"@typescript-eslint/parser@^4.33.0":
+ version "4.33.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899"
+ integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==
+ dependencies:
+ "@typescript-eslint/scope-manager" "4.33.0"
+ "@typescript-eslint/types" "4.33.0"
+ "@typescript-eslint/typescript-estree" "4.33.0"
+ debug "^4.3.1"
+
+"@typescript-eslint/scope-manager@4.33.0":
+ version "4.33.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
+ integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==
+ dependencies:
+ "@typescript-eslint/types" "4.33.0"
+ "@typescript-eslint/visitor-keys" "4.33.0"
+
+"@typescript-eslint/types@4.33.0":
+ version "4.33.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
+ integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
+
+"@typescript-eslint/typescript-estree@4.33.0":
+ version "4.33.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609"
+ integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==
+ dependencies:
+ "@typescript-eslint/types" "4.33.0"
+ "@typescript-eslint/visitor-keys" "4.33.0"
+ debug "^4.3.1"
+ globby "^11.0.3"
+ is-glob "^4.0.1"
+ semver "^7.3.5"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/visitor-keys@4.33.0":
+ version "4.33.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd"
+ integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==
+ dependencies:
+ "@typescript-eslint/types" "4.33.0"
+ eslint-visitor-keys "^2.0.0"
+
+"@vercel/webpack-asset-relocator-loader@^1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.0.tgz#d3b707e0aba3111719f941dacb2408eff3c27319"
+ integrity sha512-1Dy3BdOliDwxA7VZSIg55E1d/us2KvsCQOZV25fgufG//CsnZBGiSAL7qewTQf7YVHH0A9PHgzwMmKIZ8aFYVw==
+
+"@webassemblyjs/ast@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
+ integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==
+ dependencies:
+ "@webassemblyjs/helper-numbers" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+
+"@webassemblyjs/floating-point-hex-parser@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
+ integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==
+
+"@webassemblyjs/helper-api-error@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
+ integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==
+
+"@webassemblyjs/helper-buffer@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
+ integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==
+
+"@webassemblyjs/helper-numbers@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
+ integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==
+ dependencies:
+ "@webassemblyjs/floating-point-hex-parser" "1.11.1"
+ "@webassemblyjs/helper-api-error" "1.11.1"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/helper-wasm-bytecode@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
+ integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==
+
+"@webassemblyjs/helper-wasm-section@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
+ integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-buffer" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/wasm-gen" "1.11.1"
+
+"@webassemblyjs/ieee754@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
+ integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
+ integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
+ integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==
+
+"@webassemblyjs/wasm-edit@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
+ integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-buffer" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/helper-wasm-section" "1.11.1"
+ "@webassemblyjs/wasm-gen" "1.11.1"
+ "@webassemblyjs/wasm-opt" "1.11.1"
+ "@webassemblyjs/wasm-parser" "1.11.1"
+ "@webassemblyjs/wast-printer" "1.11.1"
+
+"@webassemblyjs/wasm-gen@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
+ integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/ieee754" "1.11.1"
+ "@webassemblyjs/leb128" "1.11.1"
+ "@webassemblyjs/utf8" "1.11.1"
+
+"@webassemblyjs/wasm-opt@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
+ integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-buffer" "1.11.1"
+ "@webassemblyjs/wasm-gen" "1.11.1"
+ "@webassemblyjs/wasm-parser" "1.11.1"
+
+"@webassemblyjs/wasm-parser@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
+ integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/helper-api-error" "1.11.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@webassemblyjs/ieee754" "1.11.1"
+ "@webassemblyjs/leb128" "1.11.1"
+ "@webassemblyjs/utf8" "1.11.1"
+
+"@webassemblyjs/wast-printer@1.11.1":
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
+ integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.1"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+abort-controller@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
+ integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
+ dependencies:
+ event-target-shim "^5.0.0"
+
+abortcontroller-polyfill@^1.1.9:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5"
+ integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==
+
+accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
+ dependencies:
+ mime-types "~2.1.34"
+ negotiator "0.6.3"
+
+acorn-import-assertions@^1.7.6:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
+ integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==
+
+acorn-jsx@^5.3.1:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn-walk@^8.0.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
+ integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
+
+acorn@^7.4.0:
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0:
+ version "8.7.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
+ integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
+
+address@1.1.2, address@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
+ integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==
+
+adjust-sourcemap-loader@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e"
+ integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==
+ dependencies:
+ loader-utils "^2.0.0"
+ regex-parser "^2.2.11"
+
+agent-base@6, agent-base@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
+agentkeepalive@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717"
+ integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==
+ dependencies:
+ debug "^4.1.0"
+ depd "^1.1.2"
+ humanize-ms "^1.2.1"
+
+aggregate-error@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
+ dependencies:
+ clean-stack "^2.0.0"
+ indent-string "^4.0.0"
+
+ajv-keywords@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+
+ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ 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"
+
+ajv@^8.0.0, ajv@^8.0.1:
+ version "8.10.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d"
+ integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
+anser@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/anser/-/anser-2.1.1.tgz#8afae28d345424c82de89cc0e4d1348eb0c5af7c"
+ integrity sha512-nqLm4HxOTpeLOxcmB3QWmV5TcDFhW9y/fyQ+hivtDFcK4OQ+pQ5fzPnXHM1Mfcm0VkLtvVi1TCPr++Qy0Q/3EQ==
+
+ansi-align@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
+ integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==
+ dependencies:
+ string-width "^4.1.0"
+
+ansi-colors@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
+ integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
+
+ansi-escapes@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
+ integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
+
+ansi-escapes@^4.2.1:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
+ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ dependencies:
+ type-fest "^0.21.3"
+
+ansi-html@0.0.7, ansi-html@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
+ integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4=
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-regex@^5.0.0, ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+any-base@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe"
+ integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==
+
+anymatch@~3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+append-field@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56"
+ integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=
+
+application-config-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.0.tgz#193c5f0a86541a4c66fba1e2dc38583362ea5e8f"
+ integrity sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8=
+
+aproba@^1.0.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+"aproba@^1.0.3 || ^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
+ integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
+
+arch@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
+ integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
+
+are-we-there-yet@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d"
+ integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^3.6.0"
+
+are-we-there-yet@~1.1.2:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146"
+ integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+arg@^4.1.0:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
+ integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+aria-query@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
+ integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
+ dependencies:
+ "@babel/runtime" "^7.10.2"
+ "@babel/runtime-corejs3" "^7.10.2"
+
+arity-n@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745"
+ integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U=
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+
+array-includes@^3.1.3, array-includes@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9"
+ integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+ get-intrinsic "^1.1.1"
+ is-string "^1.0.7"
+
+array-iterate@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.4.tgz#add1522e9dd9749bb41152d08b845bd08d6af8b7"
+ integrity sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+array.prototype.flat@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13"
+ integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.0"
+
+array.prototype.flatmap@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446"
+ integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.0"
+
+arrify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
+ integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+ast-types-flow@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
+ integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
+
+astral-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+ integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+
+async-cache@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/async-cache/-/async-cache-1.1.0.tgz#4a9a5a89d065ec5d8e5254bd9ee96ba76c532b5a"
+ integrity sha1-SppaidBl7F2OUlS9nulrp2xTK1o=
+ dependencies:
+ lru-cache "^4.0.0"
+
+async-retry-ng@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/async-retry-ng/-/async-retry-ng-2.0.1.tgz#f5285ec1c52654a2ba6a505d0c18b1eadfaebd41"
+ integrity sha512-iitlc2murdQ3/A5Re3CcplQBEf7vOmFrFQ6RFn3+/+zZUyIHYkZnnEziMSa6YIb2Bs2EJEPZWReTxjHqvQbDbw==
+
+async@1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+ integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
+
+async@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
+ integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+autoprefixer@^10.4.0:
+ version "10.4.2"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b"
+ integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==
+ dependencies:
+ browserslist "^4.19.1"
+ caniuse-lite "^1.0.30001297"
+ fraction.js "^4.1.2"
+ normalize-range "^0.1.2"
+ picocolors "^1.0.0"
+ postcss-value-parser "^4.2.0"
+
+axe-core@^4.3.5:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413"
+ integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==
+
+axios@^0.21.1:
+ version "0.21.4"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
+ integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
+ dependencies:
+ follow-redirects "^1.14.0"
+
+axobject-query@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
+ integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
+
+babel-extract-comments@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21"
+ integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==
+ dependencies:
+ babylon "^6.18.0"
+
+babel-jsx-utils@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/babel-jsx-utils/-/babel-jsx-utils-1.1.0.tgz#304ce4fce0c86cbeee849551a45eb4ed1036381a"
+ integrity sha512-Mh1j/rw4xM9T3YICkw22aBQ78FhsHdsmlb9NEk4uVAFBOg+Ez9ZgXXHugoBPCZui3XLomk/7/JBBH4daJqTkQQ==
+
+babel-loader@^8.2.3:
+ version "8.2.3"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d"
+ integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==
+ dependencies:
+ find-cache-dir "^3.3.1"
+ loader-utils "^1.4.0"
+ make-dir "^3.1.0"
+ schema-utils "^2.6.5"
+
+babel-plugin-add-module-exports@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz#6caa4ddbe1f578c6a5264d4d3e6c8a2720a7ca2b"
+ integrity sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==
+
+babel-plugin-apply-mdx-type-prop@1.6.22:
+ version "1.6.22"
+ resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b"
+ integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "7.10.4"
+ "@mdx-js/util" "1.6.22"
+
+babel-plugin-dynamic-import-node@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
+ dependencies:
+ object.assign "^4.1.0"
+
+babel-plugin-extract-import-names@1.6.22:
+ version "1.6.22"
+ resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc"
+ integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "7.10.4"
+
+babel-plugin-lodash@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196"
+ integrity sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0-beta.49"
+ "@babel/types" "^7.0.0-beta.49"
+ glob "^7.1.1"
+ lodash "^4.17.10"
+ require-package-name "^2.0.1"
+
+babel-plugin-macros@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
+ integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ cosmiconfig "^6.0.0"
+ resolve "^1.12.0"
+
+babel-plugin-polyfill-corejs2@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5"
+ integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==
+ dependencies:
+ "@babel/compat-data" "^7.13.11"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ semver "^6.1.1"
+
+babel-plugin-polyfill-corejs3@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72"
+ integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ core-js-compat "^3.21.0"
+
+babel-plugin-polyfill-regenerator@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990"
+ integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+
+babel-plugin-remove-graphql-queries@^4.9.1:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-4.9.1.tgz#75290c6dd840d28343dc47f9517a634e02255b80"
+ integrity sha512-Mg+NB34cjdV6rIGIahMe0qij3KpWf7M8NFe8J1w2kxjQty4mpGX2qqmMUHhwxqwVWAhH1LZeiqitFZ6D/+CbJg==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ gatsby-core-utils "^3.9.1"
+
+babel-plugin-syntax-object-rest-spread@^6.8.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
+ integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=
+
+babel-plugin-transform-object-rest-spread@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
+ integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=
+ dependencies:
+ babel-plugin-syntax-object-rest-spread "^6.8.0"
+ babel-runtime "^6.26.0"
+
+babel-plugin-transform-react-remove-prop-types@^0.4.24:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a"
+ integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==
+
+babel-preset-gatsby@^2.9.1:
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-2.9.1.tgz#2f62f7f7899ed7282f0a84ef0b5a0e131225ed96"
+ integrity sha512-HkZyo5Phb5+vbICx0Q8Goj+FV8xPH4detCqJUDHH9sfBvAjvdnKfL2dtDFd0QvKhUQ/55rO3Rdcmo6PU5zYwZw==
+ dependencies:
+ "@babel/plugin-proposal-class-properties" "^7.14.0"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5"
+ "@babel/plugin-proposal-optional-chaining" "^7.14.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-transform-classes" "^7.15.4"
+ "@babel/plugin-transform-runtime" "^7.15.0"
+ "@babel/plugin-transform-spread" "^7.14.6"
+ "@babel/preset-env" "^7.15.4"
+ "@babel/preset-react" "^7.14.0"
+ "@babel/runtime" "^7.15.4"
+ babel-plugin-dynamic-import-node "^2.3.3"
+ babel-plugin-macros "^2.8.0"
+ babel-plugin-transform-react-remove-prop-types "^0.4.24"
+ gatsby-core-utils "^3.9.1"
+ gatsby-legacy-polyfills "^2.9.0"
+
+babel-runtime@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+ integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.11.0"
+
+babylon@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
+ integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
+
+backo2@^1.0.2, backo2@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
+ integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
+
+bail@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
+ integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base-x@^3.0.8:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320"
+ integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==
+ dependencies:
+ safe-buffer "^5.0.1"
+
+base64-arraybuffer@0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812"
+ integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=
+
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+base64id@2.0.0, base64id@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6"
+ integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+better-opn@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6"
+ integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==
+ dependencies:
+ open "^7.0.3"
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bl@^4.0.0, bl@^4.0.3:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
+ integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
+ dependencies:
+ buffer "^5.5.0"
+ inherits "^2.0.4"
+ readable-stream "^3.4.0"
+
+bluebird@^3.0.5, bluebird@^3.7.2:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bmp-js@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233"
+ integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM=
+
+body-parser@1.19.2, body-parser@^1.19.0:
+ version "1.19.2"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e"
+ integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "~1.1.2"
+ http-errors "1.8.1"
+ iconv-lite "0.4.24"
+ on-finished "~2.3.0"
+ qs "6.9.7"
+ raw-body "2.4.3"
+ type-is "~1.6.18"
+
+boolbase@^1.0.0, boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
+boxen@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64"
+ integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==
+ dependencies:
+ ansi-align "^3.0.0"
+ camelcase "^5.3.1"
+ chalk "^3.0.0"
+ cli-boxes "^2.2.0"
+ string-width "^4.1.0"
+ term-size "^2.1.0"
+ type-fest "^0.8.1"
+ widest-line "^3.1.0"
+
+boxen@^5.0.0, boxen@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50"
+ integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==
+ dependencies:
+ ansi-align "^3.0.0"
+ camelcase "^6.2.0"
+ chalk "^4.1.0"
+ cli-boxes "^2.2.1"
+ string-width "^4.2.2"
+ type-fest "^0.20.2"
+ widest-line "^3.1.0"
+ wrap-ansi "^7.0.0"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.1, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+browserslist@4.14.2:
+ version "4.14.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce"
+ integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==
+ dependencies:
+ caniuse-lite "^1.0.30001125"
+ electron-to-chromium "^1.3.564"
+ escalade "^3.0.2"
+ node-releases "^1.1.61"
+
+browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.6.6:
+ version "4.20.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.0.tgz#35951e3541078c125d36df76056e94738a52ebe9"
+ integrity sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ==
+ dependencies:
+ caniuse-lite "^1.0.30001313"
+ electron-to-chromium "^1.4.76"
+ escalade "^3.1.1"
+ node-releases "^2.0.2"
+ picocolors "^1.0.0"
+
+buble@0.19.6:
+ version "0.19.6"
+ resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.6.tgz#915909b6bd5b11ee03b1c885ec914a8b974d34d3"
+ integrity sha512-9kViM6nJA1Q548Jrd06x0geh+BG2ru2+RMDkIHHgJY/8AcyCs34lTHwra9BX7YdPrZXd5aarkpr/SY8bmPgPdg==
+ dependencies:
+ chalk "^2.4.1"
+ magic-string "^0.25.1"
+ minimist "^1.2.0"
+ os-homedir "^1.0.1"
+ regexpu-core "^4.2.0"
+ vlq "^1.0.0"
+
+buffer-equal@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b"
+ integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=
+
+buffer-from@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+buffer@^5.2.0, buffer@^5.5.0, buffer@^5.7.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
+builtins@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
+ integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og=
+
+busboy@^0.2.11:
+ version "0.2.14"
+ resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453"
+ integrity sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=
+ dependencies:
+ dicer "0.2.5"
+ readable-stream "1.1.x"
+
+bytes@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+ integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
+
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+
+cacache@^15.3.0:
+ version "15.3.0"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb"
+ integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==
+ dependencies:
+ "@npmcli/fs" "^1.0.0"
+ "@npmcli/move-file" "^1.0.1"
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ glob "^7.1.4"
+ infer-owner "^1.0.4"
+ lru-cache "^6.0.0"
+ minipass "^3.1.1"
+ minipass-collect "^1.0.2"
+ minipass-flush "^1.0.5"
+ minipass-pipeline "^1.2.2"
+ mkdirp "^1.0.3"
+ p-map "^4.0.0"
+ promise-inflight "^1.0.1"
+ rimraf "^3.0.2"
+ ssri "^8.0.1"
+ tar "^6.0.2"
+ unique-filename "^1.1.1"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+cache-manager@^2.11.1:
+ version "2.11.1"
+ resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-2.11.1.tgz#212e8c3db15288af653b029a1d9fe12f1fd9df61"
+ integrity sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow==
+ dependencies:
+ async "1.5.2"
+ lodash.clonedeep "4.5.0"
+ lru-cache "4.0.0"
+
+cacheable-lookup@^5.0.3:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005"
+ integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
+
+cacheable-request@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
+ integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^3.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^4.1.0"
+ responselike "^1.0.2"
+
+cacheable-request@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27"
+ integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^4.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^6.0.1"
+ responselike "^2.0.0"
+
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camel-case@4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
+ integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
+ dependencies:
+ pascal-case "^3.1.2"
+ tslib "^2.0.3"
+
+camel-case@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
+ integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.1"
+
+camelcase-css@2.0.1, camelcase-css@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
+ integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
+
+camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^6.2.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-api@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-lite "^1.0.0"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001313:
+ version "1.0.30001314"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz#65c7f9fb7e4594fca0a333bec1d8939662377596"
+ integrity sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==
+
+ccount@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
+ integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==
+
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
+ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+change-case@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e"
+ integrity sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==
+ dependencies:
+ camel-case "^3.0.0"
+ constant-case "^2.0.0"
+ dot-case "^2.1.0"
+ header-case "^1.0.0"
+ is-lower-case "^1.1.0"
+ is-upper-case "^1.1.0"
+ lower-case "^1.1.1"
+ lower-case-first "^1.0.0"
+ no-case "^2.3.2"
+ param-case "^2.1.0"
+ pascal-case "^2.0.0"
+ path-case "^2.1.0"
+ sentence-case "^2.1.0"
+ snake-case "^2.1.0"
+ swap-case "^1.1.0"
+ title-case "^2.1.0"
+ upper-case "^1.1.1"
+ upper-case-first "^1.1.0"
+
+character-entities-html4@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125"
+ integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==
+
+character-entities-legacy@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
+ integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==
+
+character-entities@^1.0.0:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b"
+ integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==
+
+character-reference-invalid@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560"
+ integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+cheerio-select@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823"
+ integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==
+ dependencies:
+ css-select "^4.1.3"
+ css-what "^5.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+ domutils "^2.7.0"
+
+cheerio@^0.22.0:
+ version "0.22.0"
+ resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
+ integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=
+ dependencies:
+ css-select "~1.2.0"
+ dom-serializer "~0.1.0"
+ entities "~1.1.1"
+ htmlparser2 "^3.9.1"
+ lodash.assignin "^4.0.9"
+ lodash.bind "^4.1.4"
+ lodash.defaults "^4.0.1"
+ lodash.filter "^4.4.0"
+ lodash.flatten "^4.2.0"
+ lodash.foreach "^4.3.0"
+ lodash.map "^4.4.0"
+ lodash.merge "^4.4.0"
+ lodash.pick "^4.2.1"
+ lodash.reduce "^4.4.0"
+ lodash.reject "^4.4.0"
+ lodash.some "^4.4.0"
+
+cheerio@^1.0.0-rc.10:
+ version "1.0.0-rc.10"
+ resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e"
+ integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==
+ dependencies:
+ cheerio-select "^1.5.0"
+ dom-serializer "^1.3.2"
+ domhandler "^4.2.0"
+ htmlparser2 "^6.1.0"
+ parse5 "^6.0.1"
+ parse5-htmlparser2-tree-adapter "^6.0.1"
+ tslib "^2.2.0"
+
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chownr@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+chownr@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
+ integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
+
+chrome-trace-event@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
+ integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
+
+ci-info@2.0.0, ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
+cint@^8.2.1:
+ version "8.2.1"
+ resolved "https://registry.yarnpkg.com/cint/-/cint-8.2.1.tgz#70386b1b48e2773d0d63166a55aff94ef4456a12"
+ integrity sha1-cDhrG0jidz0NYxZqVa/5TvRFahI=
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clean-stack@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
+
+cli-boxes@^2.2.0, cli-boxes@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
+ integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-table@^0.3.11:
+ version "0.3.11"
+ resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee"
+ integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==
+ dependencies:
+ colors "1.0.3"
+
+cli-width@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
+ integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+
+clipboardy@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290"
+ integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==
+ dependencies:
+ arch "^2.1.1"
+ execa "^1.0.0"
+ is-wsl "^2.1.1"
+
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
+clone-deep@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
+ integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
+ dependencies:
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.2"
+ shallow-clone "^3.0.0"
+
+clone-response@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
+ integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
+ dependencies:
+ mimic-response "^1.0.0"
+
+clone@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
+
+clsx@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
+ integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
+
+coa@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
+ dependencies:
+ "@types/q" "^1.5.1"
+ chalk "^2.4.1"
+ q "^1.1.2"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collapse-white-space@^1.0.2:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
+ integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@^1.0.0, color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa"
+ integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color-support@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
+ integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
+
+color@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/color/-/color-4.2.1.tgz#498aee5fce7fc982606c8875cab080ac0547c884"
+ integrity sha512-MFJr0uY4RvTQUKvPq7dh9grVOTYSFeXja2mBXioCGjnjJoXrAp9jJ1NQTDR73c9nwBSAQiNKloKl5zq9WB9UPw==
+ dependencies:
+ color-convert "^2.0.1"
+ color-string "^1.9.0"
+
+colord@^2.9.1:
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1"
+ integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==
+
+colorette@^1.2.2:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
+ integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
+
+colors@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
+ integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
+
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+comma-separated-tokens@^1.0.0:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea"
+ integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==
+
+command-exists@^1.2.4:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69"
+ integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==
+
+commander@^2.20.0, commander@^2.20.3:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
+commander@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-9.0.0.tgz#86d58f24ee98126568936bd1d3574e0308a99a40"
+ integrity sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==
+
+common-tags@^1.8.0, common-tags@^1.8.2:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
+ integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+component-emitter@^1.2.1, component-emitter@~1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+component-props@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944"
+ integrity sha1-+bffm5kntubZfJvScqqGdnDzSUQ=
+
+component-xor@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/component-xor/-/component-xor-0.0.4.tgz#c55d83ccc1b94cd5089a4e93fa7891c7263e59aa"
+ integrity sha1-xV2DzMG5TNUImk6T+niRxyY+Wao=
+
+compose-function@3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f"
+ integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=
+ dependencies:
+ arity-n "^1.0.4"
+
+compressible@~2.0.16:
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
+ integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
+ dependencies:
+ mime-db ">= 1.43.0 < 2"
+
+compression@^1.7.4:
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+ integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
+ dependencies:
+ accepts "~1.3.5"
+ bytes "3.0.0"
+ compressible "~2.0.16"
+ debug "2.6.9"
+ on-headers "~1.0.2"
+ safe-buffer "5.1.2"
+ vary "~1.1.2"
+
+compute-scroll-into-view@^1.0.14:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab"
+ integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.5.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+configstore@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
+ integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
+ dependencies:
+ dot-prop "^5.2.0"
+ graceful-fs "^4.1.2"
+ make-dir "^3.0.0"
+ unique-string "^2.0.0"
+ write-file-atomic "^3.0.0"
+ xdg-basedir "^4.0.0"
+
+confusing-browser-globals@^1.0.10:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81"
+ integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==
+
+console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constant-case@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46"
+ integrity sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=
+ dependencies:
+ snake-case "^2.1.0"
+ upper-case "^1.1.1"
+
+content-disposition@0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
+ integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
+ dependencies:
+ safe-buffer "5.2.1"
+
+content-type@^1.0.4, content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+
+convert-hrtime@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-3.0.0.tgz#62c7593f5809ca10be8da858a6d2f702bcda00aa"
+ integrity sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==
+
+convert-source-map@1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+convert-source-map@^0.3.3:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190"
+ integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA=
+
+convert-source-map@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
+ integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+
+cookie@0.4.2, cookie@^0.4.1, cookie@~0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
+ integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-js-compat@3.9.0:
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.0.tgz#29da39385f16b71e1915565aa0385c4e0963ad56"
+ integrity sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ==
+ dependencies:
+ browserslist "^4.16.3"
+ semver "7.0.0"
+
+core-js-compat@^3.20.2, core-js-compat@^3.21.0:
+ version "3.21.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82"
+ integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==
+ dependencies:
+ browserslist "^4.19.1"
+ semver "7.0.0"
+
+core-js-pure@^3.20.2:
+ version "3.21.1"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51"
+ integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==
+
+core-js@^2.4.0:
+ version "2.6.12"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
+ integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
+
+core-js@^3.14.0, core-js@^3.17.2:
+ version "3.21.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94"
+ integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==
+
+core-util-is@~1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
+ integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+
+cors@^2.8.5, cors@~2.8.5:
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
+ integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
+ dependencies:
+ object-assign "^4"
+ vary "^1"
+
+cosmiconfig-toml-loader@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz#0681383651cceff918177debe9084c0d3769509b"
+ integrity sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==
+ dependencies:
+ "@iarna/toml" "^2.2.5"
+
+cosmiconfig@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3"
+ integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
+cosmiconfig@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
+ integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.1.0"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.7.2"
+
+cosmiconfig@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
+ integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
+create-gatsby@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-2.9.0.tgz#560d02551eda31b3038b7c71b772b801e20685b0"
+ integrity sha512-xl4bMKm4Buz4btVcU8FenspTJQdegv/4G2z7REKsTempdUWAU6wh8nyKlMWGNUJV2K8oQ6oGLXSJbL4a0LTglQ==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+
+create-require@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
+ integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
+
+cross-fetch@3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39"
+ integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==
+ dependencies:
+ node-fetch "2.6.1"
+
+cross-spawn@7.0.3, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+crypto-random-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
+ integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+
+css-declaration-sorter@^6.0.3:
+ version "6.1.4"
+ resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4"
+ integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==
+ dependencies:
+ timsort "^0.3.0"
+
+css-loader@^5.2.7:
+ version "5.2.7"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae"
+ integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==
+ dependencies:
+ icss-utils "^5.1.0"
+ loader-utils "^2.0.0"
+ postcss "^8.2.15"
+ postcss-modules-extract-imports "^3.0.0"
+ postcss-modules-local-by-default "^4.0.0"
+ postcss-modules-scope "^3.0.0"
+ postcss-modules-values "^4.0.0"
+ postcss-value-parser "^4.1.0"
+ schema-utils "^3.0.0"
+ semver "^7.3.5"
+
+css-minimizer-webpack-plugin@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-2.0.0.tgz#3c42f6624ed4cf4780dd963e23ee649e5a25c1a8"
+ integrity sha512-cG/uc94727tx5pBNtb1Sd7gvUPzwmcQi1lkpfqTpdkuNq75hJCw7bIVsCNijLm4dhDcr1atvuysl2rZqOG8Txw==
+ dependencies:
+ cssnano "^5.0.0"
+ jest-worker "^26.3.0"
+ p-limit "^3.0.2"
+ postcss "^8.2.9"
+ schema-utils "^3.0.0"
+ serialize-javascript "^5.0.1"
+ source-map "^0.6.1"
+
+css-select-base-adapter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
+
+css-select@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
+ integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^3.2.1"
+ domutils "^1.7.0"
+ nth-check "^1.0.2"
+
+css-select@^4.1.3:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd"
+ integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^5.1.0"
+ domhandler "^4.3.0"
+ domutils "^2.8.0"
+ nth-check "^2.0.1"
+
+css-select@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+ integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
+ dependencies:
+ boolbase "~1.0.0"
+ css-what "2.1"
+ domutils "1.5.1"
+ nth-check "~1.0.1"
+
+css-tree@1.0.0-alpha.37:
+ version "1.0.0-alpha.37"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
+ integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
+ dependencies:
+ mdn-data "2.0.4"
+ source-map "^0.6.1"
+
+css-tree@^1.1.2, css-tree@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
+css-what@2.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
+ integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
+
+css-what@^3.2.1:
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
+ integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
+
+css-what@^5.0.1, css-what@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
+ integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==
+
+css.escape@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
+ integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
+
+css@^2.0.0:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929"
+ integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==
+ dependencies:
+ inherits "^2.0.3"
+ source-map "^0.6.1"
+ source-map-resolve "^0.5.2"
+ urix "^0.1.0"
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssfilter@0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae"
+ integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=
+
+cssnano-preset-default@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.1.tgz#a83b15d3294c69bd1cedd14b0066c2f2357d108e"
+ integrity sha512-Y+CUCS5iZ1uzHn5KtmKIlysQVXrTtLCnYsYTOJcbdd5rghOwtw1gobvEXefBncjGO4fWwGZr9/n9hwZfo6W1Fw==
+ dependencies:
+ css-declaration-sorter "^6.0.3"
+ cssnano-utils "^3.1.0"
+ postcss-calc "^8.2.3"
+ postcss-colormin "^5.3.0"
+ postcss-convert-values "^5.1.0"
+ postcss-discard-comments "^5.1.1"
+ postcss-discard-duplicates "^5.1.0"
+ postcss-discard-empty "^5.1.0"
+ postcss-discard-overridden "^5.1.0"
+ postcss-merge-longhand "^5.1.0"
+ postcss-merge-rules "^5.1.0"
+ postcss-minify-font-values "^5.1.0"
+ postcss-minify-gradients "^5.1.0"
+ postcss-minify-params "^5.1.0"
+ postcss-minify-selectors "^5.2.0"
+ postcss-normalize-charset "^5.1.0"
+ postcss-normalize-display-values "^5.1.0"
+ postcss-normalize-positions "^5.1.0"
+ postcss-normalize-repeat-style "^5.1.0"
+ postcss-normalize-string "^5.1.0"
+ postcss-normalize-timing-functions "^5.1.0"
+ postcss-normalize-unicode "^5.1.0"
+ postcss-normalize-url "^5.1.0"
+ postcss-normalize-whitespace "^5.1.0"
+ postcss-ordered-values "^5.1.0"
+ postcss-reduce-initial "^5.1.0"
+ postcss-reduce-transforms "^5.1.0"
+ postcss-svgo "^5.1.0"
+ postcss-unique-selectors "^5.1.1"
+
+cssnano-utils@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861"
+ integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==
+
+cssnano@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.1.tgz#2df44d26461b95f699096b6830df5107b1a758f4"
+ integrity sha512-WWfN7jBK/3Uk3oX/jsFbQApDf9DkXj6dOYull5ZaSGskcDggzg3RyDZI4GKKO+00LdfLMEZtY1cwTQUL+YMg2Q==
+ dependencies:
+ cssnano-preset-default "^5.2.1"
+ lilconfig "^2.0.3"
+ yaml "^1.10.2"
+
+csso@^4.0.2, csso@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
+csstype@^3.0.2:
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33"
+ integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==
+
+d@1, d@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
+ integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
+ dependencies:
+ es5-ext "^0.10.50"
+ type "^1.0.1"
+
+damerau-levenshtein@^1.0.7:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
+ integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
+
+dataloader@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f"
+ integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==
+
+dataloader@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8"
+ integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==
+
+date-fns@2.16.1:
+ version "2.16.1"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b"
+ integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==
+
+date-fns@^2.25.0:
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
+ integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
+
+debounce@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
+ integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
+
+debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@~4.3.1:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
+ integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+ dependencies:
+ ms "2.1.2"
+
+debug@^3.0.0, debug@^3.1.0, debug@^3.2.6, debug@^3.2.7:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+decompress-response@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
+ integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
+ dependencies:
+ mimic-response "^1.0.0"
+
+decompress-response@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
+ integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
+ dependencies:
+ mimic-response "^3.1.0"
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+deep-is@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+deepmerge@^4.0.0, deepmerge@^4.2.0, deepmerge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
+defer-to-connect@^1.0.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
+ integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
+
+defer-to-connect@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
+ integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
+
+define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+del@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7"
+ integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==
+ dependencies:
+ globby "^10.0.1"
+ graceful-fs "^4.2.2"
+ is-glob "^4.0.1"
+ is-path-cwd "^2.2.0"
+ is-path-inside "^3.0.1"
+ p-map "^3.0.0"
+ rimraf "^3.0.0"
+ slash "^3.0.0"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+depd@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
+depd@^1.1.2, depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detab@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43"
+ integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==
+ dependencies:
+ repeat-string "^1.5.4"
+
+detect-libc@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+
+detect-libc@^2.0.0, detect-libc@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
+ integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
+
+detect-port-alt@1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275"
+ integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==
+ dependencies:
+ address "^1.0.1"
+ debug "^2.6.0"
+
+detect-port@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1"
+ integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==
+ dependencies:
+ address "^1.0.1"
+ debug "^2.6.0"
+
+devcert@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/devcert/-/devcert-1.2.0.tgz#7fb0fa2ca4c73baf3a3053973e80ebc5899fb20d"
+ integrity sha512-Tca9LUcmDegqTxlnQLTxVARS3MqYT+eWJfskXykefknT9jPoSJEA+t5BkDq5C5Tz+gVmAWmOH5vvKMfLJO/UhQ==
+ dependencies:
+ "@types/configstore" "^2.1.1"
+ "@types/debug" "^0.0.30"
+ "@types/get-port" "^3.2.0"
+ "@types/glob" "^5.0.34"
+ "@types/lodash" "^4.14.92"
+ "@types/mkdirp" "^0.5.2"
+ "@types/node" "^8.5.7"
+ "@types/rimraf" "^2.0.2"
+ "@types/tmp" "^0.0.33"
+ application-config-path "^0.1.0"
+ command-exists "^1.2.4"
+ debug "^3.1.0"
+ eol "^0.9.1"
+ get-port "^3.2.0"
+ glob "^7.1.2"
+ lodash "^4.17.4"
+ mkdirp "^0.5.1"
+ password-prompt "^1.0.4"
+ rimraf "^2.6.2"
+ sudo-prompt "^8.2.0"
+ tmp "^0.0.33"
+ tslib "^1.10.0"
+
+dicer@0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f"
+ integrity sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=
+ dependencies:
+ readable-stream "1.1.x"
+ streamsearch "0.1.2"
+
+diff@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
+ integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-converter@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
+ integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
+ dependencies:
+ utila "~0.4"
+
+dom-iterator@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dom-iterator/-/dom-iterator-1.0.0.tgz#9c09899846ec41c2d257adc4d6015e4759ef05ad"
+ integrity sha512-7dsMOQI07EMU98gQM8NSB3GsAiIeBYIPKpnxR3c9xOvdvBjChAcOM0iJ222I3p5xyiZO9e5oggkNaCusuTdYig==
+ dependencies:
+ component-props "1.1.1"
+ component-xor "0.0.4"
+
+dom-serializer@0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
+dom-serializer@^1.0.1, dom-serializer@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
+ integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
+dom-serializer@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
+ integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
+ dependencies:
+ domelementtype "^1.3.0"
+ entities "^1.1.1"
+
+dom-walk@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
+ integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
+
+domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domelementtype@^2.0.1, domelementtype@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
+ integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
+
+domhandler@^2.3.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+ integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
+ dependencies:
+ domelementtype "1"
+
+domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
+ integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==
+ dependencies:
+ domelementtype "^2.2.0"
+
+dompurify@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.6.tgz#2e019d7d7617aacac07cbbe3d88ae3ad354cf875"
+ integrity sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg==
+
+domutils@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+ integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+domutils@^1.5.1, domutils@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+domutils@^2.5.2, domutils@^2.7.0, domutils@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+dot-case@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee"
+ integrity sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=
+ dependencies:
+ no-case "^2.2.0"
+
+dot-prop@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
+ integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+ dependencies:
+ is-obj "^2.0.0"
+
+dotenv-expand@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
+ integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
+
+dotenv@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c"
+ integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==
+
+dotenv@^8.6.0:
+ version "8.6.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
+ integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
+
+downshift@6.0.6:
+ version "6.0.6"
+ resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.0.6.tgz#82aee8e2e260d7ad99df8a0969bd002dd523abe8"
+ integrity sha512-tmLab3cXCn6PtZYl9V8r/nB2m+7/nCNrwo0B3kTHo/2lRBHr+1en1VNOQt2wIt0ajanAnxquZ00WPCyxe6cNFQ==
+ dependencies:
+ "@babel/runtime" "^7.11.2"
+ compute-scroll-into-view "^1.0.14"
+ prop-types "^15.7.2"
+ react-is "^16.13.1"
+
+duplexer3@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+ integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+
+duplexer@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.76:
+ version "1.4.80"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.80.tgz#299a1ea3e32810934b4e3c2e4d4cb53136fdab3f"
+ integrity sha512-COsbJCGVYCc/aAY4cd94x1Js3q0r406YKGbdL8LXHg0O9dEjuFEFU/vZneRxBxKo/f1lLHi0YyAR7sbFM+i8Bg==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+encoding@^0.1.13:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
+ integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
+ dependencies:
+ iconv-lite "^0.6.2"
+
+end-of-stream@^1.1.0, end-of-stream@^1.4.1:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+engine.io-client@~4.1.0:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-4.1.4.tgz#0bda5ba4bd87bced2ad00b93c67e133d0fb981ba"
+ integrity sha512-843fqAdKeUMFqKi1sSjnR11tJ4wi8sIefu6+JC1OzkkJBmjtc/gM/rZ53tJfu5Iae/3gApm5veoS+v+gtT0+Fg==
+ dependencies:
+ base64-arraybuffer "0.1.4"
+ component-emitter "~1.3.0"
+ debug "~4.3.1"
+ engine.io-parser "~4.0.1"
+ has-cors "1.1.0"
+ parseqs "0.0.6"
+ parseuri "0.0.6"
+ ws "~7.4.2"
+ xmlhttprequest-ssl "~1.6.2"
+ yeast "0.1.2"
+
+engine.io-parser@~4.0.0, engine.io-parser@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.3.tgz#83d3a17acfd4226f19e721bb22a1ee8f7662d2f6"
+ integrity sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==
+ dependencies:
+ base64-arraybuffer "0.1.4"
+
+engine.io@~4.1.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-4.1.2.tgz#f96ceb56d4b39cc7ca5bd29a20e9c99c1ad1a765"
+ integrity sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ==
+ dependencies:
+ accepts "~1.3.4"
+ base64id "2.0.0"
+ cookie "~0.4.1"
+ cors "~2.8.5"
+ debug "~4.3.1"
+ engine.io-parser "~4.0.0"
+ ws "~7.4.2"
+
+enhanced-resolve@^5.8.3, enhanced-resolve@^5.9.2:
+ version "5.9.2"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9"
+ integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==
+ dependencies:
+ graceful-fs "^4.2.4"
+ tapable "^2.2.0"
+
+enquirer@^2.3.5:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
+ integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
+ dependencies:
+ ansi-colors "^4.1.1"
+
+entities@^1.1.1, entities@~1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+ integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+env-paths@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
+ integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+
+envinfo@^7.8.1:
+ version "7.8.1"
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
+ integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
+
+eol@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd"
+ integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==
+
+err-code@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9"
+ integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+error-stack-parser@^2.0.6:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57"
+ integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==
+ dependencies:
+ stackframe "^1.1.1"
+
+es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1:
+ version "1.19.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3"
+ integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==
+ dependencies:
+ call-bind "^1.0.2"
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ get-intrinsic "^1.1.1"
+ get-symbol-description "^1.0.0"
+ has "^1.0.3"
+ has-symbols "^1.0.2"
+ internal-slot "^1.0.3"
+ is-callable "^1.2.4"
+ is-negative-zero "^2.0.1"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.1"
+ is-string "^1.0.7"
+ is-weakref "^1.0.1"
+ object-inspect "^1.11.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.2"
+ string.prototype.trimend "^1.0.4"
+ string.prototype.trimstart "^1.0.4"
+ unbox-primitive "^1.0.1"
+
+es-module-lexer@^0.9.0:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
+ integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46:
+ version "0.10.57"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.57.tgz#440574256186e2bf22223d673087caae83edabd2"
+ integrity sha512-L7cCNoPwTkAp7IBHxrKLsh7NKiVFkcdxlP9vbVw9QUvb7gF0Mz9bEBN0WY9xqdTjGF907EMT/iG013vnbqwu1Q==
+ dependencies:
+ es6-iterator "^2.0.3"
+ es6-symbol "^3.1.3"
+ next-tick "^1.1.0"
+
+es6-iterator@2.0.3, es6-iterator@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+ integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
+ dependencies:
+ d "1"
+ es5-ext "^0.10.35"
+ es6-symbol "^3.1.1"
+
+es6-symbol@^3.1.1, es6-symbol@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
+ integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
+ dependencies:
+ d "^1.0.1"
+ ext "^1.1.2"
+
+es6-weak-map@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53"
+ integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==
+ dependencies:
+ d "1"
+ es5-ext "^0.10.46"
+ es6-iterator "^2.0.3"
+ es6-symbol "^3.1.1"
+
+escalade@^3.0.2, escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-goat@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
+ integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+eslint-config-react-app@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e"
+ integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==
+ dependencies:
+ confusing-browser-globals "^1.0.10"
+
+eslint-import-resolver-node@^0.3.6:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd"
+ integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==
+ dependencies:
+ debug "^3.2.7"
+ resolve "^1.20.0"
+
+eslint-module-utils@^2.7.2:
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee"
+ integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==
+ dependencies:
+ debug "^3.2.7"
+ find-up "^2.1.0"
+
+eslint-plugin-flowtype@^5.10.0:
+ version "5.10.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz#7764cc63940f215bf3f0bd2d9a1293b2b9b2b4bb"
+ integrity sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==
+ dependencies:
+ lodash "^4.17.15"
+ string-natural-compare "^3.0.1"
+
+eslint-plugin-graphql@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-graphql/-/eslint-plugin-graphql-4.0.0.tgz#d238ff2baee4d632cfcbe787a7a70a1f50428358"
+ integrity sha512-d5tQm24YkVvCEk29ZR5ScsgXqAGCjKlMS8lx3mS7FS/EKsWbkvXQImpvic03EpMIvNTBW5e+2xnHzXB/VHNZJw==
+ dependencies:
+ "@babel/runtime" "^7.10.0"
+ graphql-config "^3.0.2"
+ lodash.flatten "^4.4.0"
+ lodash.without "^4.4.0"
+
+eslint-plugin-import@^2.25.4:
+ version "2.25.4"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1"
+ integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==
+ dependencies:
+ array-includes "^3.1.4"
+ array.prototype.flat "^1.2.5"
+ debug "^2.6.9"
+ doctrine "^2.1.0"
+ eslint-import-resolver-node "^0.3.6"
+ eslint-module-utils "^2.7.2"
+ has "^1.0.3"
+ is-core-module "^2.8.0"
+ is-glob "^4.0.3"
+ minimatch "^3.0.4"
+ object.values "^1.1.5"
+ resolve "^1.20.0"
+ tsconfig-paths "^3.12.0"
+
+eslint-plugin-jsx-a11y@^6.5.1:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8"
+ integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==
+ dependencies:
+ "@babel/runtime" "^7.16.3"
+ aria-query "^4.2.2"
+ array-includes "^3.1.4"
+ ast-types-flow "^0.0.7"
+ axe-core "^4.3.5"
+ axobject-query "^2.2.0"
+ damerau-levenshtein "^1.0.7"
+ emoji-regex "^9.2.2"
+ has "^1.0.3"
+ jsx-ast-utils "^3.2.1"
+ language-tags "^1.0.5"
+ minimatch "^3.0.4"
+
+eslint-plugin-react-hooks@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172"
+ integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==
+
+eslint-plugin-react@^7.29.2:
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.3.tgz#f4eab757f2756d25d6d4c2a58a9e20b004791f05"
+ integrity sha512-MzW6TuCnDOcta67CkpDyRfRsEVx9FNMDV8wZsDqe1luHPdGTrQIUaUXD27Ja3gHsdOIs/cXzNchWGlqm+qRVRg==
+ dependencies:
+ array-includes "^3.1.4"
+ array.prototype.flatmap "^1.2.5"
+ doctrine "^2.1.0"
+ estraverse "^5.3.0"
+ jsx-ast-utils "^2.4.1 || ^3.0.0"
+ minimatch "^3.1.2"
+ object.entries "^1.1.5"
+ object.fromentries "^2.0.5"
+ object.hasown "^1.1.0"
+ object.values "^1.1.5"
+ prop-types "^15.8.1"
+ resolve "^2.0.0-next.3"
+ semver "^6.3.0"
+ string.prototype.matchall "^4.0.6"
+
+eslint-scope@5.1.1, eslint-scope@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
+ integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-utils@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
+ integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
+ dependencies:
+ eslint-visitor-keys "^2.0.0"
+
+eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
+ integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
+
+eslint-visitor-keys@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
+ integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
+
+eslint-webpack-plugin@^2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz#3bd4ada4e539cb1f6687d2f619073dbb509361cd"
+ integrity sha512-V+LPY/T3kur5QO3u+1s34VDTcRxjXWPUGM4hlmTb5DwVD0OQz631yGTxJZf4SpAqAjdbBVe978S8BJeHpAdOhQ==
+ dependencies:
+ "@types/eslint" "^7.28.2"
+ arrify "^2.0.1"
+ jest-worker "^27.3.1"
+ micromatch "^4.0.4"
+ normalize-path "^3.0.0"
+ schema-utils "^3.1.1"
+
+eslint@^7.32.0:
+ version "7.32.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
+ integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
+ dependencies:
+ "@babel/code-frame" "7.12.11"
+ "@eslint/eslintrc" "^0.4.3"
+ "@humanwhocodes/config-array" "^0.5.0"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ enquirer "^2.3.5"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^5.1.1"
+ eslint-utils "^2.1.0"
+ eslint-visitor-keys "^2.0.0"
+ espree "^7.3.1"
+ esquery "^1.4.0"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.1.2"
+ globals "^13.6.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ progress "^2.0.0"
+ regexpp "^3.1.0"
+ semver "^7.2.1"
+ strip-ansi "^6.0.0"
+ strip-json-comments "^3.1.0"
+ table "^6.0.9"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^7.3.0, espree@^7.3.1:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
+ integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+ dependencies:
+ acorn "^7.4.0"
+ acorn-jsx "^5.3.1"
+ eslint-visitor-keys "^1.3.0"
+
+espree@^9.0.0:
+ version "9.3.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd"
+ integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==
+ dependencies:
+ acorn "^8.7.0"
+ acorn-jsx "^5.3.1"
+ eslint-visitor-keys "^3.3.0"
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
+ integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+eval@^0.1.0, eval@^0.1.4:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.6.tgz#9620d7d8c85515e97e6b47c5814f46ae381cb3cc"
+ integrity sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ==
+ dependencies:
+ require-like ">= 0.1.1"
+
+event-emitter@^0.3.5:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
+ integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=
+ dependencies:
+ d "1"
+ es5-ext "~0.10.14"
+
+event-source-polyfill@^1.0.25:
+ version "1.0.25"
+ resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz#d8bb7f99cb6f8119c2baf086d9f6ee0514b6d9c8"
+ integrity sha512-hQxu6sN1Eq4JjoI7ITdQeGGUN193A2ra83qC0Ltm9I2UJVAten3OFVN6k5RX4YWeCS0BoC8xg/5czOCIHVosQg==
+
+event-target-shim@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
+ integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+
+eventemitter3@^3.1.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
+ integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
+
+eventemitter3@^4.0.0, eventemitter3@^4.0.4:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
+events@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
+ 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"
+
+exif-parser@^0.1.12:
+ version "0.1.12"
+ resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922"
+ integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+expand-template@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
+ integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
+
+express-graphql@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.12.0.tgz#58deabc309909ca2c9fe2f83f5fbe94429aa23df"
+ integrity sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg==
+ dependencies:
+ accepts "^1.3.7"
+ content-type "^1.0.4"
+ http-errors "1.8.0"
+ raw-body "^2.4.1"
+
+express@^4.17.1:
+ version "4.17.3"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1"
+ integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==
+ dependencies:
+ accepts "~1.3.8"
+ array-flatten "1.1.1"
+ body-parser "1.19.2"
+ content-disposition "0.5.4"
+ content-type "~1.0.4"
+ cookie "0.4.2"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "~1.1.2"
+ fresh "0.5.2"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.7"
+ qs "6.9.7"
+ range-parser "~1.2.1"
+ safe-buffer "5.2.1"
+ send "0.17.2"
+ serve-static "1.14.2"
+ setprototypeof "1.2.0"
+ statuses "~1.5.0"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+ext@^1.1.2:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52"
+ integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==
+ dependencies:
+ type "^2.5.0"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+external-editor@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extract-files@9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a"
+ integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.9:
+ version "3.2.11"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
+ integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fast-memoize@^2.5.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e"
+ integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==
+
+fastest-levenshtein@^1.0.12:
+ version "1.0.12"
+ resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
+ integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
+
+fastq@^1.13.0, fastq@^1.6.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
+ integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ dependencies:
+ reusify "^1.0.4"
+
+fd@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/fd/-/fd-0.0.3.tgz#b3240de86dbf5a345baae7382a07d4713566ff0c"
+ integrity sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA==
+
+figgy-pudding@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+figures@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+file-loader@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
+file-type@^16.5.3:
+ version "16.5.3"
+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06"
+ integrity sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==
+ dependencies:
+ readable-web-to-node-stream "^3.0.0"
+ strtok3 "^6.2.4"
+ token-types "^4.1.1"
+
+file-type@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18"
+ integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==
+
+filename-reserved-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
+ integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik=
+
+filenamify@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-4.3.0.tgz#62391cb58f02b09971c9d4f9d63b3cf9aba03106"
+ integrity sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==
+ dependencies:
+ filename-reserved-regex "^2.0.0"
+ strip-outer "^1.0.1"
+ trim-repeated "^1.0.0"
+
+filesize@6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00"
+ integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+filter-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
+ integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs=
+
+finalhandler@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
+ unpipe "~1.0.0"
+
+find-cache-dir@^3.3.1, find-cache-dir@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^3.0.2"
+ pkg-dir "^4.1.0"
+
+find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+find-up@5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+flat-cache@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
+ integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ dependencies:
+ flatted "^3.1.0"
+ rimraf "^3.0.2"
+
+flatted@^3.1.0:
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3"
+ integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==
+
+follow-redirects@^1.0.0, follow-redirects@^1.14.0:
+ version "1.14.9"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
+ integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+fork-ts-checker-webpack-plugin@4.1.6:
+ version "4.1.6"
+ resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5"
+ integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ chalk "^2.4.1"
+ micromatch "^3.1.10"
+ minimatch "^3.0.4"
+ semver "^5.6.0"
+ tapable "^1.0.0"
+ worker-rpc "^0.1.0"
+
+form-data@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+form-data@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
+ integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+forwarded@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
+ integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
+
+fp-and-or@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/fp-and-or/-/fp-and-or-0.1.3.tgz#e6fba83872a5853a56b3ebdf8d3167f5dfca1882"
+ integrity sha512-wJaE62fLaB3jCYvY2ZHjZvmKK2iiLiiehX38rz5QZxtdN8fVPJDeZUiVvJrHStdTc+23LHlyZuSEKgFc0pxi2g==
+
+fraction.js@^4.1.2:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
+ integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+fs-constants@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
+ integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
+
+fs-exists-cached@1.0.0, fs-exists-cached@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce"
+ integrity sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=
+
+fs-extra@^10.0.0:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8"
+ integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fs-extra@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
+ integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-minipass@^2.0.0, fs-minipass@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
+ integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
+ dependencies:
+ minipass "^3.0.0"
+
+fs-monkey@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
+ integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+gatsby-cli@^4.9.1:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-4.9.1.tgz#abe57cc656329deb69aef3d75b5cb14f36473d8e"
+ integrity sha512-iU5pmwAq5d1XXo98BkYe2KccH3Dy/jsj7QsvP0CpfzOO0EFtidg5KUzPPaekLaGyoqxiMwWf0uAX7S1ERzMFYw==
+ dependencies:
+ "@babel/code-frame" "^7.14.0"
+ "@babel/core" "^7.15.5"
+ "@babel/generator" "^7.16.8"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/runtime" "^7.15.4"
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.16.8"
+ "@types/common-tags" "^1.8.1"
+ better-opn "^2.1.1"
+ boxen "^5.1.2"
+ chalk "^4.1.2"
+ clipboardy "^2.3.0"
+ common-tags "^1.8.2"
+ configstore "^5.0.1"
+ convert-hrtime "^3.0.0"
+ create-gatsby "^2.9.0"
+ envinfo "^7.8.1"
+ execa "^5.1.1"
+ fs-exists-cached "^1.0.0"
+ fs-extra "^10.0.0"
+ gatsby-core-utils "^3.9.1"
+ gatsby-telemetry "^3.9.1"
+ hosted-git-info "^3.0.8"
+ is-valid-path "^0.1.1"
+ joi "^17.4.2"
+ lodash "^4.17.21"
+ meant "^1.0.3"
+ node-fetch "^2.6.6"
+ opentracing "^0.14.5"
+ pretty-error "^2.1.2"
+ progress "^2.0.3"
+ prompts "^2.4.2"
+ redux "4.1.2"
+ resolve-cwd "^3.0.0"
+ semver "^7.3.5"
+ signal-exit "^3.0.6"
+ source-map "0.7.3"
+ stack-trace "^0.0.10"
+ strip-ansi "^6.0.1"
+ update-notifier "^5.1.0"
+ uuid "3.4.0"
+ yargs "^15.4.1"
+ yoga-layout-prebuilt "^1.10.0"
+ yurnalist "^2.1.0"
+
+gatsby-core-utils@^3.8.2, gatsby-core-utils@^3.9.1:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-3.9.1.tgz#a4c1bb2021a7e7c06b4aad8d71c9c76ca9cdc21f"
+ integrity sha512-DNf7NhhH0WrFuoBvyURjsw4w+eKbp1GlRA0cchYHJwVTaDPvLvX1o7zxN76xIBx+m0kttpnO3KuJ9LDOSli3ag==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ ci-info "2.0.0"
+ configstore "^5.0.1"
+ fastq "^1.13.0"
+ file-type "^16.5.3"
+ fs-extra "^10.0.0"
+ got "^11.8.3"
+ import-from "^4.0.0"
+ lmdb "^2.1.7"
+ lock "^1.1.0"
+ node-object-hash "^2.3.10"
+ proper-lockfile "^4.1.2"
+ resolve-from "^5.0.0"
+ tmp "^0.2.1"
+ xdg-basedir "^4.0.0"
+
+gatsby-graphiql-explorer@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-2.9.0.tgz#ae462eaee48a0d224d4b0a7a72801ad80fe790d0"
+ integrity sha512-eRWdxITmnlT3RAILn6e5aq8dmOdBPwzx/TviqtR/OsY4M7NXxwYiOHUH1DOx4rHwGgtOFs+nWurM4fLHLcMwiw==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+
+gatsby-legacy-polyfills@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-2.9.0.tgz#444d5efc100dea7da129b4c13d42b5fa13c51180"
+ integrity sha512-w0A4NnWOZRKhAlT7Hms/ACEQh7ICHDMC6RTy7yVlPY0wJ8tajcfZJsWy+FZxCBzJclpR9l3CLWZmRNz6gHRARA==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ core-js-compat "3.9.0"
+
+gatsby-link@^4.9.1:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-4.9.1.tgz#af444bd3a28e90816a1291f85b70de920c302f1d"
+ integrity sha512-c5YbR43fESNKlScS+ciJaLjuJuFruoL1my9z6k0ZbMIJUI7z6qH+XIVteH00Kbryz0fejNDaGWeAr3gvEyDlSA==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ "@types/reach__router" "^1.3.10"
+ gatsby-page-utils "^2.9.1"
+ prop-types "^15.7.2"
+
+gatsby-page-utils@^2.9.1:
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-2.9.1.tgz#4da1fd5bb21623334868a9b77976755364ad03ed"
+ integrity sha512-Otgwt30usTa94pWF3915+w/6uCPJIQHSVEAF8BD9iBl2mCBCZIS0+rCrVNm9lBrg+tc3JuezvIQsSycwaWnO5Q==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ bluebird "^3.7.2"
+ chokidar "^3.5.2"
+ fs-exists-cached "^1.0.0"
+ gatsby-core-utils "^3.9.1"
+ glob "^7.2.0"
+ lodash "^4.17.21"
+ micromatch "^4.0.4"
+
+gatsby-parcel-config@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/gatsby-parcel-config/-/gatsby-parcel-config-0.0.1.tgz#e61780cc596e4452d9a4305e6d8356b53635430b"
+ integrity sha512-HYmIVyGLc9J0ZsJDiz6/PpfBSvl1mIPzQiWaGnou1R6KjGxoIlyp7kFCj4yuBlQXecjQ+gG3BY/osBi7FPY1qw==
+ dependencies:
+ "@gatsbyjs/parcel-namer-relative-to-cwd" "0.0.2"
+ "@parcel/bundler-default" "^2.3.1"
+ "@parcel/compressor-raw" "^2.3.1"
+ "@parcel/namer-default" "^2.3.1"
+ "@parcel/optimizer-terser" "^2.3.1"
+ "@parcel/packager-js" "^2.3.1"
+ "@parcel/packager-raw" "^2.3.1"
+ "@parcel/reporter-dev-server" "^2.3.1"
+ "@parcel/resolver-default" "^2.3.1"
+ "@parcel/runtime-browser-hmr" "^2.3.1"
+ "@parcel/runtime-js" "^2.3.1"
+ "@parcel/runtime-react-refresh" "^2.3.1"
+ "@parcel/runtime-service-worker" "^2.3.1"
+ "@parcel/transformer-js" "^2.3.1"
+ "@parcel/transformer-json" "^2.3.1"
+ "@parcel/transformer-raw" "^2.3.1"
+ "@parcel/transformer-react-refresh-wrap" "^2.3.1"
+
+gatsby-plugin-image@^2.3.0:
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-image/-/gatsby-plugin-image-2.9.1.tgz#007578c5cacc942cf921237633d6dee5ce658cc6"
+ integrity sha512-W2FDQ4AZNgH247zZ1OTnOAAI89rApq0W4A85a9dUXmCgYoyqNgUZphuziMHU5P+6TSwO4U7FRriPtVltEFRsWg==
+ dependencies:
+ "@babel/code-frame" "^7.14.0"
+ "@babel/parser" "^7.15.5"
+ "@babel/runtime" "^7.15.4"
+ "@babel/traverse" "^7.15.4"
+ babel-jsx-utils "^1.1.0"
+ babel-plugin-remove-graphql-queries "^4.9.1"
+ camelcase "^5.3.1"
+ chokidar "^3.5.2"
+ common-tags "^1.8.2"
+ fs-extra "^10.0.0"
+ gatsby-core-utils "^3.9.1"
+ objectFitPolyfill "^2.3.5"
+ prop-types "^15.7.2"
+
+gatsby-plugin-manifest@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-manifest/-/gatsby-plugin-manifest-4.9.1.tgz#20513c7d942b424795b802506893c0f909c69b7a"
+ integrity sha512-Fye2vr7ioc7ETVKdCfpbc5ByU28+EB7ocqSORbazPgAT8OiPazpaBAYm98BONceuK3WaxGoEXMsmwmNBIIPjRA==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ gatsby-core-utils "^3.9.1"
+ gatsby-plugin-utils "^3.3.0"
+ semver "^7.3.5"
+ sharp "^0.30.1"
+
+gatsby-plugin-mdx@^3.3.0:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-mdx/-/gatsby-plugin-mdx-3.9.1.tgz#2603b8fd19c5835b9a60a9de4f3236c1e843cff2"
+ integrity sha512-oDm+KJ1VSD1dlPWrT0WLQdvtMYDDAcDMmKcTGDxfKxQGM+uktRgRdj4DevZjY6aFr50LWG3Lm+tM0/1Sj+BgZA==
+ dependencies:
+ "@babel/core" "^7.15.5"
+ "@babel/generator" "^7.15.4"
+ "@babel/helper-plugin-utils" "^7.14.0"
+ "@babel/plugin-proposal-object-rest-spread" "^7.14.7"
+ "@babel/preset-env" "^7.15.4"
+ "@babel/preset-react" "^7.14.0"
+ "@babel/runtime" "^7.15.4"
+ "@babel/types" "^7.15.4"
+ camelcase-css "^2.0.1"
+ change-case "^3.1.0"
+ core-js "^3.17.2"
+ dataloader "^1.4.0"
+ debug "^4.3.1"
+ escape-string-regexp "^1.0.5"
+ eval "^0.1.4"
+ fs-extra "^10.0.0"
+ gatsby-core-utils "^3.9.1"
+ gray-matter "^4.0.2"
+ json5 "^2.1.3"
+ loader-utils "^1.4.0"
+ lodash "^4.17.21"
+ mdast-util-to-string "^1.1.0"
+ mdast-util-toc "^3.1.0"
+ mime "^2.4.6"
+ mkdirp "^1.0.4"
+ p-queue "^6.6.2"
+ pretty-bytes "^5.3.0"
+ remark "^10.0.1"
+ remark-retext "^3.1.3"
+ retext-english "^3.0.4"
+ slugify "^1.4.4"
+ static-site-generator-webpack-plugin "^3.4.2"
+ style-to-object "^0.3.0"
+ underscore.string "^3.3.5"
+ unified "^8.4.2"
+ unist-util-map "^1.0.5"
+ unist-util-remove "^1.0.3"
+ unist-util-visit "^1.4.1"
+
+gatsby-plugin-offline@^5.3.0:
+ version "5.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-offline/-/gatsby-plugin-offline-5.9.1.tgz#896474e7182477e6062413650416044ee8a07804"
+ integrity sha512-iVBAbXvMMfOfSCMwLcV0yAMHbrLk2plyNRq3tZC8/EtWG4ufwdspeZ4CfAPNHgkyMDmVwyIRVPNv5z8NRuiGXw==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ cheerio "^1.0.0-rc.10"
+ gatsby-core-utils "^3.9.1"
+ glob "^7.2.0"
+ idb-keyval "^3.2.0"
+ lodash "^4.17.21"
+ workbox-build "^4.3.1"
+
+gatsby-plugin-page-creator@^4.9.1:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-4.9.1.tgz#d73b6af0d26a19a25ddece1ea2276149f0ee2c44"
+ integrity sha512-06EA9nd+LxZxtxTsr6G8xYuaMCDZN2z0qEHX8TvQXcgFVktFB18nUISjfeMBTdiyM1zeVxMCWffBarbUG6IMGA==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ "@babel/traverse" "^7.15.4"
+ "@sindresorhus/slugify" "^1.1.2"
+ chokidar "^3.5.2"
+ fs-exists-cached "^1.0.0"
+ gatsby-core-utils "^3.9.1"
+ gatsby-page-utils "^2.9.1"
+ gatsby-plugin-utils "^3.3.0"
+ gatsby-telemetry "^3.9.1"
+ globby "^11.0.4"
+ lodash "^4.17.21"
+
+gatsby-plugin-react-helmet@^5.3.0:
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-5.9.0.tgz#6ac992628f99451ec72d8ceeae11f456f7409366"
+ integrity sha512-TpPxg0Cl+zH34P9rVzKW+o6ejC6fZpvZMZ4Gs/zZ4uFswSJo6hwj/teUjB1rGAytPE+d6w9cZ2IP1gEM2RR9Ig==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+
+gatsby-plugin-sass@^5.3.0:
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-sass/-/gatsby-plugin-sass-5.9.0.tgz#bd1e392bda23e9f6519d9bf189f4b8d5daa25422"
+ integrity sha512-yxl6g9KXNriOfJQN3Ra1tZragPXq6bXYY8AsrzBfsuUkYUU75ReWVtFljVSXYp/7/tpA4mvXwniBcWqrNSdHnA==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ resolve-url-loader "^3.1.4"
+ sass-loader "^10.1.1"
+
+gatsby-plugin-sharp@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-4.9.1.tgz#44667f134be1855fe666ed58839bd280527337bd"
+ integrity sha512-oHnuxIok0Ct3nktn53XQFX36QXwa4H9hjj5lkxaY3zh0giYJmFAsHyvus6DKzGQ14cTC3AkvaD+rqv4SGdjRcg==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ async "^3.2.3"
+ bluebird "^3.7.2"
+ debug "^4.3.3"
+ filenamify "^4.3.0"
+ fs-extra "^10.0.0"
+ gatsby-core-utils "^3.9.1"
+ gatsby-plugin-utils "^3.3.0"
+ gatsby-telemetry "^3.9.1"
+ got "^11.8.3"
+ lodash "^4.17.21"
+ mini-svg-data-uri "^1.4.3"
+ potrace "^2.1.8"
+ probe-image-size "^6.0.0"
+ progress "^2.0.3"
+ semver "^7.3.5"
+ sharp "^0.30.1"
+ svgo "1.3.2"
+ uuid "3.4.0"
+
+gatsby-plugin-typescript@^4.9.1:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-4.9.1.tgz#343f0cb6c4e72115875c264c127b293f8e1915a5"
+ integrity sha512-VYkosDqk4CLDz11snEdSIBSW/RAPi8eXD4fHyicuFx5dh11BGi7TMUzVVmwvYWHHleQdvboC4qYlDrzXXV++zw==
+ dependencies:
+ "@babel/core" "^7.15.5"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5"
+ "@babel/plugin-proposal-numeric-separator" "^7.14.5"
+ "@babel/plugin-proposal-optional-chaining" "^7.14.5"
+ "@babel/preset-typescript" "^7.15.0"
+ "@babel/runtime" "^7.15.4"
+ babel-plugin-remove-graphql-queries "^4.9.1"
+
+gatsby-plugin-utils@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-3.3.0.tgz#f37dac15f381acf876eaef94636d41f7671b0604"
+ integrity sha512-wmwSQ/IMVQ8lII015IRToeXzu4LsRayKhlrBpuCbzJJgzBEgTH5ezHkGnxAGKvMn7xP9Oekz6DX/XYwUnAe4ug==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ joi "^17.4.2"
+
+gatsby-react-router-scroll@^5.9.0:
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-5.9.0.tgz#7ca9d81552d74b3c0de0ea8c173b185a3d616efd"
+ integrity sha512-+diZhsfFBnEHzgQkEdM+T/wRfKtVDuB6hTivPD/Hjb4q8lkei2kK7Goi3QRPPIB09KavvjU+yuD+fkCs3KpxUg==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ prop-types "^15.7.2"
+
+gatsby-remark-autolink-headers@^5.8.0:
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-5.9.0.tgz#afe3abd8405697a00f87e5a3c598cc33e6ca1f71"
+ integrity sha512-LLR4kWpg9U4XW/eHhT/7J8nNByKQPcjuKj5oKAmoQUww4pEBkV5X4PU5tOvaqZrhNuyMHfc0YV922DnBKCPCjQ==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ github-slugger "^1.3.0"
+ lodash "^4.17.21"
+ mdast-util-to-string "^2.0.0"
+ unist-util-visit "^2.0.3"
+
+gatsby-sharp@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/gatsby-sharp/-/gatsby-sharp-0.3.0.tgz#9c101a25a6c568dc6f39f9e752441366e71bd4f0"
+ integrity sha512-lMrmtoJjpCGoxnZbaQjfcF6vARPWgONw9r8fqGkHag0iSfcGpj3IM+LRdXT/i1mhNPDeB6pKBm5CvY8sYIgD0A==
+ dependencies:
+ "@types/sharp" "^0.29.5"
+ sharp "^0.30.1"
+
+gatsby-source-filesystem@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-4.9.1.tgz#e619d8a482b0477c28225ffce9c28cbb0606ce67"
+ integrity sha512-2HS9+5i+F7tRgxBiv8Op9xK/jvd5DGUfedFsJ6/6sfoXUBddowvW4rVEj4XO42TsIQJe7eVj7FfzfqzSqQN8ow==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ chokidar "^3.5.2"
+ file-type "^16.5.3"
+ fs-extra "^10.0.0"
+ gatsby-core-utils "^3.9.1"
+ got "^9.6.0"
+ md5-file "^5.0.0"
+ mime "^2.5.2"
+ pretty-bytes "^5.4.1"
+ progress "^2.0.3"
+ valid-url "^1.0.9"
+ xstate "^4.26.1"
+
+gatsby-telemetry@^3.9.1:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-3.9.1.tgz#3c20c7e0cb363ccaae41fb581ab289330b5d7f69"
+ integrity sha512-ChXTshfvo5njd/u6kSZErDUvc/uSmtOEuo7wrt/68Xjz2JVG6nsLlRxaZpx0DxnDAInouItMVX0VF40RAU7qKg==
+ dependencies:
+ "@babel/code-frame" "^7.14.0"
+ "@babel/runtime" "^7.15.4"
+ "@turist/fetch" "^7.1.7"
+ "@turist/time" "^0.0.2"
+ async-retry-ng "^2.0.1"
+ boxen "^4.2.0"
+ configstore "^5.0.1"
+ fs-extra "^10.0.0"
+ gatsby-core-utils "^3.9.1"
+ git-up "^4.0.5"
+ is-docker "^2.2.1"
+ lodash "^4.17.21"
+ node-fetch "^2.6.7"
+
+gatsby-transformer-sharp@^4.3.0:
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/gatsby-transformer-sharp/-/gatsby-transformer-sharp-4.9.0.tgz#0f9b70716245d768532927601774bc266534ca24"
+ integrity sha512-Mclg6lf+PugFtl9XX+fZ8Wt+DTb3q4HzFkQgHjErZdK/YpUh6jeThcZGDU4tRhmFHfjx5xUQ9J926D6RFAaI8w==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ bluebird "^3.7.2"
+ common-tags "^1.8.2"
+ fs-extra "^10.0.0"
+ potrace "^2.1.8"
+ probe-image-size "^6.0.0"
+ semver "^7.3.5"
+ sharp "^0.30.1"
+
+gatsby-worker@^1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/gatsby-worker/-/gatsby-worker-1.9.0.tgz#bdd958e9c8310cf1c52e8f67243f1727d5243bb0"
+ integrity sha512-K+XzIVy0bBTMY4I8DD2F2A7LOs6ZbSyoJWsQGVbXMc5JNjY3m7fUFi0yt5a8WbhAo0Mcs1ntQ+T93t0qi40blg==
+ dependencies:
+ "@babel/core" "^7.15.5"
+ "@babel/runtime" "^7.15.4"
+
+gatsby@^4.3.0:
+ version "4.9.3"
+ resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-4.9.3.tgz#a69a05a47048b6d140c89cfc05c3cb0e24f8a7aa"
+ integrity sha512-XZFmdW30vm1+s/kSxFFhMVl33u2qesWPdLEFtrQgtAnFiVjI/ukS/95gVOilhIMYyiTtuhQXiBKygkTl08oKFw==
+ dependencies:
+ "@babel/code-frame" "^7.14.0"
+ "@babel/core" "^7.15.5"
+ "@babel/eslint-parser" "^7.15.4"
+ "@babel/helper-plugin-utils" "^7.14.5"
+ "@babel/parser" "^7.15.5"
+ "@babel/runtime" "^7.15.4"
+ "@babel/traverse" "^7.15.4"
+ "@babel/types" "^7.15.4"
+ "@gatsbyjs/reach-router" "^1.3.6"
+ "@gatsbyjs/webpack-hot-middleware" "^2.25.2"
+ "@nodelib/fs.walk" "^1.2.8"
+ "@parcel/core" "^2.3.1"
+ "@pmmmwh/react-refresh-webpack-plugin" "^0.4.3"
+ "@types/http-proxy" "^1.17.7"
+ "@typescript-eslint/eslint-plugin" "^4.33.0"
+ "@typescript-eslint/parser" "^4.33.0"
+ "@vercel/webpack-asset-relocator-loader" "^1.7.0"
+ address "1.1.2"
+ anser "^2.1.0"
+ autoprefixer "^10.4.0"
+ axios "^0.21.1"
+ babel-loader "^8.2.3"
+ babel-plugin-add-module-exports "^1.0.4"
+ babel-plugin-dynamic-import-node "^2.3.3"
+ babel-plugin-lodash "^3.3.4"
+ babel-plugin-remove-graphql-queries "^4.9.1"
+ babel-preset-gatsby "^2.9.1"
+ better-opn "^2.1.1"
+ bluebird "^3.7.2"
+ body-parser "^1.19.0"
+ browserslist "^4.17.5"
+ cache-manager "^2.11.1"
+ chalk "^4.1.2"
+ chokidar "^3.5.2"
+ common-tags "^1.8.0"
+ compression "^1.7.4"
+ cookie "^0.4.1"
+ core-js "^3.17.2"
+ cors "^2.8.5"
+ css-loader "^5.2.7"
+ css-minimizer-webpack-plugin "^2.0.0"
+ css.escape "^1.5.1"
+ date-fns "^2.25.0"
+ debug "^3.2.7"
+ deepmerge "^4.2.2"
+ del "^5.1.0"
+ detect-port "^1.3.0"
+ devcert "^1.2.0"
+ dotenv "^8.6.0"
+ enhanced-resolve "^5.8.3"
+ eslint "^7.32.0"
+ eslint-config-react-app "^6.0.0"
+ eslint-plugin-flowtype "^5.10.0"
+ eslint-plugin-graphql "^4.0.0"
+ eslint-plugin-import "^2.25.4"
+ eslint-plugin-jsx-a11y "^6.5.1"
+ eslint-plugin-react "^7.29.2"
+ eslint-plugin-react-hooks "^4.3.0"
+ eslint-webpack-plugin "^2.6.0"
+ event-source-polyfill "^1.0.25"
+ execa "^5.1.1"
+ express "^4.17.1"
+ express-graphql "^0.12.0"
+ fastest-levenshtein "^1.0.12"
+ fastq "^1.13.0"
+ file-loader "^6.2.0"
+ find-cache-dir "^3.3.2"
+ fs-exists-cached "1.0.0"
+ fs-extra "^10.0.0"
+ gatsby-cli "^4.9.1"
+ gatsby-core-utils "^3.9.1"
+ gatsby-graphiql-explorer "^2.9.0"
+ gatsby-legacy-polyfills "^2.9.0"
+ gatsby-link "^4.9.1"
+ gatsby-page-utils "^2.9.1"
+ gatsby-parcel-config "^0.0.1"
+ gatsby-plugin-page-creator "^4.9.1"
+ gatsby-plugin-typescript "^4.9.1"
+ gatsby-plugin-utils "^3.3.0"
+ gatsby-react-router-scroll "^5.9.0"
+ gatsby-telemetry "^3.9.1"
+ gatsby-worker "^1.9.0"
+ glob "^7.2.0"
+ got "^11.8.2"
+ graphql "^15.7.2"
+ graphql-compose "^9.0.7"
+ graphql-playground-middleware-express "^1.7.22"
+ hasha "^5.2.2"
+ http-proxy "^1.18.1"
+ invariant "^2.2.4"
+ is-relative "^1.0.0"
+ is-relative-url "^3.0.0"
+ joi "^17.4.2"
+ json-loader "^0.5.7"
+ latest-version "5.1.0"
+ lmdb "^2.2.3"
+ lodash "^4.17.21"
+ md5-file "^5.0.0"
+ meant "^1.0.3"
+ memoizee "^0.4.15"
+ micromatch "^4.0.4"
+ mime "^2.5.2"
+ mini-css-extract-plugin "1.6.2"
+ mitt "^1.2.0"
+ moment "^2.29.1"
+ multer "^1.4.3"
+ node-fetch "^2.6.6"
+ normalize-path "^3.0.0"
+ null-loader "^4.0.1"
+ opentracing "^0.14.5"
+ p-defer "^3.0.0"
+ parseurl "^1.3.3"
+ physical-cpu-count "^2.0.0"
+ platform "^1.3.6"
+ postcss "^8.3.11"
+ postcss-flexbugs-fixes "^5.0.2"
+ postcss-loader "^5.3.0"
+ prompts "^2.4.2"
+ prop-types "^15.7.2"
+ query-string "^6.14.1"
+ raw-loader "^4.0.2"
+ react-dev-utils "^11.0.4"
+ react-refresh "^0.9.0"
+ redux "4.1.2"
+ redux-thunk "^2.4.0"
+ resolve-from "^5.0.0"
+ semver "^7.3.5"
+ shallow-compare "^1.2.2"
+ signal-exit "^3.0.5"
+ slugify "^1.6.1"
+ socket.io "3.1.2"
+ socket.io-client "3.1.3"
+ source-map "^0.7.3"
+ source-map-support "^0.5.20"
+ st "^2.0.0"
+ stack-trace "^0.0.10"
+ string-similarity "^1.2.2"
+ strip-ansi "^6.0.1"
+ style-loader "^2.0.0"
+ terser-webpack-plugin "^5.2.4"
+ tmp "^0.2.1"
+ "true-case-path" "^2.2.1"
+ type-of "^2.0.1"
+ url-loader "^4.1.1"
+ uuid "^8.3.2"
+ webpack "^5.61.0"
+ webpack-dev-middleware "^4.3.0"
+ webpack-merge "^5.8.0"
+ webpack-stats-plugin "^1.0.3"
+ webpack-virtual-modules "^0.3.2"
+ xstate "^4.26.0"
+ yaml-loader "^0.6.0"
+ optionalDependencies:
+ gatsby-sharp "^0.3.0"
+
+gauge@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.2.tgz#c3777652f542b6ef62797246e8c7caddecb32cc7"
+ integrity sha512-aSPRm2CvA9R8QyU5eXMFPd+cYkyxLsXHd2l5/FOH2V/eml//M04G6KZOmTap07O1PvEwNcl2NndyLfK8g3QrKA==
+ dependencies:
+ ansi-regex "^5.0.1"
+ aproba "^1.0.3 || ^2.0.0"
+ color-support "^1.1.3"
+ console-control-strings "^1.1.0"
+ has-unicode "^2.0.1"
+ signal-exit "^3.0.7"
+ string-width "^4.2.3"
+ strip-ansi "^6.0.1"
+ wide-align "^1.1.5"
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+
+get-port@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc"
+ integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=
+
+get-stdin@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
+ integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
+
+get-stream@^4.0.0, get-stream@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+
+get-symbol-description@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
+ integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.1"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+gifwrap@^0.9.2:
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/gifwrap/-/gifwrap-0.9.2.tgz#348e286e67d7cf57942172e1e6f05a71cee78489"
+ integrity sha512-fcIswrPaiCDAyO8xnWvHSZdWChjKXUanKKpAiWWJ/UTkEi/aYKn5+90e7DE820zbEaVR9CE2y4z9bzhQijZ0BA==
+ dependencies:
+ image-q "^1.1.1"
+ omggif "^1.0.10"
+
+git-up@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759"
+ integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==
+ dependencies:
+ is-ssh "^1.3.0"
+ parse-url "^6.0.0"
+
+github-from-package@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
+ integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
+
+github-slugger@^1.2.1, github-slugger@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e"
+ integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==
+
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-to-regexp@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
+ integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
+
+glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
+ integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-dirs@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
+ integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==
+ dependencies:
+ ini "2.0.0"
+
+global-modules@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
+global@~4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
+ integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
+ dependencies:
+ min-document "^2.19.0"
+ process "^0.11.10"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^13.2.0, globals@^13.6.0, globals@^13.9.0:
+ version "13.12.1"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb"
+ integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==
+ dependencies:
+ type-fest "^0.20.2"
+
+globby@11.0.1:
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
+ integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
+globby@11.0.3:
+ version "11.0.3"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb"
+ integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
+globby@^10.0.1:
+ version "10.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543"
+ integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.0.3"
+ glob "^7.1.3"
+ ignore "^5.1.1"
+ merge2 "^1.2.3"
+ slash "^3.0.0"
+
+globby@^11.0.3, globby@^11.0.4:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^3.0.0"
+
+got@^11.8.2, got@^11.8.3:
+ version "11.8.3"
+ resolved "https://registry.yarnpkg.com/got/-/got-11.8.3.tgz#f496c8fdda5d729a90b4905d2b07dbd148170770"
+ integrity sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==
+ dependencies:
+ "@sindresorhus/is" "^4.0.0"
+ "@szmarczak/http-timer" "^4.0.5"
+ "@types/cacheable-request" "^6.0.1"
+ "@types/responselike" "^1.0.0"
+ cacheable-lookup "^5.0.3"
+ cacheable-request "^7.0.2"
+ decompress-response "^6.0.0"
+ http2-wrapper "^1.0.0-beta.5.2"
+ lowercase-keys "^2.0.0"
+ p-cancelable "^2.0.0"
+ responselike "^2.0.0"
+
+got@^9.6.0:
+ version "9.6.0"
+ resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
+ integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
+ dependencies:
+ "@sindresorhus/is" "^0.14.0"
+ "@szmarczak/http-timer" "^1.1.2"
+ cacheable-request "^6.0.0"
+ decompress-response "^3.3.0"
+ duplexer3 "^0.1.4"
+ get-stream "^4.1.0"
+ lowercase-keys "^1.0.1"
+ mimic-response "^1.0.1"
+ p-cancelable "^1.0.0"
+ to-readable-stream "^1.0.0"
+ url-parse-lax "^3.0.0"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
+ version "4.2.9"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
+ integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
+
+graphql-compose@^9.0.7:
+ version "9.0.7"
+ resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-9.0.7.tgz#f9a2161d89691506466258ef54f279cbdd7ffeec"
+ integrity sha512-1EreO/vtdF/vaXYtPGW/RIlJbAAe8bWJ0mlvIa3s4YytsydbqiIFv80QUNlD9Bdl9iezLze70a6quC+3BAMzjw==
+ dependencies:
+ graphql-type-json "0.3.2"
+
+graphql-config@^3.0.2:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-3.4.1.tgz#59f937a1b4d3a3c2dcdb27ddf5b4d4d4b2c6e9e1"
+ integrity sha512-g9WyK4JZl1Ko++FSyE5Ir2g66njfxGzrDDhBOwnkoWf/t3TnnZG6BBkWP+pkqVJ5pqMJGPKHNrbew8jRxStjhw==
+ dependencies:
+ "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2"
+ "@graphql-tools/graphql-file-loader" "^6.0.0"
+ "@graphql-tools/json-file-loader" "^6.0.0"
+ "@graphql-tools/load" "^6.0.0"
+ "@graphql-tools/merge" "6.0.0 - 6.2.14"
+ "@graphql-tools/url-loader" "^6.0.0"
+ "@graphql-tools/utils" "^7.0.0"
+ cosmiconfig "7.0.0"
+ cosmiconfig-toml-loader "1.0.0"
+ minimatch "3.0.4"
+ string-env-interpolation "1.0.1"
+
+graphql-playground-html@^1.6.30:
+ version "1.6.30"
+ resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.30.tgz#14c2a8eb7fc17bfeb1a746bbb28a11e34bf0b391"
+ integrity sha512-tpCujhsJMva4aqE8ULnF7/l3xw4sNRZcSHu+R00VV+W0mfp+Q20Plvcrp+5UXD+2yS6oyCXncA+zoQJQqhGCEw==
+ dependencies:
+ xss "^1.0.6"
+
+graphql-playground-middleware-express@^1.7.22:
+ version "1.7.23"
+ resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.23.tgz#95aba44d801ff3c08b2246917d2901d2e7c35d3d"
+ integrity sha512-M/zbTyC1rkgiQjFSgmzAv6umMHOphYLNWZp6Ye5QrD77WfGOOoSqDsVmGUczc2pDkEPEzzGB/bvBO5rdzaTRgw==
+ dependencies:
+ graphql-playground-html "^1.6.30"
+
+graphql-type-json@0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.3.2.tgz#f53a851dbfe07bd1c8157d24150064baab41e115"
+ integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==
+
+graphql-ws@^4.4.1:
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-4.9.0.tgz#5cfd8bb490b35e86583d8322f5d5d099c26e365c"
+ integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag==
+
+graphql@^15.7.2:
+ version "15.8.0"
+ resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38"
+ integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==
+
+gray-matter@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798"
+ integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==
+ dependencies:
+ js-yaml "^3.13.1"
+ kind-of "^6.0.2"
+ section-matter "^1.0.0"
+ strip-bom-string "^1.0.0"
+
+gzip-size@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
+ integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
+ dependencies:
+ duplexer "^0.1.1"
+ pify "^4.0.1"
+
+has-bigints@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
+ integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
+
+has-cors@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
+ integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-symbols@^1.0.1, has-symbols@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+ dependencies:
+ has-symbols "^1.0.2"
+
+has-unicode@^2.0.0, has-unicode@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has-yarn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
+ integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hasha@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1"
+ integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==
+ dependencies:
+ is-stream "^2.0.0"
+ type-fest "^0.8.0"
+
+hast-to-hyperscript@^9.0.0:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d"
+ integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==
+ dependencies:
+ "@types/unist" "^2.0.3"
+ comma-separated-tokens "^1.0.0"
+ property-information "^5.3.0"
+ space-separated-tokens "^1.0.0"
+ style-to-object "^0.3.0"
+ unist-util-is "^4.0.0"
+ web-namespaces "^1.0.0"
+
+hast-util-from-parse5@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a"
+ integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==
+ dependencies:
+ "@types/parse5" "^5.0.0"
+ hastscript "^6.0.0"
+ property-information "^5.0.0"
+ vfile "^4.0.0"
+ vfile-location "^3.2.0"
+ web-namespaces "^1.0.0"
+
+hast-util-parse-selector@^2.0.0:
+ version "2.2.5"
+ resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a"
+ integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==
+
+hast-util-raw@6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977"
+ integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ hast-util-from-parse5 "^6.0.0"
+ hast-util-to-parse5 "^6.0.0"
+ html-void-elements "^1.0.0"
+ parse5 "^6.0.0"
+ unist-util-position "^3.0.0"
+ vfile "^4.0.0"
+ web-namespaces "^1.0.0"
+ xtend "^4.0.0"
+ zwitch "^1.0.0"
+
+hast-util-to-parse5@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479"
+ integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==
+ dependencies:
+ hast-to-hyperscript "^9.0.0"
+ property-information "^5.0.0"
+ web-namespaces "^1.0.0"
+ xtend "^4.0.0"
+ zwitch "^1.0.0"
+
+hastscript@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640"
+ integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==
+ dependencies:
+ "@types/hast" "^2.0.0"
+ comma-separated-tokens "^1.0.0"
+ hast-util-parse-selector "^2.0.0"
+ property-information "^5.0.0"
+ space-separated-tokens "^1.0.0"
+
+hds-core@1.14.0, hds-core@^1.13.0:
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/hds-core/-/hds-core-1.14.0.tgz#d11fd1047b2f96d022c02e333b0390a586c5204a"
+ integrity sha512-MSH2BgVHOHW+I6gIjs5xNw32QL/P9Mn7+mcc1TvR8hF5GJDWa2mAh0vqaD1SXFfY34/cGr7wJ05V74GDZ6+8XA==
+
+hds-design-tokens@^1.13.0:
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/hds-design-tokens/-/hds-design-tokens-1.14.0.tgz#4f1ef58715f5ec5c3c60e28d75adb94986540d02"
+ integrity sha512-98TrThjUVc/Ot/plsYpABGz9R5moAqGTbGUK63oPdEBQaWtoHlp17NCXsexfujCgOPOuQ4zgTApA/zAVHQOSHw==
+
+hds-react@^1.13.0:
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/hds-react/-/hds-react-1.14.0.tgz#7038dda3ce1c7e27fe5b4a3911878b0efab51b69"
+ integrity sha512-gB73Ayn8Kox3KJH54KbG5idJD2sSdyGxYA8hOcYku8uGY+6O+K1a/fpZb7WJFWG5bB2S+ofncgMm80UvCSFJGg==
+ dependencies:
+ "@babel/runtime" "7.11.2"
+ "@emotion/styled-base" "^11.0.0"
+ "@juggle/resize-observer" "3.2.0"
+ "@popperjs/core" "2.5.3"
+ "@react-aria/visually-hidden" "3.2.0"
+ date-fns "2.16.1"
+ downshift "6.0.6"
+ hds-core "1.14.0"
+ lodash.isequal "4.5.0"
+ lodash.isfunction "3.0.9"
+ lodash.uniqueid "4.0.1"
+ lodash.xor "^4.5.0"
+ react-merge-refs "1.1.0"
+ react-popper "2.2.3"
+ react-spring "9.3.0"
+ react-use-measure "2.0.1"
+ react-virtual "2.2.7"
+ typescript "4.5.5"
+
+header-case@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d"
+ integrity sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.3"
+
+hosted-git-info@^3.0.8:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d"
+ integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==
+ dependencies:
+ lru-cache "^6.0.0"
+
+hosted-git-info@^4.0.1, hosted-git-info@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
+ integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==
+ dependencies:
+ lru-cache "^6.0.0"
+
+html-entities@^1.2.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc"
+ integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
+
+html-entities@^2.1.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
+ integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==
+
+html-validate@^6.5.0:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/html-validate/-/html-validate-6.5.0.tgz#0088eb9c099d25dd56b85f03cfd72823976c06cb"
+ integrity sha512-IPzkJUoT+2hJEwHQH2gSY5naQFEUOCjp/gSYoV6v3S2XegD5aQ6Kp35tnvTh7eB19lWD427cOUiCy0LSyFdncQ==
+ dependencies:
+ "@babel/code-frame" "^7.10.0"
+ "@html-validate/stylish" "^2.0.0"
+ "@sidvind/better-ajv-errors" "^1.1.1"
+ acorn-walk "^8.0.0"
+ ajv "^8.0.0"
+ deepmerge "^4.2.0"
+ espree "^9.0.0"
+ glob "^7.1.0"
+ ignore "^5.0.0"
+ kleur "^4.1.0"
+ minimist "^1.2.0"
+ prompts "^2.0.0"
+ semver "^7.0.0"
+
+html-void-elements@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483"
+ integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==
+
+htmlparser2@^3.9.1:
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+ integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
+ dependencies:
+ domelementtype "^1.3.1"
+ domhandler "^2.3.0"
+ domutils "^1.5.1"
+ entities "^1.1.1"
+ inherits "^2.0.1"
+ readable-stream "^3.1.1"
+
+htmlparser2@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
+ integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.0.0"
+ domutils "^2.5.2"
+ entities "^2.0.0"
+
+http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
+ integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
+
+http-errors@1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507"
+ integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-errors@1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
+ integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.1"
+
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+ dependencies:
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
+
+http-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
+ integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
+ dependencies:
+ "@tootallnate/once" "2"
+ agent-base "6"
+ debug "4"
+
+http-proxy@^1.18.1:
+ version "1.18.1"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
+ dependencies:
+ eventemitter3 "^4.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
+
+http2-wrapper@^1.0.0-beta.5.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
+ integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
+ dependencies:
+ quick-lru "^5.1.1"
+ resolve-alpn "^1.0.0"
+
+https-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
+ integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
+human-signals@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+
+humanize-ms@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
+ integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=
+ dependencies:
+ ms "^2.0.0"
+
+iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.2:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+icss-utils@^5.0.0, icss-utils@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
+ integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
+
+idb-keyval@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-3.2.0.tgz#cbbf354deb5684b6cdc84376294fc05932845bd6"
+ integrity sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ==
+
+ieee754@^1.1.13, ieee754@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+ignore-walk@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3"
+ integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==
+ dependencies:
+ minimatch "^3.0.4"
+
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.0.0, ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
+ integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+
+image-q@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/image-q/-/image-q-1.1.1.tgz#fc84099664460b90ca862d9300b6bfbbbfbf8056"
+ integrity sha1-/IQJlmRGC5DKhi2TALa/u7+/gFY=
+
+immer@8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656"
+ integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==
+
+immutable@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23"
+ integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==
+
+import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-from@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966"
+ integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==
+ dependencies:
+ resolve-from "^5.0.0"
+
+import-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/import-from/-/import-from-4.0.0.tgz#2710b8d66817d232e16f4166e319248d3d5492e2"
+ integrity sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==
+
+import-lazy@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
+ integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+
+infer-owner@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+ini@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
+ integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
+
+ini@^1.3.5, ini@~1.3.0:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
+inline-style-parser@0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
+ integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
+
+inquirer@^7.0.0:
+ version "7.3.3"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
+ integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^4.1.0"
+ cli-cursor "^3.1.0"
+ cli-width "^3.0.0"
+ external-editor "^3.0.3"
+ figures "^3.0.0"
+ lodash "^4.17.19"
+ mute-stream "0.0.8"
+ run-async "^2.4.0"
+ rxjs "^6.6.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+ through "^2.3.6"
+
+internal-slot@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
+ integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
+ dependencies:
+ get-intrinsic "^1.1.0"
+ has "^1.0.3"
+ side-channel "^1.0.4"
+
+invariant@^2.2.3, invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
+ip@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+ integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
+
+ipaddr.js@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-absolute-url@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
+ integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-alphabetical@1.0.4, is-alphabetical@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
+ integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
+
+is-alphanumeric@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4"
+ integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=
+
+is-alphanumerical@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
+ integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==
+ dependencies:
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
+is-bigint@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-buffer@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
+is-callable@^1.1.4, is-callable@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
+ integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
+
+is-ci@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+ integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+ dependencies:
+ ci-info "^2.0.0"
+
+is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
+ integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
+ dependencies:
+ has "^1.0.3"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-decimal@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
+ integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-docker@^2.0.0, is-docker@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-function@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08"
+ integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==
+
+is-glob@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-glob@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-hexadecimal@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
+ integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
+
+is-installed-globally@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
+ integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==
+ dependencies:
+ global-dirs "^3.0.0"
+ is-path-inside "^3.0.2"
+
+is-invalid-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/is-invalid-path/-/is-invalid-path-0.1.0.tgz#307a855b3cf1a938b44ea70d2c61106053714f34"
+ integrity sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=
+ dependencies:
+ is-glob "^2.0.0"
+
+is-lambda@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
+ integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=
+
+is-lower-case@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393"
+ integrity sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=
+ dependencies:
+ lower-case "^1.1.0"
+
+is-negative-zero@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
+ integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+
+is-npm@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8"
+ integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==
+
+is-number-object@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
+ integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-path-cwd@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
+ integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
+
+is-path-inside@^3.0.1, is-path-inside@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
+is-plain-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-obj@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
+ integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-promise@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3"
+ integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==
+
+is-promise@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1"
+ integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
+
+is-regex@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+is-relative-url@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-relative-url/-/is-relative-url-3.0.0.tgz#f623c8e26baa5bd3742b3b7ec074f50f3b45b3f3"
+ integrity sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA==
+ dependencies:
+ is-absolute-url "^3.0.0"
+
+is-relative@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
+ integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==
+ dependencies:
+ is-unc-path "^1.0.0"
+
+is-root@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
+ integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==
+
+is-shared-array-buffer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
+ integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
+
+is-ssh@^1.3.0:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e"
+ integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==
+ dependencies:
+ protocols "^1.1.0"
+
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+is-string@^1.0.5, is-string@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-typedarray@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-unc-path@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d"
+ integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==
+ dependencies:
+ unc-path-regex "^0.1.2"
+
+is-upper-case@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f"
+ integrity sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=
+ dependencies:
+ upper-case "^1.1.0"
+
+is-valid-path@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-valid-path/-/is-valid-path-0.1.1.tgz#110f9ff74c37f663e1ec7915eb451f2db93ac9df"
+ integrity sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=
+ dependencies:
+ is-invalid-path "^0.1.0"
+
+is-weakref@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-whitespace-character@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7"
+ integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-word-character@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230"
+ integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==
+
+is-wsl@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+is-yarn-global@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
+ integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isarray@1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+isomorphic-ws@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc"
+ integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
+
+iterall@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea"
+ integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==
+
+jest-worker@^26.3.0:
+ version "26.6.2"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
+ integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^7.0.0"
+
+jest-worker@^27.3.1, jest-worker@^27.4.5:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
+ integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
+jimp@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.14.0.tgz#fde55f69bdb918c1b01ac633d89a25853af85625"
+ integrity sha512-8BXU+J8+SPmwwyq9ELihpSV4dWPTiOKBWCEgtkbnxxAVMjXdf3yGmyaLSshBfXc8sP/JQ9OZj5R8nZzz2wPXgA==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ "@jimp/custom" "^0.14.0"
+ "@jimp/plugins" "^0.14.0"
+ "@jimp/types" "^0.14.0"
+ regenerator-runtime "^0.13.3"
+
+jju@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a"
+ integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo=
+
+joi@^17.4.2:
+ version "17.6.0"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2"
+ integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+ "@hapi/topo" "^5.0.0"
+ "@sideway/address" "^4.1.3"
+ "@sideway/formula" "^3.0.0"
+ "@sideway/pinpoint" "^2.0.0"
+
+jpeg-js@^0.4.0:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.3.tgz#6158e09f1983ad773813704be80680550eff977b"
+ integrity sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+js-yaml@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+json-buffer@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
+ integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
+
+json-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+
+json-loader@^0.5.7:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
+ integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==
+
+json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-parse-helpfulerror@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc"
+ integrity sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=
+ dependencies:
+ jju "^1.1.0"
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
+json-source-map@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/json-source-map/-/json-source-map-0.6.1.tgz#e0b1f6f4ce13a9ad57e2ae165a24d06e62c79a0f"
+ integrity sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+json5@^2.1.2, json5@^2.1.3, json5@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
+ dependencies:
+ minimist "^1.2.5"
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonlines@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsonlines/-/jsonlines-0.1.1.tgz#4fcd246dc5d0e38691907c44ab002f782d1d94cc"
+ integrity sha1-T80kbcXQ44aRkHxEqwAveC0dlMw=
+
+jsonparse@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+ integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+
+"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b"
+ integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==
+ dependencies:
+ array-includes "^3.1.3"
+ object.assign "^4.1.2"
+
+keyv@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
+ integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
+ dependencies:
+ json-buffer "3.0.0"
+
+keyv@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.1.1.tgz#02c538bfdbd2a9308cc932d4096f05ae42bfa06a"
+ integrity sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ==
+ dependencies:
+ json-buffer "3.0.1"
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+kleur@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+ integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
+
+kleur@^4.0.0, kleur@^4.1.0:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d"
+ integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==
+
+klona@^2.0.4:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
+ integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
+
+language-subtag-registry@~0.3.2:
+ version "0.3.21"
+ resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a"
+ integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==
+
+language-tags@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
+ integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=
+ dependencies:
+ language-subtag-registry "~0.3.2"
+
+latest-version@5.1.0, latest-version@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
+ integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
+ dependencies:
+ package-json "^6.3.0"
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+libnpmconfig@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0"
+ integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+ find-up "^3.0.0"
+ ini "^1.3.5"
+
+lilconfig@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082"
+ integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==
+
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+lmdb@^2.0.2, lmdb@^2.1.7, lmdb@^2.2.3:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.2.4.tgz#6494d5a1d1db152e0be759edcfa06893e4cbdb53"
+ integrity sha512-gto+BB2uEob8qRiTlOq+R3uX0YNHsX9mjxj9Sbdue/LIKqu6IlZjrsjKeGyOMquc/474GEqFyX2pdytpydp0rQ==
+ dependencies:
+ msgpackr "^1.5.4"
+ nan "^2.14.2"
+ node-gyp-build "^4.2.3"
+ ordered-binary "^1.2.4"
+ weak-lru-cache "^1.2.2"
+
+load-bmfont@^1.3.1, load-bmfont@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9"
+ integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==
+ dependencies:
+ buffer-equal "0.0.1"
+ mime "^1.3.4"
+ parse-bmfont-ascii "^1.0.3"
+ parse-bmfont-binary "^1.0.5"
+ parse-bmfont-xml "^1.1.4"
+ phin "^2.9.1"
+ xhr "^2.0.1"
+ xtend "^4.0.0"
+
+loader-runner@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
+ integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
+
+loader-utils@1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
+ integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^2.0.0"
+ json5 "^1.0.1"
+
+loader-utils@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
+ integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^2.1.2"
+
+loader-utils@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+loader-utils@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129"
+ integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^2.1.2"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lock@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/lock/-/lock-1.1.0.tgz#53157499d1653b136ca66451071fca615703fa55"
+ integrity sha1-UxV0mdFlOxNspmRRBx/KYVcD+lU=
+
+lodash._reinterpolate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
+ integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
+
+lodash.assignin@^4.0.9:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
+ integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI=
+
+lodash.bind@^4.1.4:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
+ integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=
+
+lodash.clonedeep@4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+
+lodash.deburr@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b"
+ integrity sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=
+
+lodash.defaults@^4.0.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
+ integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=
+
+lodash.every@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7"
+ integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=
+
+lodash.filter@^4.4.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
+ integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=
+
+lodash.flatten@^4.2.0, lodash.flatten@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+ integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
+
+lodash.flattendeep@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
+ integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
+
+lodash.foreach@^4.3.0, lodash.foreach@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
+ integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=
+
+lodash.get@^4:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
+ integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
+
+lodash.isequal@4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
+ integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
+
+lodash.isfunction@3.0.9:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051"
+ integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==
+
+lodash.map@^4.4.0, lodash.map@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
+ integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=
+
+lodash.maxby@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.maxby/-/lodash.maxby-4.6.0.tgz#082240068f3c7a227aa00a8380e4f38cf0786e3d"
+ integrity sha1-CCJABo88eiJ6oAqDgOTzjPB4bj0=
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+
+lodash.merge@^4.4.0, lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash.pick@^4.2.1:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
+ integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
+
+lodash.reduce@^4.4.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
+ integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=
+
+lodash.reject@^4.4.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415"
+ integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=
+
+lodash.some@^4.4.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+ integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
+
+lodash.template@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
+ integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+ lodash.templatesettings "^4.0.0"
+
+lodash.templatesettings@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
+ integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+
+lodash.truncate@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
+ integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
+
+lodash.uniq@4.5.0, lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+
+lodash.uniqueid@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz#3268f26a7c88e4f4b1758d679271814e31fa5b26"
+ integrity sha1-MmjyanyI5PSxdY1nknGBTjH6WyY=
+
+lodash.without@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac"
+ integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=
+
+lodash.xor@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6"
+ integrity sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY=
+
+lodash@4.17.21, lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+longest-streak@^2.0.1:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
+ integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lower-case-first@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1"
+ integrity sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=
+ dependencies:
+ lower-case "^1.1.2"
+
+lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
+ integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
+
+lower-case@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
+ integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
+ dependencies:
+ tslib "^2.0.3"
+
+lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
+lowercase-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
+ integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+
+lru-cache@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.0.tgz#b5cbf01556c16966febe54ceec0fb4dc90df6c28"
+ integrity sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg=
+ dependencies:
+ pseudomap "^1.0.1"
+ yallist "^2.0.0"
+
+lru-cache@^4.0.0:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+lru-cache@^7.3.1, lru-cache@^7.4.1:
+ version "7.4.2"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.4.2.tgz#92f7b5afe82759f51b216a96fae3bc1828df9712"
+ integrity sha512-Xs3+hFPDSKQmL05Gs6NhvAADol1u9TmLoNoE03ZjszX6a5iYIO3rPUM4jIjoBUJeTaWEBMozjjmV70gvdRfIdw==
+
+lru-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
+ integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=
+ dependencies:
+ es5-ext "~0.10.2"
+
+magic-string@^0.25.0, magic-string@^0.25.1:
+ version "0.25.9"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
+make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+make-error@^1, make-error@^1.1.1:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
+ integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
+
+make-fetch-happen@^10.0.3:
+ version "10.0.5"
+ resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.0.5.tgz#006e0c5579224832c732c35b7bcc43c8602da775"
+ integrity sha512-0JQ0daMRDFEv14DelmcFlprdhSDNG7WEgInTjBeWYWZ78W0jfDqygZdPLhcrQ4s/G8skNhBrS4fiF6xA+YlFjQ==
+ dependencies:
+ agentkeepalive "^4.2.1"
+ cacache "^15.3.0"
+ http-cache-semantics "^4.1.0"
+ http-proxy-agent "^5.0.0"
+ https-proxy-agent "^5.0.0"
+ is-lambda "^1.0.1"
+ lru-cache "^7.4.1"
+ minipass "^3.1.6"
+ minipass-collect "^1.0.2"
+ minipass-fetch "^2.0.2"
+ minipass-flush "^1.0.5"
+ minipass-pipeline "^1.2.4"
+ negotiator "^0.6.3"
+ promise-retry "^2.0.1"
+ socks-proxy-agent "^6.1.1"
+ ssri "^8.0.1"
+
+map-age-cleaner@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
+ integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
+ dependencies:
+ p-defer "^1.0.0"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+markdown-escapes@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535"
+ integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==
+
+markdown-table@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
+ integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
+
+md5-file@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-5.0.0.tgz#e519f631feca9c39e7f9ea1780b63c4745012e20"
+ integrity sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==
+
+mdast-squeeze-paragraphs@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97"
+ integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==
+ dependencies:
+ unist-util-remove "^2.0.0"
+
+mdast-util-compact@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593"
+ integrity sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==
+ dependencies:
+ unist-util-visit "^1.1.0"
+
+mdast-util-definitions@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2"
+ integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==
+ dependencies:
+ unist-util-visit "^2.0.0"
+
+mdast-util-to-hast@10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb"
+ integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==
+ dependencies:
+ "@types/mdast" "^3.0.0"
+ "@types/unist" "^2.0.0"
+ mdast-util-definitions "^4.0.0"
+ mdurl "^1.0.0"
+ unist-builder "^2.0.0"
+ unist-util-generated "^1.0.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^2.0.0"
+
+mdast-util-to-nlcst@^3.2.0:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz#dcd0f51b59515b11a0700aeb40f168ed7ba9ed3d"
+ integrity sha512-hPIsgEg7zCvdU6/qvjcR6lCmJeRuIEpZGY5xBV+pqzuMOvQajyyF8b6f24f8k3Rw8u40GwkI3aAxUXr3bB2xag==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ repeat-string "^1.5.2"
+ unist-util-position "^3.0.0"
+ vfile-location "^2.0.0"
+
+mdast-util-to-string@^1.0.5, mdast-util-to-string@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527"
+ integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==
+
+mdast-util-to-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b"
+ integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==
+
+mdast-util-toc@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-3.1.0.tgz#395eeb877f067f9d2165d990d77c7eea6f740934"
+ integrity sha512-Za0hqL1PqWrvxGtA/3NH9D5nhGAUS9grMM4obEAz5+zsk1RIw/vWUchkaoDLNdrwk05A0CSC5eEXng36/1qE5w==
+ dependencies:
+ github-slugger "^1.2.1"
+ mdast-util-to-string "^1.0.5"
+ unist-util-is "^2.1.2"
+ unist-util-visit "^1.1.0"
+
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
+mdn-data@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
+ integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+
+mdurl@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+
+meant@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c"
+ integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+
+mem@^8.1.1:
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122"
+ integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==
+ dependencies:
+ map-age-cleaner "^0.1.3"
+ mimic-fn "^3.1.0"
+
+memfs@^3.2.2:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305"
+ integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==
+ dependencies:
+ fs-monkey "1.0.3"
+
+memoizee@^0.4.15:
+ version "0.4.15"
+ resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72"
+ integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==
+ dependencies:
+ d "^1.0.1"
+ es5-ext "^0.10.53"
+ es6-weak-map "^2.0.3"
+ event-emitter "^0.3.5"
+ is-promise "^2.2.2"
+ lru-queue "^0.1.0"
+ next-tick "^1.1.0"
+ timers-ext "^0.1.7"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+meros@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/meros/-/meros-1.1.4.tgz#c17994d3133db8b23807f62bec7f0cb276cfd948"
+ integrity sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+
+microevent.ts@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0"
+ integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==
+
+micromatch@^3.1.10:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+micromatch@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
+ integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.2.3"
+
+mime-db@1.51.0:
+ version "1.51.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
+ integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
+
+"mime-db@>= 1.43.0 < 2":
+ version "1.52.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@~2.1.24, mime-types@~2.1.34:
+ version "2.1.34"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
+ integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==
+ dependencies:
+ mime-db "1.51.0"
+
+mime@1.6.0, mime@^1.3.4:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^2.4.4, mime@^2.4.6, mime@^2.5.2:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367"
+ integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mimic-fn@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74"
+ integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==
+
+mimic-response@^1.0.0, mimic-response@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
+ integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+
+mimic-response@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
+ integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
+
+min-document@^2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
+ integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=
+ dependencies:
+ dom-walk "^0.1.0"
+
+mini-css-extract-plugin@1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz#83172b4fd812f8fc4a09d6f6d16f924f53990ca8"
+ integrity sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+ webpack-sources "^1.1.0"
+
+mini-svg-data-uri@^1.4.3:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939"
+ integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==
+
+minimatch@3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^3.0.4, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b"
+ integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
+
+minipass-collect@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
+ integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-fetch@^2.0.1, minipass-fetch@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.0.3.tgz#688bbd0c2b019642778dc808b6950dd908d192b3"
+ integrity sha512-VA+eiiUtaIvpQJXISwE3OiMvQwAWrgKb97F0aXlCS1Ahikr8fEQq8m3Hf7Kv9KT3nokuHigJKsDMB6atU04olQ==
+ dependencies:
+ minipass "^3.1.6"
+ minipass-sized "^1.0.3"
+ minizlib "^2.1.2"
+ optionalDependencies:
+ encoding "^0.1.13"
+
+minipass-flush@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
+ integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-json-stream@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7"
+ integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==
+ dependencies:
+ jsonparse "^1.3.1"
+ minipass "^3.0.0"
+
+minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c"
+ integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass-sized@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70"
+ integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==
+ dependencies:
+ minipass "^3.0.0"
+
+minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6:
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee"
+ integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==
+ dependencies:
+ yallist "^4.0.0"
+
+minizlib@^2.1.1, minizlib@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
+ integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
+ dependencies:
+ minipass "^3.0.0"
+ yallist "^4.0.0"
+
+mitt@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d"
+ integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
+ integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
+
+mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@~0.5.1:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+mkdirp@^1.0.3, mkdirp@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+moment@^2.29.1:
+ version "2.29.2"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.2.tgz#00910c60b20843bcba52d37d58c628b47b1f20e4"
+ integrity sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@2.1.3, ms@^2.0.0, ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+msgpackr-extract@^1.0.14:
+ version "1.0.16"
+ resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-1.0.16.tgz#701c4f6e6f25c100ae84557092274e8fffeefe45"
+ integrity sha512-fxdRfQUxPrL/TizyfYfMn09dK58e+d65bRD/fcaVH4052vj30QOzzqxcQIS7B0NsqlypEQ/6Du3QmP2DhWFfCA==
+ dependencies:
+ nan "^2.14.2"
+ node-gyp-build "^4.2.3"
+
+msgpackr@^1.5.1, msgpackr@^1.5.4:
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.5.4.tgz#2b6ea6cb7d79c0ad98fc76c68163c48eda50cf0d"
+ integrity sha512-Z7w5Jg+2Q9z9gJxeM68d7tSuWZZGnFIRhZnyqcZCa/1dKkhOCNvR1TUV3zzJ3+vj78vlwKRzUgVDlW4jiSOeDA==
+ optionalDependencies:
+ msgpackr-extract "^1.0.14"
+
+multer@^1.4.3:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.4.tgz#e2bc6cac0df57a8832b858d7418ccaa8ebaf7d8c"
+ integrity sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==
+ dependencies:
+ append-field "^1.0.0"
+ busboy "^0.2.11"
+ concat-stream "^1.5.2"
+ mkdirp "^0.5.4"
+ object-assign "^4.1.1"
+ on-finished "^2.3.0"
+ type-is "^1.6.4"
+ xtend "^4.0.0"
+
+mute-stream@0.0.8, mute-stream@~0.0.4:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+nan@^2.14.2:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee"
+ integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==
+
+nanoid@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
+ integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+napi-build-utils@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
+ integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
+
+native-url@^0.2.6:
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae"
+ integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==
+ dependencies:
+ querystring "^0.2.0"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+needle@^2.5.2:
+ version "2.9.1"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684"
+ integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==
+ dependencies:
+ debug "^3.2.6"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
+
+negotiator@0.6.3, negotiator@^0.6.3, negotiator@~0.6.2:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+
+neo-async@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+next-tick@1, next-tick@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
+ integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+nlcst-to-string@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz#9315dfab80882bbfd86ddf1b706f53622dc400cc"
+ integrity sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==
+
+no-case@^2.2.0, no-case@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
+ integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
+ dependencies:
+ lower-case "^1.1.1"
+
+no-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
+ integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
+ dependencies:
+ lower-case "^2.0.2"
+ tslib "^2.0.3"
+
+node-abi@^3.3.0:
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.8.0.tgz#679957dc8e7aa47b0a02589dbfde4f77b29ccb32"
+ integrity sha512-tzua9qWWi7iW4I42vUPKM+SfaF0vQSLAm4yO5J83mSwB7GeoWrDKC/K+8YCnYNwqP5duwazbw2X9l4m8SC2cUw==
+ dependencies:
+ semver "^7.3.5"
+
+node-addon-api@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
+ integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
+
+node-addon-api@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
+ integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
+
+node-fetch@2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+ integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
+
+node-fetch@^2.6.1, node-fetch@^2.6.6, node-fetch@^2.6.7:
+ version "2.6.7"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
+ integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
+ dependencies:
+ whatwg-url "^5.0.0"
+
+node-gyp-build@^4.2.3, node-gyp-build@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
+ integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
+
+node-gyp@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.0.0.tgz#e1da2067427f3eb5bb56820cb62bc6b1e4bd2089"
+ integrity sha512-Ma6p4s+XCTPxCuAMrOA/IJRmVy16R8Sdhtwl4PrCr7IBlj4cPawF0vg/l7nOT1jPbuNS7lIRJpBSvVsXwEZuzw==
+ dependencies:
+ env-paths "^2.2.0"
+ glob "^7.1.4"
+ graceful-fs "^4.2.6"
+ make-fetch-happen "^10.0.3"
+ nopt "^5.0.0"
+ npmlog "^6.0.0"
+ rimraf "^3.0.2"
+ semver "^7.3.5"
+ tar "^6.1.2"
+ which "^2.0.2"
+
+node-object-hash@^2.3.10:
+ version "2.3.10"
+ resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.3.10.tgz#4b0c1a3a8239e955f0db71f8e00b38b5c0b33992"
+ integrity sha512-jY5dPJzw6NHd/KPSfPKJ+IHoFS81/tJ43r34ZeNMXGzCOM8jwQDCD12HYayKIB6MuznrnqIYy2e891NA2g0ibA==
+
+node-releases@^1.1.61:
+ version "1.1.77"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e"
+ integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==
+
+node-releases@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01"
+ integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==
+
+nopt@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
+ integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
+ dependencies:
+ abbrev "1"
+
+normalize-package-data@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e"
+ integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
+ dependencies:
+ hosted-git-info "^4.0.1"
+ is-core-module "^2.5.0"
+ semver "^7.3.4"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
+
+normalize-url@^4.1.0:
+ version "4.5.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
+ integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==
+
+normalize-url@^6.0.1, normalize-url@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
+ integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
+
+npm-bundled@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1"
+ integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==
+ dependencies:
+ npm-normalize-package-bin "^1.0.1"
+
+npm-check-updates@^12.0.3:
+ version "12.5.2"
+ resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-12.5.2.tgz#cfc2bb62a599fda8afe5af55967e03af96d340c8"
+ integrity sha512-XJGFO3kgcm+WJljOPRYZf/W40FSzEcLDacQ1WPEgW4qXlQy4Ihr1eVnlS2+43y0YEF+qjLkycr7WbHyfkm6C4A==
+ dependencies:
+ chalk "^4.1.2"
+ cint "^8.2.1"
+ cli-table "^0.3.11"
+ commander "^9.0.0"
+ fast-memoize "^2.5.2"
+ find-up "5.0.0"
+ fp-and-or "^0.1.3"
+ get-stdin "^8.0.0"
+ globby "^11.0.4"
+ hosted-git-info "^4.1.0"
+ json-parse-helpfulerror "^1.0.3"
+ jsonlines "^0.1.1"
+ libnpmconfig "^1.2.1"
+ lodash "^4.17.21"
+ minimatch "^5.0.1"
+ p-map "^4.0.0"
+ pacote "^13.0.3"
+ parse-github-url "^1.0.2"
+ progress "^2.0.3"
+ prompts "^2.4.2"
+ rc-config-loader "^4.0.0"
+ remote-git-tags "^3.0.0"
+ rimraf "^3.0.2"
+ semver "^7.3.5"
+ semver-utils "^1.1.4"
+ source-map-support "^0.5.21"
+ spawn-please "^1.0.0"
+ update-notifier "^5.1.0"
+ yaml "^1.10.2"
+
+npm-install-checks@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4"
+ integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==
+ dependencies:
+ semver "^7.1.1"
+
+npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
+ integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
+
+npm-package-arg@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.0.0.tgz#955a5e4735298fc23f71cb72da3574daa134340c"
+ integrity sha512-yhzXxeor+Zfhe5MGwPdDumz6HtNlj2pMekWB95IX3CC6uDNgde0oPKHDCLDPoJqQfd0HqAWt+y4Hs5m7CK1+9Q==
+ dependencies:
+ hosted-git-info "^4.1.0"
+ semver "^7.3.5"
+ validate-npm-package-name "^3.0.0"
+
+npm-packlist@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9"
+ integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==
+ dependencies:
+ glob "^7.1.6"
+ ignore-walk "^4.0.1"
+ npm-bundled "^1.1.1"
+ npm-normalize-package-bin "^1.0.1"
+
+npm-pick-manifest@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.0.tgz#e3b18b09678a47e894f90941bef8204ea5d96c3b"
+ integrity sha512-njM1AcdioFaKd0JSGtLO09YA1WRwctjGQJbnHGmKS+u+uwP8oFvtZtOQWPYdxrnY5eJud3wn8OpH4sEIx6+GEQ==
+ dependencies:
+ npm-install-checks "^4.0.0"
+ npm-normalize-package-bin "^1.0.1"
+ npm-package-arg "^9.0.0"
+ semver "^7.3.5"
+
+npm-registry-fetch@^13.0.0:
+ version "13.0.1"
+ resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.0.1.tgz#ceecbaab9f1d0d911e1c01a5be2be96d45e472f5"
+ integrity sha512-Ak+LXVtSrCLOdscFW/apUw67OPNph8waHsPKM9UOJosL7i59EF5XoSWQMEsXEOeifM9Bb4/2+WrQC4t/pd8DGg==
+ dependencies:
+ make-fetch-happen "^10.0.3"
+ minipass "^3.1.6"
+ minipass-fetch "^2.0.1"
+ minipass-json-stream "^1.0.1"
+ minizlib "^2.1.2"
+ npm-package-arg "^9.0.0"
+ proc-log "^2.0.0"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+npm-run-path@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+npmlog@^4.0.1:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+npmlog@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.1.tgz#06f1344a174c06e8de9c6c70834cfba2964bba17"
+ integrity sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg==
+ dependencies:
+ are-we-there-yet "^3.0.0"
+ console-control-strings "^1.1.0"
+ gauge "^4.0.0"
+ set-blocking "^2.0.0"
+
+nth-check@^1.0.2, nth-check@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
+
+nth-check@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
+ integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==
+ dependencies:
+ boolbase "^1.0.0"
+
+null-loader@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-4.0.1.tgz#8e63bd3a2dd3c64236a4679428632edd0a6dbc6a"
+ integrity sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
+nullthrows@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1"
+ integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-inspect@^1.11.0, object-inspect@^1.9.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
+ integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==
+
+object-keys@^1.0.12, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.0, object.assign@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+object.entries@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861"
+ integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+
+object.fromentries@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251"
+ integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+
+object.getownpropertydescriptors@^2.1.0:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e"
+ integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+
+object.hasown@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5"
+ integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+object.values@^1.1.0, object.values@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac"
+ integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+
+objectFitPolyfill@^2.3.5:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/objectFitPolyfill/-/objectFitPolyfill-2.3.5.tgz#be8c83064aabfa4e88780f776c2013c48ce1f745"
+ integrity sha512-8Quz071ZmGi0QWEG4xB3Bv5Lpw6K0Uca87FLoLMKMWjB6qIq9IyBegP3b/VLNxv2WYvIMGoeUQ+c6ibUkNa8TA==
+
+omggif@^1.0.10, omggif@^1.0.9:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19"
+ integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==
+
+on-finished@^2.3.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
+ integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
+ dependencies:
+ ee-first "1.1.1"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+on-headers@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^5.1.0, onetime@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+open@^7.0.2, open@^7.0.3:
+ version "7.4.2"
+ resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
+ integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
+ dependencies:
+ is-docker "^2.0.0"
+ is-wsl "^2.1.1"
+
+opentracing@^0.14.5:
+ version "0.14.7"
+ resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5"
+ integrity sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==
+
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
+ordered-binary@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.2.4.tgz#51d3a03af078a0bdba6c7bc8f4fedd1f5d45d83e"
+ integrity sha512-A/csN0d3n+igxBPfUrjbV5GC69LWj2pjZzAAeeHXLukQ4+fytfP4T1Lg0ju7MSPSwq7KtHkGaiwO8URZN5IpLg==
+
+os-homedir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+p-cancelable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
+ integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
+
+p-cancelable@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf"
+ integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
+
+p-defer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
+ integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
+
+p-defer@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83"
+ integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-limit@3.1.0, p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-limit@^2.0.0, p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+p-map@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d"
+ integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
+p-map@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
+ dependencies:
+ aggregate-error "^3.0.0"
+
+p-queue@^6.6.2:
+ version "6.6.2"
+ resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426"
+ integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==
+ dependencies:
+ eventemitter3 "^4.0.4"
+ p-timeout "^3.2.0"
+
+p-timeout@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe"
+ integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==
+ dependencies:
+ p-finally "^1.0.0"
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+package-json@^6.3.0:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
+ integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==
+ dependencies:
+ got "^9.6.0"
+ registry-auth-token "^4.0.0"
+ registry-url "^5.0.0"
+ semver "^6.2.0"
+
+pacote@^13.0.3:
+ version "13.0.3"
+ resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.0.3.tgz#0b9654c1aa5eb2b9af28aa259f15e556e7187422"
+ integrity sha512-8thQ06YoO01O1k5rvSpHS/XPJZucw2DPiiT1jI+ys8QaTN6ifAyxfyoABHBa8nIt/4wPdzly4GEPqshctHFoYA==
+ dependencies:
+ "@npmcli/git" "^3.0.0"
+ "@npmcli/installed-package-contents" "^1.0.7"
+ "@npmcli/promise-spawn" "^1.2.0"
+ "@npmcli/run-script" "^3.0.0"
+ cacache "^15.3.0"
+ chownr "^2.0.0"
+ fs-minipass "^2.1.0"
+ infer-owner "^1.0.4"
+ minipass "^3.1.6"
+ mkdirp "^1.0.4"
+ npm-package-arg "^9.0.0"
+ npm-packlist "^3.0.0"
+ npm-pick-manifest "^7.0.0"
+ npm-registry-fetch "^13.0.0"
+ proc-log "^2.0.0"
+ promise-retry "^2.0.1"
+ read-package-json "^4.1.1"
+ read-package-json-fast "^2.0.3"
+ rimraf "^3.0.2"
+ ssri "^8.0.1"
+ tar "^6.1.11"
+
+pako@^1.0.5:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
+param-case@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
+ integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
+ dependencies:
+ no-case "^2.2.0"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-bmfont-ascii@^1.0.3:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285"
+ integrity sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=
+
+parse-bmfont-binary@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006"
+ integrity sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=
+
+parse-bmfont-xml@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389"
+ integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==
+ dependencies:
+ xml-parse-from-string "^1.0.0"
+ xml2js "^0.4.5"
+
+parse-english@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/parse-english/-/parse-english-4.2.0.tgz#037b68f34d1a1bdf3d33668b87791bdfc1f01e1e"
+ integrity sha512-jw5N6wZUZViIw3VLG/FUSeL3vDhfw5Q2g4E3nYC69Mm5ANbh9ZWd+eligQbeUoyObZM8neynTn3l14e09pjEWg==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ parse-latin "^4.0.0"
+ unist-util-modify-children "^2.0.0"
+ unist-util-visit-children "^1.0.0"
+
+parse-entities@^1.0.2, parse-entities@^1.1.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50"
+ integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==
+ dependencies:
+ character-entities "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ character-reference-invalid "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+parse-entities@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8"
+ integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==
+ dependencies:
+ character-entities "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ character-reference-invalid "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+parse-github-url@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395"
+ integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==
+
+parse-headers@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.4.tgz#9eaf2d02bed2d1eff494331ce3df36d7924760bf"
+ integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ 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"
+
+parse-latin@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/parse-latin/-/parse-latin-4.3.0.tgz#1a70fc5601743baa06c5f12253c334fc94b4a917"
+ integrity sha512-TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ unist-util-modify-children "^2.0.0"
+ unist-util-visit-children "^1.0.0"
+
+parse-path@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf"
+ integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==
+ dependencies:
+ is-ssh "^1.3.0"
+ protocols "^1.4.0"
+ qs "^6.9.4"
+ query-string "^6.13.8"
+
+parse-url@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d"
+ integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==
+ dependencies:
+ is-ssh "^1.3.0"
+ normalize-url "^6.1.0"
+ parse-path "^4.0.0"
+ protocols "^1.4.0"
+
+parse5-htmlparser2-tree-adapter@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
+ integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==
+ dependencies:
+ parse5 "^6.0.1"
+
+parse5@^6.0.0, parse5@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+parseqs@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5"
+ integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==
+
+parseuri@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a"
+ integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==
+
+parseurl@^1.3.3, parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascal-case@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e"
+ integrity sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=
+ dependencies:
+ camel-case "^3.0.0"
+ upper-case-first "^1.1.0"
+
+pascal-case@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
+ integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
+ dependencies:
+ no-case "^3.0.4"
+ tslib "^2.0.3"
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+password-prompt@^1.0.4:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923"
+ integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==
+ dependencies:
+ ansi-escapes "^3.1.0"
+ cross-spawn "^6.0.5"
+
+path-case@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5"
+ integrity sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=
+ dependencies:
+ no-case "^2.2.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.6, path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+peek-readable@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72"
+ integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==
+
+phin@^2.9.1:
+ version "2.9.3"
+ resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c"
+ integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==
+
+physical-cpu-count@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660"
+ integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA=
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pixelmatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854"
+ integrity sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=
+ dependencies:
+ pngjs "^3.0.0"
+
+pkg-dir@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+pkg-up@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5"
+ integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==
+ dependencies:
+ find-up "^3.0.0"
+
+platform@^1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7"
+ integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==
+
+pngjs@^3.0.0, pngjs@^3.3.3:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f"
+ integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+postcss-calc@^8.2.3:
+ version "8.2.4"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5"
+ integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==
+ dependencies:
+ postcss-selector-parser "^6.0.9"
+ postcss-value-parser "^4.2.0"
+
+postcss-colormin@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a"
+ integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==
+ dependencies:
+ browserslist "^4.16.6"
+ caniuse-api "^3.0.0"
+ colord "^2.9.1"
+ postcss-value-parser "^4.2.0"
+
+postcss-convert-values@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10"
+ integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-discard-comments@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369"
+ integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==
+
+postcss-discard-duplicates@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848"
+ integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==
+
+postcss-discard-empty@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz#7f51b16cd1b89f8180bbc7cee34d6cbabf2ef810"
+ integrity sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==
+
+postcss-discard-overridden@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e"
+ integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==
+
+postcss-flexbugs-fixes@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d"
+ integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==
+
+postcss-loader@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-5.3.0.tgz#1657f869e48d4fdb018a40771c235e499ee26244"
+ integrity sha512-/+Z1RAmssdiSLgIZwnJHwBMnlABPgF7giYzTN2NOfr9D21IJZ4mQC1R2miwp80zno9M4zMD/umGI8cR+2EL5zw==
+ dependencies:
+ cosmiconfig "^7.0.0"
+ klona "^2.0.4"
+ semver "^7.3.4"
+
+postcss-merge-longhand@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz#f716bffbf0bdfbde6ea78c36088e21559f8a0a95"
+ integrity sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+ stylehacks "^5.1.0"
+
+postcss-merge-rules@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz#a2d5117eba09c8686a5471d97bd9afcf30d1b41f"
+ integrity sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==
+ dependencies:
+ browserslist "^4.16.6"
+ caniuse-api "^3.0.0"
+ cssnano-utils "^3.1.0"
+ postcss-selector-parser "^6.0.5"
+
+postcss-minify-font-values@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b"
+ integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-minify-gradients@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz#de0260a67a13b7b321a8adc3150725f2c6612377"
+ integrity sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==
+ dependencies:
+ colord "^2.9.1"
+ cssnano-utils "^3.1.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-minify-params@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz#e0b1f4e05cfd396682f612856485907e4064f25e"
+ integrity sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==
+ dependencies:
+ browserslist "^4.16.6"
+ cssnano-utils "^3.1.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-minify-selectors@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz#17c2be233e12b28ffa8a421a02fc8b839825536c"
+ integrity sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==
+ dependencies:
+ postcss-selector-parser "^6.0.5"
+
+postcss-modules-extract-imports@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
+ integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
+
+postcss-modules-local-by-default@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
+ integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
+ dependencies:
+ icss-utils "^5.0.0"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.1.0"
+
+postcss-modules-scope@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
+ integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
+ dependencies:
+ postcss-selector-parser "^6.0.4"
+
+postcss-modules-values@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
+ integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
+ dependencies:
+ icss-utils "^5.0.0"
+
+postcss-normalize-charset@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed"
+ integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==
+
+postcss-normalize-display-values@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8"
+ integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-positions@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz#902a7cb97cf0b9e8b1b654d4a43d451e48966458"
+ integrity sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-repeat-style@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz#f6d6fd5a54f51a741cc84a37f7459e60ef7a6398"
+ integrity sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-string@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228"
+ integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-timing-functions@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb"
+ integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-unicode@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75"
+ integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==
+ dependencies:
+ browserslist "^4.16.6"
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-url@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc"
+ integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==
+ dependencies:
+ normalize-url "^6.0.1"
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-whitespace@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz#aed8b4580c9ad6e8eac034177291187ea16a059c"
+ integrity sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-ordered-values@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz#04ef429e0991b0292bc918b135cd4c038f7b889f"
+ integrity sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==
+ dependencies:
+ cssnano-utils "^3.1.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-reduce-initial@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6"
+ integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==
+ dependencies:
+ browserslist "^4.16.6"
+ caniuse-api "^3.0.0"
+
+postcss-reduce-transforms@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9"
+ integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
+ version "6.0.9"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f"
+ integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-svgo@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d"
+ integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+ svgo "^2.7.0"
+
+postcss-unique-selectors@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6"
+ integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==
+ dependencies:
+ postcss-selector-parser "^6.0.5"
+
+postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@7.0.36:
+ version "7.0.36"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb"
+ integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==
+ dependencies:
+ chalk "^2.4.2"
+ source-map "^0.6.1"
+ supports-color "^6.1.0"
+
+postcss@^8.2.15, postcss@^8.2.9, postcss@^8.3.11:
+ version "8.4.8"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.8.tgz#dad963a76e82c081a0657d3a2f3602ce10c2e032"
+ integrity sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==
+ dependencies:
+ nanoid "^3.3.1"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+potrace@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/potrace/-/potrace-2.1.8.tgz#50f6fba92e1e39ddef6f979b0a0f841809e0acf2"
+ integrity sha512-V9hI7UMJyEhNZjM8CbZaP/804ZRLgzWkCS9OOYnEZkszzj3zKR/erRdj0uFMcN3pp6x4B+AIZebmkQgGRinG/g==
+ dependencies:
+ jimp "^0.14.0"
+
+prebuild-install@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.0.1.tgz#c10075727c318efe72412f333e0ef625beaf3870"
+ integrity sha512-QBSab31WqkyxpnMWQxubYAHR5S9B2+r81ucocew34Fkl98FhvKIF50jIJnNOBmAZfyNV7vE5T6gd3hTVWgY6tg==
+ dependencies:
+ detect-libc "^2.0.0"
+ expand-template "^2.0.3"
+ github-from-package "0.0.0"
+ minimist "^1.2.3"
+ mkdirp-classic "^0.5.3"
+ napi-build-utils "^1.0.1"
+ node-abi "^3.3.0"
+ npmlog "^4.0.1"
+ pump "^3.0.0"
+ rc "^1.2.7"
+ simple-get "^4.0.0"
+ tar-fs "^2.0.0"
+ tunnel-agent "^0.6.0"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prepend-http@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
+ integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
+
+prettier@2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
+ integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
+
+pretty-bytes@^5.1.0, pretty-bytes@^5.3.0, pretty-bytes@^5.4.1:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
+ integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
+
+pretty-error@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6"
+ integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==
+ dependencies:
+ lodash "^4.17.20"
+ renderkid "^2.0.4"
+
+prism-react-renderer@^1.2.1, prism-react-renderer@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz#88fc9d0df6bed06ca2b9097421349f8c2f24e30d"
+ integrity sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ==
+
+probe-image-size@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-6.0.0.tgz#4a85b19d5af4e29a8de7d53a9aa036f6fd02f5f4"
+ integrity sha512-99PZ5+RU4gqiTfK5ZDMDkZtn6eL4WlKfFyVJV7lFQvH3iGmQ85DqMTOdxorERO26LHkevR2qsxnHp0x/2UDJPA==
+ dependencies:
+ deepmerge "^4.0.0"
+ needle "^2.5.2"
+ stream-parser "~0.3.1"
+
+proc-log@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.0.tgz#25f8cb346a5d08e27f2422b3ca6ba8379bcbf8ba"
+ integrity sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA==
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+progress@^2.0.0, progress@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+promise-retry@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22"
+ integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==
+ dependencies:
+ err-code "^2.0.2"
+ retry "^0.12.0"
+
+prompts@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7"
+ integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.5"
+
+prompts@^2.0.0, prompts@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
+ integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.5"
+
+prop-types@^15.6.1, prop-types@^15.7.2, prop-types@^15.8.1:
+ version "15.8.1"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.13.1"
+
+proper-lockfile@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f"
+ integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==
+ dependencies:
+ graceful-fs "^4.2.4"
+ retry "^0.12.0"
+ signal-exit "^3.0.2"
+
+property-information@^5.0.0, property-information@^5.3.0:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69"
+ integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==
+ dependencies:
+ xtend "^4.0.0"
+
+protocols@^1.1.0, protocols@^1.4.0:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8"
+ integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==
+
+proxy-addr@~2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
+ integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
+ dependencies:
+ forwarded "0.2.0"
+ ipaddr.js "1.9.1"
+
+pseudomap@^1.0.1, pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+pupa@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
+ integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
+ dependencies:
+ escape-goat "^2.0.0"
+
+q@^1.1.2:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
+qs@6.9.7:
+ version "6.9.7"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe"
+ integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==
+
+qs@^6.9.4:
+ version "6.10.3"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
+ integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
+ dependencies:
+ side-channel "^1.0.4"
+
+query-string@^6.13.8, query-string@^6.14.1:
+ version "6.14.1"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a"
+ integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==
+ dependencies:
+ decode-uri-component "^0.2.0"
+ filter-obj "^1.1.0"
+ split-on-first "^1.0.0"
+ strict-uri-encode "^2.0.0"
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+querystring@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd"
+ integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+quick-lru@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
+ integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+
+randombytes@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+range-parser@^1.2.1, range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c"
+ integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "1.8.1"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+raw-body@^2.4.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
+ integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+raw-loader@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6"
+ integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
+rc-config-loader@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/rc-config-loader/-/rc-config-loader-4.0.0.tgz#144cf31961c9f8ebcf252bd9c263fd40d62bd387"
+ integrity sha512-//LRTblJEcqbmmro1GCmZ39qZXD+JqzuD8Y5/IZU3Dhp3A1Yr0Xn68ks8MQ6qKfKvYCWDveUmRDKDA40c+sCXw==
+ dependencies:
+ debug "^4.1.1"
+ js-yaml "^4.0.0"
+ json5 "^2.1.2"
+ require-from-string "^2.0.2"
+
+rc@^1.2.7, rc@^1.2.8:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+react-dev-utils@^11.0.4:
+ version "11.0.4"
+ resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a"
+ integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==
+ dependencies:
+ "@babel/code-frame" "7.10.4"
+ address "1.1.2"
+ browserslist "4.14.2"
+ chalk "2.4.2"
+ cross-spawn "7.0.3"
+ detect-port-alt "1.1.6"
+ escape-string-regexp "2.0.0"
+ filesize "6.1.0"
+ find-up "4.1.0"
+ fork-ts-checker-webpack-plugin "4.1.6"
+ global-modules "2.0.0"
+ globby "11.0.1"
+ gzip-size "5.1.1"
+ immer "8.0.1"
+ is-root "2.1.0"
+ loader-utils "2.0.0"
+ open "^7.0.2"
+ pkg-up "3.1.0"
+ prompts "2.4.0"
+ react-error-overlay "^6.0.9"
+ recursive-readdir "2.2.2"
+ shell-quote "1.7.2"
+ strip-ansi "6.0.0"
+ text-table "0.2.0"
+
+react-dom@^17.0.2:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
+ integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ scheduler "^0.20.2"
+
+react-error-overlay@^6.0.9:
+ version "6.0.10"
+ resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6"
+ integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA==
+
+react-fast-compare@^3.0.1, react-fast-compare@^3.1.1:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
+ integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
+
+react-helmet@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726"
+ integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==
+ dependencies:
+ object-assign "^4.1.1"
+ prop-types "^15.7.2"
+ react-fast-compare "^3.1.1"
+ react-side-effect "^2.1.0"
+
+react-is@^16.13.1:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+react-lifecycles-compat@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
+ integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
+
+react-live@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/react-live/-/react-live-2.4.1.tgz#65e674ff9ca9a9a95f83117acc21ffd968aca619"
+ integrity sha512-r+32f7oV/kBs3QZBRvaT+9vOkQW47UZrDpgwUe5FiIMOl7sdo5pmISgb7Zpj5PGHgY6XQaiXs3FEh+IWw3KbRg==
+ dependencies:
+ "@types/buble" "^0.20.0"
+ buble "0.19.6"
+ core-js "^3.14.0"
+ dom-iterator "^1.0.0"
+ prism-react-renderer "^1.2.1"
+ prop-types "^15.7.2"
+ react-simple-code-editor "^0.11.0"
+ unescape "^1.0.1"
+
+react-merge-refs@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06"
+ integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==
+
+react-popper@2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.2.3.tgz#33d425fa6975d4bd54d9acd64897a89d904b9d97"
+ integrity sha512-mOEiMNT1249js0jJvkrOjyHsGvqcJd3aGW/agkiMoZk3bZ1fXN1wQszIQSjHIai48fE67+zwF8Cs+C4fWqlfjw==
+ dependencies:
+ react-fast-compare "^3.0.1"
+ warning "^4.0.2"
+
+react-refresh@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf"
+ integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==
+
+react-side-effect@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3"
+ integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==
+
+react-simple-code-editor@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.11.0.tgz#bb57c7c29b570f2ab229872599eac184f5bc673c"
+ integrity sha512-xGfX7wAzspl113ocfKQAR8lWPhavGWHL3xSzNLeseDRHysT+jzRBi/ExdUqevSMos+7ZtdfeuBOXtgk9HTwsrw==
+
+react-spring@9.3.0:
+ version "9.3.0"
+ resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.3.0.tgz#4d71eecbfd4f0823bf67e5943d2b0fb77f3e26ad"
+ integrity sha512-zxhMUCM4ha22724q1CshmbzKUfqdUp2HyA4P72+A0xVF/9bgaFuMukI8C8/Rjfdqw6sGg3hZNvmY9Z8n4cqWmg==
+ dependencies:
+ "@react-spring/core" "~9.3.0"
+ "@react-spring/konva" "~9.3.0"
+ "@react-spring/native" "~9.3.0"
+ "@react-spring/three" "~9.3.0"
+ "@react-spring/web" "~9.3.0"
+ "@react-spring/zdog" "~9.3.0"
+
+react-use-measure@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/react-use-measure/-/react-use-measure-2.0.1.tgz#4f23f94c832cd4512da55acb300d1915dcbf3ae8"
+ integrity sha512-lFfHiqcXbJ2/6aUkZwt8g5YYM7EGqNVxJhMqMPqv1BVXRKp8D7jYLlmma0SvhRY4WYxxkZpCdbJvhDylb5gcEA==
+ dependencies:
+ debounce "^1.2.0"
+
+react-virtual@2.2.7:
+ version "2.2.7"
+ resolved "https://registry.yarnpkg.com/react-virtual/-/react-virtual-2.2.7.tgz#01f46e8eb1bfd722edb9a6e01daaef438dd7111f"
+ integrity sha512-ggnuqRwYRuuvFdkpD1tOfC5G4nr5xlZUvvp3b/c9r2Nf14dBXZR49oewESyNQnqyO5JT+offgd4oqugLxxdVsQ==
+ dependencies:
+ "@reach/observe-rect" "^1.1.0"
+ ts-toolbelt "^6.4.2"
+
+react@^17.0.2:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
+ integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
+read-package-json-fast@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83"
+ integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==
+ dependencies:
+ json-parse-even-better-errors "^2.3.0"
+ npm-normalize-package-bin "^1.0.1"
+
+read-package-json@^4.1.1:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.2.tgz#b444d047de7c75d4a160cb056d00c0693c1df703"
+ integrity sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==
+ dependencies:
+ glob "^7.1.1"
+ json-parse-even-better-errors "^2.3.0"
+ normalize-package-data "^3.0.0"
+ npm-normalize-package-bin "^1.0.0"
+
+read@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
+ integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=
+ dependencies:
+ mute-stream "~0.0.4"
+
+readable-stream@1.1.x:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readable-stream@^2.0.6, readable-stream@^2.2.2:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-web-to-node-stream@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb"
+ integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==
+ dependencies:
+ readable-stream "^3.6.0"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+recursive-readdir@2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f"
+ integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==
+ dependencies:
+ minimatch "3.0.4"
+
+redux-thunk@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714"
+ integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==
+
+redux@4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104"
+ integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==
+ dependencies:
+ "@babel/runtime" "^7.9.2"
+
+regenerate-unicode-properties@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56"
+ integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==
+ dependencies:
+ regenerate "^1.4.2"
+
+regenerate-unicode-properties@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
+ integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==
+ dependencies:
+ regenerate "^1.4.2"
+
+regenerate@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
+
+regenerator-runtime@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+ integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+
+regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7:
+ version "0.13.9"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
+ integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+
+regenerator-transform@^0.14.2:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regex-parser@^2.2.11:
+ version "2.2.11"
+ resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58"
+ integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==
+
+regexp.prototype.flags@^1.3.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307"
+ integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+regexpp@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
+ integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
+
+regexpu-core@^4.2.0:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
+ integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==
+ dependencies:
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^9.0.0"
+ regjsgen "^0.5.2"
+ regjsparser "^0.7.0"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.0.0"
+
+regexpu-core@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3"
+ integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==
+ dependencies:
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^10.0.1"
+ regjsgen "^0.6.0"
+ regjsparser "^0.8.2"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.0.0"
+
+registry-auth-token@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
+ integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==
+ dependencies:
+ rc "^1.2.8"
+
+registry-url@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
+ integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==
+ dependencies:
+ rc "^1.2.8"
+
+regjsgen@^0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
+
+regjsgen@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d"
+ integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==
+
+regjsparser@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
+ integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==
+ dependencies:
+ jsesc "~0.5.0"
+
+regjsparser@^0.8.2:
+ version "0.8.4"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f"
+ integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==
+ dependencies:
+ jsesc "~0.5.0"
+
+remark-footnotes@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f"
+ integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==
+
+remark-mdx@1.6.22:
+ version "1.6.22"
+ resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd"
+ integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==
+ dependencies:
+ "@babel/core" "7.12.9"
+ "@babel/helper-plugin-utils" "7.10.4"
+ "@babel/plugin-proposal-object-rest-spread" "7.12.1"
+ "@babel/plugin-syntax-jsx" "7.12.1"
+ "@mdx-js/util" "1.6.22"
+ is-alphabetical "1.0.4"
+ remark-parse "8.0.3"
+ unified "9.2.0"
+
+remark-parse@8.0.3:
+ version "8.0.3"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1"
+ integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==
+ dependencies:
+ ccount "^1.0.0"
+ collapse-white-space "^1.0.2"
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ is-word-character "^1.0.0"
+ markdown-escapes "^1.0.0"
+ parse-entities "^2.0.0"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ trim "0.0.1"
+ trim-trailing-lines "^1.0.0"
+ unherit "^1.0.4"
+ unist-util-remove-position "^2.0.0"
+ vfile-location "^3.0.0"
+ xtend "^4.0.1"
+
+remark-parse@^6.0.0:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a"
+ integrity sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==
+ dependencies:
+ collapse-white-space "^1.0.2"
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ is-word-character "^1.0.0"
+ markdown-escapes "^1.0.0"
+ parse-entities "^1.1.0"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ trim "0.0.1"
+ trim-trailing-lines "^1.0.0"
+ unherit "^1.0.4"
+ unist-util-remove-position "^1.0.0"
+ vfile-location "^2.0.0"
+ xtend "^4.0.1"
+
+remark-retext@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/remark-retext/-/remark-retext-3.1.3.tgz#77173b1d9d13dab15ce5b38d996195fea522ee7f"
+ integrity sha512-UujXAm28u4lnUvtOZQFYfRIhxX+auKI9PuA2QpQVTT7gYk1OgX6o0OUrSo1KOa6GNrFX+OODOtS5PWIHPxM7qw==
+ dependencies:
+ mdast-util-to-nlcst "^3.2.0"
+
+remark-squeeze-paragraphs@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead"
+ integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==
+ dependencies:
+ mdast-squeeze-paragraphs "^4.0.0"
+
+remark-stringify@^6.0.0:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088"
+ integrity sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==
+ dependencies:
+ ccount "^1.0.0"
+ is-alphanumeric "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ longest-streak "^2.0.1"
+ markdown-escapes "^1.0.0"
+ markdown-table "^1.1.0"
+ mdast-util-compact "^1.0.0"
+ parse-entities "^1.0.2"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ stringify-entities "^1.0.1"
+ unherit "^1.0.4"
+ xtend "^4.0.1"
+
+remark@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df"
+ integrity sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==
+ dependencies:
+ remark-parse "^6.0.0"
+ remark-stringify "^6.0.0"
+ unified "^7.0.0"
+
+remote-git-tags@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/remote-git-tags/-/remote-git-tags-3.0.0.tgz#424f8ec2cdea00bb5af1784a49190f25e16983c3"
+ integrity sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+renderkid@^2.0.4:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609"
+ integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==
+ dependencies:
+ css-select "^4.1.3"
+ dom-converter "^0.2.0"
+ htmlparser2 "^6.1.0"
+ lodash "^4.17.21"
+ strip-ansi "^3.0.1"
+
+repeat-element@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9"
+ integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
+
+repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+replace-ext@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
+ integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
+"require-like@>= 0.1.1":
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa"
+ integrity sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+require-package-name@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9"
+ integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=
+
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
+
+resolve-alpn@^1.0.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
+ integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
+
+resolve-cwd@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
+ integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
+ dependencies:
+ resolve-from "^5.0.0"
+
+resolve-from@5.0.0, resolve-from@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-url-loader@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz#3c16caebe0b9faea9c7cc252fa49d2353c412320"
+ integrity sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg==
+ dependencies:
+ adjust-sourcemap-loader "3.0.0"
+ camelcase "5.3.1"
+ compose-function "3.0.3"
+ convert-source-map "1.7.0"
+ es6-iterator "2.0.3"
+ loader-utils "1.2.3"
+ postcss "7.0.36"
+ rework "1.0.1"
+ rework-visit "1.0.0"
+ source-map "0.6.1"
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.3.2:
+ version "1.22.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
+ integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
+ dependencies:
+ is-core-module "^2.8.1"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+resolve@^2.0.0-next.3:
+ version "2.0.0-next.3"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46"
+ integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==
+ dependencies:
+ is-core-module "^2.2.0"
+ path-parse "^1.0.6"
+
+responselike@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
+ integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
+ dependencies:
+ lowercase-keys "^1.0.0"
+
+responselike@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723"
+ integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==
+ dependencies:
+ lowercase-keys "^2.0.0"
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+retext-english@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/retext-english/-/retext-english-3.0.4.tgz#f978828d51fbcee842bc3807a45b7f709822ea8d"
+ integrity sha512-yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw==
+ dependencies:
+ parse-english "^4.0.0"
+ unherit "^1.0.4"
+
+retry@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+ integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rework-visit@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a"
+ integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo=
+
+rework@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7"
+ integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=
+ dependencies:
+ convert-source-map "^0.3.3"
+ css "^2.0.0"
+
+rimraf@^2.6.2:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^3.0.0, rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+run-async@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
+ integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+rxjs@^6.6.0:
+ version "6.6.7"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
+ integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sass-loader@^10.1.1:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.1.tgz#17e51df313f1a7a203889ce8ff91be362651276e"
+ integrity sha512-RRvWl+3K2LSMezIsd008ErK4rk6CulIMSwrcc2aZvjymUgKo/vjXGp1rSWmfTUX7bblEOz8tst4wBwWtCGBqKA==
+ dependencies:
+ klona "^2.0.4"
+ loader-utils "^2.0.0"
+ neo-async "^2.6.2"
+ schema-utils "^3.0.0"
+ semver "^7.3.2"
+
+sass@^1.49.9:
+ version "1.49.9"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9"
+ integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==
+ dependencies:
+ chokidar ">=3.0.0 <4.0.0"
+ immutable "^4.0.0"
+ source-map-js ">=0.6.2 <2.0.0"
+
+sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+scheduler@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
+ integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
+schema-utils@^2.6.5:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
+ integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
+ dependencies:
+ "@types/json-schema" "^7.0.5"
+ ajv "^6.12.4"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
+ integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+section-matter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167"
+ integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==
+ dependencies:
+ extend-shallow "^2.0.1"
+ kind-of "^6.0.0"
+
+semver-diff@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
+ integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==
+ dependencies:
+ semver "^6.3.0"
+
+semver-utils@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2"
+ integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==
+
+semver@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+
+semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
+ version "7.3.5"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
+ dependencies:
+ lru-cache "^6.0.0"
+
+send@0.17.2:
+ version "0.17.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820"
+ integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "1.8.1"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "~2.3.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
+
+sentence-case@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4"
+ integrity sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=
+ dependencies:
+ no-case "^2.2.0"
+ upper-case-first "^1.1.2"
+
+serialize-javascript@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4"
+ integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==
+ dependencies:
+ randombytes "^2.1.0"
+
+serialize-javascript@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
+ integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
+ dependencies:
+ randombytes "^2.1.0"
+
+serve-static@1.14.2:
+ version "1.14.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa"
+ integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.17.2"
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+shallow-clone@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
+ integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
+ dependencies:
+ kind-of "^6.0.2"
+
+shallow-compare@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/shallow-compare/-/shallow-compare-1.2.2.tgz#fa4794627bf455a47c4f56881d8a6132d581ffdb"
+ integrity sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg==
+
+sharp@^0.30.1:
+ version "0.30.2"
+ resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.30.2.tgz#95b309b2740424702dc19b62a62595dd34a458b1"
+ integrity sha512-mrMeKI5ECTdYhslPlA2TbBtU3nZXMEBcQwI6qYXjPlu1LpW4HBZLFm6xshMI1HpIdEEJ3UcYp5AKifLT/fEHZQ==
+ dependencies:
+ color "^4.2.1"
+ detect-libc "^2.0.1"
+ node-addon-api "^4.3.0"
+ prebuild-install "^7.0.1"
+ semver "^7.3.5"
+ simple-get "^4.0.1"
+ tar-fs "^2.1.1"
+ tunnel-agent "^0.6.0"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+shell-quote@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
+ integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
+
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
+signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.5, signal-exit@^3.0.6, signal-exit@^3.0.7:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+simple-concat@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
+ integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
+
+simple-get@^4.0.0, simple-get@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
+ integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
+ dependencies:
+ decompress-response "^6.0.0"
+ once "^1.3.1"
+ simple-concat "^1.0.0"
+
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
+ dependencies:
+ is-arrayish "^0.3.1"
+
+sisteransi@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
+ integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+ integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+slugify@^1.4.4, slugify@^1.6.1:
+ version "1.6.5"
+ resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.5.tgz#c8f5c072bf2135b80703589b39a3d41451fbe8c8"
+ integrity sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==
+
+smart-buffer@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
+ integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
+
+snake-case@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f"
+ integrity sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=
+ dependencies:
+ no-case "^2.2.0"
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+socket.io-adapter@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz#edc5dc36602f2985918d631c1399215e97a1b527"
+ integrity sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==
+
+socket.io-client@3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-3.1.3.tgz#57ddcefea58cfab71f0e94c21124de8e3c5aa3e2"
+ integrity sha512-4sIGOGOmCg3AOgGi7EEr6ZkTZRkrXwub70bBB/F0JSkMOUFpA77WsL87o34DffQQ31PkbMUIadGOk+3tx1KGbw==
+ dependencies:
+ "@types/component-emitter" "^1.2.10"
+ backo2 "~1.0.2"
+ component-emitter "~1.3.0"
+ debug "~4.3.1"
+ engine.io-client "~4.1.0"
+ parseuri "0.0.6"
+ socket.io-parser "~4.0.4"
+
+socket.io-parser@~4.0.3, socket.io-parser@~4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0"
+ integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==
+ dependencies:
+ "@types/component-emitter" "^1.2.10"
+ component-emitter "~1.3.0"
+ debug "~4.3.1"
+
+socket.io@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-3.1.2.tgz#06e27caa1c4fc9617547acfbb5da9bc1747da39a"
+ integrity sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==
+ dependencies:
+ "@types/cookie" "^0.4.0"
+ "@types/cors" "^2.8.8"
+ "@types/node" ">=10.0.0"
+ accepts "~1.3.4"
+ base64id "~2.0.0"
+ debug "~4.3.1"
+ engine.io "~4.1.0"
+ socket.io-adapter "~2.1.0"
+ socket.io-parser "~4.0.3"
+
+socks-proxy-agent@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87"
+ integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==
+ dependencies:
+ agent-base "^6.0.2"
+ debug "^4.3.1"
+ socks "^2.6.1"
+
+socks@^2.6.1:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a"
+ integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==
+ dependencies:
+ ip "^1.1.5"
+ smart-buffer "^4.2.0"
+
+source-list-map@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1"
+ integrity sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=
+
+source-list-map@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
+ integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.5.17, source-map-support@^0.5.20, source-map-support@^0.5.21, source-map-support@~0.5.20:
+ version "0.5.21"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
+ integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
+
+source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
+source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.3:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+space-separated-tokens@^1.0.0:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899"
+ integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==
+
+spawn-please@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/spawn-please/-/spawn-please-1.0.0.tgz#51cf5831ba2bf418aa3ec2102d40b75cfd48b6f2"
+ integrity sha512-Kz33ip6NRNKuyTRo3aDWyWxeGeM0ORDO552Fs6E1nj4pLWPkl37SrRtTnq+MEopVaqgmaO6bAvVS+v64BJ5M/A==
+
+spdx-correct@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95"
+ integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
+
+split-on-first@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
+ integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
+ integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+ssri@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
+ integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
+ dependencies:
+ minipass "^3.1.1"
+
+st@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/st/-/st-2.0.0.tgz#eabd11e7722863b8ee8cfbdd027cb25e76ff35e9"
+ integrity sha512-drN+aGYnrZPNYIymmNwIY7LXYJ8MqsqXj4fMRue3FOgGMdGjSX10fhJ3qx0sVQPhcWxhEaN4U/eWM4O4dbYNAw==
+ dependencies:
+ async-cache "^1.1.0"
+ bl "^4.0.0"
+ fd "~0.0.2"
+ mime "^2.4.4"
+ negotiator "~0.6.2"
+ optionalDependencies:
+ graceful-fs "^4.2.3"
+
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+stack-trace@^0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
+ integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
+
+stackframe@^1.1.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1"
+ integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==
+
+state-toggle@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe"
+ integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+static-site-generator-webpack-plugin@^3.4.2:
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-3.4.2.tgz#ad9fd0a4fb8b6f439a7a66018320b459bdb6d916"
+ integrity sha512-39Kn+fZDVjolLYuX5y1rDvksJIW0QEUaEC/AVO/UewNXxGzoSQI1UYnRsL+ocAcN5Yti6d6rJgEL0qZ5tNXfdw==
+ dependencies:
+ bluebird "^3.0.5"
+ cheerio "^0.22.0"
+ eval "^0.1.0"
+ url "^0.11.0"
+ webpack-sources "^0.2.0"
+
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
+"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+stream-parser@~0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773"
+ integrity sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=
+ dependencies:
+ debug "2"
+
+streamsearch@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a"
+ integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=
+
+strict-uri-encode@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
+ integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY=
+
+string-env-interpolation@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152"
+ integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==
+
+string-natural-compare@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
+ integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
+
+string-similarity@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-1.2.2.tgz#99b2c20a3c9bbb3903964eae1d89856db3d8db9b"
+ integrity sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ==
+ dependencies:
+ lodash.every "^4.6.0"
+ lodash.flattendeep "^4.4.0"
+ lodash.foreach "^4.5.0"
+ lodash.map "^4.6.0"
+ lodash.maxby "^4.6.0"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string.prototype.matchall@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa"
+ integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+ get-intrinsic "^1.1.1"
+ has-symbols "^1.0.2"
+ internal-slot "^1.0.3"
+ regexp.prototype.flags "^1.3.1"
+ side-channel "^1.0.4"
+
+string.prototype.trimend@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
+ integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+string.prototype.trimstart@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
+ integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringify-entities@^1.0.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7"
+ integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==
+ dependencies:
+ character-entities-html4 "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+strip-ansi@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ dependencies:
+ ansi-regex "^5.0.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-bom-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92"
+ integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-comments@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d"
+ integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==
+ dependencies:
+ babel-extract-comments "^1.0.0"
+ babel-plugin-transform-object-rest-spread "^6.26.0"
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+strip-outer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631"
+ integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==
+ dependencies:
+ escape-string-regexp "^1.0.2"
+
+strtok3@^6.2.4:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0"
+ integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==
+ dependencies:
+ "@tokenizer/token" "^0.3.0"
+ peek-readable "^4.1.0"
+
+style-loader@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c"
+ integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
+style-to-object@0.3.0, style-to-object@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
+ integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
+ dependencies:
+ inline-style-parser "0.1.1"
+
+stylehacks@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520"
+ integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==
+ dependencies:
+ browserslist "^4.16.6"
+ postcss-selector-parser "^6.0.4"
+
+subscriptions-transport-ws@^0.9.18:
+ version "0.9.19"
+ resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz#10ca32f7e291d5ee8eb728b9c02e43c52606cdcf"
+ integrity sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==
+ dependencies:
+ backo2 "^1.0.2"
+ eventemitter3 "^3.1.0"
+ iterall "^1.2.1"
+ symbol-observable "^1.0.4"
+ ws "^5.2.0 || ^6.0.0 || ^7.0.0"
+
+sudo-prompt@^8.2.0:
+ version "8.2.5"
+ resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e"
+ integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.0.0, supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-color@^8.0.0:
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
+ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svgo@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
+ integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
+ dependencies:
+ chalk "^2.4.1"
+ coa "^2.0.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "^0.1.1"
+ css-tree "1.0.0-alpha.37"
+ csso "^4.0.2"
+ js-yaml "^3.13.1"
+ mkdirp "~0.5.1"
+ object.values "^1.1.0"
+ sax "~1.2.4"
+ stable "^0.1.8"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
+
+svgo@^2.7.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
+ integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
+ dependencies:
+ "@trysound/sax" "0.2.0"
+ commander "^7.2.0"
+ css-select "^4.1.3"
+ css-tree "^1.1.3"
+ csso "^4.2.0"
+ picocolors "^1.0.0"
+ stable "^0.1.8"
+
+swap-case@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3"
+ integrity sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=
+ dependencies:
+ lower-case "^1.1.1"
+ upper-case "^1.1.1"
+
+symbol-observable@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+ integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
+
+sync-fetch@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/sync-fetch/-/sync-fetch-0.3.0.tgz#77246da949389310ad978ab26790bb05f88d1335"
+ integrity sha512-dJp4qg+x4JwSEW1HibAuMi0IIrBI3wuQr2GimmqB7OXR50wmwzfdusG+p39R9w3R6aFtZ2mzvxvWKQ3Bd/vx3g==
+ dependencies:
+ buffer "^5.7.0"
+ node-fetch "^2.6.1"
+
+table@^6.0.9:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca"
+ integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==
+ dependencies:
+ ajv "^8.0.1"
+ lodash.truncate "^4.4.2"
+ slice-ansi "^4.0.0"
+ string-width "^4.2.3"
+ strip-ansi "^6.0.1"
+
+tapable@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+tapable@^2.1.1, tapable@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
+
+tar-fs@^2.0.0, tar-fs@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
+ integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
+ dependencies:
+ chownr "^1.1.1"
+ mkdirp-classic "^0.5.2"
+ pump "^3.0.0"
+ tar-stream "^2.1.4"
+
+tar-stream@^2.1.4:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
+ integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
+ dependencies:
+ bl "^4.0.3"
+ end-of-stream "^1.4.1"
+ fs-constants "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^3.1.1"
+
+tar@^6.0.2, tar@^6.1.11, tar@^6.1.2:
+ version "6.1.11"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
+ integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
+ dependencies:
+ chownr "^2.0.0"
+ fs-minipass "^2.0.0"
+ minipass "^3.0.0"
+ minizlib "^2.1.1"
+ mkdirp "^1.0.3"
+ yallist "^4.0.0"
+
+term-size@^2.1.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
+ integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
+
+terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54"
+ integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==
+ dependencies:
+ jest-worker "^27.4.5"
+ schema-utils "^3.1.1"
+ serialize-javascript "^6.0.0"
+ source-map "^0.6.1"
+ terser "^5.7.2"
+
+terser@^5.2.0, terser@^5.7.2:
+ version "5.12.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.0.tgz#728c6bff05f7d1dcb687d8eace0644802a9dae8a"
+ integrity sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A==
+ dependencies:
+ acorn "^8.5.0"
+ commander "^2.20.0"
+ source-map "~0.7.2"
+ source-map-support "~0.5.20"
+
+text-table@0.2.0, text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+through@^2.3.6:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+timers-ext@^0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6"
+ integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==
+ dependencies:
+ es5-ext "~0.10.46"
+ next-tick "1"
+
+timm@^1.6.1:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f"
+ integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==
+
+timsort@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
+ integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+
+tinycolor2@^1.4.1:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
+ integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==
+
+title-case@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa"
+ integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.0.3"
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+tmp@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
+ integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
+ dependencies:
+ rimraf "^3.0.0"
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-readable-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
+ integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+toidentifier@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+token-types@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.0.tgz#b66bc3d67420c6873222a424eee64a744f4c2f13"
+ integrity sha512-P0rrp4wUpefLncNamWIef62J0v0kQR/GfDVji9WKY7GDCWy5YbVSrKUTam07iWPZQGy0zWNOfstYTykMmPNR7w==
+ dependencies:
+ "@tokenizer/token" "^0.3.0"
+ ieee754 "^1.2.1"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+
+trim-repeated@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
+ integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE=
+ dependencies:
+ escape-string-regexp "^1.0.2"
+
+trim-trailing-lines@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0"
+ integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==
+
+trim@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
+ integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0=
+
+trough@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
+ integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
+
+"true-case-path@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf"
+ integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==
+
+ts-node@^9:
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
+ integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
+ dependencies:
+ arg "^4.1.0"
+ create-require "^1.1.0"
+ diff "^4.0.1"
+ make-error "^1.1.1"
+ source-map-support "^0.5.17"
+ yn "3.1.1"
+
+ts-toolbelt@^6.4.2:
+ version "6.15.5"
+ resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz#cb3b43ed725cb63644782c64fbcad7d8f28c0a83"
+ integrity sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==
+
+tsconfig-paths@^3.12.0:
+ version "3.13.0"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.13.0.tgz#f3e9b8f6876698581d94470c03c95b3a48c0e3d7"
+ integrity sha512-nWuffZppoaYK0vQ1SQmkSsQzJoHA4s6uzdb2waRpD806x9yfq153AdVsWz4je2qZcW+pENrMQXbGQ3sMCkXuhw==
+ dependencies:
+ "@types/json5" "^0.0.29"
+ json5 "^1.0.1"
+ minimist "^1.2.0"
+ strip-bom "^3.0.0"
+
+tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^2, tslib@^2.0.3, tslib@^2.2.0, tslib@~2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
+ integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
+
+tslib@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c"
+ integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==
+
+tslib@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
+ integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
+
+tslib@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c"
+ integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==
+
+tsutils@^3.21.0:
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
+ integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
+ dependencies:
+ tslib "^1.8.1"
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+ dependencies:
+ safe-buffer "^5.0.1"
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
+type-fest@^0.21.3:
+ version "0.21.3"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
+ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
+type-fest@^0.8.0, type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+type-is@^1.6.4, type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+type-of@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972"
+ integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI=
+
+type@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
+ integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
+
+type@^2.5.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f"
+ integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==
+
+typedarray-to-buffer@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+ integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
+ dependencies:
+ is-typedarray "^1.0.0"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@4.5.5:
+ version "4.5.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
+ integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
+
+unbox-primitive@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
+ integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
+ dependencies:
+ function-bind "^1.1.1"
+ has-bigints "^1.0.1"
+ has-symbols "^1.0.2"
+ which-boxed-primitive "^1.0.2"
+
+unc-path-regex@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
+ integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo=
+
+underscore.string@^3.3.5:
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.6.tgz#ad8cf23d7423cb3b53b898476117588f4e2f9159"
+ integrity sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==
+ dependencies:
+ sprintf-js "^1.1.1"
+ util-deprecate "^1.0.2"
+
+unescape@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96"
+ integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==
+ dependencies:
+ extend-shallow "^2.0.1"
+
+unherit@^1.0.4:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22"
+ integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==
+ dependencies:
+ inherits "^2.0.0"
+ xtend "^4.0.0"
+
+unicode-canonical-property-names-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
+
+unicode-match-property-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^2.0.0"
+ unicode-property-aliases-ecmascript "^2.0.0"
+
+unicode-match-property-value-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
+ integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
+
+unicode-property-aliases-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
+ integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
+
+unified@9.2.0:
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8"
+ integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==
+ dependencies:
+ bail "^1.0.0"
+ extend "^3.0.0"
+ is-buffer "^2.0.0"
+ is-plain-obj "^2.0.0"
+ trough "^1.0.0"
+ vfile "^4.0.0"
+
+unified@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13"
+ integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ "@types/vfile" "^3.0.0"
+ bail "^1.0.0"
+ extend "^3.0.0"
+ is-plain-obj "^1.1.0"
+ trough "^1.0.0"
+ vfile "^3.0.0"
+ x-is-string "^0.1.0"
+
+unified@^8.4.2:
+ version "8.4.2"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1"
+ integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==
+ dependencies:
+ bail "^1.0.0"
+ extend "^3.0.0"
+ is-plain-obj "^2.0.0"
+ trough "^1.0.0"
+ vfile "^4.0.0"
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+unique-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
+ integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
+ dependencies:
+ crypto-random-string "^2.0.0"
+
+unist-builder@2.0.3, unist-builder@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436"
+ integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==
+
+unist-util-generated@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b"
+ integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==
+
+unist-util-is@^2.1.2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.3.tgz#459182db31f4742fceaea88d429693cbf0043d20"
+ integrity sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA==
+
+unist-util-is@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd"
+ integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==
+
+unist-util-is@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797"
+ integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==
+
+unist-util-map@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/unist-util-map/-/unist-util-map-1.0.5.tgz#701069b72e1d1cc02db265502a5e82b77c2eb8b7"
+ integrity sha512-dFil/AN6vqhnQWNCZk0GF/G3+Q5YwsB+PqjnzvpO2wzdRtUJ1E8PN+XRE/PRr/G3FzKjRTJU0haqE0Ekl+O3Ag==
+ dependencies:
+ object-assign "^4.0.1"
+
+unist-util-modify-children@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz#9c9c30d4e32502aabb3fde10d7872a17c86801e2"
+ integrity sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==
+ dependencies:
+ array-iterate "^1.0.0"
+
+unist-util-position@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47"
+ integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==
+
+unist-util-remove-position@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020"
+ integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==
+ dependencies:
+ unist-util-visit "^1.1.0"
+
+unist-util-remove-position@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc"
+ integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==
+ dependencies:
+ unist-util-visit "^2.0.0"
+
+unist-util-remove@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-1.0.3.tgz#58ec193dfa84b52d5a055ffbc58e5444eb8031a3"
+ integrity sha512-mB6nCHCQK0pQffUAcCVmKgIWzG/AXs/V8qpS8K72tMPtOSCMSjDeMc5yN+Ye8rB0FhcE+JvW++o1xRNc0R+++g==
+ dependencies:
+ unist-util-is "^3.0.0"
+
+unist-util-remove@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588"
+ integrity sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==
+ dependencies:
+ unist-util-is "^4.0.0"
+
+unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6"
+ integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==
+
+unist-util-stringify-position@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da"
+ integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==
+ dependencies:
+ "@types/unist" "^2.0.2"
+
+unist-util-stringify-position@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz#5c6aa07c90b1deffd9153be170dce628a869a447"
+ integrity sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+
+unist-util-visit-children@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz#e8a087e58a33a2815f76ea1901c15dec2cb4b432"
+ integrity sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==
+
+unist-util-visit-parents@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9"
+ integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==
+ dependencies:
+ unist-util-is "^3.0.0"
+
+unist-util-visit-parents@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6"
+ integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^4.0.0"
+
+unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c"
+ integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-is "^4.0.0"
+ unist-util-visit-parents "^3.0.0"
+
+unist-util-visit@^1.1.0, unist-util-visit@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3"
+ integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==
+ dependencies:
+ unist-util-visit-parents "^2.0.0"
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
+unixify@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090"
+ integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA=
+ dependencies:
+ normalize-path "^2.1.1"
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+update-notifier@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
+ integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==
+ dependencies:
+ boxen "^5.0.0"
+ chalk "^4.1.0"
+ configstore "^5.0.1"
+ has-yarn "^2.1.0"
+ import-lazy "^2.1.0"
+ is-ci "^2.0.0"
+ is-installed-globally "^0.4.0"
+ is-npm "^5.0.0"
+ is-yarn-global "^0.3.0"
+ latest-version "^5.1.0"
+ pupa "^2.1.1"
+ semver "^7.3.4"
+ semver-diff "^3.1.1"
+ xdg-basedir "^4.0.0"
+
+upper-case-first@^1.1.0, upper-case-first@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115"
+ integrity sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=
+ dependencies:
+ upper-case "^1.1.1"
+
+upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+ integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url-loader@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2"
+ integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==
+ dependencies:
+ loader-utils "^2.0.0"
+ mime-types "^2.1.27"
+ schema-utils "^3.0.0"
+
+url-parse-lax@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
+ integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
+ dependencies:
+ prepend-http "^2.0.0"
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+utif@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759"
+ integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==
+ dependencies:
+ pako "^1.0.5"
+
+util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util.promisify@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
+ integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.2"
+ has-symbols "^1.0.1"
+ object.getownpropertydescriptors "^2.1.0"
+
+utila@~0.4:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
+ integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
+
+utility-types@^3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b"
+ integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+
+uuid@3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
+uuid@^8.3.2:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+v8-compile-cache@^2.0.3:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
+ integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
+
+valid-url@1.0.9, valid-url@^1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200"
+ integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+validate-npm-package-name@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e"
+ integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34=
+ dependencies:
+ builtins "^1.0.3"
+
+value-or-promise@1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140"
+ integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==
+
+value-or-promise@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.6.tgz#218aa4794aa2ee24dcf48a29aba4413ed584747f"
+ integrity sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg==
+
+vary@^1, vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+
+vfile-location@^2.0.0:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e"
+ integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==
+
+vfile-location@^3.0.0, vfile-location@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c"
+ integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==
+
+vfile-message@*:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.2.tgz#a2908f64d9e557315ec9d7ea3a910f658ac05f7d"
+ integrity sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-stringify-position "^3.0.0"
+
+vfile-message@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1"
+ integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==
+ dependencies:
+ unist-util-stringify-position "^1.1.1"
+
+vfile-message@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
+ integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ unist-util-stringify-position "^2.0.0"
+
+vfile@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803"
+ integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==
+ dependencies:
+ is-buffer "^2.0.0"
+ replace-ext "1.0.0"
+ unist-util-stringify-position "^1.0.0"
+ vfile-message "^1.0.0"
+
+vfile@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624"
+ integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ is-buffer "^2.0.0"
+ unist-util-stringify-position "^2.0.0"
+ vfile-message "^2.0.0"
+
+vlq@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468"
+ integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==
+
+warning@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
+ integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
+ dependencies:
+ loose-envify "^1.0.0"
+
+watchpack@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25"
+ integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==
+ dependencies:
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.1.2"
+
+weak-lru-cache@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19"
+ integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==
+
+web-namespaces@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec"
+ integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
+
+webpack-dev-middleware@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz#179cc40795882cae510b1aa7f3710cbe93c9333e"
+ integrity sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w==
+ dependencies:
+ colorette "^1.2.2"
+ mem "^8.1.1"
+ memfs "^3.2.2"
+ mime-types "^2.1.30"
+ range-parser "^1.2.1"
+ schema-utils "^3.0.0"
+
+webpack-merge@^5.8.0:
+ version "5.8.0"
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
+ integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==
+ dependencies:
+ clone-deep "^4.0.1"
+ wildcard "^2.0.0"
+
+webpack-sources@^0.2.0:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb"
+ integrity sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=
+ dependencies:
+ source-list-map "^1.1.1"
+ source-map "~0.5.3"
+
+webpack-sources@^1.1.0:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+webpack-sources@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
+ integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
+
+webpack-stats-plugin@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-1.0.3.tgz#0f64551a0b984b48a9e7acdee32e3cfda556fe51"
+ integrity sha512-tV/SQHl6lKfBahJcNDmz8JG1rpWPB9NEDQSMIoL74oVAotdxYljpgIsgLzgc1N9QrtA9KEA0moJVwQtNZv2aDA==
+
+webpack-virtual-modules@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.3.2.tgz#b7baa30971a22d99451f897db053af48ec29ad2c"
+ integrity sha512-RXQXioY6MhzM4CNQwmBwKXYgBs6ulaiQ8bkNQEl2J6Z+V+s7lgl/wGvaI/I0dLnYKB8cKsxQc17QOAVIphPLDw==
+ dependencies:
+ debug "^3.0.0"
+
+webpack@^5.61.0:
+ version "5.70.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d"
+ integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==
+ dependencies:
+ "@types/eslint-scope" "^3.7.3"
+ "@types/estree" "^0.0.51"
+ "@webassemblyjs/ast" "1.11.1"
+ "@webassemblyjs/wasm-edit" "1.11.1"
+ "@webassemblyjs/wasm-parser" "1.11.1"
+ acorn "^8.4.1"
+ acorn-import-assertions "^1.7.6"
+ browserslist "^4.14.5"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^5.9.2"
+ es-module-lexer "^0.9.0"
+ eslint-scope "5.1.1"
+ events "^3.2.0"
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.2.9"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^4.2.0"
+ mime-types "^2.1.27"
+ neo-async "^2.6.2"
+ schema-utils "^3.1.0"
+ tapable "^2.1.1"
+ terser-webpack-plugin "^5.1.3"
+ watchpack "^2.3.1"
+ webpack-sources "^3.2.3"
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ dependencies:
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which@^1.2.9, which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+which@^2.0.1, which@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0, wide-align@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
+ integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
+ dependencies:
+ string-width "^1.0.2 || 2 || 3 || 4"
+
+widest-line@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
+ integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
+ dependencies:
+ string-width "^4.0.0"
+
+wildcard@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
+ integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
+
+word-wrap@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+workbox-background-sync@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz#26821b9bf16e9e37fd1d640289edddc08afd1950"
+ integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-broadcast-update@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz#e2c0280b149e3a504983b757606ad041f332c35b"
+ integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-build@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-4.3.1.tgz#414f70fb4d6de47f6538608b80ec52412d233e64"
+ integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==
+ dependencies:
+ "@babel/runtime" "^7.3.4"
+ "@hapi/joi" "^15.0.0"
+ common-tags "^1.8.0"
+ fs-extra "^4.0.2"
+ glob "^7.1.3"
+ lodash.template "^4.4.0"
+ pretty-bytes "^5.1.0"
+ stringify-object "^3.3.0"
+ strip-comments "^1.0.2"
+ workbox-background-sync "^4.3.1"
+ workbox-broadcast-update "^4.3.1"
+ workbox-cacheable-response "^4.3.1"
+ workbox-core "^4.3.1"
+ workbox-expiration "^4.3.1"
+ workbox-google-analytics "^4.3.1"
+ workbox-navigation-preload "^4.3.1"
+ workbox-precaching "^4.3.1"
+ workbox-range-requests "^4.3.1"
+ workbox-routing "^4.3.1"
+ workbox-strategies "^4.3.1"
+ workbox-streams "^4.3.1"
+ workbox-sw "^4.3.1"
+ workbox-window "^4.3.1"
+
+workbox-cacheable-response@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz#f53e079179c095a3f19e5313b284975c91428c91"
+ integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-core@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-4.3.1.tgz#005d2c6a06a171437afd6ca2904a5727ecd73be6"
+ integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==
+
+workbox-expiration@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-4.3.1.tgz#d790433562029e56837f341d7f553c4a78ebe921"
+ integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-google-analytics@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz#9eda0183b103890b5c256e6f4ea15a1f1548519a"
+ integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==
+ dependencies:
+ workbox-background-sync "^4.3.1"
+ workbox-core "^4.3.1"
+ workbox-routing "^4.3.1"
+ workbox-strategies "^4.3.1"
+
+workbox-navigation-preload@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz#29c8e4db5843803b34cd96dc155f9ebd9afa453d"
+ integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-precaching@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-4.3.1.tgz#9fc45ed122d94bbe1f0ea9584ff5940960771cba"
+ integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-range-requests@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz#f8a470188922145cbf0c09a9a2d5e35645244e74"
+ integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-routing@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-4.3.1.tgz#a675841af623e0bb0c67ce4ed8e724ac0bed0cda"
+ integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-strategies@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-4.3.1.tgz#d2be03c4ef214c115e1ab29c9c759c9fe3e9e646"
+ integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-streams@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-4.3.1.tgz#0b57da70e982572de09c8742dd0cb40a6b7c2cc3"
+ integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==
+ dependencies:
+ workbox-core "^4.3.1"
+
+workbox-sw@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-4.3.1.tgz#df69e395c479ef4d14499372bcd84c0f5e246164"
+ integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==
+
+workbox-window@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-4.3.1.tgz#ee6051bf10f06afa5483c9b8dfa0531994ede0f3"
+ integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==
+ dependencies:
+ workbox-core "^4.3.1"
+
+worker-rpc@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5"
+ integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==
+ dependencies:
+ microevent.ts "~0.1.1"
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write-file-atomic@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+ integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
+ dependencies:
+ imurmurhash "^0.1.4"
+ is-typedarray "^1.0.0"
+ signal-exit "^3.0.2"
+ typedarray-to-buffer "^3.1.5"
+
+ws@7.4.5:
+ version "7.4.5"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1"
+ integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==
+
+"ws@^5.2.0 || ^6.0.0 || ^7.0.0":
+ version "7.5.7"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
+ integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
+
+ws@~7.4.2:
+ version "7.4.6"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
+ integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
+
+x-is-string@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
+ integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=
+
+xdg-basedir@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
+ integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
+
+xhr@^2.0.1:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d"
+ integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==
+ dependencies:
+ global "~4.4.0"
+ is-function "^1.0.1"
+ parse-headers "^2.0.0"
+ xtend "^4.0.0"
+
+xml-parse-from-string@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28"
+ integrity sha1-qQKekp09vN7RafPG4oI42VpdWig=
+
+xml2js@^0.4.5:
+ version "0.4.23"
+ resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
+ integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
+ dependencies:
+ sax ">=0.6.0"
+ xmlbuilder "~11.0.0"
+
+xmlbuilder@~11.0.0:
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
+ integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
+
+xmlhttprequest-ssl@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz#03b713873b01659dfa2c1c5d056065b27ddc2de6"
+ integrity sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==
+
+xss@^1.0.6:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.11.tgz#211cb82e95b5071d4c75d597283c021157ebe46a"
+ integrity sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==
+ dependencies:
+ commander "^2.20.3"
+ cssfilter "0.0.10"
+
+xstate@^4.26.0, xstate@^4.26.1:
+ version "4.30.5"
+ resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.30.5.tgz#c2c6753542578bf15e707b759ebb671f55849410"
+ integrity sha512-iZhIoZP8Alq4qI8eN/iAYiBRLfLSbSdI29LYsgk2DUvAwMV2J9xGw6CUT2HcH+5Rp5G3XzG6ByRfRmJJ+eEuDQ==
+
+xtend@^4.0.0, xtend@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+xxhash-wasm@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79"
+ integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==
+
+y18n@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
+ integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
+
+yallist@^2.0.0, yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml-loader@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.6.0.tgz#fe1c48b9f4803dace55a59a1474e790ba6ab1b48"
+ integrity sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow==
+ dependencies:
+ loader-utils "^1.4.0"
+ yaml "^1.8.3"
+
+yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2, yaml@^1.8.3:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yargs-parser@^18.1.2:
+ version "18.1.3"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs@^15.4.1:
+ version "15.4.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
+ dependencies:
+ cliui "^6.0.0"
+ decamelize "^1.2.0"
+ find-up "^4.1.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^4.2.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^18.1.2"
+
+yeast@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
+ integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=
+
+yn@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
+ integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
+yoga-layout-prebuilt@^1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz#2936fbaf4b3628ee0b3e3b1df44936d6c146faa6"
+ integrity sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==
+ dependencies:
+ "@types/yoga-layout" "1.9.2"
+
+yurnalist@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-2.1.0.tgz#44cf7ea5a33a8fab4968cc8c2970489f93760902"
+ integrity sha512-PgrBqosQLM3gN2xBFIMDLACRTV9c365VqityKKpSTWpwR+U4LAFR3rSVyEoscWlu3EzX9+Y0I86GXUKxpHFl6w==
+ dependencies:
+ chalk "^2.4.2"
+ inquirer "^7.0.0"
+ is-ci "^2.0.0"
+ read "^1.0.7"
+ strip-ansi "^5.2.0"
+
+zwitch@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
+ integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==
diff --git a/site/src/docs/components/cookie-consent/accessibility.mdx b/site/src/docs/components/cookie-consent/accessibility.mdx
new file mode 100644
index 0000000000..22dbc932f9
--- /dev/null
+++ b/site/src/docs/components/cookie-consent/accessibility.mdx
@@ -0,0 +1,14 @@
+---
+slug: '/components/cookie-consent/accessibility'
+title: 'CookieConsent - Accessibility'
+---
+
+import TabsLayout from './tabs.mdx';
+
+export default ({ children, pageContext }) => {children};
+
+## Accessibility
+
+### Pay attention to
+- Make sure that cookie consent is the first item in the page tab order.
+- The cookie consent modal should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
diff --git a/site/src/docs/components/cookie-consent/api.mdx b/site/src/docs/components/cookie-consent/api.mdx
new file mode 100644
index 0000000000..e02c440b9f
--- /dev/null
+++ b/site/src/docs/components/cookie-consent/api.mdx
@@ -0,0 +1,39 @@
+---
+slug: '/components/cookie-consent/api'
+title: 'CookieConsent - API'
+---
+
+import TabsLayout from './tabs.mdx';
+
+export default ({ children, pageContext }) => {children};
+
+## API
+
+The component requires a `component` object. The object has the following properties:
+
+| Property | Description | Values | Example |
+| ------------------------------ | -------------------------------- | -------- | ----------------------------------------------------------------------------- |
+| `texts.sections.main.title` | Modal main heading | `string` | Evästesuotumukset |
+| `texts.sections.main.text` | Description of the cookies | `string` | Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi … |
+| `texts.sections.details.title` | Heading when settings are opened | `string` | Tietoa sivustolla käytetyistä evästeistä |
+[Table 1:CookieConsent component object properties]|
+
+### Callbacks
+The `content` object passed to the component can also include callback functions:
+
+| Property | Usage | Arguments |
+| -------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `onAllConsentsGiven` | Called when user has given all consents. Not called if consents are not asked for. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` |
+| `onConsentsParsed` | Called when cookie consents are read from the browser. Called always even if consent have been given. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` and boolean indicating are all consents handled. If true, there is no reason to ask for consents. |
+[Table 2:CookieConsent component object callbacks]|
+
+### Language
+The `content` object passed to the component must also include the following language related data:
+
+| Property | Usage | Example |
+| ------------------------------------ | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
+| `language.languageOptions` | List of selectable languages | `[{ code: 'fi', label: 'Suomeksi (FI)' },{ code: 'sv', label: 'På svenska (SV)' }, { code: 'en', label: 'English (EN)' }]` |
+| `language.current` | Current language | `fi` |
+| `language.languageSelectorAriaLabel` | Aria-label for the language selector button | Kieli: Suomi. Vaihda kieli. Change language. Ändra språk. |
+| `language.onLanguageChange` | Callback called when new language is selected. Called with new language.code as the argument. | |
+[Table 3:CookieConsent component language data]|
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
new file mode 100644
index 0000000000..1a61ee20a6
--- /dev/null
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -0,0 +1,50 @@
+---
+slug: '/components/cookie-consent/code'
+title: 'CookieConsent - Code'
+---
+
+import { DateInput } from 'hds-react';
+
+import Playground from '../../../components/Playground';
+import TabsLayout from './tabs.mdx';
+
+export default ({ children, pageContext }) => {children};
+
+## Code
+
+### Code examples
+
+#### Banner
+
+
+
+```jsx
+
+```
+
+
+
+### Rendered as a page
+
+
+```jsx
+
+```
+
+
+
+### Packages
+| Package | Included | Storybook link | Source link |
+| ----------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------- |
+| **HDS React** | Yes | View in Storybook | View source |
+| **HDS Core** | No | - | - |
+
+### Properties
+Note! You can find the full list of properties in the React Storybook.
+
+Also, note that this component is an input. All features supported by the HDS TextInput are also supported by this component. See [TextInput documentation page](/components/text-input) for more information.
+
+| Property | Description | Values | Default value |
+| ------------------------------------------------ | -------------------------------------------------------------- | -------------------------------------------- | ----------------------------------------------- |
+| `helperText` | Helper text to be displayed below the input. | `string` | - |
+
diff --git a/site/src/docs/components/cookie-consent/index.mdx b/site/src/docs/components/cookie-consent/index.mdx
new file mode 100644
index 0000000000..07be3c480a
--- /dev/null
+++ b/site/src/docs/components/cookie-consent/index.mdx
@@ -0,0 +1,48 @@
+---
+slug: '/components/cookie-consent'
+title: 'CookieConsent'
+nav_title: 'CookieConsent'
+---
+
+import { Notification } from 'hds-react';
+import PlaygroundPreview from '../../../components/Playground';
+import TabsLayout from './tabs.mdx';
+
+export default ({ children, pageContext }) => {children};
+
+## Usage
+
+
+ This documentation page is about HDS CookieCompliance component. If you are looking for documentation about cookies in general, please refer to HDS cookie pattern documentation page.
+
+
+### Example
+
+
+
+
+
+### Principles
+- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
+- The cookie consent can be rendered either as a modal or as a page. This allows using the same cookie data for both presentation variations.
+ - Use the modal variant as a banner when the user enters the site.
+ - Use the page variant as a full page that the user can access from the page [Footer](/components/footer) element.
+- You must offer the cookie consent modal and page in all languages that your service supports.
+ - By default, the cookie consent banner should use the same language as the service is using.
+ - The component has its language switcher so the user can easily switch the language of the dialog even if they opened the service with a language they do not understand.
+
+### Variations
+
+### Banner
+The default banner variant opens at the bottom of the viewport. It is opened if the consent for cookies has not been given or if the cookies have changed. The banner can be expanded to view and change cookie settings.
+
+
+
+
+
+### Rendered as a page
+The cookie consent expanded settings page can be rendered as a separate page. This is used to create a cookie page that the user can access via a link in the [Footer](/components/footer) element. This allows the user to view or edit cookie settings after the initial consent has been given.
+
+
+
+
diff --git a/site/src/docs/components/cookie-consent/tabs.mdx b/site/src/docs/components/cookie-consent/tabs.mdx
new file mode 100644
index 0000000000..a95ee77c21
--- /dev/null
+++ b/site/src/docs/components/cookie-consent/tabs.mdx
@@ -0,0 +1,33 @@
+---
+slug: '/components/cookie-consent/tabs'
+title: 'CookieConsent'
+---
+
+import { StatusLabel } from 'hds-react';
+
+import LeadParagraph from '../../../components/LeadParagraph';
+import Layout from '../../../components/layout';
+import PageTabs from '../../../components/PageTabs';
+
+# CookieConsent
+
+Draft
+
+ Accessible
+
+
+
+ The cookie compliance component informs users about cookie usage. This banner is shown when they visit a website or an application for the first time.
+
+
+
+
+ Usage
+ Code
+ API
+ Accessibility
+
+ {props.children}
+
+
+export default ({ pageContext, children }) => {children};
diff --git a/site/src/docs/components/cookie_compliance.mdx b/site/src/docs/components/cookie_compliance.mdx
index 5d562084a3..4a7e890da9 100644
--- a/site/src/docs/components/cookie_compliance.mdx
+++ b/site/src/docs/components/cookie_compliance.mdx
@@ -63,7 +63,35 @@ The cookie consent expanded settings page can be rendered as a separate page. Th
```
-## Demos & API
+## API
+
+The component requires a `component` object. The object has the following properties:
+
+| Property | Description | Values | Example |
+| ------------------------------ | -------------------------------- | -------- | ----------------------------------------------------------------------------- |
+| `texts.sections.main.title` | Modal main heading | `string` | Evästesuotumukset |
+| `texts.sections.main.text` | Description of the cookies | `string` | Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi … |
+| `texts.sections.details.title` | Heading when settings are opened | `string` | Tietoa sivustolla käytetyistä evästeistä |
+
+### Callbacks
+The `content` object passed to the component can also include callback functions:
+
+| Property | Usage | Arguments |
+| -------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `onAllConsentsGiven` | Called when user has given all consents. Not called if consents are not asked for. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` |
+| `onConsentsParsed` | Called when cookie consents are read from the browser. Called always even if consent have been given. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` and boolean indicating are all consents handled. If true, there is no reason to ask for consents. |
+
+### Language
+The `content` object passed to the component must also include the following language related data:
+
+| Property | Usage | Example |
+| ------------------------------------ | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
+| `language.languageOptions` | List of selectable languages | `[{ code: 'fi', label: 'Suomeksi (FI)' },{ code: 'sv', label: 'På svenska (SV)' }, { code: 'en', label: 'English (EN)' }]` |
+| `language.current` | Current language | `fi` |
+| `language.languageSelectorAriaLabel` | Aria-label for the language selector button | Kieli: Suomi. Vaihda kieli. Change language. Ändra språk. |
+| `language.onLanguageChange` | Callback called when new language is selected. Called with new language.code as the argument. | |
+
+## Demos
### Core
diff --git a/site/src/docs/patterns/cookies.mdx b/site/src/docs/patterns/cookies.mdx
new file mode 100644
index 0000000000..5a92d4f8a6
--- /dev/null
+++ b/site/src/docs/patterns/cookies.mdx
@@ -0,0 +1,122 @@
+---
+slug: '/patterns/cookies'
+title: 'Cookies'
+nav_title: 'Cookies'
+---
+
+import { Link, StatusLabel } from 'hds-react';
+import LeadParagraph from '../../components/LeadParagraph';
+import Image from '../../components/Image';
+
+# Cookies
+
+Draft
+
+
+ The cookie compliance pattern describes how the user is informed about the use of cookies. The pattern also offers a way to accept or decline non-essential cookies and change the consent later if needed.
+
+
+The city of Helsinki cookie pattern is based on Traficom's cookie guidelines for service provider.
+
+## Cookie basics
+
+### What are cookies?
+
+Cookies are pieces of data that are stored on the user's device. They are a way to store persistent information about how the user is using the service. The use of cookies is controlled by law. The law requires that cookies that are not essential for the service must be asked for consent from the user.
+
+### When the consent for cookies should be asked?
+
+The consent needs to be asked for a cookie that is not essential for the use of the service. This means that the service's main functions are available even without these cookies. In the future, we refer to these cookies as **non-essential cookies**.
+
+If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need consent from the user but they still have to be informed. The user cannot deny the use of essential cookies - these selections are grayed out in the cookie consent component. The table below demonstrates when consent is needed and when it is not.
+
+| Types of cookies | Is consent needed? | What needs to be done?
+| ----------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------ |
+| Only essential cookies | No | The cookie consent banner does not need to be shown. The list of cookies has to be available on a separate cookies page.
+| Only optional cookies | Yes | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
+| Both essential and optional cookies | Yes, for all optional cookies | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
+| No cookies at all | No | No actions needed.
+[Table 1:Cases when the consent is needed and when it is not]|
+
+Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be essential and which should not.
+
+## Cookie information and categorisation
+
+The cookie consent needs to be asked when your service becomes public (even during alpha/beta periods). [Service under Hel.fi? / Service on its own?]
+
+To prepare to use the HDS cookie compliance component, you have to:
+1. List all the cookies related to your service
+2. Decide which cookies are essential
+3. Categorise cookies into predefined categories
+
+We will go over each step in the following chapters.
+
+### 1. List all the cookies related to your service
+
+First, you need to list all the cookies your service is using. It is also a good moment to review the list of cookies. Aim to use as few cookies as possible and only gather the information your service **currently** needs. You should easily be able to justify the need for each cookie to the user.
+
+For each cookie, you need to gather and display the following information. This information will be displayed in the cookie consent window if the user wishes to get more information about a specific cookie.
+
+| Cookie data | Description | Example |
+| ---------------- | ------------------------------------------------------------------------------------------------- | ------- |
+| **Name** | What is the name of the cookie file? | cookie-agreed
+| **Provider** | What domain is the provider of this cookie? | hel.fi
+| **Purpose** | Why the cookie is needed? What purpose does it serve? | Used to store information about whether visitors have given or declined the use of cookie categories used on this service.
+| **Validity** | How long the cookie will be valid? This means time to expire from the creation of the cookie. | 100 days
+[Table 2:Information that needs to be shown for each cookie]|
+
+### 2. Decide which cookies are essential
+
+The next step is to determine which cookies can be considered essential. Generally, you will need to ask consent for all cookies that are not vital to your service to operate. If you feel that the user can utilise the main functions of your service without a specific cookie, the cookie cannot be considered essential.
+
+If you have a hard time determining whether a cookie is an essential cookie, refer to the cookie category table in the next chapter for more examples.
+
+### 3. Categorise cookies into predefined categories
+
+
To help the user understand the reasoning behind cookies, it is required to group cookies into pre-determined categories. These categories are based on Traficom's cookie guidelines for service provider.
The city of Helsinki cookie pattern is based on Traficom's cookie guidelines for service provider.
-
-## Cookie basics
-
-### What are cookies?
-
-Cookies are pieces of data that are stored on the user's device. They are a way to store persistent information about how the user is using the service. The use of cookies is controlled by law. The law requires that cookies that are not essential for the service must be asked for consent from the user.
-
-### When the consent for cookies should be asked?
-
-The consent needs to be asked for a cookie that is not essential for the use of the service. This means that the service's main functions are available even without these cookies. In the future, we refer to these cookies as **non-essential cookies**.
-
-If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need consent from the user but they still have to be informed. The user cannot deny the use of essential cookies - these selections are grayed out in the cookie consent component. The table below demonstrates when consent is needed and when it is not.
-
-| Types of cookies | Is consent needed? | What needs to be done?
-| ----------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------ |
-| Only essential cookies | No | The cookie consent banner does not need to be shown. The list of cookies has to be available on a separate cookies page.
-| Only optional cookies | Yes | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
-| Both essential and optional cookies | Yes, for all optional cookies | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
-| No cookies at all | No | No actions needed.
-
-Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be essential and which should not.
-
-## Cookie information and categorisation
-
-The cookie consent needs to be asked when your service becomes public (even during alpha/beta periods). [Service under Hel.fi? / Service on its own?]
-
-To prepare to use the HDS cookie compliance component, you have to:
-1. List all the cookies related to your service
-2. Decide which cookies are essential
-3. Categorise cookies into predefined categories
-
-We will go over each step in the following chapters.
-
-### 1. List all the cookies related to your service
-
-First, you need to list all the cookies your service is using. It is also a good moment to review the list of cookies. Aim to use as few cookies as possible and only gather the information your service **currently** needs. You should easily be able to justify the need for each cookie to the user.
-
-For each cookie, you need to gather and display the following information. This information will be displayed in the cookie consent window if the user wishes to get more information about a specific cookie.
-
-| Cookie data | Description | Example |
-| ---------------- | ------------------------------------------------------------------------------------------------- | ------- |
-| **Name** | What is the name of the cookie file? | cookie-agreed
-| **Provider** | What domain is the provider of this cookie? | hel.fi
-| **Purpose** | Why the cookie is needed? What purpose does it serve? | Used to store information about whether visitors have given or declined the use of cookie categories used on this service.
-| **Validity** | How long the cookie will be valid? This means time to expire from the creation of the cookie. | 100 days
-
-### 2. Decide which cookies are essential
-
-The next step is to determine which cookies can be considered essential. Generally, you will need to ask consent for all cookies that are not vital to your service to operate. If you feel that the user can utilise the main functions of your service without a specific cookie, the cookie cannot be considered essential.
-
-If you have a hard time determining whether a cookie is an essential cookie, refer to the cookie category table in the next chapter for more examples.
-
-### 3. Categorise cookies into predefined categories
-
-
To help the user understand the reasoning behind cookies, it is required to group cookies into pre-determined categories. These categories are based on Traficom's cookie guidelines for service provider.
-
-| Category | Description | Is essential? | Examples |
-| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
-| **Authentication** | Cookies related to authentication are used when users log into a service or an application. | Session-specific cookies are considered essential. Permanent login cookies always need consent. | Session cookies |
-| **User preferences** | These cookies can be used to remember user-selected preferences. | Preferences that improve usability between service uses (e.g. language) can be considered essential. | Language choices, appearance settings, accessibility preferences |
-| **User input** | These cookies are required if the service wants to remember user-inputted data. | If using the service would not be possible without input-related cookies, they can be considered essential. | Search history, last used search filters, shopping cart contents |
-| **Advertisement and marketing** | Cookies that store user’s interests or action history data. The information is used to display targeted advertising. | Never essential. | User’s interests or service usage history |
-| **Security** | Cookies that ensure safe data transfer between the service and the user. | Always essential. | CAPTCHA results |
-| **Social media** | Cookies related to plug-ins, tools, and extensions connected to social media platforms. | Never essential. | Social media feeds, social media share buttons |
-| **Accessibility** | Cookies that aim to improve the accessibility of the service. | Always essential. | Accessibility related preferences such as audio descriptions |
-| **Analytics** | These cookies are used to collect data on how users use the service. This data is used in research or product development. | Usually not essential. If analytics are considered necessary for the service, cookies can be considered essential and this must be informed to the user. | Unique visitor IP addresses, page views count, measurements of how the user uses the service |
-| **Device information** | Cookies are used to gather extra information about the device that is used to open the website. | Usually not essential unless this information is necessary for the service to operate. | Device information, OS, and browser information |
-| **Real-time communication** | Cookies that enable real-time communication between the user and the service. | Can only be considered essential if real-time communication is the main purpose of the service. | Chat provider cookies |
-| **Third-party services** | These cookies are often required when content provided by a third-party service is presented in the service. | Not considered essential unless cookies are used only after opening the third-party service (e.g. a chat window). | Cookies used by embedded media such as videos or podcasts |
-| **Displaying content** | Cookies are used to present specific content. | Can be considered essential if the cookie is strictly related to presenting the content and not gathering data. | Monitoring how the user is using specific content |
-| **Location** | Cookies are used to store an accurate location of the user’s device. | Never essential. | Accurate GPS location |
-
-#### Can I use a custom category?
-
-If your cookies do not fit into any of the pre-defined categories, you are allowed to use custom categories.
-
-#### We only have a handful of cookies. Do we still have to categorize them?
-
-Yes, cookies always have to be put into a category. If you have a small number of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
-
-## Using the cookie compliance component
-
-The cookie consent is asked using the HDS provided CookieConsent component. If the user has not given consent for cookies yet, this component will be shown when the service loads.
-
-### When and where to show the cookie consent modal?
-- The cookie consent modal must be shown if the user has not accepted or denied the non-essential cookies of the service.
- - If cookies have changed since the last time the user accepted or denied them, the consent must be shown again.
-- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
-- Make sure that cookie consent is the first item in the page tab order.
-
-### How does the cookie consent modal affect other content of the service?
-- The cookie consent modal should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
-- There may be elements or content on your page that do not work properly until the user gives consent to cookies. It is recommended to show clear error messages at the position of these elements to indicate why they are not available.
- - If your page has a chat button in the lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
-
-### What happens after the user has accepted or denied the non-essential cookies?
-- The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page that allows changing viewing the cookies and changing consent.
- - The link to this page should be placed on the footer element of the page.
- - Note that the HDS CookieConsent component offers functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
-- If new cookies are added or current ones changed, consent should be asked from the user again the next time the service is used.
-
-## Common cookies between *.hel.fi sites
-Using common cookie component brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B.
-
-TODO (the list of the common cookies?)
-
diff --git a/site/gatsby-config.js b/site/gatsby-config.js
index 360af18420..8c9a82ca4c 100644
--- a/site/gatsby-config.js
+++ b/site/gatsby-config.js
@@ -92,6 +92,10 @@ module.exports = {
name: 'Forms',
link: '/patterns/forms',
},
+ {
+ name: 'Cookies',
+ link: '/patterns/cookies',
+ },
],
},
{
diff --git a/site/src/docs/patterns/cookies.mdx b/site/src/docs/patterns/cookies.mdx
deleted file mode 100644
index 867295936b..0000000000
--- a/site/src/docs/patterns/cookies.mdx
+++ /dev/null
@@ -1,127 +0,0 @@
----
-slug: '/patterns/cookies'
-title: 'Cookies'
-navTitle: 'Cookies'
----
-
-import { Link, StatusLabel } from 'hds-react';
-import LeadParagraph from '../../components/LeadParagraph';
-import Image from '../../components/Image';
-
-# Cookies
-
-Draft
-
-
- The cookie compliance pattern describes how the user is informed about the use of cookies. The pattern also offers a way to accept or decline non-essential cookies and change the consent later if needed.
-
-
-The city of Helsinki cookie pattern is based on Traficom's cookie guidelines for service provider.
-
-## Cookie basics
-
-### What are cookies?
-
-Cookies are pieces of data that are stored on the user's device. They are a way to store persistent information about how the user is using the service. The use of cookies is controlled by law. The law requires that cookies that are not essential for the service must be asked for consent from the user.
-
-### When the consent for cookies should be asked?
-
-The consent needs to be asked for a cookie that is not essential for the use of the service. This means that the service's main functions are available even without these cookies. In the future, we refer to these cookies as **non-essential cookies**.
-
-If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered essential. Essential cookies do not need consent from the user but they still have to be informed. The user cannot deny the use of essential cookies - these selections are grayed out in the cookie consent component. The table below demonstrates when consent is needed and when it is not.
-
-| Types of cookies | Is consent needed? | What needs to be done?
-| ----------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------ |
-| Only essential cookies | No | The cookie consent banner does not need to be shown. The list of cookies has to be available on a separate cookies page.
-| Only optional cookies | Yes | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
-| Both essential and optional cookies | Yes, for all optional cookies | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
-| No cookies at all | No | No actions needed.
-[Table 1:Cases when the consent is needed and when it is not]|
-
-Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be essential and which should not.
-
-## Cookie information and categorisation
-
-The cookie consent needs to be asked when your service becomes public (even during alpha/beta periods). [Service under Hel.fi? / Service on its own?]
-
-To prepare to use the HDS cookie compliance component, you have to:
-1. List all the cookies related to your service
-2. Decide which cookies are essential
-3. Categorise cookies into predefined categories
-
-We will go over each step in the following chapters.
-
-### 1. List all the cookies related to your service
-
-First, you need to list all the cookies your service is using. It is also a good moment to review the list of cookies. Aim to use as few cookies as possible and only gather the information your service **currently** needs. You should easily be able to justify the need for each cookie to the user.
-
-For each cookie, you need to gather and display the following information. This information will be displayed in the cookie consent window if the user wishes to get more information about a specific cookie.
-
-| Cookie data | Description | Example |
-| ---------------- | ------------------------------------------------------------------------------------------------- | ------- |
-| **Name** | What is the name of the cookie file? | cookie-agreed
-| **Provider** | What domain is the provider of this cookie? | hel.fi
-| **Purpose** | Why the cookie is needed? What purpose does it serve? | Used to store information about whether visitors have given or declined the use of cookie categories used on this service.
-| **Validity** | How long the cookie will be valid? This means time to expire from the creation of the cookie. | 100 days
-[Table 2:Information that needs to be shown for each cookie]|
-
-### 2. Decide which cookies are essential
-
-The next step is to determine which cookies can be considered essential. Generally, you will need to ask consent for all cookies that are not vital to your service to operate. If you feel that the user can utilise the main functions of your service without a specific cookie, the cookie cannot be considered essential.
-
-If you have a hard time determining whether a cookie is an essential cookie, refer to the cookie category table in the next chapter for more examples.
-
-### 3. Categorise cookies into predefined categories
-
-
To help the user understand the reasoning behind cookies, it is required to group cookies into pre-determined categories. These categories are based on Traficom's cookie guidelines for service provider.
-
-| Category | Description | Is essential? | Examples |
-| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
-| **Authentication** | Cookies related to authentication are used when users log into a service or an application. | Session-specific cookies are considered essential. Permanent login cookies always need consent. | Session cookies |
-| **User preferences** | These cookies can be used to remember user-selected preferences. | Preferences that improve usability between service uses (e.g. language) can be considered essential. | Language choices, appearance settings, accessibility preferences |
-| **User input** | These cookies are required if the service wants to remember user-inputted data. | If using the service would not be possible without input-related cookies, they can be considered essential. | Search history, last used search filters, shopping cart contents |
-| **Advertisement and marketing** | Cookies that store user’s interests or action history data. The information is used to display targeted advertising. | Never essential. | User’s interests or service usage history |
-| **Security** | Cookies that ensure safe data transfer between the service and the user. | Always essential. | CAPTCHA results |
-| **Social media** | Cookies related to plug-ins, tools, and extensions connected to social media platforms. | Never essential. | Social media feeds, social media share buttons |
-| **Accessibility** | Cookies that aim to improve the accessibility of the service. | Always essential. | Accessibility related preferences such as audio descriptions |
-| **Analytics** | These cookies are used to collect data on how users use the service. This data is used in research or product development. | Usually not essential. If analytics are considered necessary for the service, cookies can be considered essential and this must be informed to the user. | Unique visitor IP addresses, page views count, measurements of how the user uses the service |
-| **Device information** | Cookies are used to gather extra information about the device that is used to open the website. | Usually not essential unless this information is necessary for the service to operate. | Device information, OS, and browser information |
-| **Real-time communication** | Cookies that enable real-time communication between the user and the service. | Can only be considered essential if real-time communication is the main purpose of the service. | Chat provider cookies |
-| **Third-party services** | These cookies are often required when content provided by a third-party service is presented in the service. | Not considered essential unless cookies are used only after opening the third-party service (e.g. a chat window). | Cookies used by embedded media such as videos or podcasts |
-| **Displaying content** | Cookies are used to present specific content. | Can be considered essential if the cookie is strictly related to presenting the content and not gathering data. | Monitoring how the user is using specific content |
-| **Location** | Cookies are used to store an accurate location of the user’s device. | Never essential. | Accurate GPS location |
-[Table 3:Cookie categories]|
-
-#### Can I use a custom category?
-
-If your cookies do not fit into any of the pre-defined categories, you are allowed to use custom categories.
-
-#### We only have a handful of cookies. Do we still have to categorize them?
-
-Yes, cookies always have to be put into a category. If you have a small number of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
-
-## Using the cookie compliance component
-
-The cookie consent is asked using the HDS provided CookieConsent component. If the user has not given consent for cookies yet, this component will be shown when the service loads.
-
-### When and where to show the cookie consent modal?
-- The cookie consent modal must be shown if the user has not accepted or denied the non-essential cookies of the service.
- - If cookies have changed since the last time the user accepted or denied them, the consent must be shown again.
-- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
-- Make sure that cookie consent is the first item in the page tab order.
-
-### How does the cookie consent modal affect other content of the service?
-- The cookie consent modal should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
-- There may be elements or content on your page that do not work properly until the user gives consent to cookies. It is recommended to show clear error messages at the position of these elements to indicate why they are not available.
- - If your page has a chat button in the lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
-
-### What happens after the user has accepted or denied the non-essential cookies?
-- The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page that allows changing viewing the cookies and changing consent.
- - The link to this page should be placed on the footer element of the page.
- - Note that the HDS CookieConsent component offers functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
-- If new cookies are added or current ones changed, consent should be asked from the user again the next time the service is used.
-
-## Common cookies between *.hel.fi sites
-Using common cookie component brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B.
-
-TODO (the list of the common cookies?)
diff --git a/site/src/docs/patterns/cookies/basics.mdx b/site/src/docs/patterns/cookies/basics.mdx
new file mode 100644
index 0000000000..3610a790a8
--- /dev/null
+++ b/site/src/docs/patterns/cookies/basics.mdx
@@ -0,0 +1,110 @@
+---
+slug: '/patterns/cookies/basics'
+title: 'Basics'
+navTitle: 'Basics'
+---
+
+import { Link, StatusLabel, Notification } from 'hds-react';
+import LeadParagraph from '../../../components/LeadParagraph';
+import Image from '../../../components/Image';
+
+# Basics
+
+Draft
+
+
+ The cookie compliance pattern describes how the user is informed about the use of cookies. The pattern also offers a way to accept or decline non-necessary cookies and change the consent later if needed.
+
+
+The city of Helsinki cookie pattern is based on Traficom's cookie guidelines for service provider.
+
+## Cookie basics
+
+### What are cookies?
+
+Cookies are pieces of data that are stored on the user's device. They are a way to store persistent information about how the user is using the service. The use of cookies is controlled by law. The law requires that cookies that are not necessary for the service must be asked for consent from the user.
+
+### When the consent for cookies should be asked?
+
+The consent needs to be asked for a cookie that is not necessary for the use of the service. This means that the service's main functions are available even without these cookies. In the future, we refer to these cookies as **optional cookies**.
+
+If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered **necessary**. Necessary cookies do not need consent from the user but they still have to be informed. The user cannot deny the use of necessary cookies - these selections are grayed out in the cookie consent component. The table below demonstrates when consent is needed and when it is not.
+
+| Types of cookies | Is consent needed? | What needs to be done?
+| ----------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------ |
+| Only necessary cookies | No | The cookie consent banner does not need to be shown. The list of cookies has to be available on a separate cookies page.
+| Only optional cookies | Yes | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
+| Both necessary and optional cookies | Yes, for all optional cookies | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
+| No cookies at all | No | No actions needed.
+[Table 1:Cases when the consent is needed and when it is not]|
+
+Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be necessary and which should not.
+
+## Cookie information and categorisation
+
+The cookie consent needs to be asked when your service becomes public (even during alpha/beta periods). [Service under Hel.fi? / Service on its own?]
+
+To prepare to use the HDS cookie compliance component, you have to:
+1. List all the cookies related to your service
+2. Decide which cookies are necessary
+3. Categorise cookies into predefined categories
+
+We will go over each step in the following chapters.
+
+### 1. List all the cookies related to your service
+
+First, you need to list all the cookies your service is using. It is also a good moment to review the list of cookies. Aim to use as few cookies as possible and only gather the information your service **currently** needs. You should easily be able to justify the need for each cookie to the user.
+
+For each cookie, you need to gather and display the following information. This information will be displayed in the cookie consent window if the user wishes to get more information about a specific cookie.
+
+| Cookie data | Description | Example |
+| ---------------------- | ------------------------------------------------------------------------------------------------- | ------- |
+| **Name** | What is the name of the cookie file? | "cookie-agreed"
+| **Cookie set by** | What domain is the provider of this cookie? | "hel.fi"
+| **Purpose of use** | Why the cookie is needed? What purpose does it serve? | "Used to store information about whether visitors have given or declined the use of cookie categories used on this service."
+| **Period of validity** | How long the cookie will be valid? This means time to expire from the creation of the cookie. | "100 days"
+[Table 2:Information that needs to be shown for each cookie]|
+
+### 2. Decide which cookies are necessary
+
+The next step is to determine which cookies can be considered necessary. Generally, you will need to ask consent for all cookies that are not vital to your service to operate. If you feel that the user can utilise the main functions of your service without a specific cookie, the cookie cannot be considered necessary.
+
+If you have a hard time determining whether a cookie is a necessary cookie, refer to the cookie category table in the next chapter for more examples.
+
+
+ As a general rule of thumb, if even one use case of the cookie is not necessary, then the cookie must be optional and consent is needed. An example of this is Google's reCAPTHA. While the primary use of the cookie is for information security and it could be considered necessary, Google will also gather data about the user. Due to this, the cookie cannot be considered necessary and consent is needed.
+
+
+### 3. Categorise cookies into predefined categories
+
+To help the user understand the reasoning behind cookies, it is required to group cookies into pre-determined categories. These categories are based on Traficom's cookie guidelines for service provider.
+
+| Category | Description | Is necessary? | Examples |
+| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
+| **Login** | Login cookies are used when the user logs in to the service. | Session-specific cookies are considered necessary. Permanent login cookies always need consent. | Session cookies |
+| **Preferences** | Preference cookies customise the layout and operation of the website based on the choices made by the user. | Preferences that improve usability between service uses (e.g. language) can be considered essential. As session-based these can be considered necessary. Preferences valid longer than one session can be considered necessary if they are required to ensure usability. | Language choices, appearance settings, accessibility preferences, cookie consent |
+| **User input** | User-input cookies can be used to store information entered by the user in the service. | If using the service would not be possible without input-related cookies, they can be considered necessary. | Search history, last used search filters, shopping cart contents, saved form inputs |
+| **Advertising and marketing** | Marketing cookies can be used to target content to users of the website. | Never necessary. | User’s interests, service usage history |
+| **Information security** | Security cookies enable secure data transfer between the user and the service. | Usually necessary unless the cookie has other use cases that are not related to security. | CAPTCHA results |
+| **Social media** | Social media cookies are related to the characteristics of various social media services. | Never necessary. | Social media feeds, social media share buttons |
+| **Accessibility** | Accessibility cookies enable some of the service’s accessibility features. | Always necessary. | Accessibility related preferences such as audio descriptions |
+| **Statistics** | The information collected by statistics cookies is used to develop the website. | Usually not necessary. If analytics are considered absolutely necessary for the service, cookies can be considered essential and this must be informed to the user. When considered essential, this must be justified to the user. Gathered information must not be handed to third parties. | Unique visitor IP addresses, page views count, measurements of how the user uses the service |
+| **Device information** | Device information cookies contain information collected from the user’s device that ensures the functionality of the service. | Never necessary. | Device information, OS, and browser information |
+| **Chat services** | Chat service cookies enable communication between the user and the service. | Can only be considered necessary if real-time communication is the main purpose of the service. When the user opens the chat window, cookies related to it become necessary. Note that they are not necessary until the user opens the chat. | Chat provider cookies |
+| **Third-party services** | Cookies allow external services (such as social media platforms) to operate on this website. | Not considered necessary unless cookies are used only after opening the third-party service (e.g. a chat window). | Cookies used by embedded media such as videos or podcasts |
+| **Content presentation** | Cookies are used to display various types of content to the user. | Can be considered necessary if the cookie is strictly related to presenting the content and not gathering data. | Monitoring how the user is using specific content |
+| **Location** | Location cookies can be used to utilise location information (GPS) received from the user’s device. | Never necessary. | Accurate GPS location |
+| **Load balancing** | Load-balancing cookies ensure that the service loads and works quickly and efficiently. | Always necessary (as they ensure that the service is operating smoothly). | - |
+[Table 3:Cookie categories]|
+
+#### Can I use a custom category?
+
+If your cookies do not fit into any of the pre-defined categories, you are allowed to use custom categories.
+
+#### We only have a handful of cookies. Do we still have to categorize them?
+
+Yes, cookies always have to be put into a category. If you have a small number of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
+
+#### What if the user has given consent to my cookies in some other Helsinki service?
+
+Using common Helsinki cookie consent brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B. Sites sharing cookies must have the same domain. e.g. *.hel.fi. To learn more about common Helsinki service cookies, please refer to the Common Helsinki cookies page.
\ No newline at end of file
diff --git a/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx b/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
new file mode 100644
index 0000000000..52a6fae26a
--- /dev/null
+++ b/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
@@ -0,0 +1,45 @@
+---
+slug: '/patterns/cookies/common-helsinki-cookies'
+title: 'Common Helsinki cookies'
+navTitle: 'Common Helsinki cookies'
+---
+
+import { Link, StatusLabel } from 'hds-react';
+import LeadParagraph from '../../../components/LeadParagraph';
+import Image from '../../../components/Image';
+
+# Common Helsinki cookies
+
+Draft
+
+
+ Using common Helsinki cookie consent brings the benefit of sharing consents. This is useful both for the user and the service. The user only has to give their consent once and it becomes easier for the service to manage its cookies.
+
+
+## Key principles of using common cookies
+- You can use common Helsinki cookies if your service is using the *.hel.fi domain.
+- When common cookies are available, use them instead of creating custom cookies. This way the user only has to give their consent once between multiple Helsinki services.
+- When a common cookie is used, it must be used **exactly** as described on this page. If you modify the cookie in any way, it is no longer a common cookie.
+- If your service is using custom cookies alongside common cookies, you still need to ask for consent for the custom cookies (if they are considered optional).
+- You can either use all or a part of the common cookies.
+ - Note, that some of the services (e.g. Matomo) may require multiple common cookies for it to work.
+
+## Common cookies between *.hel.fi sites
+The following is a list of approved common cookies between services using *.hel.fi domain. You can find this list as a JSON object in the Helsinki Design System GitHub repository.
+
+### General
+General cookies are part of the **Preferences** category.
+
+| Cookie name | Cookie set by | Purpose of use | Period of validity |
+| ---------------------- | --------------- | ------------------------------------------------- | ------------------- |
+| `i18n-language` | hel.fi | Stores the user's selected language | 1826 days |
+[Table 1:Common preference cookies between *.hel.fi domain services]|
+
+### Matomo
+Matomo cookies are part of the **Analytics** category.
+
+| Cookie name | Cookie set by | Purpose of use | Period of validity |
+| ---------------------- | --------------- | ------------------------------------------------- | ------------------- |
+| `matomo-page-loads` | hel.fi | Tracking page loads | 393 days |
+| `matomo-events` | hel.fi | Tracking what the user does in the user interface | 393 days |
+[Table 2:Common Matomo cookies between *.hel.fi domain services]|
\ No newline at end of file
diff --git a/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
new file mode 100644
index 0000000000..f5213c3e47
--- /dev/null
+++ b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
@@ -0,0 +1,41 @@
+---
+slug: '/patterns/cookies/using-the-cookieconsent'
+title: 'Using the CookieConsent'
+navTitle: 'Using the CookieConsent'
+---
+
+import { Link, StatusLabel } from 'hds-react';
+import LeadParagraph from '../../../components/LeadParagraph';
+import Image from '../../../components/Image';
+
+# Using the CookieConsent
+
+Draft
+
+
+ The cookie compliance pattern describes how the user is informed about the use of cookies. The pattern also offers a way to accept or decline non-necessary cookies and change the consent later if needed.
+
+
+The cookie consent is asked using the HDS provided CookieConsent component. If the user has not given consent for cookies yet, this component will be shown when the service loads.
+
+### When and where to show the cookie consent modal?
+- The cookie consent modal must be shown if the user has not accepted or denied the optional cookies of the service.
+ - If cookies have changed since the last time the user accepted or denied them, the consent must be shown again.
+- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
+- Make sure that cookie consent is the first item in the page tab order.
+
+### How does the cookie consent modal affect other content of the service?
+- The cookie consent modal should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
+- There may be elements or content on your page that do not work properly until the user gives consent to cookies. It is recommended to show clear error messages at the position of these elements to indicate why they are not available.
+ - If your page has a chat button in the lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
+
+### What happens after the user has accepted or denied the optional cookies?
+- The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page that allows changing viewing the cookies and changing consent.
+ - The link to this page should be placed on the footer element of the page.
+ - Note that the HDS CookieConsent component offers functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
+- If new cookies are added or current ones changed, consent should be asked from the user again the next time the service is used.
+
+## Common cookies between *.hel.fi sites
+Using common cookie component brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B.
+
+TODO (the list of the common cookies?)
From a01dc25ccdaf6cf776dbd8ce128a195a1ba6b56d Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Mon, 4 Jul 2022 15:51:32 +0300
Subject: [PATCH 198/292] More work on CookieConsent documentation
---
.../docs/components/cookie-consent/api.mdx | 38 ++++++++---
.../docs/components/cookie-consent/index.mdx | 6 +-
.../docs/components/cookie-consent/tabs.mdx | 11 ++--
site/src/docs/patterns/cookies/basics.mdx | 12 ++--
.../cookies/common-helsinki-cookies.mdx | 2 +-
.../cookies/using-the-cookieconsent.mdx | 64 +++++++++++++------
6 files changed, 90 insertions(+), 43 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/api.mdx b/site/src/docs/components/cookie-consent/api.mdx
index e02c440b9f..5caa33d005 100644
--- a/site/src/docs/components/cookie-consent/api.mdx
+++ b/site/src/docs/components/cookie-consent/api.mdx
@@ -9,16 +9,38 @@ export default ({ children, pageContext }) => HDS-provided content file. The file contains all user interface strings, language options, descriptions for common cookie groups and details about common Helsinki cookies. By default, this content file is used. You can also override parts of it and add your project-specific groups and cookies.
-### Callbacks
+#### ContentSource
+The `contentSource` property lists all content, language options and callbacks for the component. The given source is merged with the default `content.json` to create a content-object.
+
+| Property | Required | Description |
+| -------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `siteName` | **Yes** | Cookie consent main heading. |
+| `currentLanguage` | **Yes** | Currently selected language. Used for picking translations from `content.json`. Is also set to `content.language.current`. Supported values are `fi`, `sv` and `en`. |
+| `requiredCookies` | No | Required cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table. |
+| `optionalCookies` | No | Optional cookies can have partial data or all data described in the table below. Missing texs are auto-filled. See examples below this table. |
+| `requiredConsents.groups`, `optionalConsents.groups` | No | List of cookie groups. All cookies must belong to a group. Groups with property `commonGroup` will be autofilled from `content.json`. |
+| `requiredConsents.groups[].cookies`, `requiredConsents.cookies`, `optionalConsents.groups[].cookies`, `optionalConsents.cookies` | No | List of individual cookies. All cookies must belong to a group or they must have `propertycommonGroup` or `groupId`. The `groupId` must match `group.id` of a custom group and the `commonGroup` must match groups in `content.json`. Do not give both. |
+| `texts` | No | User inferface string overrides. By default strings are fetched from `content.json` and this object overrides one or multiple texts. |
+| `language` | No | Overrides for default language options. By default, options are fetched from `content.json` and this object overrides one or more properties. `onLanguageChange` callback is also added here. |
+| `onAllConsentsGiven` | No | See Callbacks section below. |
+| `onConsentsParsed` | No | See Callbacks section below. |
+| `noCommonConsentCookie` | No | Consents are saved to a cookie and this option can prevent showing that cookie in the list of consents. If this is not true, `requiredConsents` are always shown and a common group “sharedConsents” added to it and also common cookie “helConsentCookie” to that group. All content for those are in `content.json`. |
+| `focusTargetSelector` | No | When modal is closed or the ESC key is pressed when it is open, focus must be shifted outside the modal. This defines the element to set focus to with this selector (string). Not needed when modal is not used. Throws an error is not set for modal. |
+[Table 1:ContentSource object properties]|
+
+##### ContentSource examples
+
+
+#### CookieDomain
+Rarely used. Cookie consents are stored to a cookie whose domain is automatically set to accept subdomains: *.hel.fi or *.hel.ninja or *.domain.com. Some sites are included in the public suffix list and cookies for those sites cannot accept subdomain cookies. Github.io is one of those sites and HDS examples do not work there unless cookie domain can be overridden. Therefore `cookieDomain` was added.
+
+#### Detailed info about properties
+
+##### Callbacks
The `content` object passed to the component can also include callback functions:
| Property | Usage | Arguments |
diff --git a/site/src/docs/components/cookie-consent/index.mdx b/site/src/docs/components/cookie-consent/index.mdx
index 476f81c3cf..85bac88722 100644
--- a/site/src/docs/components/cookie-consent/index.mdx
+++ b/site/src/docs/components/cookie-consent/index.mdx
@@ -12,9 +12,7 @@ export default ({ children, pageContext }) =>
- This documentation page is about HDS CookieCompliance component. If you are looking for documentation about cookies in general, please refer to HDS cookie pattern documentation page.
-
+This documentation page is about HDS CookieCompliance component. If you are looking for documentation about cookies in general, please refer to HDS cookie pattern documentation page.
### Example
@@ -23,7 +21,7 @@ export default ({ children, pageContext }) =>
### Principles
-- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
+- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search engine).
- The cookie consent can be rendered either as a modal or as a page. This allows using the same cookie data for both presentation variations.
- Use the modal variant as a banner when the user enters the site.
- Use the page variant as a full page that the user can access from the page [Footer](/components/footer) element.
diff --git a/site/src/docs/components/cookie-consent/tabs.mdx b/site/src/docs/components/cookie-consent/tabs.mdx
index a95ee77c21..be176e9492 100644
--- a/site/src/docs/components/cookie-consent/tabs.mdx
+++ b/site/src/docs/components/cookie-consent/tabs.mdx
@@ -3,7 +3,7 @@ slug: '/components/cookie-consent/tabs'
title: 'CookieConsent'
---
-import { StatusLabel } from 'hds-react';
+import { StatusLabel, Notification } from 'hds-react';
import LeadParagraph from '../../../components/LeadParagraph';
import Layout from '../../../components/layout';
@@ -11,15 +11,16 @@ import PageTabs from '../../../components/PageTabs';
# CookieConsent
-Draft
-
- Accessible
-
+WIP
The cookie compliance component informs users about cookie usage. This banner is shown when they visit a website or an application for the first time.
+
+ This component is work in progress. Breaking changes are possible and the final accessibility audit has not been done. It has been released for early users and to gather feedback.
+
+
Usage
diff --git a/site/src/docs/patterns/cookies/basics.mdx b/site/src/docs/patterns/cookies/basics.mdx
index 3610a790a8..f62c54e773 100644
--- a/site/src/docs/patterns/cookies/basics.mdx
+++ b/site/src/docs/patterns/cookies/basics.mdx
@@ -10,7 +10,7 @@ import Image from '../../../components/Image';
# Basics
-Draft
+WIP
The cookie compliance pattern describes how the user is informed about the use of cookies. The pattern also offers a way to accept or decline non-necessary cookies and change the consent later if needed.
@@ -65,6 +65,10 @@ For each cookie, you need to gather and display the following information. This
| **Period of validity** | How long the cookie will be valid? This means time to expire from the creation of the cookie. | "100 days"
[Table 2:Information that needs to be shown for each cookie]|
+#### What if the user has given consent to my cookies in some other Helsinki service?
+
+Using common Helsinki cookie consent brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B. Sites sharing cookies must have the same domain. e.g. *.hel.fi. To learn more about common Helsinki service cookies, please refer to the Common Helsinki cookies page.
+
### 2. Decide which cookies are necessary
The next step is to determine which cookies can be considered necessary. Generally, you will need to ask consent for all cookies that are not vital to your service to operate. If you feel that the user can utilise the main functions of your service without a specific cookie, the cookie cannot be considered necessary.
@@ -94,7 +98,7 @@ To help the user understand the reasoning behind cookies, it is required to grou
| **Third-party services** | Cookies allow external services (such as social media platforms) to operate on this website. | Not considered necessary unless cookies are used only after opening the third-party service (e.g. a chat window). | Cookies used by embedded media such as videos or podcasts |
| **Content presentation** | Cookies are used to display various types of content to the user. | Can be considered necessary if the cookie is strictly related to presenting the content and not gathering data. | Monitoring how the user is using specific content |
| **Location** | Location cookies can be used to utilise location information (GPS) received from the user’s device. | Never necessary. | Accurate GPS location |
-| **Load balancing** | Load-balancing cookies ensure that the service loads and works quickly and efficiently. | Always necessary (as they ensure that the service is operating smoothly). | - |
+| **Load balancing** | Load-balancing cookies ensure that the service loads and works quickly and efficiently. | Always necessary (as they ensure that the service is operating smoothly). | A client identifying hash to enable better routing |
[Table 3:Cookie categories]|
#### Can I use a custom category?
@@ -105,6 +109,6 @@ If your cookies do not fit into any of the pre-defined categories, you are allow
Yes, cookies always have to be put into a category. If you have a small number of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
-#### What if the user has given consent to my cookies in some other Helsinki service?
+### Prepare your CookieConsent component
-Using common Helsinki cookie consent brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B. Sites sharing cookies must have the same domain. e.g. *.hel.fi. To learn more about common Helsinki service cookies, please refer to the Common Helsinki cookies page.
\ No newline at end of file
+Now that you have gathered and categorised a list of cookies for your service, it is a time to learn how the HDS CookieConsent is used. To read more about the component, please refer to the Using the CookieConsent page.
diff --git a/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx b/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
index 52a6fae26a..7664c5745b 100644
--- a/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
+++ b/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
@@ -10,7 +10,7 @@ import Image from '../../../components/Image';
# Common Helsinki cookies
-Draft
+WIP
Using common Helsinki cookie consent brings the benefit of sharing consents. This is useful both for the user and the service. The user only has to give their consent once and it becomes easier for the service to manage its cookies.
diff --git a/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
index f5213c3e47..140987412c 100644
--- a/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
+++ b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
@@ -4,38 +4,60 @@ title: 'Using the CookieConsent'
navTitle: 'Using the CookieConsent'
---
-import { Link, StatusLabel } from 'hds-react';
+import { Link, StatusLabel, IconCheck, IconError } from 'hds-react';
import LeadParagraph from '../../../components/LeadParagraph';
import Image from '../../../components/Image';
# Using the CookieConsent
-Draft
+WIP
- The cookie compliance pattern describes how the user is informed about the use of cookies. The pattern also offers a way to accept or decline non-necessary cookies and change the consent later if needed.
+ HDS offers a consistent way of informing the user about cookies and, if needed, asking for consent. The CookieConsent component is used for this. This page describes how the component is used.
-The cookie consent is asked using the HDS provided CookieConsent component. If the user has not given consent for cookies yet, this component will be shown when the service loads.
+If you are looking for technical documentation about the CookieConsent component, please refer to the component page.
-### When and where to show the cookie consent modal?
-- The cookie consent modal must be shown if the user has not accepted or denied the optional cookies of the service.
- - If cookies have changed since the last time the user accepted or denied them, the consent must be shown again.
-- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
-- Make sure that cookie consent is the first item in the page tab order.
+If you are looking for an explanation about gathering and categorising cookies, please refer to the Cookie basics page.
-### How does the cookie consent modal affect other content of the service?
-- The cookie consent modal should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
-- There may be elements or content on your page that do not work properly until the user gives consent to cookies. It is recommended to show clear error messages at the position of these elements to indicate why they are not available.
- - If your page has a chat button in the lower right corner, keep the chat button hidden until cookie consent has been accepted and removed from the DOM.
+## Principles
-### What happens after the user has accepted or denied the optional cookies?
-- The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page that allows changing viewing the cookies and changing consent.
- - The link to this page should be placed on the footer element of the page.
- - Note that the HDS CookieConsent component offers functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
-- If new cookies are added or current ones changed, consent should be asked from the user again the next time the service is used.
+
+
Do
+
+
The cookie consent banner must be shown if the user has not accepted or denied the optional cookies of the service.
+
+
If cookies have changed since the last time the user accepted or denied them, the consent must be shown again.
+
+
+
Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
+
Make sure that cookie consent is the first item in the page tab order.
+
+
The cookie consent banner is automatically positioned to the bottom of the viewport.
+
+
+
Offer the cookie consent banner and cookie settings in all languages that your service supports.
+
+
-## Common cookies between *.hel.fi sites
-Using common cookie component brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B.
+
+
Don't
+
+
The cookie consent banner should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
+
+
-TODO (the list of the common cookies?)
+## Cookie banner and cookie page
+The HDS CookieConsent features two (2) ways of displaying cookies and cookie settings; banner and page. The banner approach is used to inform the user about cookies and offer a quick way to accept or deny them. The cookie page uses the banner content but renders it as a full page. This page is used to present cookie settings. It also works as a place where the user can later return to review or change cookie settings.
+
+The banner also has a feature to expand to show cookie settings. This expanding settings menu can be used when the amount of cookies is low, e.g. less than five (5) individual cookies. Otherwise, it is recommended to open the full settings page. It is easier for the user to browse and manage.
+
+No matter whether you use expanding cookie banner or not, you must always offer a full cookie settings page to the user. It is required to allow the user to review and edit cookie settings after the initial consent has been given. Place a link to the cookies page on the page footer element.
+
+## How does the cookie consent banner affect other content of the service?
+There may be elements or content on your service that do not work properly until the user has given consent to optional cookies. It is recommended to either hide this content or show clear error messages at the position of these elements that indicate why they are not available.
+
+## What happens after the user has accepted or denied the optional cookies?
+The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page that allows changing viewing the cookies and changing consent. The link to this page should be placed on the footer element of the page. Note that the HDS CookieConsent component offers functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
+
+If new cookies are added or current ones changed, consent should be asked from the user again the next time the service is used.
\ No newline at end of file
From 9524268fa457b330f87faf67485aba2c65e3d82e Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Tue, 5 Jul 2022 12:44:24 +0300
Subject: [PATCH 199/292] Added rest of the cookie consent API documentation
---
.../docs/components/cookie-consent/api.mdx | 124 ++++++++++++++----
1 file changed, 99 insertions(+), 25 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/api.mdx b/site/src/docs/components/cookie-consent/api.mdx
index 5caa33d005..20c4a4ebf0 100644
--- a/site/src/docs/components/cookie-consent/api.mdx
+++ b/site/src/docs/components/cookie-consent/api.mdx
@@ -11,51 +11,125 @@ export default ({ children, pageContext }) => HDS-provided content file. The file contains all user interface strings, language options, descriptions for common cookie groups and details about common Helsinki cookies. By default, this content file is used. You can also override parts of it and add your project-specific groups and cookies.
+Common texts, groups and cookie data can be found in HDS-provided content file. The file contains all user interface strings, language options, descriptions for common cookie groups, and details about common Helsinki cookies. By default, this content file is used. You can also override parts of it and add your project-specific groups and cookies.
#### ContentSource
-The `contentSource` property lists all content, language options and callbacks for the component. The given source is merged with the default `content.json` to create a content-object.
+The `contentSource` property lists all content, language options, and callbacks for the component. The given source is merged with the default `content.json` to create a content-object.
| Property | Required | Description |
| -------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `siteName` | **Yes** | Cookie consent main heading. |
-| `currentLanguage` | **Yes** | Currently selected language. Used for picking translations from `content.json`. Is also set to `content.language.current`. Supported values are `fi`, `sv` and `en`. |
+| `currentLanguage` | **Yes** | Currently selected language. Used for picking translations from `content.json`. Is also set to `content.language.current`. Supported values are `fi`, `sv`, and `en`. |
| `requiredCookies` | No | Required cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table. |
-| `optionalCookies` | No | Optional cookies can have partial data or all data described in the table below. Missing texs are auto-filled. See examples below this table. |
-| `requiredConsents.groups`, `optionalConsents.groups` | No | List of cookie groups. All cookies must belong to a group. Groups with property `commonGroup` will be autofilled from `content.json`. |
+| `optionalCookies` | No | Optional cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table. |
+| `requiredConsents.groups`, `optionalConsents.groups` | No | List of cookie groups. All cookies must belong to a group. Groups with property `commonGroup` will be auto-filled from `content.json`. |
| `requiredConsents.groups[].cookies`, `requiredConsents.cookies`, `optionalConsents.groups[].cookies`, `optionalConsents.cookies` | No | List of individual cookies. All cookies must belong to a group or they must have `propertycommonGroup` or `groupId`. The `groupId` must match `group.id` of a custom group and the `commonGroup` must match groups in `content.json`. Do not give both. |
-| `texts` | No | User inferface string overrides. By default strings are fetched from `content.json` and this object overrides one or multiple texts. |
+| `texts` | No | User interface string overrides. By default, strings are fetched from `content.json` and this object overrides one or multiple texts. |
| `language` | No | Overrides for default language options. By default, options are fetched from `content.json` and this object overrides one or more properties. `onLanguageChange` callback is also added here. |
| `onAllConsentsGiven` | No | See Callbacks section below. |
| `onConsentsParsed` | No | See Callbacks section below. |
-| `noCommonConsentCookie` | No | Consents are saved to a cookie and this option can prevent showing that cookie in the list of consents. If this is not true, `requiredConsents` are always shown and a common group “sharedConsents” added to it and also common cookie “helConsentCookie” to that group. All content for those are in `content.json`. |
-| `focusTargetSelector` | No | When modal is closed or the ESC key is pressed when it is open, focus must be shifted outside the modal. This defines the element to set focus to with this selector (string). Not needed when modal is not used. Throws an error is not set for modal. |
+| `noCommonConsentCookie` | No | Consents are saved to a cookie and this option can prevent showing that cookie in the list of consents. If this is not true, `requiredConsents` are always shown and a common group “sharedConsents” is added to it and also a common cookie “helConsentCookie” to that group. All content for those is in `content.json`. |
+| `focusTargetSelector` | No | When the modal is closed or the ESC key is pressed when it is open, the focus must be shifted outside the modal. This defines the element to set focus to with this selector (string). Not needed when modal is not used. Throws an error is not set for modal. |
[Table 1:ContentSource object properties]|
##### ContentSource examples
+TODO
-
-#### CookieDomain
-Rarely used. Cookie consents are stored to a cookie whose domain is automatically set to accept subdomains: *.hel.fi or *.hel.ninja or *.domain.com. Some sites are included in the public suffix list and cookies for those sites cannot accept subdomain cookies. Github.io is one of those sites and HDS examples do not work there unless cookie domain can be overridden. Therefore `cookieDomain` was added.
+#### CookieDomain
+Rarely used. Cookie consents are stored to a cookie whose domain is automatically set to accept subdomains: *.hel.fi or *.hel.ninja or *.domain.com. Some sites are included in the public suffix list and cookies for those sites cannot accept subdomain cookies. Github.io is one of those sites and HDS examples do not work there unless the cookie domain can be overridden. Therefore `cookieDomain` was added.
#### Detailed info about properties
+##### Required and optional cookie categories
+
+| Property | Description |
+| --------------------------- | --------------------------------------------------------- |
+| `requiredConsents` | List of required consents and their descriptions. |
+| `optionalConsents` | List of optional consents and their descriptions. |
+| `*.title` | Title for the consent group. |
+| `*.text` | Description for the consent group. |
+| `*.checkboxAriaDescription` | Aria description of the checkbox shown with the category. |
+| `*.groups` | Optional list of groups. More info is below. |
+| `*.cookies` | Optional list of cookies. More info is below. |
+[Table 3:Cookie category properties]|
+
+##### Cookie groups
+
+| Property | Description |
+| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `group[].groupId` / `group[].commonGroup` | Both optional. If a common group is used, then the `commonGroup`. If this is a custom group provide an `groupId`. Not required, if there are no cookies that have `groupId` set. |
+| `group[].title` | Only for custom groups. Title of the group. Cannot be set for a common group. **Must be unique.** |
+| `group[].text` | Only for custom groups. Cannot be set for a common group. Description of the group. |
+| `group[].expandAriaLabel` | Only for custom groups. Cannot be set for a common group. Aria-label for the button to show more details of the group. |
+| `group[].checkboxAriaDescription` | Only for custom groups. Cannot be set for a common group. Aria-description for the checkbox for giving consent for all cookies in the group |
+| `group[].cookies` | Optional list of cookies in this group. |
+[Table 3:Cookie group properties]|
+
+##### Cookie information
+
+| Property | Description |
+| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `cookie[].groupId` / `cookie[].commonGroup` | The group this cookie belongs to. Optional. Not needed when the cookie is defined in an `optionalCookies` / `requiredCookies.group` If `commonGroup` is used and the group itself is not listed, it is auto-added from `content.json`. |
+| `cookie[].commonCookie` | Optional. Use when the cookie is common. |
+| `cookie[].id` | The ID of the consent. This ID is saved in the consent cookie. **Must be unique.** Only for custom cookies. Cannot be set for a common cookie. |
+| `cookie[].name` | Readable cookie name. Only for custom cookies. Cannot be set for a common cookie. |
+| `cookie[].hostName` | Hostname where it is used. Only for custom cookies. Cannot be set for a common cookie. |
+| `cookie[].description` | Cookie usage description. Only for custom cookies. Cannot be set for a common cookie. |
+| `cookie[].expiration` | When does the cookie expire. Only for custom cookies. Cannot be set for a common cookie. |
+[Table 3:Cookie information properties]|
+
##### Callbacks
The `content` object passed to the component can also include callback functions:
| Property | Usage | Arguments |
| -------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `onAllConsentsGiven` | Called when user has given all consents. Not called if consents are not asked for. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` |
-| `onConsentsParsed` | Called when cookie consents are read from the browser. Called always even if consent have been given. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` and boolean indicating are all consents handled. If true, there is no reason to ask for consents. |
-[Table 2:CookieConsent component object callbacks]|
-
-### Language
-The `content` object passed to the component must also include the following language related data:
-
-| Property | Usage | Example |
-| ------------------------------------ | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
-| `language.languageOptions` | List of selectable languages | `[{ code: 'fi', label: 'Suomeksi (FI)' },{ code: 'sv', label: 'På svenska (SV)' }, { code: 'en', label: 'English (EN)' }]` |
-| `language.current` | Current language | `fi` |
-| `language.languageSelectorAriaLabel` | Aria-label for the language selector button | Kieli: Suomi. Vaihda kieli. Change language. Ändra språk. |
-| `language.onLanguageChange` | Callback called when new language is selected. Called with new language.code as the argument. | |
-[Table 3:CookieConsent component language data]|
+| `onAllConsentsGiven` | Called when the user has given all consents. Not called if consents are not asked for. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` |
+| `onConsentsParsed` | Called when cookie consents are read from the browser. Called always even if consent has been given. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` and boolean indicating are all consents handled. If true, there is no reason to ask for consent. |
+[Table 2:Component object callbacks]|
+
+##### Strings and language
+The following strings can be overridden if needed. Note that you also need to provide translations if you override these. It is recommended to use the provided strings.
+
+| Property | Description |
+| ------------------------------------- | -------------------------------------------------------------------------------- |
+| `texts.sections.main.title` | Top level heading. |
+| `texts.sections.main.text` | Main description. **The most common override because this is service-specific.** |
+| `texts.sections.details.title` | Heading shown in the details. Seen when settings are opened. |
+| `texts.sections.details.text` | Description shown in the details. Seen when settings are opened. |
+[Table 3:Main text content overrides]|
+
+| Property | Description |
+| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
+| `ui.showSettings` | Text on the show/hide settings -button when settings are hidden. |
+| `ui.hideSettings` | Text on the show/hide settings -button when settings are shown. |
+| `ui.approveAllConsents` | Button text for giving consent to all cookies. Shown when settings are closed and the user cannot give optional consents. |
+| `ui.approveRequiredAndSelectedConsents` | Button text for giving consent to required cookies and selected cookies. Shown when settings are open. |
+| `ui.approveOnlyRequiredConsents` | Button text for giving consent to only to required cookies. All optional cookie consents are revoked. |
+| `ui.readMore` | Text shown on a button when modal loses focus and is shrunk. |
+[Table 4:User interface string overrides]|
+
+| Property | Description |
+| --------------------------- | ----------------------------------------------------------- |
+| `tableHeadings.name` | Title of the “hostname” column in the cookie description. |
+| `tableHeadings.hostName` | Title of the “path” column in the cookie description. |
+| `tableHeadings.description` | Title of the “expiration” column in the cookie description. |
+| `tableHeadings.expiration` | Title of the “name” column in the cookie description. |
+[Table 5:Table heading string overrides]|
+
+The consent banner language is controlled via a language dropdown element. Note that the current language is passed in as `content.currentLanguage` and that value is stored into `language.current`.
+
+| Property | Description |
+| ------------------------------------ | --------------------------------------------------------------------------------------------- |
+| `language.languageOptions` | List of selectable languages. Format: `[{ code: 'fi', label: 'Suomeksi (FI)' }]` |
+| `language.current` | Current language. |
+| `language.languageSelectorAriaLabel` | Aria-label for the language selector button. |
+| `language.onLanguageChange` | Callback called when new language is selected. Called with new language.code as the argument. |
+[Table 5:Language properties]|
+
+### Saving consents
+
+Consents that the user has given are saved to a `city-of-helsinki-cookie-consents` cookie.
+
+Cookies are always strings and consents are stored as a JSON-formatted string such as `{"cookie-id":"true","another-cookie-id":"false"}`.
+
+The ID of the cookie is stored to `cookie.id`. `True` means the user has given consent for that cookie. All required cookies are always stored `true` But other sites may list a common cookie optional, so the stored consent is not `true` by default.
From 9eea992d9f48ba919b7e4b76932c691def94d09d Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Tue, 5 Jul 2022 13:03:36 +0300
Subject: [PATCH 200/292] Fixed cookie consent API documentation table
numbering
---
site/src/docs/components/cookie-consent/api.mdx | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/api.mdx b/site/src/docs/components/cookie-consent/api.mdx
index 20c4a4ebf0..534d5236c4 100644
--- a/site/src/docs/components/cookie-consent/api.mdx
+++ b/site/src/docs/components/cookie-consent/api.mdx
@@ -51,7 +51,7 @@ Rarely used. Cookie consents are stored to a cookie whose domain is automaticall
| `*.checkboxAriaDescription` | Aria description of the checkbox shown with the category. |
| `*.groups` | Optional list of groups. More info is below. |
| `*.cookies` | Optional list of cookies. More info is below. |
-[Table 3:Cookie category properties]|
+[Table 2:Cookie category properties]|
##### Cookie groups
@@ -76,7 +76,7 @@ Rarely used. Cookie consents are stored to a cookie whose domain is automaticall
| `cookie[].hostName` | Hostname where it is used. Only for custom cookies. Cannot be set for a common cookie. |
| `cookie[].description` | Cookie usage description. Only for custom cookies. Cannot be set for a common cookie. |
| `cookie[].expiration` | When does the cookie expire. Only for custom cookies. Cannot be set for a common cookie. |
-[Table 3:Cookie information properties]|
+[Table 4:Cookie information properties]|
##### Callbacks
The `content` object passed to the component can also include callback functions:
@@ -85,7 +85,7 @@ The `content` object passed to the component can also include callback functions
| -------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `onAllConsentsGiven` | Called when the user has given all consents. Not called if consents are not asked for. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` |
| `onConsentsParsed` | Called when cookie consents are read from the browser. Called always even if consent has been given. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` and boolean indicating are all consents handled. If true, there is no reason to ask for consent. |
-[Table 2:Component object callbacks]|
+[Table 5:Component object callbacks]|
##### Strings and language
The following strings can be overridden if needed. Note that you also need to provide translations if you override these. It is recommended to use the provided strings.
@@ -96,7 +96,7 @@ The following strings can be overridden if needed. Note that you also need to pr
| `texts.sections.main.text` | Main description. **The most common override because this is service-specific.** |
| `texts.sections.details.title` | Heading shown in the details. Seen when settings are opened. |
| `texts.sections.details.text` | Description shown in the details. Seen when settings are opened. |
-[Table 3:Main text content overrides]|
+[Table 6:Main text content overrides]|
| Property | Description |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
@@ -106,7 +106,7 @@ The following strings can be overridden if needed. Note that you also need to pr
| `ui.approveRequiredAndSelectedConsents` | Button text for giving consent to required cookies and selected cookies. Shown when settings are open. |
| `ui.approveOnlyRequiredConsents` | Button text for giving consent to only to required cookies. All optional cookie consents are revoked. |
| `ui.readMore` | Text shown on a button when modal loses focus and is shrunk. |
-[Table 4:User interface string overrides]|
+[Table 7:User interface string overrides]|
| Property | Description |
| --------------------------- | ----------------------------------------------------------- |
@@ -114,7 +114,7 @@ The following strings can be overridden if needed. Note that you also need to pr
| `tableHeadings.hostName` | Title of the “path” column in the cookie description. |
| `tableHeadings.description` | Title of the “expiration” column in the cookie description. |
| `tableHeadings.expiration` | Title of the “name” column in the cookie description. |
-[Table 5:Table heading string overrides]|
+[Table 8:Table heading string overrides]|
The consent banner language is controlled via a language dropdown element. Note that the current language is passed in as `content.currentLanguage` and that value is stored into `language.current`.
@@ -124,7 +124,7 @@ The consent banner language is controlled via a language dropdown element. Note
| `language.current` | Current language. |
| `language.languageSelectorAriaLabel` | Aria-label for the language selector button. |
| `language.onLanguageChange` | Callback called when new language is selected. Called with new language.code as the argument. |
-[Table 5:Language properties]|
+[Table 9:Language properties]|
### Saving consents
From 59600eab02acc9953928818d14df09b1c16f17b6 Mon Sep 17 00:00:00 2001
From: Roni Jaakkola
Date: Tue, 5 Jul 2022 14:06:14 +0300
Subject: [PATCH 201/292] Added a link to cookie ContentSource examples
---
site/src/docs/components/cookie-consent/api.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/site/src/docs/components/cookie-consent/api.mdx b/site/src/docs/components/cookie-consent/api.mdx
index 534d5236c4..72728c408f 100644
--- a/site/src/docs/components/cookie-consent/api.mdx
+++ b/site/src/docs/components/cookie-consent/api.mdx
@@ -33,7 +33,7 @@ The `contentSource` property lists all content, language options, and callbacks
[Table 1:ContentSource object properties]|
##### ContentSource examples
-TODO
+You can find examples of ContentSource property contents in the HDS CookieConsent Storybook examples (FIX LINK).
#### CookieDomain
Rarely used. Cookie consents are stored to a cookie whose domain is automatically set to accept subdomains: *.hel.fi or *.hel.ninja or *.domain.com. Some sites are included in the public suffix list and cookies for those sites cannot accept subdomain cookies. Github.io is one of those sites and HDS examples do not work there unless the cookie domain can be overridden. Therefore `cookieDomain` was added.
From 31fcc4d390984ab3b9308f6eaaf07b172e28e959 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Thu, 7 Jul 2022 11:35:35 +0300
Subject: [PATCH 202/292] Fix Modal tests
---
.../cookieModal/CookieModal.test.tsx | 22 +++++++++++--------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx b/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx
index 7987818d76..975e31b27c 100644
--- a/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx
+++ b/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx
@@ -1,7 +1,8 @@
/* eslint-disable jest/expect-expect */
/* eslint-disable jest/no-mocks-import */
import React from 'react';
-import { fireEvent, render, RenderResult, waitFor } from '@testing-library/react';
+import { fireEvent, render, RenderResult, screen, waitFor } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { axe } from 'jest-axe';
import { act } from 'react-dom/test-utils';
@@ -153,12 +154,14 @@ describe(' ', () => {
it('changing language calls content.onLanguageChange', () => {
const onLanguageChange = jest.fn();
- const result = renderCookieConsent({
+ renderCookieConsent({
...defaultConsentData,
contentSourceOverrides: { language: { onLanguageChange } },
});
- fireEvent.click(result.container.querySelector('#cookie-consent-language-selector-button') as Element);
- fireEvent.click(result.container.querySelector('a[lang="sv"]') as Element);
+ userEvent.click(
+ screen.getByRole('button', { name: 'Kieli: Suomi. Vaihda kieli. Change language. Ändra språk.' }),
+ );
+ userEvent.click(screen.getByText('Svenska (SV)'));
expect(onLanguageChange).toHaveBeenLastCalledWith('sv');
});
});
@@ -268,6 +271,7 @@ describe(' ', () => {
});
});
});
+
describe('Accordions of each consent group can be opened and ', () => {
it('all consents in the group are rendered', async () => {
const result = await initDetailsView(defaultConsentData);
@@ -293,21 +297,21 @@ describe(' ', () => {
await checkConsentsExist('optional');
});
});
+
describe('Focus is', () => {
it('shifted to the modal heading level 1 when modal is rendered', () => {
const result = renderCookieConsent(defaultConsentData, true);
- const modalH1 = result.container.querySelector('[data-testId="cookie-consent-information"] [aria-level="1"]');
+ const modalH1 = screen.queryByRole('heading', { level: 1 });
expect(getActiveElement(result.container)).toEqual(modalH1);
});
+
it('shifted to the element defined in content.focusTargetSelector when esc button is clicked', async () => {
const result = renderCookieConsent(defaultConsentData, true);
const elementGetter = () => result.container.querySelector(content.focusTargetSelector as string);
- fireEvent.keyUp(result.container.ownerDocument, {
- key: 'Escape',
- code: 27,
- });
+ userEvent.type(result.container, `{esc}`);
await waitForElementFocus(elementGetter);
});
+
it('shifted to the element defined in content.focusTargetSelector when modal is closed', async () => {
const result = renderCookieConsent(defaultConsentData, true);
const elementGetter = () => result.container.querySelector(content.focusTargetSelector as string);
From 5d88c618ec5a02faff4eaa448a05e765b52d2555 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Thu, 7 Jul 2022 11:42:27 +0300
Subject: [PATCH 203/292] Fix CookieConsent story loki reference images
---
...iphone7_Components_CookieConsent_Custom_Content_Version.png | 3 +++
.../chrome_iphone7_Components_CookieConsent_Modal_Version.png | 3 +++
.../chrome_iphone7_Components_CookieConsent_Page_Version.png | 3 +++
...e_iphone7_Components_CookieConsent_Simple_Modal_Version.png | 3 +++
..._laptop_Components_CookieConsent_Custom_Content_Version.png | 3 +++
.../chrome_laptop_Components_CookieConsent_Modal_Version.png | 3 +++
.../chrome_laptop_Components_CookieConsent_Page_Version.png | 3 +++
...me_laptop_Components_CookieConsent_Simple_Modal_Version.png | 3 +++
8 files changed, 24 insertions(+)
create mode 100644 packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Custom_Content_Version.png
create mode 100644 packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Modal_Version.png
create mode 100644 packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Page_Version.png
create mode 100644 packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Simple_Modal_Version.png
create mode 100644 packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Custom_Content_Version.png
create mode 100644 packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Modal_Version.png
create mode 100644 packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Page_Version.png
create mode 100644 packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Simple_Modal_Version.png
diff --git a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Custom_Content_Version.png b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Custom_Content_Version.png
new file mode 100644
index 0000000000..b454a940b5
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Custom_Content_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f617d39c25faecc988207efb6e8c2a79e9920606521b5fe6b1e4a37a16f4b81e
+size 193755
diff --git a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Modal_Version.png b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Modal_Version.png
new file mode 100644
index 0000000000..94a96dd461
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Modal_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96bd0e9e5704f4fe038ff030e85fc255f94984c029ef7e16945e4038ea10b4b8
+size 140685
diff --git a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Page_Version.png b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Page_Version.png
new file mode 100644
index 0000000000..4a2281d4dc
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Page_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c3e8e4f2342ef535507bc10c755e62c317ec641225a60726f2f9992a21c7bb5
+size 240717
diff --git a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Simple_Modal_Version.png b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Simple_Modal_Version.png
new file mode 100644
index 0000000000..368cbabda3
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Simple_Modal_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f64341da9807eace2e39c9e1850e570d3549322f933eb45636e28247a331d07
+size 51508
diff --git a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Custom_Content_Version.png b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Custom_Content_Version.png
new file mode 100644
index 0000000000..ea9d8c966a
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Custom_Content_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1959d517618649e4fae473a6cfb6c5017937c4ac013bf00e3d0b63006feba9bb
+size 77908
diff --git a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Modal_Version.png b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Modal_Version.png
new file mode 100644
index 0000000000..1e3772b175
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Modal_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:216da391aec434ace22ae313af303e1987685a3a98290309e655913eca55f5f4
+size 52138
diff --git a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Page_Version.png b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Page_Version.png
new file mode 100644
index 0000000000..b7823cee61
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Page_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:203e64d39fb74a596d58a17fde961c059053bfbb669a94b134a1ebe5280af5b8
+size 84758
diff --git a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Simple_Modal_Version.png b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Simple_Modal_Version.png
new file mode 100644
index 0000000000..8bdc1fc457
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Simple_Modal_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9f77b685a8c0030cab83aff85c89f9aa43544966498fd3bd1a7f7ba3e65ccf2e
+size 17570
From ecbc8285a9d43f140a67dfe298670e6dc4cbc2bb Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Thu, 7 Jul 2022 15:32:43 +0300
Subject: [PATCH 204/292] Fix CookieConsent group title typo
---
packages/react/src/components/cookieConsent/content.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/react/src/components/cookieConsent/content.json b/packages/react/src/components/cookieConsent/content.json
index bac5136d5e..d7633f4c09 100644
--- a/packages/react/src/components/cookieConsent/content.json
+++ b/packages/react/src/components/cookieConsent/content.json
@@ -107,7 +107,7 @@
},
"optionalCookies": {
"fi": {
- "title": "Valinnainen evästeet",
+ "title": "Valinnaiset evästeet",
"text": "Voit hyväksyä tai kieltää valinnaiset evästeet.",
"checkboxAriaDescription": "Voit hyväksyä tai kieltää valinnaiset evästeet."
},
From 3e6b41eaa4ac7d23c9b290df6c835ca618851452 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Fri, 8 Jul 2022 10:47:31 +0300
Subject: [PATCH 205/292] Remove unnecessary aria-hidden and refactor
---
.../react/src/components/cookieConsent/category/Category.tsx | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/category/Category.tsx b/packages/react/src/components/cookieConsent/category/Category.tsx
index 76d3cd3388..13cb7c6d47 100644
--- a/packages/react/src/components/cookieConsent/category/Category.tsx
+++ b/packages/react/src/components/cookieConsent/category/Category.tsx
@@ -23,6 +23,7 @@ export function Category(props: { category?: CategoryType; isRequired?: boolean
const groupId = isRequired ? 'required' : 'optional';
const getConsentGroupIdentifier = (suffix: string) => `${groupId}-consents-${suffix}`;
const checkboxId = getConsentGroupIdentifier('checkbox');
+ const descriptionElementId = getConsentGroupIdentifier('description');
const checkboxProps = {
onChange: isRequired ? () => undefined : () => triggerAction(checked ? 'unapproveOptional' : 'approveOptional'),
disabled: isRequired,
@@ -32,7 +33,7 @@ export function Category(props: { category?: CategoryType; isRequired?: boolean
'data-testid': checkboxId,
name: checkboxId,
label: title,
- 'aria-describedby': getConsentGroupIdentifier('description'),
+ 'aria-describedby': descriptionElementId,
style: checkboxStyle,
};
@@ -42,7 +43,7 @@ export function Category(props: { category?: CategoryType; isRequired?: boolean
From 68f7dbe23432c17b78d591115e4d24b89e67ec7a Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Fri, 8 Jul 2022 15:32:14 +0300
Subject: [PATCH 211/292] Fix test snapshots
---
.../cookieModal/__snapshots__/CookieModal.test.tsx.snap | 2 --
.../cookiePage/__snapshots__/CookiePage.test.tsx.snap | 2 --
2 files changed, 4 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap b/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
index 22c0ac1baf..8437f6c35e 100644
--- a/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
+++ b/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
@@ -233,7 +233,6 @@ exports[` spec renders the component 1`] = `
Text for required cookies
@@ -597,7 +596,6 @@ exports[` spec renders the component 1`] = `
Text for optional cookies
diff --git a/packages/react/src/components/cookieConsent/cookiePage/__snapshots__/CookiePage.test.tsx.snap b/packages/react/src/components/cookieConsent/cookiePage/__snapshots__/CookiePage.test.tsx.snap
index 0cb4be86c1..cdf67c6641 100644
--- a/packages/react/src/components/cookieConsent/cookiePage/__snapshots__/CookiePage.test.tsx.snap
+++ b/packages/react/src/components/cookieConsent/cookiePage/__snapshots__/CookiePage.test.tsx.snap
@@ -70,7 +70,6 @@ exports[` spec renders the component 1`] = `
Text for required cookies
@@ -434,7 +433,6 @@ exports[` spec renders the component 1`] = `
Text for optional cookies
From 435dabdc4b1768821ef7ea019c8698e2d48b7a7a Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Fri, 8 Jul 2022 17:18:55 +0300
Subject: [PATCH 212/292] Remove unnecessary cookie consent markdown page
---
.../cookie-consent/cookie_compliance.mdx | 102 ------------------
1 file changed, 102 deletions(-)
delete mode 100644 site/src/docs/components/cookie-consent/cookie_compliance.mdx
diff --git a/site/src/docs/components/cookie-consent/cookie_compliance.mdx b/site/src/docs/components/cookie-consent/cookie_compliance.mdx
deleted file mode 100644
index 19a7f1f68a..0000000000
--- a/site/src/docs/components/cookie-consent/cookie_compliance.mdx
+++ /dev/null
@@ -1,102 +0,0 @@
----
-name: Cookie compliance
-menu: Components
-route: /components/cookie-compliance
----
-
-import { StatusLabel, Notification } from "hds-react";
-import LeadParagraph from "../../../components/LeadParagraph";
-import Playground from '../../../components/Playground';
-
-# Cookie compliance
-Draft
-
-
- The cookie compliance component informs users about cookie usage. This banner is shown when they visit a website or an application for the first time.
-
-
-
- This documentation page is about HDS CookieCompliance component. If you are looking for documentation about cookies in general, please refer to HDS cookie compliance pattern documentation page.
-
-
-## Principles
-- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
-- The cookie consent can be rendered either as a modal or as a page. This allows using the same cookie data for both presentation variations.
- - Use the modal variant as a banner when the user enters the site.
- - Use the page variant as a full page that the user can access from the page [Footer](/components/footer) element.
-- You must offer the cookie consent modal and page in all languages that your service supports.
- - By default, the cookie consent banner should use the same language as the service is using.
- - The component has its language switcher so the user can easily switch the language of the dialog even if they opened the service with a language they do not understand.
-
-## Accessibility
-- Make sure that cookie consent is the first item in the page tab order.
-- The cookie consent modal should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
-
-## Security
-TODO
-
-## Usage & variations
-
-### Banner
-The default banner variant opens at the bottom of the viewport. It is opened if the consent for cookies has not been given or if the cookies have changed. The banner can be expanded to view and change cookie settings.
-
-
-
-
-
-#### React code example:
-```tsx
-
-```
-
-### Rendered as a page
-The cookie consent expanded settings page can be rendered as a separate page. This is used to create a cookie page that the user can access via a link in the [Footer](/components/footer) element. This allows the user to view or edit cookie settings after the initial consent has been given.
-
-
-
-
-
-#### React code example:
-```tsx
-
-```
-
-## API
-
-The component requires a `component` object. The object has the following properties:
-
-| Property | Description | Values | Example |
-| ------------------------------ | -------------------------------- | -------- | ----------------------------------------------------------------------------- |
-| `texts.sections.main.title` | Modal main heading | `string` | Evästesuotumukset |
-| `texts.sections.main.text` | Description of the cookies | `string` | Tämä sivusto käyttää välttämättömiä evästeitä suorituskyvyn varmistamiseksi … |
-| `texts.sections.details.title` | Heading when settings are opened | `string` | Tietoa sivustolla käytetyistä evästeistä |
-
-### Callbacks
-The `content` object passed to the component can also include callback functions:
-
-| Property | Usage | Arguments |
-| -------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `onAllConsentsGiven` | Called when user has given all consents. Not called if consents are not asked for. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` |
-| `onConsentsParsed` | Called when cookie consents are read from the browser. Called always even if consent have been given. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` and boolean indicating are all consents handled. If true, there is no reason to ask for consents. |
-
-### Language
-The `content` object passed to the component must also include the following language related data:
-
-| Property | Usage | Example |
-| ------------------------------------ | --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
-| `language.languageOptions` | List of selectable languages | `[{ code: 'fi', label: 'Suomeksi (FI)' },{ code: 'sv', label: 'På svenska (SV)' }, { code: 'en', label: 'English (EN)' }]` |
-| `language.current` | Current language | `fi` |
-| `language.languageSelectorAriaLabel` | Aria-label for the language selector button | Kieli: Suomi. Vaihda kieli. Change language. Ändra språk. |
-| `language.onLanguageChange` | Callback called when new language is selected. Called with new language.code as the argument. | |
-
-## Demos
-
-### Core
-
-_Not included in hds-core!_
-
-### React
-
-[CookieCompliance in hds-react](/storybook/react/?path=/story/components-dateinput--default)
-
-[CookieCompliance API](/storybook/react/?path=/docs/components-dateinput--default)
From 9bdf0ece9939bfb4486c1891ad89480896112267 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Tue, 12 Jul 2022 11:09:05 +0300
Subject: [PATCH 213/292] Force full height page in simple modal story to
ensure consistent loki test results
---
...7_Components_CookieConsent_Simple_Modal_Version.png | 4 ++--
...p_Components_CookieConsent_Simple_Modal_Version.png | 4 ++--
.../components/cookieConsent/CookieConsent.stories.tsx | 10 ++++++++++
3 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Simple_Modal_Version.png b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Simple_Modal_Version.png
index 0df1890bfa..bef6090ff6 100644
--- a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Simple_Modal_Version.png
+++ b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Simple_Modal_Version.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d6adda11c398680449c6bb9f7aa89e93382c9b0627ab9117fe9088a8f9a7f0bd
-size 35736
+oid sha256:b905095c42d74d7bd51e9f3734a5238e31211b758e98f82e8c24e8aaa1f1d994
+size 121761
diff --git a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Simple_Modal_Version.png b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Simple_Modal_Version.png
index 8bdc1fc457..f72e05b783 100644
--- a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Simple_Modal_Version.png
+++ b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Simple_Modal_Version.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9f77b685a8c0030cab83aff85c89f9aa43544966498fd3bd1a7f7ba3e65ccf2e
-size 17570
+oid sha256:b46d6d53687da559b83c52f2f9b819bd9ab652c5dd78a4883293dded3032e474
+size 45051
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
index 6f346b4127..d962de81ca 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
@@ -345,6 +345,15 @@ export const SimpleModalVersion = (args) => {
focusTargetSelector: '#focused-element-after-cookie-consent-closed',
};
+ const ForcePageScrollBarForModalTesting = () => {
+ return (
+
);
};
From 42a2db6c418e930bca8e3ed279a05582ddd59f11 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Tue, 12 Jul 2022 17:11:47 +0300
Subject: [PATCH 215/292] Replace CookieConsent's empty playground examples
with links to storybook
---
.../docs/components/cookie-consent/index.mdx | 19 ++++++-------------
1 file changed, 6 insertions(+), 13 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/index.mdx b/site/src/docs/components/cookie-consent/index.mdx
index 85bac88722..e21bb4c744 100644
--- a/site/src/docs/components/cookie-consent/index.mdx
+++ b/site/src/docs/components/cookie-consent/index.mdx
@@ -4,8 +4,7 @@ title: 'CookieConsent'
navTitle: 'CookieConsent'
---
-import { Notification } from 'hds-react';
-import PlaygroundPreview from '../../../components/Playground';
+import { Link } from 'hds-react';
import TabsLayout from './tabs.mdx';
export default ({ children, pageContext }) => {children};
@@ -16,9 +15,7 @@ This documentation page is about HDS CookieCompliance component. If you are look
### Example
-
-
-
+View modal example in Storybook
### Principles
- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search engine).
@@ -31,16 +28,12 @@ This documentation page is about HDS CookieCompliance component. If you are look
### Variations
-### Banner
+### Modal
The default banner variant opens at the bottom of the viewport. It is opened if the consent for cookies has not been given or if the cookies have changed. The banner can be expanded to view and change cookie settings.
-
-
-
+View modal example in Storybook
-### Rendered as a page
+### Rendered on a page
The cookie consent expanded settings page can be rendered as a separate page. This is used to create a cookie page that the user can access via a link in the [Footer](/components/footer) element. This allows the user to view or edit cookie settings after the initial consent has been given.
-
-
-
+View page example in Storybook
From 39fbd85e94d18f33cd5571064ad3855ba9e70dad Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Tue, 12 Jul 2022 17:12:21 +0300
Subject: [PATCH 216/292] Add code examples and links to storybook in code tab
---
.../docs/components/cookie-consent/code.mdx | 88 +++++++++++++++++--
1 file changed, 79 insertions(+), 9 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
index 854d595eb1..0bd56200a3 100644
--- a/site/src/docs/components/cookie-consent/code.mdx
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -13,24 +13,94 @@ export default ({ children, pageContext }) =>
-
+### Modal
```jsx
-
+import { CookieModal } from 'hds-react';
+
+export const SimpleModalVersion = () => {
+ const [language, setLanguage] = React.useState('en');
+ const onLanguageChange = (newLang) => setLanguage(newLang);
+ const contentSource = {
+ siteName: 'Test site',
+ currentLanguage: language,
+ optionalCookies: {
+ cookies: [
+ {
+ commonGroup: 'statistics',
+ commonCookie: 'matomo',
+ },
+ ],
+ },
+ language: {
+ onLanguageChange,
+ },
+ focusTargetSelector: '#focused-element-after-cookie-consent-closed',
+ onAllConsentsGiven: (consents) => {
+ // called when consents are saved
+ // handle changes like:
+ if (!consents.matomo) {
+ // stop matomo tracking
+ }
+ }
+ };
+
+ const Application = () => {
+ return (
+
+
+ Simple cookie consent example
+
+
+ );
+ };
+
+ return (
+ <>
+
+
+ >
+ );
+}
```
-
+View working modal demo in Storybook
-### Rendered as a page
-
+### Rendered on a page
```jsx
-
+import { CookiePage } from 'hds-react';
+
+export const PageVersion = () => {
+ const contentSource = {
+ siteName: 'Test site',
+ currentLanguage: 'en',
+ optionalCookies: {
+ cookies: [
+ {
+ commonGroup: 'statistics',
+ commonCookie: 'matomo',
+ },
+ ],
+ },
+ onAllConsentsGiven: (consents) => {
+ // called when consents are saved
+ // handle changes like:
+ if (!consents.matomo) {
+ // stop matomo tracking
+ }
+ }
+ };
+
+ return (
+
+
+
+ );
+}
```
-
+View working page example in Storybook
### Packages
| Package | Included | Storybook link | Source link |
From 47d933a3e2775227ebcb876822f817fc10a97cc4 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Tue, 12 Jul 2022 17:12:43 +0300
Subject: [PATCH 217/292] Fix syntax-highlighters code overflow
---
site/src/components/SyntaxHighlighter.scss | 1 +
1 file changed, 1 insertion(+)
diff --git a/site/src/components/SyntaxHighlighter.scss b/site/src/components/SyntaxHighlighter.scss
index 9e3398b0b1..f1a3c1a928 100644
--- a/site/src/components/SyntaxHighlighter.scss
+++ b/site/src/components/SyntaxHighlighter.scss
@@ -1,3 +1,4 @@
.syntax-highlighter {
+ overflow: auto;
padding: var(--spacing-s);
}
From 839fb2e8d3efa677d358e83cac051cc231111edd Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Tue, 12 Jul 2022 17:13:06 +0300
Subject: [PATCH 218/292] Fix cookie-consent storybook link address on code tab
---
site/src/docs/components/cookie-consent/code.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
index 0bd56200a3..6a27ae6098 100644
--- a/site/src/docs/components/cookie-consent/code.mdx
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -105,7 +105,7 @@ export const PageVersion = () => {
### Packages
| Package | Included | Storybook link | Source link |
| ----------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------- |
-| **HDS React** | Yes | View in Storybook | View source |
+| **HDS React** | Yes | View in Storybook | View source |
| **HDS Core** | No | - | - |
### Properties
From f4180e39f1905ebd70d8892fe2edbd9e7fa30d65 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Tue, 12 Jul 2022 17:14:10 +0300
Subject: [PATCH 219/292] Format code examples
---
site/src/docs/components/cookie-consent/code.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
index 6a27ae6098..1b7145a714 100644
--- a/site/src/docs/components/cookie-consent/code.mdx
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -61,7 +61,7 @@ export const SimpleModalVersion = () => {
>
);
-}
+};
```
View working modal demo in Storybook
@@ -97,7 +97,7 @@ export const PageVersion = () => {
);
-}
+};
```
View working page example in Storybook
From 18f6157e49379f6c620dd8e1e8f703622926575b Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Wed, 13 Jul 2022 15:26:22 +0300
Subject: [PATCH 220/292] Clean up page HTML after cookie consent modal is not
visible anymore
---
.../src/components/cookieConsent/modal/Modal.tsx | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/modal/Modal.tsx b/packages/react/src/components/cookieConsent/modal/Modal.tsx
index 5ad6009384..d02b022de5 100644
--- a/packages/react/src/components/cookieConsent/modal/Modal.tsx
+++ b/packages/react/src/components/cookieConsent/modal/Modal.tsx
@@ -28,13 +28,20 @@ export function Modal(): React.ReactElement | null {
}, []);
useEffect(() => {
+ const containerElement = getContainerElement();
if (shouldShowModal && !isDomReady) {
- if (!getContainerElement()) {
+ if (!containerElement) {
const htmlContainer = document.createElement('div');
- htmlContainer.id = containerId;
+ htmlContainer.setAttribute('id', containerId);
+ htmlContainer.setAttribute('data-testid', 'html-cookie-consent-container');
document.body.insertBefore(htmlContainer, document.body.firstChild);
}
setIsDomReady(true);
+ } else if (!shouldShowModal && isDomReady) {
+ if (containerElement) {
+ document.body.removeChild(containerElement);
+ }
+ setIsDomReady(false);
}
}, [shouldShowModal, isDomReady, setIsDomReady]);
From 5312fb8614df6196f146ad23667d686ab89ba881 Mon Sep 17 00:00:00 2001
From: Mika Nevalainen
Date: Wed, 13 Jul 2022 15:26:41 +0300
Subject: [PATCH 221/292] Add test to check HTML-container on the page
---
.../cookieConsent/cookieModal/CookieModal.test.tsx | 9 +++++++++
.../cookieModal/__snapshots__/CookieModal.test.tsx.snap | 1 +
packages/react/src/components/cookieConsent/test.util.ts | 1 +
3 files changed, 11 insertions(+)
diff --git a/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx b/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx
index 975e31b27c..b0f214702a 100644
--- a/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx
+++ b/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx
@@ -164,6 +164,15 @@ describe(' ', () => {
userEvent.click(screen.getByText('Svenska (SV)'));
expect(onLanguageChange).toHaveBeenLastCalledWith('sv');
});
+
+ it('will render html-container only when modal is visible', async () => {
+ const result = renderCookieConsent(defaultConsentData);
+ verifyElementExistsByTestId(result, dataTestIds.htmlContainer);
+ clickElement(result, dataTestIds.approveButton);
+ await waitFor(() => {
+ verifyElementDoesNotExistsByTestId(result, dataTestIds.htmlContainer);
+ });
+ });
});
describe(`Approve button will
diff --git a/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap b/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
index 8437f6c35e..3b47f82f1f 100644
--- a/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
+++ b/packages/react/src/components/cookieConsent/cookieModal/__snapshots__/CookieModal.test.tsx.snap
@@ -3,6 +3,7 @@
exports[` spec renders the component 1`] = `
Date: Mon, 8 Aug 2022 10:17:23 +0300
Subject: [PATCH 222/292] Prevent resetting esc-key listener on each render.
Works only in CookieConsentContext.tsx
In Content.tsx the useAccordion-hook returns a new function on each re-render, so callback passed to useEscKey changes each time.
---
.../src/components/cookieConsent/CookieConsentContext.tsx | 6 +++---
packages/react/src/components/cookieConsent/useEscKey.ts | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsentContext.tsx b/packages/react/src/components/cookieConsent/CookieConsentContext.tsx
index 83b0e7e487..ce02394636 100644
--- a/packages/react/src/components/cookieConsent/CookieConsentContext.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsentContext.tsx
@@ -1,4 +1,4 @@
-import React, { createContext, useContext, useMemo, useState } from 'react';
+import React, { createContext, useCallback, useContext, useMemo, useState } from 'react';
import createConsentController, { ConsentController, ConsentList, ConsentObject } from './cookieConsentController';
import { ContentSource, createContent } from './content.builder';
@@ -277,7 +277,7 @@ export const useFocusShift = (): (() => void) => {
if (!focusTargetSelector) {
throw new Error('Cookie consent modal requires a content.focusTargetSelector to be set');
}
- return () => {
+ return useCallback(() => {
forceFocusToElement(focusTargetSelector);
- };
+ }, [focusTargetSelector]);
};
diff --git a/packages/react/src/components/cookieConsent/useEscKey.ts b/packages/react/src/components/cookieConsent/useEscKey.ts
index 1e28f9c6ac..187f039b18 100644
--- a/packages/react/src/components/cookieConsent/useEscKey.ts
+++ b/packages/react/src/components/cookieConsent/useEscKey.ts
@@ -12,5 +12,5 @@ export function useEscKey(callBack: (e?: KeyboardEvent) => void): void {
return () => {
document.removeEventListener('keyup', handleEscKey);
};
- });
+ }, [callBack]);
}
From c7b63c9345e2273281c184ce241facc5805f3407 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Mon, 8 Aug 2022 15:29:01 +0300
Subject: [PATCH 223/292] Fix links in the cookie consent component usage page
---
site/src/docs/components/cookie-consent/index.mdx | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/index.mdx b/site/src/docs/components/cookie-consent/index.mdx
index e21bb4c744..f2b653ad24 100644
--- a/site/src/docs/components/cookie-consent/index.mdx
+++ b/site/src/docs/components/cookie-consent/index.mdx
@@ -4,18 +4,18 @@ title: 'CookieConsent'
navTitle: 'CookieConsent'
---
-import { Link } from 'hds-react';
+import { withPrefix } from 'gatsby';
import TabsLayout from './tabs.mdx';
export default ({ children, pageContext }) => {children};
## Usage
-This documentation page is about HDS CookieCompliance component. If you are looking for documentation about cookies in general, please refer to HDS cookie pattern documentation page.
+This documentation page is about HDS CookieCompliance component. If you are looking for documentation about cookies in general, please refer to [HDS cookie pattern documentation page](/patterns/cookies/basics).
### Example
-View modal example in Storybook
+View modal example in Storybook
### Principles
- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search engine).
@@ -31,9 +31,9 @@ This documentation page is about HDS CookieCompliance component. If you are look
### Modal
The default banner variant opens at the bottom of the viewport. It is opened if the consent for cookies has not been given or if the cookies have changed. The banner can be expanded to view and change cookie settings.
-View modal example in Storybook
+View modal example in Storybook
### Rendered on a page
The cookie consent expanded settings page can be rendered as a separate page. This is used to create a cookie page that the user can access via a link in the [Footer](/components/footer) element. This allows the user to view or edit cookie settings after the initial consent has been given.
-View page example in Storybook
+View page example in Storybook
From c33d8a335958042f3999890a77939b030cbd3aa7 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Mon, 8 Aug 2022 15:50:32 +0300
Subject: [PATCH 224/292] Fix links in the cookie consent component code page
---
site/src/docs/components/cookie-consent/code.mdx | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
index 1b7145a714..50b1df49c2 100644
--- a/site/src/docs/components/cookie-consent/code.mdx
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -3,8 +3,7 @@ slug: '/components/cookie-consent/code'
title: 'CookieConsent - Code'
---
-import { Link } from 'hds-react';
-import Playground from '../../../components/Playground';
+import { withPrefix } from 'gatsby';
import TabsLayout from './tabs.mdx';
export default ({ children, pageContext }) => {children};
@@ -64,7 +63,7 @@ export const SimpleModalVersion = () => {
};
```
-View working modal demo in Storybook
+View working modal demo in Storybook
### Rendered on a page
@@ -100,16 +99,16 @@ export const PageVersion = () => {
};
```
-View working page example in Storybook
+View working page example in Storybook
### Packages
| Package | Included | Storybook link | Source link |
| ----------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------- |
-| **HDS React** | Yes | View in Storybook | View source |
+| **HDS React** | Yes | View in Storybook | View source |
| **HDS Core** | No | - | - |
### Properties
-Note! You can find the full list of properties in the React Storybook.
+Note! You can find the full list of properties in the React Storybook.
Also, note that this component is an input. All features supported by the HDS TextInput are also supported by this component. See [TextInput documentation page](/components/text-input) for more information.
From e4d30d8df40b357aa8f7a17e3d6b4d56695711da Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Mon, 8 Aug 2022 16:02:50 +0300
Subject: [PATCH 225/292] Use external in links to github
---
site/src/docs/components/cookie-consent/code.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
index 50b1df49c2..d762373ad4 100644
--- a/site/src/docs/components/cookie-consent/code.mdx
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -104,7 +104,7 @@ export const PageVersion = () => {
### Packages
| Package | Included | Storybook link | Source link |
| ----------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------- |
-| **HDS React** | Yes | View in Storybook | View source |
+| **HDS React** | Yes | View in Storybook | View source |
| **HDS Core** | No | - | - |
### Properties
From 4b8e55fd2b729f499a65e33731ea6a1b76fc83c9 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Mon, 8 Aug 2022 16:25:26 +0300
Subject: [PATCH 226/292] Remove faulty reference to hds text input component
---
site/src/docs/components/cookie-consent/code.mdx | 2 --
1 file changed, 2 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
index d762373ad4..b4f4970191 100644
--- a/site/src/docs/components/cookie-consent/code.mdx
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -110,8 +110,6 @@ export const PageVersion = () => {
### Properties
Note! You can find the full list of properties in the React Storybook.
-Also, note that this component is an input. All features supported by the HDS TextInput are also supported by this component. See [TextInput documentation page](/components/text-input) for more information.
-
| Property | Description | Values | Default value |
| ------------------------------------------------ | -------------------------------------------------------------- | -------------------------------------------- | ----------------------------------------------- |
| `helperText` | Helper text to be displayed below the input. | `string` | - |
From 8828002125d9b41a702660a4a4b64863098c993f Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Mon, 8 Aug 2022 16:49:52 +0300
Subject: [PATCH 227/292] Add missing properties and link to API tab for more
info
---
site/src/docs/components/cookie-consent/code.mdx | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
index b4f4970191..75e5fbf970 100644
--- a/site/src/docs/components/cookie-consent/code.mdx
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -109,8 +109,9 @@ export const PageVersion = () => {
### Properties
Note! You can find the full list of properties in the React Storybook.
+Also, you can find a detailed description of the `contentSource` property in the [API tab](/components/cookie-consent/api).
-| Property | Description | Values | Default value |
-| ------------------------------------------------ | -------------------------------------------------------------- | -------------------------------------------- | ----------------------------------------------- |
-| `helperText` | Helper text to be displayed below the input. | `string` | - |
-
+| Property | Description | Values | Default value |
+| --------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------- | ----------------------------------------------- |
+| `contentSource` | Main configurations of the Cookie Consent. | `object` | - |
+| `cookieDomain` | A string representing the domain of the cookie. | `string` | Default value is the current domain |
From 666d8592e6c80b6640c011f672c5aa3270da89e6 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Mon, 8 Aug 2022 17:13:11 +0300
Subject: [PATCH 228/292] Fix vertical alignment of included icon and text
---
site/src/docs/components/cookie-consent/code.mdx | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
index 75e5fbf970..4d68a7b2db 100644
--- a/site/src/docs/components/cookie-consent/code.mdx
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -102,10 +102,10 @@ export const PageVersion = () => {
View working page example in Storybook
### Packages
-| Package | Included | Storybook link | Source link |
-| ----------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------- |
-| **HDS React** | Yes | View in Storybook | View source |
-| **HDS Core** | No | - | - |
+| Package | Included | Storybook link | Source link |
+| ----------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| **HDS React** |
| - | - |
### Properties
Note! You can find the full list of properties in the React Storybook.
From 0ba3f16e6f52fb88ded3ff18d76084b64dfdabd0 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Mon, 8 Aug 2022 18:25:26 +0300
Subject: [PATCH 230/292] Fix links in the cookie consent api page
---
site/src/docs/components/cookie-consent/api.mdx | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/api.mdx b/site/src/docs/components/cookie-consent/api.mdx
index 72728c408f..938428bfe6 100644
--- a/site/src/docs/components/cookie-consent/api.mdx
+++ b/site/src/docs/components/cookie-consent/api.mdx
@@ -3,6 +3,7 @@ slug: '/components/cookie-consent/api'
title: 'CookieConsent - API'
---
+import { withPrefix } from 'gatsby';
import TabsLayout from './tabs.mdx';
export default ({ children, pageContext }) => {children};
@@ -11,7 +12,7 @@ export default ({ children, pageContext }) => HDS-provided content file. The file contains all user interface strings, language options, descriptions for common cookie groups, and details about common Helsinki cookies. By default, this content file is used. You can also override parts of it and add your project-specific groups and cookies.
+Common texts, groups and cookie data can be found in HDS-provided content file. The file contains all user interface strings, language options, descriptions for common cookie groups, and details about common Helsinki cookies. By default, this content file is used. You can also override parts of it and add your project-specific groups and cookies.
#### ContentSource
The `contentSource` property lists all content, language options, and callbacks for the component. The given source is merged with the default `content.json` to create a content-object.
@@ -33,7 +34,7 @@ The `contentSource` property lists all content, language options, and callbacks
[Table 1:ContentSource object properties]|
##### ContentSource examples
-You can find examples of ContentSource property contents in the HDS CookieConsent Storybook examples (FIX LINK).
+You can find examples of ContentSource property contents in the HDS CookieConsent Storybook examples.
#### CookieDomain
Rarely used. Cookie consents are stored to a cookie whose domain is automatically set to accept subdomains: *.hel.fi or *.hel.ninja or *.domain.com. Some sites are included in the public suffix list and cookies for those sites cannot accept subdomain cookies. Github.io is one of those sites and HDS examples do not work there unless the cookie domain can be overridden. Therefore `cookieDomain` was added.
From ae3c8e3d2fac646e6f35696866ed07fc6e2853f9 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Mon, 8 Aug 2022 19:44:59 +0300
Subject: [PATCH 231/292] Improvements to cookie consent documentation api page
---
.../docs/components/cookie-consent/api.mdx | 46 +++++++++----------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/api.mdx b/site/src/docs/components/cookie-consent/api.mdx
index 938428bfe6..068f903537 100644
--- a/site/src/docs/components/cookie-consent/api.mdx
+++ b/site/src/docs/components/cookie-consent/api.mdx
@@ -21,10 +21,10 @@ The `contentSource` property lists all content, language options, and callbacks
| -------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `siteName` | **Yes** | Cookie consent main heading. |
| `currentLanguage` | **Yes** | Currently selected language. Used for picking translations from `content.json`. Is also set to `content.language.current`. Supported values are `fi`, `sv`, and `en`. |
-| `requiredCookies` | No | Required cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table. |
-| `optionalCookies` | No | Optional cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table. |
-| `requiredConsents.groups`, `optionalConsents.groups` | No | List of cookie groups. All cookies must belong to a group. Groups with property `commonGroup` will be auto-filled from `content.json`. |
-| `requiredConsents.groups[].cookies`, `requiredConsents.cookies`, `optionalConsents.groups[].cookies`, `optionalConsents.cookies` | No | List of individual cookies. All cookies must belong to a group or they must have `propertycommonGroup` or `groupId`. The `groupId` must match `group.id` of a custom group and the `commonGroup` must match groups in `content.json`. Do not give both. |
+| `requiredCookies` | No | Required cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table: [Required and optional cookies](/components/cookie-consent/api#required-and-optional-cookies) |
+| `optionalCookies` | No | Optional cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table: [Required and optional cookies](/components/cookie-consent/api#required-and-optional-cookies) |
+| `requiredCookies.groups`, `optionalCookies.groups` | No | List of cookie groups. All cookies must belong to a group. Groups with property `commonGroup` will be auto-filled from `content.json`. |
+| `requiredCookies.groups[].cookies`, `requiredCookies.cookies`, `optionalCookies.groups[].cookies`, `optionalCookies.cookies` | No | List of individual cookies. All cookies must belong to a group or they must have property `commonGroup` or `groupId`. The `groupId` must match `group.id` of a custom group and the `commonGroup` must match groups in `content.json`. Do not give both. |
| `texts` | No | User interface string overrides. By default, strings are fetched from `content.json` and this object overrides one or multiple texts. |
| `language` | No | Overrides for default language options. By default, options are fetched from `content.json` and this object overrides one or more properties. `onLanguageChange` callback is also added here. |
| `onAllConsentsGiven` | No | See Callbacks section below. |
@@ -41,17 +41,17 @@ Rarely used. Cookie consents are stored to a cookie whose domain is automaticall
#### Detailed info about properties
-##### Required and optional cookie categories
-
-| Property | Description |
-| --------------------------- | --------------------------------------------------------- |
-| `requiredConsents` | List of required consents and their descriptions. |
-| `optionalConsents` | List of optional consents and their descriptions. |
-| `*.title` | Title for the consent group. |
-| `*.text` | Description for the consent group. |
-| `*.checkboxAriaDescription` | Aria description of the checkbox shown with the category. |
-| `*.groups` | Optional list of groups. More info is below. |
-| `*.cookies` | Optional list of cookies. More info is below. |
+##### Required and optional cookies
+
+| Property | Description |
+| --------------------------- | -------------------------------------------------------------------------------------------------------------------- |
+| `requiredCookies` | List of required consents and their descriptions. |
+| `optionalCookies` | List of optional consents and their descriptions. |
+| `*.title` | Title for the consent group. Optional. |
+| `*.text` | Description for the consent group. Optional. |
+| `*.checkboxAriaDescription` | Aria description of the checkbox shown with the category. Optional. |
+| `*.groups` | Optional list of groups. More info is below: [Cookie groups](/components/cookie-consent/api#cookie-groups) |
+| `*.cookies` | Optional list of cookies. More info is below: [Cookie information](/components/cookie-consent/api#cookie-information) |
[Table 2:Cookie category properties]|
##### Cookie groups
@@ -80,7 +80,7 @@ Rarely used. Cookie consents are stored to a cookie whose domain is automaticall
[Table 4:Cookie information properties]|
##### Callbacks
-The `content` object passed to the component can also include callback functions:
+The `contentSource` object passed to the component can also include callback functions:
| Property | Usage | Arguments |
| -------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -109,12 +109,12 @@ The following strings can be overridden if needed. Note that you also need to pr
| `ui.readMore` | Text shown on a button when modal loses focus and is shrunk. |
[Table 7:User interface string overrides]|
-| Property | Description |
-| --------------------------- | ----------------------------------------------------------- |
-| `tableHeadings.name` | Title of the “hostname” column in the cookie description. |
-| `tableHeadings.hostName` | Title of the “path” column in the cookie description. |
-| `tableHeadings.description` | Title of the “expiration” column in the cookie description. |
-| `tableHeadings.expiration` | Title of the “name” column in the cookie description. |
+| Property | Description |
+| --------------------------- | ------------------------------------------------------------ |
+| `tableHeadings.name` | Title of the “name” column in the cookie description. |
+| `tableHeadings.hostName` | Title of the “hostName” column in the cookie description. |
+| `tableHeadings.description` | Title of the “description” column in the cookie description. |
+| `tableHeadings.expiration` | Title of the “expiration” column in the cookie description. |
[Table 8:Table heading string overrides]|
The consent banner language is controlled via a language dropdown element. Note that the current language is passed in as `content.currentLanguage` and that value is stored into `language.current`.
@@ -133,4 +133,4 @@ Consents that the user has given are saved to a `city-of-helsinki-cookie-consent
Cookies are always strings and consents are stored as a JSON-formatted string such as `{"cookie-id":"true","another-cookie-id":"false"}`.
-The ID of the cookie is stored to `cookie.id`. `True` means the user has given consent for that cookie. All required cookies are always stored `true` But other sites may list a common cookie optional, so the stored consent is not `true` by default.
+The ID of the cookie is stored to `cookie.id`. `True` means the user has given consent for that cookie. All required cookies are always stored `true`, but other sites may list a common cookie optional, so the stored consent is not `true` by default.
From a8a88e724b121d10186392f50447d670de026785 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Tue, 9 Aug 2022 00:22:38 +0300
Subject: [PATCH 232/292] Add CookieConsent to components overview page
---
site/src/components/ComponentsList.js | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/site/src/components/ComponentsList.js b/site/src/components/ComponentsList.js
index 6951276f13..4467f24ad2 100644
--- a/site/src/components/ComponentsList.js
+++ b/site/src/components/ComponentsList.js
@@ -32,6 +32,13 @@ const ComponentsList = () => {
linkAriaLabel: 'Go to the Checkbox component page',
href: '/components/checkbox',
},
+ {
+ name: 'CookieConsent',
+ text: 'The cookie compliance components informs users about cookie usage.',
+ linkboxAriaLabel: 'CookieConsent components',
+ linkAriaLabel: 'Go to the CookieConsent components page',
+ href: '/components/cookie-consent',
+ },
{
name: 'DateInput',
text: 'Date input allows the user to easily input a specific date or a date range. ',
From d2e84d07835b1224542d7e1454d640c9e62ccb39 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Tue, 9 Aug 2022 15:39:04 +0300
Subject: [PATCH 233/292] Fix links in demo environment for cookie pattern
basics page
---
site/src/docs/patterns/cookies/basics.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/site/src/docs/patterns/cookies/basics.mdx b/site/src/docs/patterns/cookies/basics.mdx
index f62c54e773..b0223552f0 100644
--- a/site/src/docs/patterns/cookies/basics.mdx
+++ b/site/src/docs/patterns/cookies/basics.mdx
@@ -67,7 +67,7 @@ For each cookie, you need to gather and display the following information. This
#### What if the user has given consent to my cookies in some other Helsinki service?
-Using common Helsinki cookie consent brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B. Sites sharing cookies must have the same domain. e.g. *.hel.fi. To learn more about common Helsinki service cookies, please refer to the Common Helsinki cookies page.
+Using common Helsinki cookie consent brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B. Sites sharing cookies must have the same domain. e.g. *.hel.fi. To learn more about common Helsinki service cookies, please refer to the [Common Helsinki cookies page](/patterns/cookies/common-helsinki-cookies).
### 2. Decide which cookies are necessary
@@ -111,4 +111,4 @@ Yes, cookies always have to be put into a category. If you have a small number o
### Prepare your CookieConsent component
-Now that you have gathered and categorised a list of cookies for your service, it is a time to learn how the HDS CookieConsent is used. To read more about the component, please refer to the Using the CookieConsent page.
+Now that you have gathered and categorised a list of cookies for your service, it is a time to learn how the HDS CookieConsent is used. To read more about the component, please refer to the [Using the CookieConsent page](/patterns/cookies/using-the-cookieconsent).
From 02673ab3462c17699ad65dbd021e99d5dba05a25 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Tue, 9 Aug 2022 16:02:32 +0300
Subject: [PATCH 234/292] Small improvements to cookie pattern basics page
---
site/src/docs/patterns/cookies/basics.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/site/src/docs/patterns/cookies/basics.mdx b/site/src/docs/patterns/cookies/basics.mdx
index b0223552f0..aa279a0617 100644
--- a/site/src/docs/patterns/cookies/basics.mdx
+++ b/site/src/docs/patterns/cookies/basics.mdx
@@ -42,7 +42,7 @@ Refer to the next chapter to learn how to categorise your cookies and decide whi
## Cookie information and categorisation
-The cookie consent needs to be asked when your service becomes public (even during alpha/beta periods). [Service under Hel.fi? / Service on its own?]
+The cookie consent needs to be asked when your service becomes public (even during alpha/beta periods).
To prepare to use the HDS cookie compliance component, you have to:
1. List all the cookies related to your service
@@ -109,6 +109,6 @@ If your cookies do not fit into any of the pre-defined categories, you are allow
Yes, cookies always have to be put into a category. If you have a small number of cookies you can consider grouping them into a single category. Also, if most of the cookies are related to a single third-party service, you can group them per service (E.g. "Service: YouTube").
-### Prepare your CookieConsent component
+### Prepare your CookieConsent (CookieModal/CookiePage) component
Now that you have gathered and categorised a list of cookies for your service, it is a time to learn how the HDS CookieConsent is used. To read more about the component, please refer to the [Using the CookieConsent page](/patterns/cookies/using-the-cookieconsent).
From 340508f413cda13cd969350ddf6a50e3bba1af75 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Tue, 9 Aug 2022 16:17:04 +0300
Subject: [PATCH 235/292] Use hds design token
---
.../src/components/cookieConsent/CookieConsent.module.scss | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.module.scss b/packages/react/src/components/cookieConsent/CookieConsent.module.scss
index 7a6fcf6d3d..384fd91570 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.module.scss
+++ b/packages/react/src/components/cookieConsent/CookieConsent.module.scss
@@ -17,7 +17,7 @@
overflow-y: auto;
max-height: 80vh;
border-top: 8px solid var(--color-bus);
- background: #ffffff;
+ background: var(--color-white);
}
.container .aligner {
From 1f48e9b946ba30b1e88b5ca29b041de8b37388c8 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Tue, 9 Aug 2022 16:40:44 +0300
Subject: [PATCH 236/292] Fix links in demo environment for the using
cookieconsent page
---
site/src/docs/patterns/cookies/using-the-cookieconsent.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
index 140987412c..47e6d92aa5 100644
--- a/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
+++ b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
@@ -16,9 +16,9 @@ import Image from '../../../components/Image';
HDS offers a consistent way of informing the user about cookies and, if needed, asking for consent. The CookieConsent component is used for this. This page describes how the component is used.
-If you are looking for technical documentation about the CookieConsent component, please refer to the component page.
+If you are looking for technical documentation about the CookieConsent component, please refer to [the component page](/components/cookie-consent).
-If you are looking for an explanation about gathering and categorising cookies, please refer to the Cookie basics page.
+If you are looking for an explanation about gathering and categorising cookies, please refer to [the Cookie basics page](/patterns/cookies/basics).
## Principles
From 1614c7fc50465cbda92d88cc7f73869a286e3545 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Tue, 9 Aug 2022 16:45:59 +0300
Subject: [PATCH 237/292] Fix link in pattern common helsinki cookies page
---
site/src/docs/patterns/cookies/common-helsinki-cookies.mdx | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx b/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
index 7664c5745b..d4563d7fc4 100644
--- a/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
+++ b/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
@@ -4,9 +4,8 @@ title: 'Common Helsinki cookies'
navTitle: 'Common Helsinki cookies'
---
-import { Link, StatusLabel } from 'hds-react';
+import { StatusLabel } from 'hds-react';
import LeadParagraph from '../../../components/LeadParagraph';
-import Image from '../../../components/Image';
# Common Helsinki cookies
@@ -25,7 +24,7 @@ import Image from '../../../components/Image';
- Note, that some of the services (e.g. Matomo) may require multiple common cookies for it to work.
## Common cookies between *.hel.fi sites
-The following is a list of approved common cookies between services using *.hel.fi domain. You can find this list as a JSON object in the Helsinki Design System GitHub repository.
+The following is a list of approved common cookies between services using *.hel.fi domain. You can find this list as a JSON object in the Helsinki Design System GitHub repository.
### General
General cookies are part of the **Preferences** category.
From d7f753117181cbbc6d1c08c0f409b55c306c6427 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Tue, 9 Aug 2022 20:30:37 +0300
Subject: [PATCH 238/292] Add some focus styles to cookie consent app header
---
packages/react/.storybook/index.css | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/packages/react/.storybook/index.css b/packages/react/.storybook/index.css
index ab0d069012..2d235381fe 100644
--- a/packages/react/.storybook/index.css
+++ b/packages/react/.storybook/index.css
@@ -125,3 +125,7 @@ body {
.stepper-card > div:first-child {
margin-bottom: var(--spacing-m) !important;
}
+
+#focused-element-after-cookie-consent-closed:focus {
+ outline: 2px black solid;
+}
From 1f439f6de28bcd836b7f5e7741958db39297a1ce Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Tue, 9 Aug 2022 20:32:20 +0300
Subject: [PATCH 239/292] Fix a bug where esc key event listener remained even
modal was closed
---
.../cookieConsent/CookieConsentContext.tsx | 2 +-
.../components/cookieConsent/modal/Modal.tsx | 19 ++++++++++++++++---
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsentContext.tsx b/packages/react/src/components/cookieConsent/CookieConsentContext.tsx
index ce02394636..c03f201200 100644
--- a/packages/react/src/components/cookieConsent/CookieConsentContext.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsentContext.tsx
@@ -107,7 +107,7 @@ export const getConsentsFromCookieGroup = (groups: CookieGroup[]): ConsentList =
}, []);
};
-const forceFocusToElement = (elementSelector: string): void => {
+export const forceFocusToElement = (elementSelector: string): void => {
const focusTarget = document.querySelector(elementSelector) as HTMLElement;
if (focusTarget && focusTarget.focus) {
focusTarget.focus();
diff --git a/packages/react/src/components/cookieConsent/modal/Modal.tsx b/packages/react/src/components/cookieConsent/modal/Modal.tsx
index d02b022de5..e61951ee35 100644
--- a/packages/react/src/components/cookieConsent/modal/Modal.tsx
+++ b/packages/react/src/components/cookieConsent/modal/Modal.tsx
@@ -4,9 +4,8 @@ import { VisuallyHidden } from '@react-aria/visually-hidden';
import classNames from '../../../utils/classNames';
import styles from '../CookieConsent.module.scss';
-import { CookieConsentContext, useCookieConsentUiTexts, useFocusShift } from '../CookieConsentContext';
+import { CookieConsentContext, forceFocusToElement, useCookieConsentUiTexts } from '../CookieConsentContext';
import { Content } from '../content/Content';
-import { useEscKey } from '../useEscKey';
export function Modal(): React.ReactElement | null {
const cookieConsentContext = useContext(CookieConsentContext);
@@ -45,7 +44,21 @@ export function Modal(): React.ReactElement | null {
}
}, [shouldShowModal, isDomReady, setIsDomReady]);
- useEscKey(useFocusShift());
+ // focus target selector on esc key press
+ useEffect(() => {
+ const handleEscKey = (event: KeyboardEvent) => {
+ const key = event.key || event.keyCode;
+ if (key === 'Escape' || key === 'Esc' || key === 27) {
+ forceFocusToElement(cookieConsentContext.content.focusTargetSelector);
+ }
+ };
+ if (isDomReady) {
+ document.addEventListener('keyup', handleEscKey);
+ }
+ return () => {
+ document.removeEventListener('keyup', handleEscKey);
+ };
+ }, [isDomReady]);
if (showScreenReaderSaveNotification) {
return (
From bc2147f2a7ab599a0407a0f69a998b634e5c8c34 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 17 Aug 2022 13:25:46 +0300
Subject: [PATCH 240/292] Renamed context.countApprovedOptional to
getApprovalPercentageForOptional
---
.../src/components/cookieConsent/CookieConsentContext.tsx | 8 ++++----
.../src/components/cookieConsent/category/Category.tsx | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsentContext.tsx b/packages/react/src/components/cookieConsent/CookieConsentContext.tsx
index c03f201200..286309f87c 100644
--- a/packages/react/src/components/cookieConsent/CookieConsentContext.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsentContext.tsx
@@ -70,7 +70,7 @@ export type CookieConsentContextType = {
hasUserHandledAllConsents: () => boolean;
content: Content;
onAction: CookieConsentActionListener;
- countApprovedOptional: () => number;
+ getApprovalPercentageForOptional: () => number;
areGroupConsentsApproved: (consents: CookieData[]) => boolean;
};
@@ -94,7 +94,7 @@ export const CookieConsentContext = createContext({
hasUserHandledAllConsents: () => false,
content: {} as Content,
onAction: () => undefined,
- countApprovedOptional: () => 0,
+ getApprovalPercentageForOptional: () => 0,
areGroupConsentsApproved: () => false,
});
@@ -202,7 +202,7 @@ export const Provider = ({ cookieDomain, children, contentSource }: CookieConsen
reRender();
};
- const countApprovedOptional: CookieConsentContextType['countApprovedOptional'] = () => {
+ const getApprovalPercentageForOptional: CookieConsentContextType['getApprovalPercentageForOptional'] = () => {
let counter = 0;
let approved = 0;
Object.values(consentController.getOptional()).forEach((isApproved) => {
@@ -225,7 +225,7 @@ export const Provider = ({ cookieDomain, children, contentSource }: CookieConsen
hasUserHandledAllConsents,
content,
onAction,
- countApprovedOptional,
+ getApprovalPercentageForOptional,
areGroupConsentsApproved,
};
if (content.onConsentsParsed) {
diff --git a/packages/react/src/components/cookieConsent/category/Category.tsx b/packages/react/src/components/cookieConsent/category/Category.tsx
index 7c58fb6abb..4167ed9edf 100644
--- a/packages/react/src/components/cookieConsent/category/Category.tsx
+++ b/packages/react/src/components/cookieConsent/category/Category.tsx
@@ -13,7 +13,7 @@ export function Category(props: { category?: CategoryType; isRequired?: boolean
if (!category) {
return null;
}
- const selectPercentage = cookieConsentContext.countApprovedOptional();
+ const selectPercentage = cookieConsentContext.getApprovalPercentageForOptional();
const allApproved = isRequired || selectPercentage === 1;
const { title, text, groups, checkboxAriaDescription } = category;
const checked = isRequired || allApproved;
From 16234aa3b70caf72c174be47778c0c20f0aa9ca3 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 17 Aug 2022 13:27:44 +0300
Subject: [PATCH 241/292] Group exported and not exported functions
---
.../cookieConsent/cookieConsentController.ts | 36 +++++++++----------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/cookieConsentController.ts b/packages/react/src/components/cookieConsent/cookieConsentController.ts
index a287e59acb..be65eb9c11 100644
--- a/packages/react/src/components/cookieConsent/cookieConsentController.ts
+++ b/packages/react/src/components/cookieConsent/cookieConsentController.ts
@@ -47,6 +47,24 @@ function mergeConsents(set1: ConsentObject, set2: ConsentObject, set3?: ConsentO
return { ...set1, ...set2, ...set3 };
}
+function createConsentsString(consents: ConsentObject): string {
+ if (!_isObject(consents)) {
+ return '{}';
+ }
+ return JSON.stringify(consents);
+}
+
+function verifyConsentProps({ optionalConsents, requiredConsents }: ConsentControllerProps) {
+ if (!requiredConsents || !optionalConsents) {
+ return;
+ }
+ requiredConsents.forEach((consent) => {
+ if (optionalConsents.includes(consent)) {
+ throw new Error(`optional consent '${consent}' found in requiredConsents.`);
+ }
+ });
+}
+
export function parseConsents(jsonString: string | undefined): ConsentObject {
if (!jsonString || jsonString.length < 2 || jsonString.charAt(0) !== '{') {
return {};
@@ -58,13 +76,6 @@ export function parseConsents(jsonString: string | undefined): ConsentObject {
}
}
-function createConsentsString(consents: ConsentObject): string {
- if (!_isObject(consents)) {
- return '{}';
- }
- return JSON.stringify(consents);
-}
-
export const getCookieDomainFromUrl = (): string => {
if (typeof window === 'undefined') {
return '';
@@ -142,17 +153,6 @@ export function createStorage(
};
}
-function verifyConsentProps({ optionalConsents, requiredConsents }: ConsentControllerProps) {
- if (!requiredConsents || !optionalConsents) {
- return;
- }
- requiredConsents.forEach((consent) => {
- if (optionalConsents.includes(consent)) {
- throw new Error(`optional consent '${consent}' found in requiredConsents.`);
- }
- });
-}
-
export default function createConsentController(props: ConsentControllerProps): ConsentController {
verifyConsentProps(props);
const { optionalConsents = [], requiredConsents = [] } = props;
From f76ab07225318bc68e22b761b47521fa1ee38938 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 17 Aug 2022 13:29:07 +0300
Subject: [PATCH 242/292] Export and rename return type of useCookies
---
packages/react/src/components/cookieConsent/useCookies.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/useCookies.ts b/packages/react/src/components/cookieConsent/useCookies.ts
index ba9380edc8..1a9fc65350 100644
--- a/packages/react/src/components/cookieConsent/useCookies.ts
+++ b/packages/react/src/components/cookieConsent/useCookies.ts
@@ -3,12 +3,12 @@ import { useMemo } from 'react';
import { ConsentObject, COOKIE_NAME, getCookieDomainFromUrl, parseConsents } from './cookieConsentController';
import { createCookieController } from './cookieController';
-type ReturnType = {
+export type UseCookiesHookReturnType = {
getAllConsents: () => ConsentObject;
getCookie: () => string;
};
-export function useCookies(props?: { cookieDomain?: string; cookieName?: string }): ReturnType {
+export function useCookies(props?: { cookieDomain?: string; cookieName?: string }): UseCookiesHookReturnType {
const { cookieDomain, cookieName } = props || {};
const getters = useMemo(() => {
const cookieController = createCookieController(
From 5d78795f122bf7d0021217b17dfc64ed55cb5114 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 17 Aug 2022 13:33:31 +0300
Subject: [PATCH 243/292] Removed unused useCallback dependency
---
.../src/components/cookieConsent/content/Content.tsx | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/content/Content.tsx b/packages/react/src/components/cookieConsent/content/Content.tsx
index 7ecd8d70f3..76729724bd 100644
--- a/packages/react/src/components/cookieConsent/content/Content.tsx
+++ b/packages/react/src/components/cookieConsent/content/Content.tsx
@@ -6,11 +6,7 @@ import { useAccordion } from '../../accordion';
import { Details } from '../details/Details';
import styles from '../CookieConsent.module.scss';
import { Card } from '../../card/Card';
-import {
- useCookieConsentLanguage,
- useCookieConsentSectionTexts,
- useCookieConsentUiTexts,
-} from '../CookieConsentContext';
+import { useCookieConsentSectionTexts, useCookieConsentUiTexts } from '../CookieConsentContext';
import { LanguageSwitcher } from '../languageSwitcher/LanguageSwitcher';
import classNames from '../../../utils/classNames';
import { useEscKey } from '../useEscKey';
@@ -21,7 +17,6 @@ export function Content(): React.ReactElement {
});
const { hideSettings, showSettings, readMore } = useCookieConsentUiTexts();
const { title, text } = useCookieConsentSectionTexts('main');
- const { current: currentLanguage } = useCookieConsentLanguage();
const titleRef = useRef();
const Icon = isOpen ? IconAngleUp : IconAngleDown;
const settingsButtonText = isOpen ? hideSettings : showSettings;
@@ -38,7 +33,7 @@ export function Content(): React.ReactElement {
if (titleRef.current) {
titleRef.current.focus();
}
- }, [titleRef, currentLanguage]);
+ }, [titleRef]);
useEffect(() => {
setFocusToTitle();
From cc247bc0b3264dee309716796518465f584f8db3 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 17 Aug 2022 13:34:15 +0300
Subject: [PATCH 244/292] Added a useCallback dependency to Modal.tsx
---
packages/react/src/components/cookieConsent/modal/Modal.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/react/src/components/cookieConsent/modal/Modal.tsx b/packages/react/src/components/cookieConsent/modal/Modal.tsx
index e61951ee35..ddc3c09534 100644
--- a/packages/react/src/components/cookieConsent/modal/Modal.tsx
+++ b/packages/react/src/components/cookieConsent/modal/Modal.tsx
@@ -58,7 +58,7 @@ export function Modal(): React.ReactElement | null {
return () => {
document.removeEventListener('keyup', handleEscKey);
};
- }, [isDomReady]);
+ }, [isDomReady, cookieConsentContext.content.focusTargetSelector]);
if (showScreenReaderSaveNotification) {
return (
From 4c4419dd5e85609500a87290d0b60dfc32bab354 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 7 Sep 2022 12:42:10 +0300
Subject: [PATCH 245/292] Added translations for aria-labels and common cookies
Changed stories to show all common categories and cookies.
---
.../cookieConsent/CookieConsent.stories.tsx | 343 +++++++++++++++++-
.../src/components/cookieConsent/content.json | 318 ++++++++--------
2 files changed, 488 insertions(+), 173 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
index 038464b441..d489881053 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
@@ -34,21 +34,60 @@ export const ModalVersion = (args) => {
requiredCookies: {
groups: [
{
- commonGroup: 'essential',
+ commonGroup: 'login',
cookies: [
{
commonCookie: 'tunnistamo',
},
+ {
+ commonCookie: 'keycloak',
+ },
+ ],
+ },
+ {
+ commonGroup: 'essential',
+ cookies: [
+ {
+ commonCookie: 'cms-session',
+ },
+ ],
+ },
+ {
+ commonGroup: 'loadBalancing',
+ cookies: [
{
id: 'loadbalancer',
- name: 'Load balancer',
- hostName: 'Host name',
+ name: 'Loadbalancer Cookie',
+ hostName: 'CDN site',
description:
'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
expiration: '1h',
},
+ ],
+ },
+ {
+ commonGroup: 'accessibility',
+ cookies: [
{
- commonCookie: 'language-i18n',
+ id: 'accessibility',
+ name: 'Accessibility cookie',
+ hostName: 'CDN site',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'userInputs',
+ cookies: [
+ {
+ id: 'userInputs',
+ name: 'User inputs cookie',
+ hostName: 'CDN site',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
},
],
},
@@ -60,7 +99,12 @@ export const ModalVersion = (args) => {
commonGroup: 'marketing',
cookies: [
{
- commonCookie: 'marketing',
+ id: 'marketing',
+ name: 'Custom Marketing cookie',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
},
],
},
@@ -99,6 +143,9 @@ export const ModalVersion = (args) => {
{
commonCookie: 'matomo',
},
+ {
+ commonCookie: 'cookiehub',
+ },
{
id: 'someOtherConsent',
name: 'Other consent',
@@ -109,6 +156,97 @@ export const ModalVersion = (args) => {
},
],
},
+ {
+ commonGroup: 'location',
+ cookies: [
+ {
+ id: 'location',
+ name: 'Location consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'content',
+ cookies: [
+ {
+ id: 'content',
+ name: 'Content consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'thirdParty',
+ cookies: [
+ {
+ id: 'thirdParty',
+ name: 'ThirdParty consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'chat',
+ cookies: [
+ {
+ id: 'chat',
+ name: 'Chat consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'deviceInfo',
+ cookies: [
+ {
+ id: 'deviceInfo',
+ name: 'Device info consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'socialMedia',
+ cookies: [
+ {
+ id: 'socialMedia',
+ name: 'Social media consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'informationSecurity',
+ cookies: [
+ {
+ id: 'informationSecurity',
+ name: 'Information security consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
],
},
@@ -197,21 +335,60 @@ export const FinnishModalVersion = (args) => {
requiredCookies: {
groups: [
{
- commonGroup: 'essential',
+ commonGroup: 'login',
cookies: [
{
commonCookie: 'tunnistamo',
},
+ {
+ commonCookie: 'keycloak',
+ },
+ ],
+ },
+ {
+ commonGroup: 'essential',
+ cookies: [
+ {
+ commonCookie: 'cms-session',
+ },
+ ],
+ },
+ {
+ commonGroup: 'loadBalancing',
+ cookies: [
{
id: 'loadbalancer',
- name: 'loadbalancercookie',
+ name: 'Loadbalancer Cookie',
hostName: 'CDN site',
description:
'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
expiration: '1h',
},
+ ],
+ },
+ {
+ commonGroup: 'accessibility',
+ cookies: [
{
- commonCookie: 'language-i18n',
+ id: 'accessibility',
+ name: 'Accessibility cookie',
+ hostName: 'CDN site',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'userInputs',
+ cookies: [
+ {
+ id: 'userInputs',
+ name: 'User inputs cookie',
+ hostName: 'CDN site',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
},
],
},
@@ -223,7 +400,41 @@ export const FinnishModalVersion = (args) => {
commonGroup: 'marketing',
cookies: [
{
- commonCookie: 'marketing',
+ id: 'marketing',
+ name: 'Custom Marketing cookie',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'preferences',
+ cookies: [
+ {
+ id: 'preferences1',
+ name: 'Preference 1',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ {
+ id: 'preferences2',
+ name: 'Preference 2',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1 years',
+ },
+ {
+ id: 'preferences3',
+ name: 'Preference 3',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '2h',
},
],
},
@@ -233,10 +444,104 @@ export const FinnishModalVersion = (args) => {
{
commonCookie: 'matomo',
},
+ {
+ commonCookie: 'cookiehub',
+ },
{
id: 'someOtherConsent',
- name: 'Analytics service cookie',
- hostName: 'Analytics service',
+ name: 'Other consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'location',
+ cookies: [
+ {
+ id: 'location',
+ name: 'Location consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'content',
+ cookies: [
+ {
+ id: 'content',
+ name: 'Content consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'thirdParty',
+ cookies: [
+ {
+ id: 'thirdParty',
+ name: 'ThirdParty consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'chat',
+ cookies: [
+ {
+ id: 'chat',
+ name: 'Chat consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'deviceInfo',
+ cookies: [
+ {
+ id: 'deviceInfo',
+ name: 'Device info consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'socialMedia',
+ cookies: [
+ {
+ id: 'socialMedia',
+ name: 'Social media consent',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
+ },
+ ],
+ },
+ {
+ commonGroup: 'informationSecurity',
+ cookies: [
+ {
+ id: 'informationSecurity',
+ name: 'Information security consent',
+ hostName: 'Host name',
description:
'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
expiration: '1h',
@@ -407,7 +712,7 @@ export const PageVersion = (args) => {
expiration: '1h',
},
{
- commonCookie: 'language-i18n',
+ commonCookie: 'keycloak',
},
],
},
@@ -419,7 +724,12 @@ export const PageVersion = (args) => {
commonGroup: 'marketing',
cookies: [
{
- commonCookie: 'marketing',
+ id: 'marketing',
+ name: 'Marketing 1',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
},
],
},
@@ -531,7 +841,12 @@ export const CustomContentVersion = (args) => {
expandAriaLabel: 'Custom expand button aria label for custom cookies group',
cookies: [
{
- commonCookie: 'marketing',
+ id: 'marketing',
+ name: 'Marketing 1',
+ hostName: 'Host name',
+ description:
+ 'Description lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus',
+ expiration: '1h',
},
],
},
diff --git a/packages/react/src/components/cookieConsent/content.json b/packages/react/src/components/cookieConsent/content.json
index d7633f4c09..1626500ded 100644
--- a/packages/react/src/components/cookieConsent/content.json
+++ b/packages/react/src/components/cookieConsent/content.json
@@ -126,21 +126,21 @@
"login": {
"fi": {
"title": "Kirjautuminen",
- "text": "Näitä eväisteitä käytetään kirjautumisessa",
- "expandAriaLabel": "Näytä kirjautumiseen littyvien evästeiden tiedot",
- "checkboxAriaDescription": "Näitä eväisteitä käytetään kirjautumisessa. Kirjautumiseen littyvien evästeiden käyttöä ei voi kieltää."
+ "text": "Kirjautumisevästeitä käytetään käytetään käyttäjän kirjautuessa palveluun.",
+ "expandAriaLabel": "Näytä kirjautumiseen liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "Kirjautumisevästeitä käytetään käytetään käyttäjän kirjautuessa palveluun."
},
"sv": {
"title": "Inloggning",
"text": "Inloggningskakor används när användaren loggar in på tjänsten.",
- "expandAriaLabel": "SV: Näytä kirjautumiseen littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Näitä eväisteitä käytetään kirjautumisessa. Kirjautumiseen littyvien evästeiden käyttöä ei voi kieltää."
+ "expandAriaLabel": "Visa information om inloggningscookies",
+ "checkboxAriaDescription": "Inloggningskakor används när användaren loggar in på tjänsten."
},
"en": {
"title": "Login",
"text": "Login cookies are used when the user logs in to the service.",
- "expandAriaLabel": "EN: Näytä kirjautumiseen littyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Näitä eväisteitä käytetään kirjautumisessa. Kirjautumiseen littyvien evästeiden käyttöä ei voi kieltää."
+ "expandAriaLabel": "Show cookie information related to login",
+ "checkboxAriaDescription": "Login cookies are used when the user logs in to the service."
}
},
"marketing": {
@@ -148,19 +148,19 @@
"title": "Mainonta ja markkinointi",
"text": "Markkinointievästeiden avulla sivuston käyttäjille voidaan kohdentaa sisältöjä.",
"expandAriaLabel": "Näytä mainontaan ja markkinointiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "Markkinointievästeillä kohdennetaan markkinointia. Hyväksy tai jätä hyväksymättä kaikki markkinointiin liittyvät evästeet"
+ "checkboxAriaDescription": "Markkinointievästeiden avulla sivuston käyttäjille voidaan kohdentaa sisältöjä."
},
"sv": {
"title": "Reklam och marknadsföring",
"text": "Med hjälp av marknadsföringskakor kan innehåll riktas till webbplatsens användare.",
- "expandAriaLabel": "SV: Näytä markkinointievästeiden tiedot",
- "checkboxAriaDescription": "SV: Markkinointievästeillä kohdennetaan markkinointia. Hyväksy tai jätä hyväksymättä kaikki markkinointiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om reklam- och marknadsföringscookies",
+ "checkboxAriaDescription": "Med hjälp av marknadsföringskakor kan innehåll riktas till webbplatsens användare."
},
"en": {
"title": "Advertising and marketing",
"text": "Marketing cookies can be used to target content to users of the website.",
- "expandAriaLabel": "EN: Näytä markkinointievästeiden tiedot",
- "checkboxAriaDescription": "EN: Markkinointievästeillä kohdennetaan markkinointia. Hyväksy tai jätä hyväksymättä kaikki markkinointiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to advertising and marketing",
+ "checkboxAriaDescription": "Marketing cookies can be used to target content to users of the website."
}
},
"preferences": {
@@ -168,19 +168,19 @@
"title": "Mieltymykset",
"text": "Mieltymysevästeet mukauttavat sivuston ulkoasua ja toimintaa käyttäjän tekemien valintojen perusteella.",
"expandAriaLabel": "Näytä mieltymyksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Mieltymysevästeet mukauttavat sivuston ulkoasua ja toimintaa käyttäjän tekemien valintojen perusteella."
},
"sv": {
"title": "Preferenser",
"text": "Preferenskakor ändrar webbplatsens utseende och funktioner enligt användarens tidigare val.",
- "expandAriaLabel": "SV: Näytä mieltymyksiin littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om preferenscookies",
+ "checkboxAriaDescription": "Preferenskakor ändrar webbplatsens utseende och funktioner enligt användarens tidigare val."
},
"en": {
"title": "Preferences",
"text": "Preference cookies customise the layout and operation of the website based on the choices made by the user.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to preferences",
+ "checkboxAriaDescription": "Preference cookies customise the layout and operation of the website based on the choices made by the user."
}
},
"userInputs": {
@@ -188,19 +188,19 @@
"title": "Käyttäjän syötteet",
"text": "Syöte-evästeillä voidaan tallentaa käyttäjän palveluun syöttämiä tietoja.",
"expandAriaLabel": "Näytä käyttäjän syötteisiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Syöte-evästeillä voidaan tallentaa käyttäjän palveluun syöttämiä tietoja."
},
"sv": {
"title": "Användarens input",
"text": "Med inputskakor kan man lagra information som användaren matar in i tjänsten.",
- "expandAriaLabel": "SV: Näytä käyttäjän syötteisiin littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om användarindatacookies",
+ "checkboxAriaDescription": "Med inputskakor kan man lagra information som användaren matar in i tjänsten."
},
"en": {
"title": "User input",
"text": "User-input cookies can be used to store information entered by the user in the service.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to the user's input",
+ "checkboxAriaDescription": "User-input cookies can be used to store information entered by the user in the service."
}
},
"informationSecurity": {
@@ -208,19 +208,19 @@
"title": "Tietoturva",
"text": "Tietoturvaevästeet mahdollistavat turvallisen tiedonsiirron käyttäjän ja palvelun välillä.",
"expandAriaLabel": "Näytä tietoturvaan liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Tietoturvaevästeet mahdollistavat turvallisen tiedonsiirron käyttäjän ja palvelun välillä."
},
"sv": {
"title": "Datasäkerhet",
"text": "Datasäkerhetskakor möjliggör en säker dataöverföring mellan användaren och tjänsten.",
- "expandAriaLabel": "SV: Näytä tietoturvaan littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om säkerhetscookies",
+ "checkboxAriaDescription": "Datasäkerhetskakor möjliggör en säker dataöverföring mellan användaren och tjänsten."
},
"en": {
"title": "Information security",
"text": "Security cookies enable secure data transfer between the user and the service.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to information security",
+ "checkboxAriaDescription": "Security cookies enable secure data transfer between the user and the service."
}
},
"socialMedia": {
@@ -228,19 +228,19 @@
"title": "Sosiaalinen media",
"text": "Sosiaalisen median evästeet liittyvät erilaisten sosiaalisen median palveluiden ominaisuuksiin.",
"expandAriaLabel": "Näytä sosiaaliseen mediaan liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Sosiaalisen median evästeet liittyvät erilaisten sosiaalisen median palveluiden ominaisuuksiin."
},
"sv": {
"title": "Sociala medier",
"text": "Sociala medier-kakor förknippas med olika sociala medie-tjänsters egenskaper.",
- "expandAriaLabel": "SV: Näytä sosiaaliseen mediaan littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om cookies för sociala medier",
+ "checkboxAriaDescription": "Sociala medier-kakor förknippas med olika sociala medie-tjänsters egenskaper."
},
"en": {
"title": "Social media",
"text": "Social media cookies are related to the characteristics of various social media services.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to social media",
+ "checkboxAriaDescription": "Social media cookies are related to the characteristics of various social media services."
}
},
"accessibility": {
@@ -248,19 +248,19 @@
"title": "Saavutettavuus",
"text": "Saavutettavuusevästeet mahdollistavat palvelun joitakin saavutettavuusominaisuuksia.",
"expandAriaLabel": "Näytä saavutettavuuteen liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Saavutettavuusevästeet mahdollistavat palvelun joitakin saavutettavuusominaisuuksia."
},
"sv": {
"title": "Tillgänglighet",
"text": "Tillgänglighetskakor möjliggör vissa egenskaper för tjänstens tillgänglighet.",
- "expandAriaLabel": "SV: Näytä saavutettavuuteen littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om cookies för att förbättra tillgänglighet",
+ "checkboxAriaDescription": "Tillgänglighetskakor möjliggör vissa egenskaper för tjänstens tillgänglighet."
},
"en": {
"title": "Accessibility",
- "text": "Accessibility cookies enable some of the service’s accessibility features.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "text": "Accessibility cookies enable some of the service's accessibility features.",
+ "expandAriaLabel": "Show cookie information related to accessibility",
+ "checkboxAriaDescription": "Accessibility cookies enable some of the service's accessibility features."
}
},
"deviceInfo": {
@@ -268,19 +268,19 @@
"title": "Laitetiedot",
"text": "Laitetietoevästeet sisältävät sellaisia käyttäjän laitteelta kerättyjä tietoja, joilla varmistetaan palvelun toiminta.",
"expandAriaLabel": "Näytä laitetietoihin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Laitetietoevästeet sisältävät sellaisia käyttäjän laitteelta kerättyjä tietoja, joilla varmistetaan palvelun toiminta."
},
"sv": {
"title": "Enhetsuppgifter",
"text": "Kakor för enhetsuppgifterna innehåller sådana uppgifter som samlats in från användarens enhet med vilka tjänstens funktioner säkerställs.",
- "expandAriaLabel": "SV: Näytä laitetietohini littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om cookies för enhetsinformation",
+ "checkboxAriaDescription": "Kakor för enhetsuppgifterna innehåller sådana uppgifter som samlats in från användarens enhet med vilka tjänstens funktioner säkerställs."
},
"en": {
"title": "Device information",
- "text": "Device information cookies contain information collected from the user’s device that ensures the functionality of the service.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "text": "Device information cookies contain information collected from the user's device that ensures the functionality of the service.",
+ "expandAriaLabel": "Show cookie information related to device information",
+ "checkboxAriaDescription": "Device information cookies contain information collected from the user's device that ensures the functionality of the service."
}
},
"chat": {
@@ -288,19 +288,19 @@
"title": "Chat-palvelut",
"text": "Chat-palveluiden evästeet mahdollistavat yhteydenpidon käyttäjän ja palvelun välillä.",
"expandAriaLabel": "Näytä chat-palveluihin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Chat-palveluiden evästeet mahdollistavat yhteydenpidon käyttäjän ja palvelun välillä."
},
"sv": {
"title": "Chattjänster",
"text": "Kakor för chattjänsterna möjliggör kontakten mellan användaren och tjänsten.",
- "expandAriaLabel": "SV: Näytä chat-palveluihin littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om cookies relaterade till chattjänster",
+ "checkboxAriaDescription": "Kakor för chattjänsterna möjliggör kontakten mellan användaren och tjänsten."
},
"en": {
"title": "Chat services",
"text": "Chat service cookies enable communication between the user and the service.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to chat services",
+ "checkboxAriaDescription": "Chat service cookies enable communication between the user and the service."
}
},
"thirdParty": {
@@ -308,19 +308,19 @@
"title": "Kolmannen osapuolen palvelut",
"text": "Evästeet mahdollistavat ulkopuolisten palvelujen (kuten sosiaalisen median alustojen) toiminnan tällä sivustolla.",
"expandAriaLabel": "Näytä kolmansiin osapuoliin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Evästeet mahdollistavat ulkopuolisten palvelujen (kuten sosiaalisen median alustojen) toiminnan tällä sivustolla."
},
"sv": {
"title": "Tredje parts tjänster",
"text": "Kakor möjliggör utomstående tjänsters (såsom sociala medie-plattformar) funktioner på denna webbplats.",
- "expandAriaLabel": "SV: Näytä kolmansiin osapuoliin littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om tredjepartscookies",
+ "checkboxAriaDescription": "Kakor möjliggör utomstående tjänsters (såsom sociala medie-plattformar) funktioner på denna webbplats."
},
"en": {
"title": "Third-party services",
"text": "Cookies allow external services (such as social media platforms) to operate on this website.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to third parties",
+ "checkboxAriaDescription": "Cookies allow external services (such as social media platforms) to operate on this website."
}
},
"content": {
@@ -328,19 +328,19 @@
"title": "Sisällön esittäminen",
"text": "Evästeitä hyödynnetään erilaisten sisältöjen näyttämiseen käyttäjälle.",
"expandAriaLabel": "Näytä sisällön esittämiseen liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Evästeitä hyödynnetään erilaisten sisältöjen näyttämiseen käyttäjälle."
},
"sv": {
"title": "Visning av innehåll",
"text": "Kakor utnyttjas för att visa olika innehåll för användaren.",
- "expandAriaLabel": "SV: Näytä sisällön esittämiseen littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om cookies relaterade till visning av innehåll",
+ "checkboxAriaDescription": "Kakor utnyttjas för att visa olika innehåll för användaren."
},
"en": {
"title": "Content presentation",
"text": "Cookies are used to display various types of content to the user.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to content presentation",
+ "checkboxAriaDescription": "Cookies are used to display various types of content to the user."
}
},
"location": {
@@ -348,19 +348,19 @@
"title": "Sijainti",
"text": "Sijaintievästeiden avulla voidaan hyödyntää käyttäjän laitteelta saatua sijaintitietoa (GPS).",
"expandAriaLabel": "Näytä sijaintiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Sijaintievästeiden avulla voidaan hyödyntää käyttäjän laitteelta saatua sijaintitietoa (GPS)."
},
"sv": {
"title": "Läge",
"text": "Med hjälp av lägeskakor kan man utnyttja lägesdata som fåtts från användarens enhet (GPS).",
- "expandAriaLabel": "SV: Näytä sijaintiin littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om cookies för geografisk positionering",
+ "checkboxAriaDescription": "Med hjälp av lägeskakor kan man utnyttja lägesdata som fåtts från användarens enhet (GPS)."
},
"en": {
"title": "Location",
- "text": "Location cookies can be used to utilise location information (GPS) received from the user’s device.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "text": "Location cookies can be used to utilise location information (GPS) received from the user's device.",
+ "expandAriaLabel": "Show cookie information related to location",
+ "checkboxAriaDescription": "Location cookies can be used to utilise location information (GPS) received from the user’s device."
}
},
"loadBalancing": {
@@ -368,19 +368,19 @@
"title": "Kuormantasaus",
"text": "Kuormantasausevästeiden avulla varmistetaan, että palvelu latautuu ja toimii nopeasti ja tehokkaasti.",
"expandAriaLabel": "Näytä kuormantasaukseen liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "FI: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "checkboxAriaDescription": "Kuormantasausevästeiden avulla varmistetaan, että palvelu latautuu ja toimii nopeasti ja tehokkaasti."
},
"sv": {
"title": "Belastningsutjämning",
"text": "Med hjälp av belastningsutjämningskakor säkerställer man att tjänsten laddas och fungerar snabbt och effektivt.",
- "expandAriaLabel": "SV: Näytä sisällön esittämiseen littyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om cookies för belastningsutjämning",
+ "checkboxAriaDescription": "Med hjälp av belastningsutjämningskakor säkerställer man att tjänsten laddas och fungerar snabbt och effektivt."
},
"en": {
"title": "Load balancing",
"text": "Load-balancing cookies ensure that the service loads and works quickly and efficiently.",
- "expandAriaLabel": "EN: Näytä asetuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Evästeisiin tallennetaan käyttäjän tekemiä valintoja. Hyväksy tai jätä hyväksymättä kaikki asetuksiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to load-balancing",
+ "checkboxAriaDescription": "Load-balancing cookies ensure that the service loads and works quickly and efficiently."
}
},
"essential": {
@@ -391,16 +391,16 @@
"checkboxAriaDescription": "essential checkboxAriaDescription"
},
"sv": {
- "title": "SV: Perustoimintoihin liittyvät evästeet",
- "text": "SV: Sivusto ei toimi ilman näitä",
- "expandAriaLabel": "SV: essential expandAriaLabel",
- "checkboxAriaDescription": "SV: essential checkboxAriaDescription"
+ "title": "Cookies relaterade till grundläggande funktioner",
+ "text": "Du kan inte förbjuda användningen av cookies relaterade till grundläggande funktioner. De möjliggör webbplatsens funktioner och påverkar användbarheten.",
+ "expandAriaLabel": "Visa information om cookies relaterade till grundläggande funktioner",
+ "checkboxAriaDescription": "Visa information om cookies relaterade till grundläggande funktioner"
},
"en": {
- "title": "EN: Perustoimintoihin liittyvät evästeet",
- "text": "EN: Sivusto ei toimi ilman näitä",
- "expandAriaLabel": "EN: essential expandAriaLabel",
- "checkboxAriaDescription": "EN: essential checkboxAriaDescription"
+ "title": "Cookies related to basic functionalities",
+ "text": "Cookies related to basic functionalities cannot be rejected. They enable the proper functioning of the website and affect the usability",
+ "expandAriaLabel": "Show cookie information related to basic functionalities",
+ "checkboxAriaDescription": "Cookies related to basic functions are required, and the website will not function properly without them. "
}
},
"statistics": {
@@ -408,39 +408,39 @@
"title": "Tilastointi",
"text": "Tilastointievästeiden keräämää tietoa käytetään verkkosivuston kehittämiseen.",
"expandAriaLabel": "Näytä tilastointiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "Tilastoinnilla parannetaan sivustoa. Hyväksy tai jätä hyväksymättä kaikki tilastointiin liittyvät evästeet"
+ "checkboxAriaDescription": "Tilastointievästeiden keräämää tietoa käytetään verkkosivuston kehittämiseen."
},
"sv": {
"title": "Statistik",
"text": "Data från statistikkakorna används för att utveckla webbplatsen.",
- "expandAriaLabel": "SV: Näytä tilastointiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Tilastoinnilla parannetaan sivustoa. Hyväksy tai jätä hyväksymättä kaikki tilastointiin liittyvät evästeet"
+ "expandAriaLabel": "Visa information om statistikcookies",
+ "checkboxAriaDescription": "Data från statistikkakorna används för att utveckla webbplatsen."
},
"en": {
"title": "Statistics",
"text": "The information collected by statistics cookies is used to develop the website.",
- "expandAriaLabel": "EN: Näytä tilastointiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Tilastoinnilla parannetaan sivustoa. Hyväksy tai jätä hyväksymättä kaikki tilastointiin liittyvät evästeet"
+ "expandAriaLabel": "Show cookie information related to statistics",
+ "checkboxAriaDescription": "The information collected by statistics cookies is used to develop the website."
}
},
"sharedConsents": {
"fi": {
- "title": "Yhteiset evästesuostumukset",
- "text": "Tallennamme nämä suostumukset, jottei sinun tarvitse hyväksyä samoja uudelleen Helsingin kaupungin palveluissa",
+ "title": "Yhteiset evästeet",
+ "text": "Helsingin kaupungin palvelut käyttävät yhteisiä evästeitä. Tallennamme nämä suostumukset, jottei sinun tarvitse hyväksyä samoja evästeitä uudelleen kaupungin muissa palveluissa.",
"expandAriaLabel": "Näytä yhteisiin evästesuostumuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "Yhteiset evästesuostumukset helpottavat sivuston käyttöä. Hyväksy tai jätä hyväksymättä kaikki tilastointiin liittyvät evästeet"
+ "checkboxAriaDescription": "Helsingin kaupungin palvelut käyttävät yhteisiä evästeitä. Tallennamme suostumuksen, jottei sinun tarvitse hyväksyä samoja evästeitä uudelleen muissa kaupungin palveluissa."
},
"sv": {
- "title": "SV: Yhteiset evästesuostumukset",
- "text": "SV: Tallennamme nämä suostumukset, jottei sinun tarvitse hyväksyä samoja uudelleen Helsingin kaupungin palveluissa",
- "expandAriaLabel": "SV: Näytä yhteisiin evästesuostumuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "SV: Yhteiset evästesuostumukset helpottavat sivuston käyttöä. Hyväksy tai jätä hyväksymättä kaikki tilastointiin liittyvät evästeet"
+ "title": "Gemensamma cookies",
+ "text": "Helsingfors stads tjänster använder gemensamma cookies. Vi lagrar dessa samtycken så att du inte behöver godkänna samma cookies igen i stadens andra tjänster.",
+ "expandAriaLabel": "Visa information om cookies relaterade till gemensamma cookie-samtycken",
+ "checkboxAriaDescription": "Helsingfors stads tjänster använder gemensamma cookies. Vi lagrar samtycket så att du inte behöver godkänna samma cookies igen i stadens andra tjänster."
},
"en": {
- "title": "EN: Yhteiset evästesuostumukset",
- "text": "EN: Tallennamme nämä suostumukset, jottei sinun tarvitse hyväksyä samoja uudelleen Helsingin kaupungin palveluissa",
- "expandAriaLabel": "EN: Näytä yhteisiin evästesuostumuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "EN: Yhteiset evästesuostumukset helpottavat sivuston käyttöä. Hyväksy tai jätä hyväksymättä kaikki tilastointiin liittyvät evästeet"
+ "title": "Shared consent",
+ "text": "City of Helsinki services use shared consent. We will store these consents so that you do not have to accept the same cookies again on other City services.",
+ "expandAriaLabel": "Show cookie information related to shared cookie consent",
+ "checkboxAriaDescription": "City of Helsinki services use shared consent. We will store the consent so that you do not have to accept the same cookies again on other City services."
}
}
},
@@ -450,114 +450,114 @@
"hostName": "*.hel.fi",
"commonGroup": "SET_IN_CODE",
"fi": {
- "name": "Suostumusvalinnat",
- "description": "Tallennetaan Helsingin kaupungin yhteiset evästesuostumukset.",
+ "name": "Evästesuostumukset",
+ "description": "Sivusto käyttää tätä evästettä tietojen tallentamiseen siitä, ovatko kävijät antaneet hyväksyntänsä tai kieltäytyneet evästeiden käytöstä.",
"expiration": "1 vuosi"
},
"sv": {
- "name": "SV: Suostumusvalinnat",
- "description": "SV: Tallennetaan Helsingin kaupungin yhteiset evästesuostumukset.",
- "expiration": "SV: 1 vuosi"
+ "name": "Cookie samtycke",
+ "description": "Webbplatsen använder denna cookie för att lagra information om huruvida besökare har godkänt användningen av cookies eller inte.",
+ "expiration": "Ett år"
},
"en": {
- "name": "EN: Suostumusvalinnat",
- "description": "EN: Tallennetaan Helsingin kaupungin yhteiset evästesuostumukset.",
- "expiration": "EN: 1 vuosi"
+ "name": "Cookie consents",
+ "description": "Used by hel.fi to store information about whether visitors have given or declined the use of cookie categories used on the hel.fi site.",
+ "expiration": "1 year"
}
},
- "tunnistamo": {
- "id": "tunnistamo",
- "hostName": "tunnistamo.com",
+ "cookiehub": {
+ "id": "cookiehub",
+ "hostName": "cookiehub.com",
"fi": {
- "name": "Tunnistamo cookie",
- "description": "Kuvaus lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus",
- "expiration": "Voimassaoloaika"
+ "name": "cookiehub",
+ "description": "Mahdollistaa evästehallinnan hel.fi sivuilla.",
+ "expiration": "365 päivää"
},
"sv": {
- "name": "SV: Tunnistamo cookie",
- "description": "SV: Kuvaus lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus",
- "expiration": "SV: Voimassaoloaika"
+ "name": "cookiehub",
+ "description": "Cookie möjliggör hantering av cookies på hel.fi webbplatsen.",
+ "expiration": "365 dagar"
},
"en": {
- "name": "EN: Tunnistamo cookie",
- "description": "EN: Kuvaus lectus lacinia sed. Phasellus purus nisi, imperdiet id volutpat vel, pellentesque in ex. In pretium maximus finibus",
- "expiration": "EN: Voimassaoloaika"
+ "name": "cookiehub",
+ "description": "Used by CookieHub to store information about whether visitors have given or declined the use of cookie categories used on the hel.fi site.",
+ "expiration": "365 days"
}
},
"keycloak": {
"id": "keycloak",
- "hostName": "keycloak.com",
+ "hostName": "tunnistus.*.hel.fi",
"fi": {
- "name": "keycloak cookie",
- "description": "Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "Voimassaoloaika"
+ "name": "AUTH_SESSION_ID",
+ "description": "Tunnistautumisistunnon säilymiseksi vaadittu eväste.",
+ "expiration": "Istunto"
},
"sv": {
- "name": "SV: keycloak cookie",
- "description": "SV: Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "SV: Voimassaoloaika"
+ "name": "AUTH_SESSION_ID",
+ "description": "Cookie som krävs för att bevara autentiseringssession.",
+ "expiration": "Session"
},
"en": {
- "name": "EN: keycloak cookie",
- "description": "EN: Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "EN: Voimassaoloaika"
+ "name": "AUTH_SESSION_ID",
+ "description": "Required to persist the authentication session.",
+ "expiration": "Session"
}
},
- "marketing": {
- "id": "marketing",
- "hostName": "marketing.com",
+ "matomo": {
+ "id": "matomo",
+ "hostName": "digia.fi",
"fi": {
- "name": "marketing cookie",
- "description": "Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "Voimassaoloaika"
+ "name": "_pk_id.*",
+ "description": "Eväste kerää tietoa kävijän liikkeistä sivustolla.",
+ "expiration": "393 päivää"
},
"sv": {
- "name": "SV: marketing cookie",
- "description": "SV: Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "SV: Voimassaoloaika"
+ "name": "_pk_id.*",
+ "description": "Statistiksystemets kaka samlar information om hur webbplatsen används.",
+ "expiration": "393 dagar"
},
"en": {
- "name": "EN: marketing cookie",
- "description": "EN: Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "EN: Voimassaoloaika"
+ "name": "_pk_id.*",
+ "description": "This cookie is used to store a few details about the user such as the unique visitor ID.",
+ "expiration": "393 days"
}
},
- "language-i18n": {
- "id": "language-i18n",
+ "cms-session": {
+ "id": "cms-session",
"hostName": "hel.fi",
"fi": {
- "name": "Kielvalinta",
- "description": "Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "Voimassaoloaika"
+ "name": "SSESS*",
+ "description": "Sisällönhallintajärjestelmän toimintaan liittyvä eväste.",
+ "expiration": "23 päivää"
},
"sv": {
- "name": "SV: Kielvalinta",
- "description": "SV: Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "SV: Voimassaoloaika"
+ "name": "SSESS*",
+ "description": "En cookie relaterad till driften av innehållshanteringssystemet.",
+ "expiration": "23 dagar"
},
"en": {
- "name": "EN: Kielvalinta",
- "description": "EN: Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "EN: Voimassaoloaika"
+ "name": "SSESS*",
+ "description": "A cookie related to the operation of the content management system.",
+ "expiration": "23 days"
}
},
- "matomo": {
- "id": "matomo",
- "hostName": "digia.fi",
+ "tunnistamo": {
+ "id": "tunnistamo",
+ "hostName": "tunnistamo.*.hel.fi",
"fi": {
- "name": "Analytiikan kerääminen Matomooon",
- "description": "Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "Voimassaoloaika"
+ "name": "sso-sessionid",
+ "description": "Tunnistautumisistunnon säilymiseksi vaadittu eväste.",
+ "expiration": "Istunto"
},
"sv": {
- "name": "SV: Analytiikan kerääminen Matomooon",
- "description": "SV: Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "SV: Voimassaoloaika"
+ "name": "sso-sessionid",
+ "description": "Cookie som krävs för att bevara autentiseringssession.",
+ "expiration": "Session"
},
"en": {
- "name": "EN: Analytiikan kerääminen Matomooon",
- "description": "EN: Quisque vest molestie convallis. Don el dui vel.",
- "expiration": "EN: Voimassaoloaika"
+ "name": "sso-sessionid",
+ "description": "Required to persist the authentication session.",
+ "expiration": "Session"
}
}
}
From 6a88ef71f0c9a8aed6977d0443400d44017c5037 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 7 Sep 2022 15:25:40 +0300
Subject: [PATCH 246/292] Fix headings and checkbox labels
---
.../components/cookieConsent/CookieConsent.module.scss | 8 +++-----
.../components/cookieConsent/CookieConsent.stories.tsx | 10 ++++++----
.../react/src/components/cookieConsent/page/Page.tsx | 2 +-
3 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.module.scss b/packages/react/src/components/cookieConsent/CookieConsent.module.scss
index 384fd91570..ebfc607ce3 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.module.scss
+++ b/packages/react/src/components/cookieConsent/CookieConsent.module.scss
@@ -107,8 +107,7 @@
}
.emulatedH1 {
- font-size: var(--fontsize-heading-l);
- font-weight: bold;
+ composes: heading-l from 'hds-core/lib/utils/helpers.css';
display: block;
padding: 0;
outline: none;
@@ -119,8 +118,7 @@
}
.emulatedH2 {
- font-size: var(--fontsize-heading-m);
- font-weight: bold;
+ composes: heading-m from 'hds-core/lib/utils/helpers.css';
display: block;
padding: 1.2em 0 0.5em;
}
@@ -212,7 +210,7 @@
.page .content .consentCategory .titleWithCheckbox label,
.container .content .consentCategory .titleWithCheckbox label {
- font-weight: bold;
+ font-weight: 500;
color: var(--color-black);
}
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
index d489881053..6241eab84f 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
@@ -305,7 +305,7 @@ export const ModalVersion = (args) => {
return (
This is an example how to get all data from the cookie consent context.
The same contentSource can be passed to the context and it provides access to the content built from the
diff --git a/packages/react/src/components/cookieConsent/page/Page.tsx b/packages/react/src/components/cookieConsent/page/Page.tsx
index c6bf477553..4f65113083 100644
--- a/packages/react/src/components/cookieConsent/page/Page.tsx
+++ b/packages/react/src/components/cookieConsent/page/Page.tsx
@@ -18,7 +18,7 @@ export function Page(): React.ReactElement | null {
+ Tämä sivusto käyttää pakollisia evästeitä sivun perustoimintojen ja suorituskyvyn varmistamiseksi. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja yksilöidyn sisällön näyttämiseen.
+
+
+
+ Lue lisää
+
+
+
+
+
+
+
+
-
- Tämä sivusto käyttää pakollisia evästeitä sivun perustoimintojen ja suorituskyvyn varmistamiseksi. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja yksilöidyn sisällön näyttämiseen.
-
-
- Lue lisää
- spec renders the component 1`] = `
fill-rule="evenodd"
>
+
+ Näytä evästeasetukset
+
-
-
-
-
-
-
-
-
-
- Näytä evästeasetukset
-
-
-
-
- Tietoa sivustolla käytetyistä evästeistä
-
-
- Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea eri luokista ja sallia tai kieltää evästeiden käytön.
-
-
-
-
-
- Title for required cookies
-
-
-
-
- Text for required cookies
+ Tietoa sivustolla käytetyistä evästeistä
+
+
+ Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea eri luokista ja sallia tai kieltää evästeiden käytön.
- checkboxAriaLabel
-
-
-
+
+
+
+ Title for required cookies
+
+
+
+
+ Text for required cookies
+
+
+ checkboxAriaLabel
+
+
+
-
-
- Cookie group title for requiredCookieGroup0
-
+
+
+ Cookie group title for requiredCookieGroup0
+
+
-
-
-
- Cookie group description for requiredCookieGroup0
-
- checkboxAriaLabel for requiredCookieGroup0
-
-
-
-
+
+ checkboxAriaLabel for requiredCookieGroup0
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
- Nimi
-
-
- Evästeen asettaja
-
-
- Käyttötarkoitus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of requiredConsent1
-
-
- HostName of requiredConsent1
-
-
- Description of requiredConsent1
-
-
- Expiration of requiredConsent1
-
-
-
-
- Name of requiredConsent2
-
-
- HostName of requiredConsent2
-
-
- Description of requiredConsent2
-
-
- Expiration of requiredConsent2
-
-
-
-
+
+
+
+ Nimi
+
+
+ Evästeen asettaja
+
+
+ Käyttötarkoitus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of requiredConsent1
+
+
+ HostName of requiredConsent1
+
+
+ Description of requiredConsent1
+
+
+ Expiration of requiredConsent1
+
+
+
+
+ Name of requiredConsent2
+
+
+ HostName of requiredConsent2
+
+
+ Description of requiredConsent2
+
+
+ Expiration of requiredConsent2
+
+
+
+
+
-
-
-
-
+
+
-
-
- Cookie group title for requiredCookieGroup1
-
+
+
+ Cookie group title for requiredCookieGroup1
+
+
-
-
-
- Cookie group description for requiredCookieGroup1
-
- checkboxAriaLabel for requiredCookieGroup1
-
-
-
-
+
+ checkboxAriaLabel for requiredCookieGroup1
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
- Nimi
-
-
- Evästeen asettaja
-
-
- Käyttötarkoitus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of requiredConsent3
-
-
- HostName of requiredConsent3
-
-
- Description of requiredConsent3
-
-
- Expiration of requiredConsent3
-
-
-
-
+
+
+
+ Nimi
+
+
+ Evästeen asettaja
+
+
+ Käyttötarkoitus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of requiredConsent3
+
+
+ HostName of requiredConsent3
+
+
+ Description of requiredConsent3
+
+
+ Expiration of requiredConsent3
+
+
+
+
+
-
-
-
-
-
+
+
+
-
-
- Title for optional cookies
-
-
-
-
- Text for optional cookies
-
-
- checkboxAriaLabel
-
-
-
+
+
+ Title for optional cookies
+
+
+
+
+ Text for optional cookies
+
+
+ checkboxAriaLabel
+
+
+
-
-
- Cookie group title for optionalCookieGroups0
-
+
+
+ Cookie group title for optionalCookieGroups0
+
+
-
-
-
- Cookie group description for optionalCookieGroups0
-
- checkboxAriaLabel for optionalCookieGroups0
-
-
-
-
+
+ checkboxAriaLabel for optionalCookieGroups0
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
- Nimi
-
-
- Evästeen asettaja
-
-
- Käyttötarkoitus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of optionalConsent1
-
-
- HostName of optionalConsent1
-
-
- Description of optionalConsent1
-
-
- Expiration of optionalConsent1
-
-
-
-
+
+
+
+ Nimi
+
+
+ Evästeen asettaja
+
+
+ Käyttötarkoitus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of optionalConsent1
+
+
+ HostName of optionalConsent1
+
+
+ Description of optionalConsent1
+
+
+ Expiration of optionalConsent1
+
+
+
+
+
-
-
-
-
+
+
-
-
- Cookie group title for optionalCookieGroups1
-
+
+
+ Cookie group title for optionalCookieGroups1
+
+
-
-
-
- Cookie group description for optionalCookieGroups1
-
- checkboxAriaLabel for optionalCookieGroups1
-
-
-
-
+
+ checkboxAriaLabel for optionalCookieGroups1
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
- Nimi
-
-
- Evästeen asettaja
-
-
- Käyttötarkoitus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of optionalConsent2
-
-
- HostName of optionalConsent2
-
-
- Description of optionalConsent2
-
-
- Expiration of optionalConsent2
-
-
-
-
- Name of optionalConsent3
-
-
- HostName of optionalConsent3
-
-
- Description of optionalConsent3
-
-
- Expiration of optionalConsent3
-
-
-
-
+
+
+
+ Nimi
+
+
+ Evästeen asettaja
+
+
+ Käyttötarkoitus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of optionalConsent2
+
+
+ HostName of optionalConsent2
+
+
+ Description of optionalConsent2
+
+
+ Expiration of optionalConsent2
+
+
+
+
+ Name of optionalConsent3
+
+
+ HostName of optionalConsent3
+
+
+ Description of optionalConsent3
+
+
+ Expiration of optionalConsent3
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
- Hyväksy kaikki evästeet
-
-
-
-
+ Hyväksy kaikki evästeet
+
+
+
- Hyväksy vain pakolliset evästeet
-
-
+
+ Hyväksy vain pakolliset evästeet
+
+
+
+ Tämä sivusto käyttää pakollisia evästeitä sivun perustoimintojen ja suorituskyvyn varmistamiseksi. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja yksilöidyn sisällön näyttämiseen.
+
+
+
+ Lue lisää
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Näytä evästeasetukset
+
+
+
+
+
+ Tietoa sivustolla käytetyistä evästeistä
+
+
+ Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea eri luokista ja sallia tai kieltää evästeiden käytön.
+
+
+
+
+
+
+ Title for required cookies
+
+
+
+
+ Text for required cookies
+
+
+ checkboxAriaLabel
+
+
+
+
+
+
+
+
+ Cookie group title for requiredCookieGroup0
+
+
+
+
+
+ Cookie group description for requiredCookieGroup0
+
+
+ checkboxAriaLabel for requiredCookieGroup0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nimi
+
+
+ Evästeen asettaja
+
+
+ Käyttötarkoitus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of requiredConsent1
+
+
+ HostName of requiredConsent1
+
+
+ Description of requiredConsent1
+
+
+ Expiration of requiredConsent1
+
+
+
+
+ Name of requiredConsent2
+
+
+ HostName of requiredConsent2
+
+
+ Description of requiredConsent2
+
+
+ Expiration of requiredConsent2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cookie group title for requiredCookieGroup1
+
+
+
+
+
+ Cookie group description for requiredCookieGroup1
+
+
+ checkboxAriaLabel for requiredCookieGroup1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nimi
+
+
+ Evästeen asettaja
+
+
+ Käyttötarkoitus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of requiredConsent3
+
+
+ HostName of requiredConsent3
+
+
+ Description of requiredConsent3
+
+
+ Expiration of requiredConsent3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Title for optional cookies
+
+
+
+
+ Text for optional cookies
+
+
+ checkboxAriaLabel
+
+
+
+
+
+
+
+
+ Cookie group title for optionalCookieGroups0
+
+
+
+
+
+ Cookie group description for optionalCookieGroups0
+
+
+ checkboxAriaLabel for optionalCookieGroups0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nimi
+
+
+ Evästeen asettaja
+
+
+ Käyttötarkoitus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of optionalConsent1
+
+
+ HostName of optionalConsent1
+
+
+ Description of optionalConsent1
+
+
+ Expiration of optionalConsent1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cookie group title for optionalCookieGroups1
+
+
+
+
+
+ Cookie group description for optionalCookieGroups1
+
+
+ checkboxAriaLabel for optionalCookieGroups1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nimi
+
+
+ Evästeen asettaja
+
+
+ Käyttötarkoitus
+
+
+ Voimassaoloaika
+
+
+
+
+
+
+ Name of optionalConsent2
+
+
+ HostName of optionalConsent2
+
+
+ Description of optionalConsent2
+
+
+ Expiration of optionalConsent2
+
+
+
+
+ Name of optionalConsent3
+
+
+ HostName of optionalConsent3
+
+
+ Description of optionalConsent3
+
+
+ Expiration of optionalConsent3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hyväksy kaikki evästeet
+
+
+
+
+ Hyväksy vain pakolliset evästeet
+
+
+
,
- );
-
- return result;
-};
-
-describe(' spec', () => {
- afterEach(() => {
- mockedCookieControls.clear();
- });
-
- afterAll(() => {
- mockedCookieControls.restore();
- });
-
- it('renders the component', () => {
- const { baseElement } = renderPortal(defaultConsentData);
- expect(baseElement).toMatchSnapshot();
- });
-
- it('should not have basic accessibility issues', async () => {
- const result = renderPortal(defaultConsentData);
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }, 15000);
-});
-
-describe(' ', () => {
- describe('is rendered to the given element. Other elements in the dom are left alone.', () => {
- it('If element with given id (rootId) is found, portal and its children are rendered there', () => {
- const result = renderPortal(defaultConsentData, { rootId: testIds.target });
- const targetElement = result.getByTestId(testIds.target);
- const contentElement = result.getByTestId(testIds.content);
- expect(contentElement.parentElement).toBe(targetElement);
- expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
- });
- it('If element with given id (rootId) is not found, the element is created and portal and its children are rendered there', async () => {
- const result = renderPortal(defaultConsentData, { rootId: 'NewElement' });
- const targetElement = result.getByTestId(dataTestIds.htmlContainer);
- const contentElement = result.getByTestId(testIds.content);
- expect(contentElement.parentElement).toBe(targetElement);
- expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
- });
- it('Added portal is the first element in the dom', async () => {
- const result = renderPortal(defaultConsentData, { rootId: 'NewElement' });
- const targetElement = result.getByTestId(dataTestIds.htmlContainer);
- expect(targetElement).toBe(result.baseElement.childNodes[0]);
- });
- });
- describe('If modal should not be shown', () => {
- const onlyRequiredConsents = {
- requiredConsents: [['requiredConsent1', 'requiredConsent2'], ['requiredConsent3']],
- };
- it('The container element is removed and content is not rendered', () => {
- const result = renderPortal(onlyRequiredConsents, { rootId: testIds.target });
- expect(() => result.getByTestId(testIds.target)).toThrow();
- expect(() => result.getByTestId(testIds.content)).toThrow();
- expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
- });
- it('A new container is not added and content is not rendered', () => {
- const result = renderPortal(onlyRequiredConsents, { rootId: 'NewElement' });
- expect(() => result.getByTestId('NewElement')).toThrow();
- expect(() => result.getByTestId(testIds.content)).toThrow();
- expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
- });
- it('If an existing element is used as container and it has children, it is not removed. Even if content was not rendered.', () => {
- const result = renderPortal(onlyRequiredConsents, { rootId: testIds.targetWithChildren });
- expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
- expect(() => result.getByTestId(testIds.content)).toThrow();
- });
- });
- describe('If modal is closed', () => {
- it('the portal and container are not removed. There is a screen reader notification.', async () => {
- const result = renderPortal(defaultConsentData, { rootId: testIds.target });
- clickElement(result, testIds.contentButton);
- await waitFor(() => {
- expect(() => result.getByTestId(testIds.content)).toThrow();
- });
- expect(() => result.getByTestId(testIds.target)).not.toThrow();
- expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
- });
- });
-});
diff --git a/packages/react/src/components/cookieConsent/portalModal/PortalModal.test.tsx b/packages/react/src/components/cookieConsent/portalModal/PortalModal.test.tsx
index b7c58d976c..02f77dd5b5 100644
--- a/packages/react/src/components/cookieConsent/portalModal/PortalModal.test.tsx
+++ b/packages/react/src/components/cookieConsent/portalModal/PortalModal.test.tsx
@@ -30,9 +30,16 @@ const mockedCookieControls = mockDocumentCookie();
let content: Content;
+const testIds = {
+ content: 'cookie-consent',
+ closeButton: 'cookie-consent-approve-button',
+ target: 'PortalTarget',
+ targetWithChildren: 'PortalTargetWithChildren',
+};
+
const renderCookieConsent = (
{ requiredConsents = [], optionalConsents = [], consents = {}, contentSourceOverrides }: TestConsentData,
- withRealTimers = false,
+ portalProps: { rootId?: string; withRealTimers?: boolean } = { withRealTimers: false },
): RenderResult => {
// inject unknown consents to verify those are
// stored and handled, but not required or optional
@@ -40,16 +47,21 @@ const renderCookieConsent = (
...consents,
...unknownConsents,
};
+ const { rootId } = portalProps;
const contentSource = getContentSource(requiredConsents, optionalConsents, contentSourceOverrides);
content = createContent(contentSource);
jest.useFakeTimers();
mockedCookieControls.init({ [COOKIE_NAME]: JSON.stringify(consentCookieWithInjectedUnknowns) });
const result = render(
-
+
Focus me
+
+
+
I am here to prevent auto-removal
+
,
);
act(() => {
@@ -57,7 +69,7 @@ const renderCookieConsent = (
});
// For example, axe uses timers so sometimes the test must use real ones
- if (withRealTimers) {
+ if (portalProps.withRealTimers) {
jest.useRealTimers();
}
@@ -79,7 +91,7 @@ describe(' spec', () => {
});
it('should not have basic accessibility issues', async () => {
- const result = renderCookieConsent(defaultConsentData, true);
+ const result = renderCookieConsent(defaultConsentData, { withRealTimers: true });
await openAccordion(result, dataTestIds.settingsToggler);
await openAllAccordions(result, content, dataTestIds);
const results = await axe(result.container);
@@ -127,16 +139,73 @@ describe(' ', () => {
describe('Auto-focusing works also with portal and focus is', () => {
it('shifted to the modal heading level 1 when modal is rendered', () => {
- const result = renderCookieConsent(defaultConsentData, true);
+ const result = renderCookieConsent(defaultConsentData, { withRealTimers: true });
const modalH1 = screen.queryByRole('heading', { level: 1 });
expect(getActiveElement(result.container)).toEqual(modalH1);
});
it('shifted to the element defined in content.focusTargetSelector when modal is closed', async () => {
- const result = renderCookieConsent(defaultConsentData, true);
+ const result = renderCookieConsent(defaultConsentData, { withRealTimers: true });
const elementGetter = () => result.container.querySelector(content.focusTargetSelector as string);
clickElement(result, dataTestIds.approveButton);
await waitForElementFocus(elementGetter);
});
});
+ describe('Is rendered to the given element. Other elements in the dom are left alone.', () => {
+ it('If element with given id (rootId) is found, portal and its children are rendered there', () => {
+ const result = renderCookieConsent(defaultConsentData, { rootId: testIds.target });
+ const targetElement = result.getByTestId(testIds.target);
+ const contentElement = result.getByTestId(testIds.content);
+ // not using expect(elementA).toBe(elementB), if it fails it throws unrelated error
+ // https://github.com/testing-library/dom-testing-library/issues/875
+ expect(contentElement.parentElement === targetElement).toBeTruthy();
+ expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
+ });
+ it('If element with given id (rootId) is not found, the element is created and portal and its children are rendered there', async () => {
+ const result = renderCookieConsent(defaultConsentData);
+ const targetElement = result.getByTestId(dataTestIds.htmlContainer);
+ const contentElement = result.getByTestId(testIds.content);
+ expect(contentElement.parentElement === targetElement).toBeTruthy();
+ expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
+ });
+ it('Added portal is the first element in the dom', async () => {
+ const result = renderCookieConsent(defaultConsentData);
+ const targetElement = result.getByTestId(dataTestIds.htmlContainer);
+ expect(!!targetElement).toBeTruthy();
+ expect(targetElement === result.baseElement.childNodes[0]).toBeTruthy();
+ });
+ });
+ describe('If modal should not be shown', () => {
+ const onlyRequiredConsents = {
+ requiredConsents: [['requiredConsent1', 'requiredConsent2'], ['requiredConsent3']],
+ };
+ it('The container element is removed and content is not rendered', () => {
+ const result = renderCookieConsent(onlyRequiredConsents, { rootId: testIds.target });
+ expect(() => result.getByTestId(testIds.target)).toThrow();
+ expect(() => result.getByTestId(testIds.content)).toThrow();
+ expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
+ });
+ it('A new container is not added and content is not rendered', () => {
+ const result = renderCookieConsent(onlyRequiredConsents);
+ expect(() => result.getByTestId('NewElement')).toThrow();
+ expect(() => result.getByTestId(testIds.content)).toThrow();
+ expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
+ });
+ it('If an existing element is used as container and it has children, it is not removed. Even if content was not rendered.', () => {
+ const result = renderCookieConsent(onlyRequiredConsents, { rootId: testIds.targetWithChildren });
+ expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
+ expect(() => result.getByTestId(testIds.content)).toThrow();
+ });
+ });
+ describe('If modal is closed', () => {
+ it('the portal and container are not removed. There is a screen reader notification.', async () => {
+ const result = renderCookieConsent(defaultConsentData, { rootId: testIds.target });
+ clickElement(result, testIds.closeButton);
+ await waitFor(() => {
+ expect(() => result.getByTestId(testIds.content)).toThrow();
+ });
+ expect(() => result.getByTestId(testIds.target)).not.toThrow();
+ expect(() => result.getByTestId(testIds.targetWithChildren)).not.toThrow();
+ });
+ });
});
diff --git a/packages/react/src/components/cookieConsent/portalModal/__snapshots__/Portal.test.tsx.snap b/packages/react/src/components/cookieConsent/portalModal/__snapshots__/Portal.test.tsx.snap
deleted file mode 100644
index c64eb97957..0000000000
--- a/packages/react/src/components/cookieConsent/portalModal/__snapshots__/Portal.test.tsx.snap
+++ /dev/null
@@ -1,33 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[` spec renders the component 1`] = `
-
-
-
-
-
-
- Render null, please.
-
-
-
-
-
- I am here to prevent auto-removal
-
-
-
-
-
-`;
diff --git a/packages/react/src/components/cookieConsent/portalModal/__snapshots__/PortalModal.test.tsx.snap b/packages/react/src/components/cookieConsent/portalModal/__snapshots__/PortalModal.test.tsx.snap
index 5292e8abba..45113e0637 100644
--- a/packages/react/src/components/cookieConsent/portalModal/__snapshots__/PortalModal.test.tsx.snap
+++ b/packages/react/src/components/cookieConsent/portalModal/__snapshots__/PortalModal.test.tsx.snap
@@ -963,6 +963,18 @@ exports[` spec renders the component 1`] = `
>
Focus me
+
+
- Tämä sivusto käyttää pakollisia evästeitä sivun perustoimintojen ja suorituskyvyn varmistamiseksi. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja yksilöidyn sisällön näyttämiseen.
-
-
-
- Lue lisää
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Näytä evästeasetukset
-
-
-
-
-
- Tietoa sivustolla käytetyistä evästeistä
-
-
- Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea eri luokista ja sallia tai kieltää evästeiden käytön.
-
-
-
-
-
-
- Title for required cookies
-
-
-
-
- Text for required cookies
-
-
- checkboxAriaLabel
-
-
-
-
-
-
-
-
- Cookie group title for requiredCookieGroup0
-
-
-
-
-
- Cookie group description for requiredCookieGroup0
-
-
- checkboxAriaLabel for requiredCookieGroup0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Nimi
-
-
- Evästeen asettaja
-
-
- Käyttötarkoitus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of requiredConsent1
-
-
- HostName of requiredConsent1
-
-
- Description of requiredConsent1
-
-
- Expiration of requiredConsent1
-
-
-
-
- Name of requiredConsent2
-
-
- HostName of requiredConsent2
-
-
- Description of requiredConsent2
-
-
- Expiration of requiredConsent2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Cookie group title for requiredCookieGroup1
-
-
-
-
-
- Cookie group description for requiredCookieGroup1
-
-
- checkboxAriaLabel for requiredCookieGroup1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Nimi
-
-
- Evästeen asettaja
-
-
- Käyttötarkoitus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of requiredConsent3
-
-
- HostName of requiredConsent3
-
-
- Description of requiredConsent3
-
-
- Expiration of requiredConsent3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Title for optional cookies
-
-
-
-
- Text for optional cookies
-
-
- checkboxAriaLabel
-
-
-
-
-
-
-
-
- Cookie group title for optionalCookieGroups0
-
-
-
-
-
- Cookie group description for optionalCookieGroups0
-
-
- checkboxAriaLabel for optionalCookieGroups0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Nimi
-
-
- Evästeen asettaja
-
-
- Käyttötarkoitus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of optionalConsent1
-
-
- HostName of optionalConsent1
-
-
- Description of optionalConsent1
-
-
- Expiration of optionalConsent1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Cookie group title for optionalCookieGroups1
-
-
-
-
-
- Cookie group description for optionalCookieGroups1
-
-
- checkboxAriaLabel for optionalCookieGroups1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Nimi
-
-
- Evästeen asettaja
-
-
- Käyttötarkoitus
-
-
- Voimassaoloaika
-
-
-
-
-
-
- Name of optionalConsent2
-
-
- HostName of optionalConsent2
-
-
- Description of optionalConsent2
-
-
- Expiration of optionalConsent2
-
-
-
-
- Name of optionalConsent3
-
-
- HostName of optionalConsent3
-
-
- Description of optionalConsent3
-
-
- Expiration of optionalConsent3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Hyväksy kaikki evästeet
-
-
-
-
- Hyväksy vain pakolliset evästeet
-
-
-
-
-
-
-
- Focus me
-
-
-
-
-
-`;
diff --git a/packages/react/src/components/cookieConsent/index.ts b/packages/react/src/components/cookieConsent/index.ts
index f30142af23..34de2c0d0f 100644
--- a/packages/react/src/components/cookieConsent/index.ts
+++ b/packages/react/src/components/cookieConsent/index.ts
@@ -1,4 +1,4 @@
-export * from './cookieModal/CookieModal';
+export * from './portalModal/PortalModal';
export * from './cookiePage/CookiePage';
export * from './useCookies';
export * from './types';
From 29c6eaddeb524e9fa8c2dea43a34754ced2ed3b9 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Mon, 5 Sep 2022 13:28:25 +0300
Subject: [PATCH 280/292] Fixed newly introduced ts errors
---
.../src/components/cookieConsent/useModalPlaceHolder.ts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts b/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts
index b083265d8b..4d4825cbad 100644
--- a/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts
+++ b/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts
@@ -1,6 +1,6 @@
import React, { useCallback, useEffect, useRef } from 'react';
-type RefListener = (element: HTMLElement) => React.MutableRefObject;
+type RefListener = (element: HTMLElement) => React.MutableRefObject;
export function useModalPlaceHolder(): RefListener {
const placeHolderId = 'HdsCookieConsentModalPlaceholder';
@@ -13,7 +13,7 @@ export function useModalPlaceHolder(): RefListener {
placeHolderElement.setAttribute('data-testid', 'html-cookie-consent-placeholder');
placeHolderElement.setAttribute('aria-hidden', 'true');
placeHolderElement.setAttribute('id', placeHolderId);
- document.body.lastChild.after(placeHolderElement);
+ (document.body.lastChild as HTMLElement).after(placeHolderElement);
return placeHolderElement;
}, []);
@@ -72,7 +72,7 @@ export function useModalPlaceHolder(): RefListener {
}, [removeContentObserver, removePlaceHolder]);
const refListener = useCallback(
- (observedElement: HTMLDivElement) => {
+ (observedElement: HTMLElement | null) => {
if (observedElement && !placeHolderRef.current) {
createAndStorePlaceHolderElement();
}
From b78a42d0ca559a10de06fed8d25c07aec8631c83 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Mon, 5 Sep 2022 13:45:07 +0300
Subject: [PATCH 281/292] Added 0.2 delay to placeholder height change
When modal is focused and user clicks an element on the underlying page, the modal loses focus on mousedown.
That triggers the resize observer, which changes the size of the placeholder.
When mouseup/click occurs the originally clicked element might have shifted due page height change and click wont happen.
This occurs when page is scrolled before clicking an element.
The delay fixes this as mouseup happens in same element.
Very slow clicks still causes click to fail.
---
.../portalModal/__snapshots__/PortalModal.test.tsx.snap | 1 +
.../src/components/cookieConsent/useModalPlaceHolder.ts | 9 +++++++++
2 files changed, 10 insertions(+)
diff --git a/packages/react/src/components/cookieConsent/portalModal/__snapshots__/PortalModal.test.tsx.snap b/packages/react/src/components/cookieConsent/portalModal/__snapshots__/PortalModal.test.tsx.snap
index 45113e0637..1123c97e03 100644
--- a/packages/react/src/components/cookieConsent/portalModal/__snapshots__/PortalModal.test.tsx.snap
+++ b/packages/react/src/components/cookieConsent/portalModal/__snapshots__/PortalModal.test.tsx.snap
@@ -981,6 +981,7 @@ exports[` spec renders the component 1`] = `
aria-hidden="true"
data-testid="html-cookie-consent-placeholder"
id="HdsCookieConsentModalPlaceholder"
+ style="transition: height 0.1s ease 0.2s;"
/>
`;
diff --git a/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts b/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts
index 4d4825cbad..20e81c0cd3 100644
--- a/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts
+++ b/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts
@@ -29,6 +29,14 @@ export function useModalPlaceHolder(): RefListener {
[],
);
+ const setPlaceHolderTransitionDelay = useCallback((placeHolderElement: HTMLElement | null) => {
+ if (!placeHolderElement) {
+ return;
+ }
+ // eslint-disable-next-line no-param-reassign
+ placeHolderElement.style.transition = 'height 0.1s ease 0.2s';
+ }, []);
+
const onObservedElementChange = useCallback(() => {
updatePlaceHolder(placeHolderRef.current, observedElementRef.current);
}, [updatePlaceHolder, placeHolderRef, observedElementRef]);
@@ -63,6 +71,7 @@ export function useModalPlaceHolder(): RefListener {
const createAndStorePlaceHolderElement = useCallback(() => {
if (!placeHolderRef.current) {
placeHolderRef.current = getPlaceHolderElement() || createPlaceholderElement();
+ setPlaceHolderTransitionDelay(placeHolderRef.current);
}
}, [placeHolderRef, getPlaceHolderElement, createPlaceholderElement]);
From 33e615eecdde500100d5732b5ca37349b2d38540 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Tue, 6 Sep 2022 09:19:23 +0300
Subject: [PATCH 282/292] Added missing useCallback dependency
---
.../react/src/components/cookieConsent/useModalPlaceHolder.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts b/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts
index 20e81c0cd3..c68fcd931e 100644
--- a/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts
+++ b/packages/react/src/components/cookieConsent/useModalPlaceHolder.ts
@@ -73,7 +73,7 @@ export function useModalPlaceHolder(): RefListener {
placeHolderRef.current = getPlaceHolderElement() || createPlaceholderElement();
setPlaceHolderTransitionDelay(placeHolderRef.current);
}
- }, [placeHolderRef, getPlaceHolderElement, createPlaceholderElement]);
+ }, [placeHolderRef, getPlaceHolderElement, createPlaceholderElement, setPlaceHolderTransitionDelay]);
const cleanUp = useCallback(() => {
removeContentObserver();
From dd64c5f7e4269d0d71647d70cd1d4fd14123fe7b Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Sun, 11 Sep 2022 22:00:26 +0300
Subject: [PATCH 283/292] Fix same merge issues
---
.../cookieConsent/portalModal/PortalModal.test.tsx | 2 +-
.../cookieConsent/portalModal/PortalModal.tsx | 10 +++++-----
.../cookieConsent/useModalRenderChecker.ts | 13 ++++++-------
3 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/portalModal/PortalModal.test.tsx b/packages/react/src/components/cookieConsent/portalModal/PortalModal.test.tsx
index 02f77dd5b5..66a336cf38 100644
--- a/packages/react/src/components/cookieConsent/portalModal/PortalModal.test.tsx
+++ b/packages/react/src/components/cookieConsent/portalModal/PortalModal.test.tsx
@@ -7,7 +7,6 @@ import { act } from 'react-dom/test-utils';
import { PortalModal } from './PortalModal';
import { COOKIE_NAME } from '../cookieConsentController';
-import { Content } from '../CookieConsentContext';
import mockDocumentCookie from '../__mocks__/mockDocumentCookie';
import {
clickElement,
@@ -23,6 +22,7 @@ import {
waitForElementFocus,
} from '../test.util';
import { createContent } from '../content.builder';
+import { Content } from '../contexts/ContentContext';
const { defaultConsentData, unknownConsents, dataTestIds } = commonTestProps;
diff --git a/packages/react/src/components/cookieConsent/portalModal/PortalModal.tsx b/packages/react/src/components/cookieConsent/portalModal/PortalModal.tsx
index ac0f5016a4..b0f2b795e7 100644
--- a/packages/react/src/components/cookieConsent/portalModal/PortalModal.tsx
+++ b/packages/react/src/components/cookieConsent/portalModal/PortalModal.tsx
@@ -2,23 +2,23 @@ import React from 'react';
import { Portal } from './Portal';
import { Modal } from '../modal/Modal';
-import { ContentSource } from '../content.builder';
-import { Provider as CookieContextProvider } from '../CookieConsentContext';
+import { CookieConsentContext } from '../contexts/ContextComponent';
+import { CookieContentSource } from '../content.builder';
export function PortalModal({
contentSource,
cookieDomain,
rootId = 'HdsCookieConsentContainer',
}: {
- contentSource: ContentSource;
+ contentSource: CookieContentSource;
cookieDomain?: string;
rootId?: string;
}) {
return (
-
+
-
+
);
}
diff --git a/packages/react/src/components/cookieConsent/useModalRenderChecker.ts b/packages/react/src/components/cookieConsent/useModalRenderChecker.ts
index e7fdd496b5..cbda43e197 100644
--- a/packages/react/src/components/cookieConsent/useModalRenderChecker.ts
+++ b/packages/react/src/components/cookieConsent/useModalRenderChecker.ts
@@ -1,10 +1,9 @@
-import { useContext } from 'react';
-
-import { CookieConsentContext } from './CookieConsentContext';
+import { useCookieConsentContext } from './contexts/ConsentContext';
+import { useCookieContentContext } from './contexts/ContentContext';
export function useModalRenderChecker() {
- const cookieConsentContext = useContext(CookieConsentContext);
- const hasOnlyRequiredConsents =
- !cookieConsentContext.content.optionalCookies || cookieConsentContext.content.optionalCookies.groups.length === 0;
- return !hasOnlyRequiredConsents && !cookieConsentContext.hasUserHandledAllConsents();
+ const consentContext = useCookieConsentContext();
+ const contentContext = useCookieContentContext();
+ const hasOnlyRequiredConsents = !contentContext.optionalCookies || contentContext.optionalCookies.groups.length === 0;
+ return !hasOnlyRequiredConsents && !consentContext.hasUserHandledAllConsents();
}
From 4da0a3c6ac94621ac32583e25417b841713c7a43 Mon Sep 17 00:00:00 2001
From: Ville Miekk-oja
Date: Fri, 9 Sep 2022 15:45:14 +0300
Subject: [PATCH 284/292] Update loki reference images
---
...iphone7_Components_CookieConsent_English_Modal_Version.png | 3 +++
...iphone7_Components_CookieConsent_Finnish_Modal_Version.png | 4 ++--
..._laptop_Components_CookieConsent_English_Modal_Version.png | 3 +++
..._laptop_Components_CookieConsent_Finnish_Modal_Version.png | 4 ++--
4 files changed, 10 insertions(+), 4 deletions(-)
create mode 100644 packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_English_Modal_Version.png
create mode 100644 packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_English_Modal_Version.png
diff --git a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_English_Modal_Version.png b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_English_Modal_Version.png
new file mode 100644
index 0000000000..1e723fe016
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_English_Modal_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d062150509d1e9bbbd22745dcd7f41b9647ee9ea361efa7d617dc5c25705ed93
+size 157094
diff --git a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Finnish_Modal_Version.png b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Finnish_Modal_Version.png
index a5c46ac355..a2c5b0979e 100644
--- a/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Finnish_Modal_Version.png
+++ b/packages/react/.loki/reference/chrome_iphone7_Components_CookieConsent_Finnish_Modal_Version.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a15a6a446079f27d42526fb22dd1e6c76a06f8ac8c0095e243b3d8a73b4a6edf
-size 175943
+oid sha256:d0a72e01b26ee496bc5ab44625b1435a874adf4ad1ec086bbd58d7ff90264203
+size 175409
diff --git a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_English_Modal_Version.png b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_English_Modal_Version.png
new file mode 100644
index 0000000000..49d0b7328e
--- /dev/null
+++ b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_English_Modal_Version.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0653e2e7137ead67486ee4e024f80a9f4d0f081b8890af65a28f2cb409b91573
+size 56360
diff --git a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Finnish_Modal_Version.png b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Finnish_Modal_Version.png
index 2fa27cd6ba..e74bb74ea2 100644
--- a/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Finnish_Modal_Version.png
+++ b/packages/react/.loki/reference/chrome_laptop_Components_CookieConsent_Finnish_Modal_Version.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a0735f43f48f2a061bb70af260aa9bc56d99de347b32c4f44f6d1b43e55ab22c
-size 56280
+oid sha256:80f4ac64081d6391a446727c3e87ecba2db31d2fedcc6d83c13d3169801227ad
+size 56015
From d452ebf0f1115b0955567935deb0a33ecd226710 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Mon, 12 Sep 2022 14:29:26 +0300
Subject: [PATCH 285/292] Match checkboxAriaDescription translations with
text-prop
---
.../src/components/cookieConsent/content.json | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/packages/react/src/components/cookieConsent/content.json b/packages/react/src/components/cookieConsent/content.json
index 1626500ded..1151dd0da9 100644
--- a/packages/react/src/components/cookieConsent/content.json
+++ b/packages/react/src/components/cookieConsent/content.json
@@ -97,7 +97,7 @@
"sv": {
"title": "Nödvändig kakor",
"text": "Du kan inte förbjuda användningen av nödvändiga kakorna. De möjliggör webbplatsens funktioner och påverkar användbarheten.",
- "checkboxAriaDescription": "Du kan inte förbjuda användningen av nödvändiga kakor. De möjliggör webbplatsens funktioner och påverkar användbarheten."
+ "checkboxAriaDescription": "Du kan inte förbjuda användningen av nödvändiga kakorna. De möjliggör webbplatsens funktioner och påverkar användbarheten."
},
"en": {
"title": "Necessary cookies",
@@ -174,7 +174,7 @@
"title": "Preferenser",
"text": "Preferenskakor ändrar webbplatsens utseende och funktioner enligt användarens tidigare val.",
"expandAriaLabel": "Visa information om preferenscookies",
- "checkboxAriaDescription": "Preferenskakor ändrar webbplatsens utseende och funktioner enligt användarens tidigare val."
+ "checkboxAriaDetextscription": "Preferenskakor ändrar webbplatsens utseende och funktioner enligt användarens tidigare val."
},
"en": {
"title": "Preferences",
@@ -387,20 +387,20 @@
"fi": {
"title": "Perustoimintoihin liittyvät evästeet",
"text": "Sivusto ei toimi ilman näitä",
- "expandAriaLabel": "essential expandAriaLabel",
- "checkboxAriaDescription": "essential checkboxAriaDescription"
+ "expandAriaLabel": "Näytä perustoimintoihin liittyvien evästeiden tiedot",
+ "checkboxAriaDescription": "Sivusto ei toimi ilman näitä"
},
"sv": {
"title": "Cookies relaterade till grundläggande funktioner",
"text": "Du kan inte förbjuda användningen av cookies relaterade till grundläggande funktioner. De möjliggör webbplatsens funktioner och påverkar användbarheten.",
"expandAriaLabel": "Visa information om cookies relaterade till grundläggande funktioner",
- "checkboxAriaDescription": "Visa information om cookies relaterade till grundläggande funktioner"
+ "checkboxAriaDescription": "Du kan inte förbjuda användningen av cookies relaterade till grundläggande funktioner. De möjliggör webbplatsens funktioner och påverkar användbarheten."
},
"en": {
"title": "Cookies related to basic functionalities",
"text": "Cookies related to basic functionalities cannot be rejected. They enable the proper functioning of the website and affect the usability",
"expandAriaLabel": "Show cookie information related to basic functionalities",
- "checkboxAriaDescription": "Cookies related to basic functions are required, and the website will not function properly without them. "
+ "checkboxAriaDescription": "Cookies related to basic functionalities cannot be rejected. They enable the proper functioning of the website and affect the usability"
}
},
"statistics": {
@@ -428,19 +428,19 @@
"title": "Yhteiset evästeet",
"text": "Helsingin kaupungin palvelut käyttävät yhteisiä evästeitä. Tallennamme nämä suostumukset, jottei sinun tarvitse hyväksyä samoja evästeitä uudelleen kaupungin muissa palveluissa.",
"expandAriaLabel": "Näytä yhteisiin evästesuostumuksiin liittyvien evästeiden tiedot",
- "checkboxAriaDescription": "Helsingin kaupungin palvelut käyttävät yhteisiä evästeitä. Tallennamme suostumuksen, jottei sinun tarvitse hyväksyä samoja evästeitä uudelleen muissa kaupungin palveluissa."
+ "checkboxAriaDescription": "Helsingin kaupungin palvelut käyttävät yhteisiä evästeitä. Tallennamme nämä suostumukset, jottei sinun tarvitse hyväksyä samoja evästeitä uudelleen muissa kaupungin palveluissa."
},
"sv": {
"title": "Gemensamma cookies",
"text": "Helsingfors stads tjänster använder gemensamma cookies. Vi lagrar dessa samtycken så att du inte behöver godkänna samma cookies igen i stadens andra tjänster.",
"expandAriaLabel": "Visa information om cookies relaterade till gemensamma cookie-samtycken",
- "checkboxAriaDescription": "Helsingfors stads tjänster använder gemensamma cookies. Vi lagrar samtycket så att du inte behöver godkänna samma cookies igen i stadens andra tjänster."
+ "checkboxAriaDescription": "Helsingfors stads tjänster använder gemensamma cookies. Vi lagrar dessa samtycken så att du inte behöver godkänna samma cookies igen i stadens andra tjänster."
},
"en": {
"title": "Shared consent",
"text": "City of Helsinki services use shared consent. We will store these consents so that you do not have to accept the same cookies again on other City services.",
"expandAriaLabel": "Show cookie information related to shared cookie consent",
- "checkboxAriaDescription": "City of Helsinki services use shared consent. We will store the consent so that you do not have to accept the same cookies again on other City services."
+ "checkboxAriaDescription": "City of Helsinki services use shared consent. We will store these consents so that you do not have to accept the same cookies again on other City services."
}
}
},
From 711df6dea5c8a3844b1f5f801ed6080d71aafdd4 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 14 Sep 2022 11:02:09 +0300
Subject: [PATCH 286/292] Auto-format mdx files. No content changes.
---
.../cookie-consent/accessibility.mdx | 1 +
.../docs/components/cookie-consent/api.mdx | 139 +++++++++---------
.../docs/components/cookie-consent/code.mdx | 50 ++++---
.../docs/components/cookie-consent/index.mdx | 27 +++-
.../docs/components/cookie-consent/tabs.mdx | 6 +-
5 files changed, 133 insertions(+), 90 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/accessibility.mdx b/site/src/docs/components/cookie-consent/accessibility.mdx
index 22dbc932f9..57a90d8296 100644
--- a/site/src/docs/components/cookie-consent/accessibility.mdx
+++ b/site/src/docs/components/cookie-consent/accessibility.mdx
@@ -10,5 +10,6 @@ export default ({ children, pageContext }) => HDS-provided content file. The file contains all user interface strings, language options, descriptions for common cookie groups, and details about common Helsinki cookies. By default, this content file is used. You can also override parts of it and add your project-specific groups and cookies.
#### ContentSource
+
The `contentSource` property lists all content, language options, and callbacks for the component. The given source is merged with the default `content.json` to create a content-object.
-| Property | Required | Description |
-| -------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `siteName` | **Yes** | Cookie consent main heading. |
-| `currentLanguage` | **Yes** | Currently selected language. Used for picking translations from `content.json`. Is also set to `content.language.current`. Supported values are `fi`, `sv`, and `en`. |
-| `requiredCookies` | No | Required cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table: [Required and optional cookies](/components/cookie-consent/api#required-and-optional-cookies) |
-| `optionalCookies` | No | Optional cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table: [Required and optional cookies](/components/cookie-consent/api#required-and-optional-cookies) |
-| `requiredCookies.groups`, `optionalCookies.groups` | No | List of cookie groups. All cookies must belong to a group. Groups with property `commonGroup` will be auto-filled from `content.json`. |
-| `requiredCookies.groups[].cookies`, `requiredCookies.cookies`, `optionalCookies.groups[].cookies`, `optionalCookies.cookies` | No | List of individual cookies. All cookies must belong to a group or they must have property `commonGroup` or `groupId`. The `groupId` must match `group.id` of a custom group and the `commonGroup` must match groups in `content.json`. Do not give both. |
-| `texts` | No | User interface string overrides. By default, strings are fetched from `content.json` and this object overrides one or multiple texts. |
-| `language` | No | Overrides for default language options. By default, options are fetched from `content.json` and this object overrides one or more properties. `onLanguageChange` callback is also added here. |
-| `onAllConsentsGiven` | No | See Callbacks section below. |
-| `onConsentsParsed` | No | See Callbacks section below. |
-| `noCommonConsentCookie` | No | Consents are saved to a cookie and this option can prevent showing that cookie in the list of consents. If this is not true, `requiredConsents` are always shown and a common group “sharedConsents” is added to it and also a common cookie “helConsentCookie” to that group. All content for those is in `content.json`. |
-| `focusTargetSelector` | No | When the modal is closed or the ESC key is pressed when it is open, the focus must be shifted outside the modal. This defines the element to set focus to with this selector (string). Not needed when modal is not used. Throws an error is not set for modal. |
-[Table 1:ContentSource object properties]|
+| Property | Required | Description |
+| ---------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `siteName` | **Yes** | Cookie consent main heading. |
+| `currentLanguage` | **Yes** | Currently selected language. Used for picking translations from `content.json`. Is also set to `content.language.current`. Supported values are `fi`, `sv`, and `en`. |
+| `requiredCookies` | No | Required cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table: [Required and optional cookies](/components/cookie-consent/api#required-and-optional-cookies) |
+| `optionalCookies` | No | Optional cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table: [Required and optional cookies](/components/cookie-consent/api#required-and-optional-cookies) |
+| `requiredCookies.groups`, `optionalCookies.groups` | No | List of cookie groups. All cookies must belong to a group. Groups with property `commonGroup` will be auto-filled from `content.json`. |
+| `requiredCookies.groups[].cookies`, `requiredCookies.cookies`, `optionalCookies.groups[].cookies`, `optionalCookies.cookies` | No | List of individual cookies. All cookies must belong to a group or they must have property `commonGroup` or `groupId`. The `groupId` must match `group.id` of a custom group and the `commonGroup` must match groups in `content.json`. Do not give both. |
+| `texts` | No | User interface string overrides. By default, strings are fetched from `content.json` and this object overrides one or multiple texts. |
+| `language` | No | Overrides for default language options. By default, options are fetched from `content.json` and this object overrides one or more properties. `onLanguageChange` callback is also added here. |
+| `onAllConsentsGiven` | No | See Callbacks section below. |
+| `onConsentsParsed` | No | See Callbacks section below. |
+| `noCommonConsentCookie` | No | Consents are saved to a cookie and this option can prevent showing that cookie in the list of consents. If this is not true, `requiredConsents` are always shown and a common group “sharedConsents” is added to it and also a common cookie “helConsentCookie” to that group. All content for those is in `content.json`. |
+| `focusTargetSelector` | No | When the modal is closed or the ESC key is pressed when it is open, the focus must be shifted outside the modal. This defines the element to set focus to with this selector (string). Not needed when modal is not used. Throws an error is not set for modal. |
+| [Table 1:ContentSource object properties] |
##### ContentSource examples
+
You can find examples of ContentSource property contents in the HDS CookieConsent Storybook examples.
-#### CookieDomain
-Rarely used. Cookie consents are stored to a cookie whose domain is automatically set to accept subdomains: *.hel.fi or *.hel.ninja or *.domain.com. Some sites are included in the public suffix list and cookies for those sites cannot accept subdomain cookies. Github.io is one of those sites and HDS examples do not work there unless the cookie domain can be overridden. Therefore `cookieDomain` was added.
+#### CookieDomain
+
+Rarely used. Cookie consents are stored to a cookie whose domain is automatically set to accept subdomains: _.hel.fi or _.hel.ninja or \*.domain.com. Some sites are included in the public suffix list and cookies for those sites cannot accept subdomain cookies. Github.io is one of those sites and HDS examples do not work there unless the cookie domain can be overridden. Therefore `cookieDomain` was added.
#### Detailed info about properties
##### Required and optional cookies
-| Property | Description |
-| --------------------------- | -------------------------------------------------------------------------------------------------------------------- |
-| `requiredCookies` | List of required consents and their descriptions. |
-| `optionalCookies` | List of optional consents and their descriptions. |
-| `*.title` | Title for the consent group. Optional. |
-| `*.text` | Description for the consent group. Optional. |
-| `*.checkboxAriaDescription` | Aria description of the checkbox shown with the category. Optional. |
-| `*.groups` | Optional list of groups. More info is below: [Cookie groups](/components/cookie-consent/api#cookie-groups) |
-| `*.cookies` | Optional list of cookies. More info is below: [Cookie information](/components/cookie-consent/api#cookie-information) |
-[Table 2:Cookie category properties]|
+| Property | Description |
+| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
+| `requiredCookies` | List of required consents and their descriptions. |
+| `optionalCookies` | List of optional consents and their descriptions. |
+| `*.title` | Title for the consent group. Optional. |
+| `*.text` | Description for the consent group. Optional. |
+| `*.checkboxAriaDescription` | Aria description of the checkbox shown with the category. Optional. |
+| `*.groups` | Optional list of groups. More info is below: [Cookie groups](/components/cookie-consent/api#cookie-groups) |
+| `*.cookies` | Optional list of cookies. More info is below: [Cookie information](/components/cookie-consent/api#cookie-information) |
+| [Table 2:Cookie category properties] |
##### Cookie groups
| Property | Description |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `group[].groupId` / `group[].commonGroup` | Both optional. If a common group is used, then the `commonGroup`. If this is a custom group provide an `groupId`. Not required, if there are no cookies that have `groupId` set. |
-| `group[].title` | Only for custom groups. Title of the group. Cannot be set for a common group. **Must be unique.** |
-| `group[].text` | Only for custom groups. Cannot be set for a common group. Description of the group. |
-| `group[].expandAriaLabel` | Only for custom groups. Cannot be set for a common group. Aria-label for the button to show more details of the group. |
-| `group[].checkboxAriaDescription` | Only for custom groups. Cannot be set for a common group. Aria-description for the checkbox for giving consent for all cookies in the group |
+| `group[].title` | Only for custom groups. Title of the group. Cannot be set for a common group. **Must be unique.** |
+| `group[].text` | Only for custom groups. Cannot be set for a common group. Description of the group. |
+| `group[].expandAriaLabel` | Only for custom groups. Cannot be set for a common group. Aria-label for the button to show more details of the group. |
+| `group[].checkboxAriaDescription` | Only for custom groups. Cannot be set for a common group. Aria-description for the checkbox for giving consent for all cookies in the group |
| `group[].cookies` | Optional list of cookies in this group. |
-[Table 3:Cookie group properties]|
+| [Table 3:Cookie group properties] |
##### Cookie information
-| Property | Description |
-| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Property | Description |
+| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `cookie[].groupId` / `cookie[].commonGroup` | The group this cookie belongs to. Optional. Not needed when the cookie is defined in an `optionalCookies` / `requiredCookies.group` If `commonGroup` is used and the group itself is not listed, it is auto-added from `content.json`. |
-| `cookie[].commonCookie` | Optional. Use when the cookie is common. |
-| `cookie[].id` | The ID of the consent. This ID is saved in the consent cookie. **Must be unique.** Only for custom cookies. Cannot be set for a common cookie. |
-| `cookie[].name` | Readable cookie name. Only for custom cookies. Cannot be set for a common cookie. |
-| `cookie[].hostName` | Hostname where it is used. Only for custom cookies. Cannot be set for a common cookie. |
-| `cookie[].description` | Cookie usage description. Only for custom cookies. Cannot be set for a common cookie. |
-| `cookie[].expiration` | When does the cookie expire. Only for custom cookies. Cannot be set for a common cookie. |
-[Table 4:Cookie information properties]|
+| `cookie[].commonCookie` | Optional. Use when the cookie is common. |
+| `cookie[].id` | The ID of the consent. This ID is saved in the consent cookie. **Must be unique.** Only for custom cookies. Cannot be set for a common cookie. |
+| `cookie[].name` | Readable cookie name. Only for custom cookies. Cannot be set for a common cookie. |
+| `cookie[].hostName` | Hostname where it is used. Only for custom cookies. Cannot be set for a common cookie. |
+| `cookie[].description` | Cookie usage description. Only for custom cookies. Cannot be set for a common cookie. |
+| `cookie[].expiration` | When does the cookie expire. Only for custom cookies. Cannot be set for a common cookie. |
+| [Table 4:Cookie information properties] |
##### Callbacks
+
The `contentSource` object passed to the component can also include callback functions:
-| Property | Usage | Arguments |
-| -------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `onAllConsentsGiven` | Called when the user has given all consents. Not called if consents are not asked for. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` |
-| `onConsentsParsed` | Called when cookie consents are read from the browser. Called always even if consent has been given. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` and boolean indicating are all consents handled. If true, there is no reason to ask for consent. |
-[Table 5:Component object callbacks]|
+| Property | Usage | Arguments |
+| ------------------------------------ | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `onAllConsentsGiven` | Called when the user has given all consents. Not called if consents are not asked for. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` |
+| `onConsentsParsed` | Called when cookie consents are read from the browser. Called always even if consent has been given. | Object with cookie.id as the key and true/false as value `{matomo: true, marketing: false}` and boolean indicating are all consents handled. If true, there is no reason to ask for consent. |
+| [Table 5:Component object callbacks] |
##### Strings and language
+
The following strings can be overridden if needed. Note that you also need to provide translations if you override these. It is recommended to use the provided strings.
| Property | Description |
@@ -97,25 +102,25 @@ The following strings can be overridden if needed. Note that you also need to pr
| `texts.sections.main.text` | Main description. **The most common override because this is service-specific.** |
| `texts.sections.details.title` | Heading shown in the details. Seen when settings are opened. |
| `texts.sections.details.text` | Description shown in the details. Seen when settings are opened. |
-[Table 6:Main text content overrides]|
-
-| Property | Description |
-| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
-| `ui.showSettings` | Text on the show/hide settings -button when settings are hidden. |
-| `ui.hideSettings` | Text on the show/hide settings -button when settings are shown. |
-| `ui.approveAllConsents` | Button text for giving consent to all cookies. Shown when settings are closed and the user cannot give optional consents. |
-| `ui.approveRequiredAndSelectedConsents` | Button text for giving consent to required cookies and selected cookies. Shown when settings are open. |
-| `ui.approveOnlyRequiredConsents` | Button text for giving consent to only to required cookies. All optional cookie consents are revoked. |
-| `ui.readMore` | Text shown on a button when modal loses focus and is shrunk. |
-[Table 7:User interface string overrides]|
-
-| Property | Description |
-| --------------------------- | ------------------------------------------------------------ |
-| `tableHeadings.name` | Title of the “name” column in the cookie description. |
-| `tableHeadings.hostName` | Title of the “hostName” column in the cookie description. |
-| `tableHeadings.description` | Title of the “description” column in the cookie description. |
-| `tableHeadings.expiration` | Title of the “expiration” column in the cookie description. |
-[Table 8:Table heading string overrides]|
+| [Table 6:Main text content overrides] |
+
+| Property | Description |
+| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
+| `ui.showSettings` | Text on the show/hide settings -button when settings are hidden. |
+| `ui.hideSettings` | Text on the show/hide settings -button when settings are shown. |
+| `ui.approveAllConsents` | Button text for giving consent to all cookies. Shown when settings are closed and the user cannot give optional consents. |
+| `ui.approveRequiredAndSelectedConsents` | Button text for giving consent to required cookies and selected cookies. Shown when settings are open. |
+| `ui.approveOnlyRequiredConsents` | Button text for giving consent to only to required cookies. All optional cookie consents are revoked. |
+| `ui.readMore` | Text shown on a button when modal loses focus and is shrunk. |
+| [Table 7:User interface string overrides] |
+
+| Property | Description |
+| ---------------------------------------- | ------------------------------------------------------------ |
+| `tableHeadings.name` | Title of the “name” column in the cookie description. |
+| `tableHeadings.hostName` | Title of the “hostName” column in the cookie description. |
+| `tableHeadings.description` | Title of the “description” column in the cookie description. |
+| `tableHeadings.expiration` | Title of the “expiration” column in the cookie description. |
+| [Table 8:Table heading string overrides] |
The consent banner language is controlled via a language dropdown element. Note that the current language is passed in as `content.currentLanguage` and that value is stored into `language.current`.
@@ -125,7 +130,7 @@ The consent banner language is controlled via a language dropdown element. Note
| `language.current` | Current language. |
| `language.languageSelectorAriaLabel` | Aria-label for the language selector button. |
| `language.onLanguageChange` | Callback called when new language is selected. Called with new language.code as the argument. |
-[Table 9:Language properties]|
+| [Table 9:Language properties] |
### Saving consents
@@ -133,4 +138,4 @@ Consents that the user has given are saved to a `city-of-helsinki-cookie-consent
Cookies are always strings and consents are stored as a JSON-formatted string such as `{"cookie-id":"true","another-cookie-id":"false"}`.
-The ID of the cookie is stored to `cookie.id`. `True` means the user has given consent for that cookie. All required cookies are always stored `true`, but other sites may list a common cookie optional, so the stored consent is not `true` by default.
+The ID of the cookie is stored to `cookie.id`. `True` means the user has given consent for that cookie. All required cookies are always stored `true`, but other sites may list a common cookie optional, so the stored consent is not `true` by default.
diff --git a/site/src/docs/components/cookie-consent/code.mdx b/site/src/docs/components/cookie-consent/code.mdx
index 874c0f053e..af7020f2cb 100644
--- a/site/src/docs/components/cookie-consent/code.mdx
+++ b/site/src/docs/components/cookie-consent/code.mdx
@@ -10,7 +10,7 @@ export default ({ children, pageContext }) => {
currentLanguage: language,
optionalCookies: {
cookies: [
- {
- commonGroup: 'statistics',
- commonCookie: 'matomo',
- },
- ],
+ {
+ commonGroup: 'statistics',
+ commonCookie: 'matomo',
+ },
+ ],
},
language: {
onLanguageChange,
@@ -41,7 +41,7 @@ export const SimpleModalVersion = () => {
if (!consents.matomo) {
// stop matomo tracking
}
- }
+ },
};
const Application = () => {
@@ -63,7 +63,13 @@ export const SimpleModalVersion = () => {
};
```
-View working modal demo in Storybook
+
+ View working modal demo in Storybook
+
### Rendered on a page
@@ -88,7 +94,7 @@ export const PageVersion = () => {
if (!consents.matomo) {
// stop matomo tracking
}
- }
+ },
};
return (
@@ -99,19 +105,27 @@ export const PageVersion = () => {
};
```
-View working page example in Storybook
+
+ View working page example in Storybook
+
### Packages
-| Package | Included | Storybook link | Source link |
-| ----------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **HDS React** |
| - | - |
### Properties
+
Note! You can find the full list of properties in the React Storybook.
Also, you can find a detailed description of the `contentSource` property in the [API tab](/components/cookie-consent/api).
-| Property | Description | Values | Default value |
-| --------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------- | ----------------------------------------------- |
-| `contentSource` | Main configurations of the Cookie Consent. | `object` | - |
-| `cookieDomain` | A string representing the domain of the cookie. | `string` | Default value is the current domain |
+| Property | Description | Values | Default value |
+| --------------- | ----------------------------------------------- | -------- | ----------------------------------- |
+| `contentSource` | Main configurations of the Cookie Consent. | `object` | - |
+| `cookieDomain` | A string representing the domain of the cookie. | `string` | Default value is the current domain |
diff --git a/site/src/docs/components/cookie-consent/index.mdx b/site/src/docs/components/cookie-consent/index.mdx
index f2b653ad24..ae6dc2c1db 100644
--- a/site/src/docs/components/cookie-consent/index.mdx
+++ b/site/src/docs/components/cookie-consent/index.mdx
@@ -15,9 +15,16 @@ This documentation page is about HDS CookieCompliance component. If you are look
### Example
-View modal example in Storybook
+
+ View modal example in Storybook
+
### Principles
+
- Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search engine).
- The cookie consent can be rendered either as a modal or as a page. This allows using the same cookie data for both presentation variations.
- Use the modal variant as a banner when the user enters the site.
@@ -29,11 +36,25 @@ This documentation page is about HDS CookieCompliance component. If you are look
### Variations
### Modal
+
The default banner variant opens at the bottom of the viewport. It is opened if the consent for cookies has not been given or if the cookies have changed. The banner can be expanded to view and change cookie settings.
-View modal example in Storybook
+
+ View modal example in Storybook
+
### Rendered on a page
+
The cookie consent expanded settings page can be rendered as a separate page. This is used to create a cookie page that the user can access via a link in the [Footer](/components/footer) element. This allows the user to view or edit cookie settings after the initial consent has been given.
-View page example in Storybook
+
+ View page example in Storybook
+
diff --git a/site/src/docs/components/cookie-consent/tabs.mdx b/site/src/docs/components/cookie-consent/tabs.mdx
index be176e9492..6296ac35ef 100644
--- a/site/src/docs/components/cookie-consent/tabs.mdx
+++ b/site/src/docs/components/cookie-consent/tabs.mdx
@@ -14,11 +14,13 @@ import PageTabs from '../../../components/PageTabs';
WIP
- The cookie compliance component informs users about cookie usage. This banner is shown when they visit a website or an application for the first time.
+ The cookie compliance component informs users about cookie usage. This banner is shown when they visit a website or an
+ application for the first time.
- This component is work in progress. Breaking changes are possible and the final accessibility audit has not been done. It has been released for early users and to gather feedback.
+ This component is work in progress. Breaking changes are possible and the final accessibility audit has not been done.
+ It has been released for early users and to gather feedback.
From 3404ef5283650dfaa1d05d4449b11fe237ff3a74 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 14 Sep 2022 11:02:50 +0300
Subject: [PATCH 287/292] Fixes suggested by Grammarly
---
site/src/docs/components/cookie-consent/api.mdx | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/api.mdx b/site/src/docs/components/cookie-consent/api.mdx
index 2cdf8cbf3b..11177c0229 100644
--- a/site/src/docs/components/cookie-consent/api.mdx
+++ b/site/src/docs/components/cookie-consent/api.mdx
@@ -24,7 +24,7 @@ The `contentSource` property lists all content, language options, and callbacks
| `currentLanguage` | **Yes** | Currently selected language. Used for picking translations from `content.json`. Is also set to `content.language.current`. Supported values are `fi`, `sv`, and `en`. |
| `requiredCookies` | No | Required cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table: [Required and optional cookies](/components/cookie-consent/api#required-and-optional-cookies) |
| `optionalCookies` | No | Optional cookies can have partial data or all data described in the table below. Missing texts are auto-filled. See examples below this table: [Required and optional cookies](/components/cookie-consent/api#required-and-optional-cookies) |
-| `requiredCookies.groups`, `optionalCookies.groups` | No | List of cookie groups. All cookies must belong to a group. Groups with property `commonGroup` will be auto-filled from `content.json`. |
+| `requiredCookies.groups`, `optionalCookies.groups` | No | List of cookie groups. All cookies must belong to a group. Groups with the property `commonGroup` will be auto-filled from `content.json`. |
| `requiredCookies.groups[].cookies`, `requiredCookies.cookies`, `optionalCookies.groups[].cookies`, `optionalCookies.cookies` | No | List of individual cookies. All cookies must belong to a group or they must have property `commonGroup` or `groupId`. The `groupId` must match `group.id` of a custom group and the `commonGroup` must match groups in `content.json`. Do not give both. |
| `texts` | No | User interface string overrides. By default, strings are fetched from `content.json` and this object overrides one or multiple texts. |
| `language` | No | Overrides for default language options. By default, options are fetched from `content.json` and this object overrides one or more properties. `onLanguageChange` callback is also added here. |
@@ -124,12 +124,12 @@ The following strings can be overridden if needed. Note that you also need to pr
The consent banner language is controlled via a language dropdown element. Note that the current language is passed in as `content.currentLanguage` and that value is stored into `language.current`.
-| Property | Description |
-| ------------------------------------ | --------------------------------------------------------------------------------------------- |
-| `language.languageOptions` | List of selectable languages. Format: `[{ code: 'fi', label: 'Suomeksi (FI)' }]` |
-| `language.current` | Current language. |
-| `language.languageSelectorAriaLabel` | Aria-label for the language selector button. |
-| `language.onLanguageChange` | Callback called when new language is selected. Called with new language.code as the argument. |
+| Property | Description |
+| ------------------------------------ | ----------------------------------------------------------------------------------------------- |
+| `language.languageOptions` | List of selectable languages. Format: `[{ code: 'fi', label: 'Suomeksi (FI)' }]` |
+| `language.current` | Current language. |
+| `language.languageSelectorAriaLabel` | Aria-label for the language selector button. |
+| `language.onLanguageChange` | Callback called when a new language is selected. Called with new language.code as the argument. |
| [Table 9:Language properties] |
### Saving consents
@@ -138,4 +138,4 @@ Consents that the user has given are saved to a `city-of-helsinki-cookie-consent
Cookies are always strings and consents are stored as a JSON-formatted string such as `{"cookie-id":"true","another-cookie-id":"false"}`.
-The ID of the cookie is stored to `cookie.id`. `True` means the user has given consent for that cookie. All required cookies are always stored `true`, but other sites may list a common cookie optional, so the stored consent is not `true` by default.
+The ID of the cookie is stored as `cookie.id`. `True` means the user has given consent for that cookie. All required cookies are always stored `true`, but other sites may list a common cookie optional, so the stored consent is not `true` by default.
From 7af95f97938c7ea5518b56f59e21ef8c1d1dd65a Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 14 Sep 2022 11:42:22 +0300
Subject: [PATCH 288/292] Documentation improvements
---
.../components/cookie-consent/accessibility.mdx | 4 ++--
site/src/docs/components/cookie-consent/api.mdx | 14 +++++++++-----
site/src/docs/components/cookie-consent/index.mdx | 3 ++-
3 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/accessibility.mdx b/site/src/docs/components/cookie-consent/accessibility.mdx
index 57a90d8296..186a2ca996 100644
--- a/site/src/docs/components/cookie-consent/accessibility.mdx
+++ b/site/src/docs/components/cookie-consent/accessibility.mdx
@@ -11,5 +11,5 @@ export default ({ children, pageContext }) =>
Date: Wed, 14 Sep 2022 11:44:13 +0300
Subject: [PATCH 289/292] Auto-format pattern mdx files
---
site/src/docs/patterns/cookies/basics.mdx | 43 ++++++-----
.../cookies/common-helsinki-cookies.mdx | 43 ++++++-----
.../cookies/using-the-cookieconsent.mdx | 77 +++++++++++++------
3 files changed, 103 insertions(+), 60 deletions(-)
diff --git a/site/src/docs/patterns/cookies/basics.mdx b/site/src/docs/patterns/cookies/basics.mdx
index aa279a0617..2c4b23c27c 100644
--- a/site/src/docs/patterns/cookies/basics.mdx
+++ b/site/src/docs/patterns/cookies/basics.mdx
@@ -13,7 +13,8 @@ import Image from '../../../components/Image';
WIP
- The cookie compliance pattern describes how the user is informed about the use of cookies. The pattern also offers a way to accept or decline non-necessary cookies and change the consent later if needed.
+ The cookie compliance pattern describes how the user is informed about the use of cookies. The pattern also offers a
+ way to accept or decline non-necessary cookies and change the consent later if needed.
The city of Helsinki cookie pattern is based on Traficom's cookie guidelines for service provider.
@@ -30,13 +31,13 @@ The consent needs to be asked for a cookie that is not necessary for the use of
If the service cannot be used or one of its main functions does not operate without a specific cookie, the cookie can be considered **necessary**. Necessary cookies do not need consent from the user but they still have to be informed. The user cannot deny the use of necessary cookies - these selections are grayed out in the cookie consent component. The table below demonstrates when consent is needed and when it is not.
-| Types of cookies | Is consent needed? | What needs to be done?
-| ----------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------ |
-| Only necessary cookies | No | The cookie consent banner does not need to be shown. The list of cookies has to be available on a separate cookies page.
-| Only optional cookies | Yes | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
-| Both necessary and optional cookies | Yes, for all optional cookies | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page.
-| No cookies at all | No | No actions needed.
-[Table 1:Cases when the consent is needed and when it is not]|
+| Types of cookies | Is consent needed? | What needs to be done? |
+| ------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Only necessary cookies | No | The cookie consent banner does not need to be shown. The list of cookies has to be available on a separate cookies page. |
+| Only optional cookies | Yes | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page. |
+| Both necessary and optional cookies | Yes, for all optional cookies | Show the cookie consent banner and ask for consent for each optional cookie category. The list of cookies has to be available on a separate cookies page. |
+| No cookies at all | No | No actions needed. |
+| [Table 1:Cases when the consent is needed and when it is not] |
Refer to the next chapter to learn how to categorise your cookies and decide which cookies should be necessary and which should not.
@@ -45,6 +46,7 @@ Refer to the next chapter to learn how to categorise your cookies and decide whi
The cookie consent needs to be asked when your service becomes public (even during alpha/beta periods).
To prepare to use the HDS cookie compliance component, you have to:
+
1. List all the cookies related to your service
2. Decide which cookies are necessary
3. Categorise cookies into predefined categories
@@ -57,17 +59,17 @@ First, you need to list all the cookies your service is using. It is also a good
For each cookie, you need to gather and display the following information. This information will be displayed in the cookie consent window if the user wishes to get more information about a specific cookie.
-| Cookie data | Description | Example |
-| ---------------------- | ------------------------------------------------------------------------------------------------- | ------- |
-| **Name** | What is the name of the cookie file? | "cookie-agreed"
-| **Cookie set by** | What domain is the provider of this cookie? | "hel.fi"
-| **Purpose of use** | Why the cookie is needed? What purpose does it serve? | "Used to store information about whether visitors have given or declined the use of cookie categories used on this service."
-| **Period of validity** | How long the cookie will be valid? This means time to expire from the creation of the cookie. | "100 days"
-[Table 2:Information that needs to be shown for each cookie]|
+| Cookie data | Description | Example |
+| ------------------------------------------------------------ | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
+| **Name** | What is the name of the cookie file? | "cookie-agreed" |
+| **Cookie set by** | What domain is the provider of this cookie? | "hel.fi" |
+| **Purpose of use** | Why the cookie is needed? What purpose does it serve? | "Used to store information about whether visitors have given or declined the use of cookie categories used on this service." |
+| **Period of validity** | How long the cookie will be valid? This means time to expire from the creation of the cookie. | "100 days" |
+| [Table 2:Information that needs to be shown for each cookie] |
#### What if the user has given consent to my cookies in some other Helsinki service?
-Using common Helsinki cookie consent brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B. Sites sharing cookies must have the same domain. e.g. *.hel.fi. To learn more about common Helsinki service cookies, please refer to the [Common Helsinki cookies page](/patterns/cookies/common-helsinki-cookies).
+Using common Helsinki cookie consent brings the benefit of sharing consents. If user gives consents at site A, same consents does not have to be asked again at site B. Sites sharing cookies must have the same domain. e.g. \*.hel.fi. To learn more about common Helsinki service cookies, please refer to the [Common Helsinki cookies page](/patterns/cookies/common-helsinki-cookies).
### 2. Decide which cookies are necessary
@@ -76,7 +78,10 @@ The next step is to determine which cookies can be considered necessary. General
If you have a hard time determining whether a cookie is a necessary cookie, refer to the cookie category table in the next chapter for more examples.
- As a general rule of thumb, if even one use case of the cookie is not necessary, then the cookie must be optional and consent is needed. An example of this is Google's reCAPTHA. While the primary use of the cookie is for information security and it could be considered necessary, Google will also gather data about the user. Due to this, the cookie cannot be considered necessary and consent is needed.
+ As a general rule of thumb, if even one use case of the cookie is not necessary, then the cookie must be optional and
+ consent is needed. An example of this is Google's reCAPTHA. While the primary use of the cookie is for information
+ security and it could be considered necessary, Google will also gather data about the user. Due to this, the cookie
+ cannot be considered necessary and consent is needed.
### 3. Categorise cookies into predefined categories
@@ -98,8 +103,8 @@ To help the user understand the reasoning behind cookies, it is required to grou
| **Third-party services** | Cookies allow external services (such as social media platforms) to operate on this website. | Not considered necessary unless cookies are used only after opening the third-party service (e.g. a chat window). | Cookies used by embedded media such as videos or podcasts |
| **Content presentation** | Cookies are used to display various types of content to the user. | Can be considered necessary if the cookie is strictly related to presenting the content and not gathering data. | Monitoring how the user is using specific content |
| **Location** | Location cookies can be used to utilise location information (GPS) received from the user’s device. | Never necessary. | Accurate GPS location |
-| **Load balancing** | Load-balancing cookies ensure that the service loads and works quickly and efficiently. | Always necessary (as they ensure that the service is operating smoothly). | A client identifying hash to enable better routing |
-[Table 3:Cookie categories]|
+| **Load balancing** | Load-balancing cookies ensure that the service loads and works quickly and efficiently. | Always necessary (as they ensure that the service is operating smoothly). | A client identifying hash to enable better routing |
+| [Table 3:Cookie categories] |
#### Can I use a custom category?
diff --git a/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx b/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
index d4563d7fc4..275b434951 100644
--- a/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
+++ b/site/src/docs/patterns/cookies/common-helsinki-cookies.mdx
@@ -12,33 +12,38 @@ import LeadParagraph from '../../../components/LeadParagraph';
WIP
- Using common Helsinki cookie consent brings the benefit of sharing consents. This is useful both for the user and the service. The user only has to give their consent once and it becomes easier for the service to manage its cookies.
+ Using common Helsinki cookie consent brings the benefit of sharing consents. This is useful both for the user and the
+ service. The user only has to give their consent once and it becomes easier for the service to manage its cookies.
-## Key principles of using common cookies
-- You can use common Helsinki cookies if your service is using the *.hel.fi domain.
-- When common cookies are available, use them instead of creating custom cookies. This way the user only has to give their consent once between multiple Helsinki services.
-- When a common cookie is used, it must be used **exactly** as described on this page. If you modify the cookie in any way, it is no longer a common cookie.
-- If your service is using custom cookies alongside common cookies, you still need to ask for consent for the custom cookies (if they are considered optional).
-- You can either use all or a part of the common cookies.
- - Note, that some of the services (e.g. Matomo) may require multiple common cookies for it to work.
+## Key principles of using common cookies - You can use common Helsinki cookies if your service is using the \*.hel.fi domain.
-## Common cookies between *.hel.fi sites
-The following is a list of approved common cookies between services using *.hel.fi domain. You can find this list as a JSON object in the Helsinki Design System GitHub repository.
+- When common cookies are available, use them instead of creating custom cookies. This way the user only has to give their
+ consent once between multiple Helsinki services. - When a common cookie is used, it must be used **exactly** as described
+ on this page. If you modify the cookie in any way, it is no longer a common cookie. - If your service is using custom cookies
+ alongside common cookies, you still need to ask for consent for the custom cookies (if they are considered optional). - You
+ can either use all or a part of the common cookies. - Note, that some of the services (e.g. Matomo) may require multiple
+ common cookies for it to work.
+
+## Common cookies between \*.hel.fi sites
+
+The following is a list of approved common cookies between services using \*.hel.fi domain. You can find this list as a JSON object in the Helsinki Design System GitHub repository.
### General
+
General cookies are part of the **Preferences** category.
-| Cookie name | Cookie set by | Purpose of use | Period of validity |
-| ---------------------- | --------------- | ------------------------------------------------- | ------------------- |
-| `i18n-language` | hel.fi | Stores the user's selected language | 1826 days |
-[Table 1:Common preference cookies between *.hel.fi domain services]|
+| Cookie name | Cookie set by | Purpose of use | Period of validity |
+| -------------------------------------------------------------------- | ------------- | ----------------------------------- | ------------------ |
+| `i18n-language` | hel.fi | Stores the user's selected language | 1826 days |
+| [Table 1:Common preference cookies between *.hel.fi domain services] |
### Matomo
+
Matomo cookies are part of the **Analytics** category.
-| Cookie name | Cookie set by | Purpose of use | Period of validity |
-| ---------------------- | --------------- | ------------------------------------------------- | ------------------- |
-| `matomo-page-loads` | hel.fi | Tracking page loads | 393 days |
-| `matomo-events` | hel.fi | Tracking what the user does in the user interface | 393 days |
-[Table 2:Common Matomo cookies between *.hel.fi domain services]|
\ No newline at end of file
+| Cookie name | Cookie set by | Purpose of use | Period of validity |
+| ---------------------------------------------------------------- | ------------- | ------------------------------------------------- | ------------------ |
+| `matomo-page-loads` | hel.fi | Tracking page loads | 393 days |
+| `matomo-events` | hel.fi | Tracking what the user does in the user interface | 393 days |
+| [Table 2:Common Matomo cookies between *.hel.fi domain services] |
diff --git a/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
index 47e6d92aa5..19441d668d 100644
--- a/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
+++ b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
@@ -13,7 +13,8 @@ import Image from '../../../components/Image';
WIP
- HDS offers a consistent way of informing the user about cookies and, if needed, asking for consent. The CookieConsent component is used for this. This page describes how the component is used.
+ HDS offers a consistent way of informing the user about cookies and, if needed, asking for consent. The CookieConsent
+ component is used for this. This page describes how the component is used.
If you are looking for technical documentation about the CookieConsent component, please refer to [the component page](/components/cookie-consent).
@@ -22,32 +23,62 @@ If you are looking for an explanation about gathering and categorising cookies,
## Principles
-
-
Do
-
-
The cookie consent banner must be shown if the user has not accepted or denied the optional cookies of the service.
-
-
If cookies have changed since the last time the user accepted or denied them, the consent must be shown again.
-
+
+
+
+ Do
+
+
+
+
+ The cookie consent banner must be shown if the user has not accepted or denied the optional cookies of the
+ service.
+
+
+
+ If cookies have changed since the last time the user accepted or denied them, the consent must be shown again.
-
Include the cookie consent component on every page of the service. The user may arrive on any page of the service (e.g. via a search machine).
-
Make sure that cookie consent is the first item in the page tab order.
-
-
The cookie consent banner is automatically positioned to the bottom of the viewport.
-
-
-
Offer the cookie consent banner and cookie settings in all languages that your service supports.
-
+
+
+
+
+ Include the cookie consent component on every page of the service. The user may arrive on any page of the
+ service (e.g. via a search machine).
+
+
+
+ Make sure that cookie consent is the first item in the page tab order.
+
+
The cookie consent banner is automatically positioned to the bottom of the viewport.
+
+
+
+ Offer the cookie consent banner and cookie settings in all languages that your service supports.
+
+
-
-
Don't
-
-
The cookie consent banner should not prevent the user from using the web page. Never use an overlay behind the banner or otherwise restrict the use of the site.
-
+
+
+
+ Don't
+
+
+
+ The cookie consent banner should not prevent the user from using the web page. Never use an overlay behind the
+ banner or otherwise restrict the use of the site.
+
+
## Cookie banner and cookie page
+
The HDS CookieConsent features two (2) ways of displaying cookies and cookie settings; banner and page. The banner approach is used to inform the user about cookies and offer a quick way to accept or deny them. The cookie page uses the banner content but renders it as a full page. This page is used to present cookie settings. It also works as a place where the user can later return to review or change cookie settings.
The banner also has a feature to expand to show cookie settings. This expanding settings menu can be used when the amount of cookies is low, e.g. less than five (5) individual cookies. Otherwise, it is recommended to open the full settings page. It is easier for the user to browse and manage.
@@ -55,9 +86,11 @@ The banner also has a feature to expand to show cookie settings. This expanding
No matter whether you use expanding cookie banner or not, you must always offer a full cookie settings page to the user. It is required to allow the user to review and edit cookie settings after the initial consent has been given. Place a link to the cookies page on the page footer element.
## How does the cookie consent banner affect other content of the service?
+
There may be elements or content on your service that do not work properly until the user has given consent to optional cookies. It is recommended to either hide this content or show clear error messages at the position of these elements that indicate why they are not available.
## What happens after the user has accepted or denied the optional cookies?
+
The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page that allows changing viewing the cookies and changing consent. The link to this page should be placed on the footer element of the page. Note that the HDS CookieConsent component offers functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
-If new cookies are added or current ones changed, consent should be asked from the user again the next time the service is used.
\ No newline at end of file
+If new cookies are added or current ones changed, consent should be asked from the user again the next time the service is used.
From c614aa2a531fa543381513058310f321cce0ec52 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 14 Sep 2022 11:56:35 +0300
Subject: [PATCH 290/292] Pattern documentation improvements
---
site/src/docs/patterns/cookies/using-the-cookieconsent.mdx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
index 19441d668d..17cb60da3d 100644
--- a/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
+++ b/site/src/docs/patterns/cookies/using-the-cookieconsent.mdx
@@ -94,3 +94,5 @@ There may be elements or content on your service that do not work properly until
The user must be able to view and edit the cookie consent after they have initially submitted their choices. You must offer a separate cookies page that allows changing viewing the cookies and changing consent. The link to this page should be placed on the footer element of the page. Note that the HDS CookieConsent component offers functionality to render it as a page. This allows you to use the same component and data to construct a separate cookie page.
If new cookies are added or current ones changed, consent should be asked from the user again the next time the service is used.
+
+The component will ask for consents if a new cookie is added or a `cookie.id` is changed and there is no stored value for that `cookie.id`. Note that if there are only required cookies, the modal is not shown.
From 55e1ea93ca16b890eaa1f81a25c5851f04c5060f Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 14 Sep 2022 12:00:57 +0300
Subject: [PATCH 291/292] Removed work in progess note and new grammarly fixes
---
site/src/docs/components/cookie-consent/api.mdx | 16 ++++++++--------
.../src/docs/components/cookie-consent/index.mdx | 2 +-
site/src/docs/components/cookie-consent/tabs.mdx | 5 -----
3 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/site/src/docs/components/cookie-consent/api.mdx b/site/src/docs/components/cookie-consent/api.mdx
index 4da7c8d287..90e94bccdb 100644
--- a/site/src/docs/components/cookie-consent/api.mdx
+++ b/site/src/docs/components/cookie-consent/api.mdx
@@ -63,14 +63,14 @@ Cookies for domains on the public suffix list cannot accept subdomain cookies. E
##### Cookie groups
-| Property | Description |
-| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `group[].groupId` / `group[].commonGroup` | Both optional. If a common group is used, then the `commonGroup`. If this is a custom group provide an `groupId`. Not required, if there are no cookies that have `groupId` set. |
-| `group[].title` | Only for custom groups. Title of the group. Cannot be set for a common group. **Must be unique.** |
-| `group[].text` | Only for custom groups. Cannot be set for a common group. Description of the group. |
-| `group[].expandAriaLabel` | Only for custom groups. Cannot be set for a common group. Aria-label for the button to show more details of the group. |
-| `group[].checkboxAriaDescription` | Only for custom groups. Cannot be set for a common group. Aria-description for the checkbox for giving consent for all cookies in the group |
-| `group[].cookies` | Optional list of cookies in this group. |
+| Property | Description |
+| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `group[].groupId` / `group[].commonGroup` | Both optional. If a common group is used, then the `commonGroup`. If this is a custom group provide an `groupId`. Not required, if there are no cookies that have a `groupId` set. |
+| `group[].title` | Only for custom groups. Title of the group. Cannot be set for a common group. **Must be unique.** |
+| `group[].text` | Only for custom groups. Cannot be set for a common group. Description of the group. |
+| `group[].expandAriaLabel` | Only for custom groups. Cannot be set for a common group. Aria-label for the button to show more details of the group. |
+| `group[].checkboxAriaDescription` | Only for custom groups. Cannot be set for a common group. Aria-description for the checkbox for giving consent for all cookies in the group |
+| `group[].cookies` | Optional list of cookies in this group. |
| [Table 3:Cookie group properties] |
##### Cookie information
diff --git a/site/src/docs/components/cookie-consent/index.mdx b/site/src/docs/components/cookie-consent/index.mdx
index 8d63792927..7c5eb28f3b 100644
--- a/site/src/docs/components/cookie-consent/index.mdx
+++ b/site/src/docs/components/cookie-consent/index.mdx
@@ -11,7 +11,7 @@ export default ({ children, pageContext }) =>
-
- This component is work in progress. Breaking changes are possible and the final accessibility audit has not been done.
- It has been released for early users and to gather feedback.
-
-
Usage
From ec0bb8eae68699fbb7f5ac60da92d63eabefdcd5 Mon Sep 17 00:00:00 2001
From: Niko Helle
Date: Wed, 14 Sep 2022 14:04:30 +0300
Subject: [PATCH 292/292] Match "preferences" cookie id in stories
Otherwise accepting cookies in modal do not match cookies in page version.
---
.../src/components/cookieConsent/CookieConsent.stories.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
index 9b2b1f407e..d80c95e840 100644
--- a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
+++ b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx
@@ -716,7 +716,7 @@ export const PageVersion = (args) => {
commonGroup: 'preferences',
cookies: [
{
- id: 'preferences',
+ id: 'preferences1',
name: 'Setting 1',
hostName: 'UserPreferences',
description: