Initial round of typescripting
This commit is contained in:
		
					parent
					
						
							
								dbef06269b
							
						
					
				
			
			
				commit
				
					
						4488947eed
					
				
			
		
					 10 changed files with 316 additions and 24 deletions
				
			
		| 
						 | 
					@ -25,6 +25,11 @@ module.exports = {
 | 
				
			||||||
            files: [
 | 
					            files: [
 | 
				
			||||||
                "src/**/*.{ts,tsx}",
 | 
					                "src/**/*.{ts,tsx}",
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
 | 
					            extends: [
 | 
				
			||||||
 | 
					                "plugin:matrix-org/typescript",
 | 
				
			||||||
 | 
					                "plugin:matrix-org/react",
 | 
				
			||||||
 | 
					                "prettier",
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    settings: {
 | 
					    settings: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,9 +52,13 @@
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@babel/core": "^7.16.5",
 | 
					    "@babel/core": "^7.16.5",
 | 
				
			||||||
    "@storybook/react": "^6.5.0-alpha.5",
 | 
					    "@storybook/react": "^6.5.0-alpha.5",
 | 
				
			||||||
 | 
					    "@typescript-eslint/eslint-plugin": "^5.22.0",
 | 
				
			||||||
 | 
					    "@typescript-eslint/parser": "^5.22.0",
 | 
				
			||||||
    "babel-loader": "^8.2.3",
 | 
					    "babel-loader": "^8.2.3",
 | 
				
			||||||
    "eslint": "^8.14.0",
 | 
					    "eslint": "^8.14.0",
 | 
				
			||||||
 | 
					    "eslint-config-google": "^0.14.0",
 | 
				
			||||||
    "eslint-config-prettier": "^8.5.0",
 | 
					    "eslint-config-prettier": "^8.5.0",
 | 
				
			||||||
 | 
					    "eslint-plugin-import": "^2.26.0",
 | 
				
			||||||
    "eslint-plugin-jsx-a11y": "^6.5.1",
 | 
					    "eslint-plugin-jsx-a11y": "^6.5.1",
 | 
				
			||||||
    "eslint-plugin-matrix-org": "^0.4.0",
 | 
					    "eslint-plugin-matrix-org": "^0.4.0",
 | 
				
			||||||
    "eslint-plugin-react": "^7.29.4",
 | 
					    "eslint-plugin-react": "^7.29.4",
 | 
				
			||||||
| 
						 | 
					@ -62,6 +66,7 @@
 | 
				
			||||||
    "prettier": "^2.6.2",
 | 
					    "prettier": "^2.6.2",
 | 
				
			||||||
    "sass": "^1.42.1",
 | 
					    "sass": "^1.42.1",
 | 
				
			||||||
    "storybook-builder-vite": "^0.1.12",
 | 
					    "storybook-builder-vite": "^0.1.12",
 | 
				
			||||||
 | 
					    "typescript": "^4.6.4",
 | 
				
			||||||
    "vite": "^2.4.2",
 | 
					    "vite": "^2.4.2",
 | 
				
			||||||
    "vite-plugin-html-template": "^1.1.0",
 | 
					    "vite-plugin-html-template": "^1.1.0",
 | 
				
			||||||
    "vite-plugin-svgr": "^0.4.0"
 | 
					    "vite-plugin-svgr": "^0.4.0"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
import React, { useMemo } from "react";
 | 
					import React, { useMemo } from "react";
 | 
				
			||||||
import classNames from "classnames";
 | 
					import classNames from "classnames";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import styles from "./Avatar.module.css";
 | 
					import styles from "./Avatar.module.css";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const backgroundColors = [
 | 
					const backgroundColors = [
 | 
				
			||||||
| 
						 | 
					@ -13,7 +14,7 @@ const backgroundColors = [
 | 
				
			||||||
  "#74D12C",
 | 
					  "#74D12C",
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function hashStringToArrIndex(str, arrLength) {
 | 
					function hashStringToArrIndex(str: string, arrLength: number) {
 | 
				
			||||||
  let sum = 0;
 | 
					  let sum = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (let i = 0; i < str.length; i++) {
 | 
					  for (let i = 0; i < str.length; i++) {
 | 
				
			||||||
| 
						 | 
					@ -23,7 +24,16 @@ function hashStringToArrIndex(str, arrLength) {
 | 
				
			||||||
  return sum % arrLength;
 | 
					  return sum % arrLength;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function Avatar({
 | 
					interface Props extends React.HTMLAttributes<HTMLDivElement> {
 | 
				
			||||||
 | 
					  bgKey?: string;
 | 
				
			||||||
 | 
					  src: string;
 | 
				
			||||||
 | 
					  fallback: string;
 | 
				
			||||||
 | 
					  size?: number;
 | 
				
			||||||
 | 
					  className: string;
 | 
				
			||||||
 | 
					  style: React.CSSProperties;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const Avatar: React.FC<Props> = ({
 | 
				
			||||||
  bgKey,
 | 
					  bgKey,
 | 
				
			||||||
  src,
 | 
					  src,
 | 
				
			||||||
  fallback,
 | 
					  fallback,
 | 
				
			||||||
| 
						 | 
					@ -31,7 +41,7 @@ export function Avatar({
 | 
				
			||||||
  className,
 | 
					  className,
 | 
				
			||||||
  style,
 | 
					  style,
 | 
				
			||||||
  ...rest
 | 
					  ...rest
 | 
				
			||||||
}) {
 | 
					}) => {
 | 
				
			||||||
  const backgroundColor = useMemo(() => {
 | 
					  const backgroundColor = useMemo(() => {
 | 
				
			||||||
    const index = hashStringToArrIndex(
 | 
					    const index = hashStringToArrIndex(
 | 
				
			||||||
      bgKey || fallback || src || "",
 | 
					      bgKey || fallback || src || "",
 | 
				
			||||||
| 
						 | 
					@ -55,4 +65,4 @@ export function Avatar({
 | 
				
			||||||
      )}
 | 
					      )}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
}
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@ import {
 | 
				
			||||||
  adjectives,
 | 
					  adjectives,
 | 
				
			||||||
  colors,
 | 
					  colors,
 | 
				
			||||||
  animals,
 | 
					  animals,
 | 
				
			||||||
 | 
					  Config,
 | 
				
			||||||
} from "unique-names-generator";
 | 
					} from "unique-names-generator";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const elements = [
 | 
					const elements = [
 | 
				
			||||||
| 
						 | 
					@ -126,7 +127,7 @@ const elements = [
 | 
				
			||||||
  "oganesson",
 | 
					  "oganesson",
 | 
				
			||||||
];
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function generateRandomName(config) {
 | 
					export function generateRandomName(config: Config): string {
 | 
				
			||||||
  return uniqueNamesGenerator({
 | 
					  return uniqueNamesGenerator({
 | 
				
			||||||
    dictionaries: [colors, adjectives, animals, elements],
 | 
					    dictionaries: [colors, adjectives, animals, elements],
 | 
				
			||||||
    style: "lowerCase",
 | 
					    style: "lowerCase",
 | 
				
			||||||
| 
						 | 
					@ -1,10 +1,22 @@
 | 
				
			||||||
import React from "react";
 | 
					import React from "react";
 | 
				
			||||||
import classNames from "classnames";
 | 
					import classNames from "classnames";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import styles from "./PTTButton.module.css";
 | 
					import styles from "./PTTButton.module.css";
 | 
				
			||||||
import { ReactComponent as MicIcon } from "../icons/Mic.svg";
 | 
					import { ReactComponent as MicIcon } from "../icons/Mic.svg";
 | 
				
			||||||
import { Avatar } from "../Avatar";
 | 
					import { Avatar } from "../Avatar";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function PTTButton({
 | 
					interface Props {
 | 
				
			||||||
 | 
					  showTalkOverError: boolean;
 | 
				
			||||||
 | 
					  activeSpeakerUserId: string;
 | 
				
			||||||
 | 
					  activeSpeakerDisplayName: string;
 | 
				
			||||||
 | 
					  activeSpeakerAvatarUrl: string;
 | 
				
			||||||
 | 
					  activeSpeakerIsLocalUser: boolean;
 | 
				
			||||||
 | 
					  size: number;
 | 
				
			||||||
 | 
					  startTalking: () => void;
 | 
				
			||||||
 | 
					  stopTalking: () => void;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const PTTButton: React.FC<Props> = ({
 | 
				
			||||||
  showTalkOverError,
 | 
					  showTalkOverError,
 | 
				
			||||||
  activeSpeakerUserId,
 | 
					  activeSpeakerUserId,
 | 
				
			||||||
  activeSpeakerDisplayName,
 | 
					  activeSpeakerDisplayName,
 | 
				
			||||||
| 
						 | 
					@ -13,7 +25,7 @@ export function PTTButton({
 | 
				
			||||||
  size,
 | 
					  size,
 | 
				
			||||||
  startTalking,
 | 
					  startTalking,
 | 
				
			||||||
  stopTalking,
 | 
					  stopTalking,
 | 
				
			||||||
}) {
 | 
					}) => {
 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
    <button
 | 
					    <button
 | 
				
			||||||
      className={classNames(styles.pttButton, {
 | 
					      className={classNames(styles.pttButton, {
 | 
				
			||||||
| 
						 | 
					@ -45,4 +57,4 @@ export function PTTButton({
 | 
				
			||||||
      )}
 | 
					      )}
 | 
				
			||||||
    </button>
 | 
					    </button>
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
}
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,7 @@
 | 
				
			||||||
import React from "react";
 | 
					import React from "react";
 | 
				
			||||||
 | 
					import useMeasure from "react-use-measure";
 | 
				
			||||||
 | 
					import { ResizeObserver } from "@juggle/resize-observer";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { useModalTriggerState } from "../Modal";
 | 
					import { useModalTriggerState } from "../Modal";
 | 
				
			||||||
import { SettingsModal } from "../settings/SettingsModal";
 | 
					import { SettingsModal } from "../settings/SettingsModal";
 | 
				
			||||||
import { InviteModal } from "./InviteModal";
 | 
					import { InviteModal } from "./InviteModal";
 | 
				
			||||||
| 
						 | 
					@ -9,8 +12,6 @@ import { Facepile } from "../Facepile";
 | 
				
			||||||
import { PTTButton } from "./PTTButton";
 | 
					import { PTTButton } from "./PTTButton";
 | 
				
			||||||
import { PTTFeed } from "./PTTFeed";
 | 
					import { PTTFeed } from "./PTTFeed";
 | 
				
			||||||
import { useMediaHandler } from "../settings/useMediaHandler";
 | 
					import { useMediaHandler } from "../settings/useMediaHandler";
 | 
				
			||||||
import useMeasure from "react-use-measure";
 | 
					 | 
				
			||||||
import { ResizeObserver } from "@juggle/resize-observer";
 | 
					 | 
				
			||||||
import { usePTT } from "./usePTT";
 | 
					import { usePTT } from "./usePTT";
 | 
				
			||||||
import { Timer } from "./Timer";
 | 
					import { Timer } from "./Timer";
 | 
				
			||||||
import { Toggle } from "../input/Toggle";
 | 
					import { Toggle } from "../input/Toggle";
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,23 @@
 | 
				
			||||||
import { useCallback, useEffect, useState } from "react";
 | 
					import { useCallback, useEffect, useState } from "react";
 | 
				
			||||||
 | 
					import { MatrixClient } from "matrix-js-sdk/src/client";
 | 
				
			||||||
 | 
					import { GroupCall } from "matrix-js-sdk/src/webrtc/groupCall";
 | 
				
			||||||
 | 
					import { CallFeed } from "matrix-js-sdk/src/webrtc/callFeed";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function usePTT(client, groupCall, userMediaFeeds) {
 | 
					export interface PTTState {
 | 
				
			||||||
 | 
					  pttButtonHeld: boolean;
 | 
				
			||||||
 | 
					  isAdmin: boolean;
 | 
				
			||||||
 | 
					  talkOverEnabled: boolean;
 | 
				
			||||||
 | 
					  setTalkOverEnabled: (boolean) => void;
 | 
				
			||||||
 | 
					  activeSpeakerUserId: string;
 | 
				
			||||||
 | 
					  startTalking: () => void;
 | 
				
			||||||
 | 
					  stopTalking: () => void;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const usePTT = (
 | 
				
			||||||
 | 
					  client: MatrixClient,
 | 
				
			||||||
 | 
					  groupCall: GroupCall,
 | 
				
			||||||
 | 
					  userMediaFeeds: CallFeed[]
 | 
				
			||||||
 | 
					): PTTState => {
 | 
				
			||||||
  const [
 | 
					  const [
 | 
				
			||||||
    { pttButtonHeld, isAdmin, talkOverEnabled, activeSpeakerUserId },
 | 
					    { pttButtonHeld, isAdmin, talkOverEnabled, activeSpeakerUserId },
 | 
				
			||||||
    setState,
 | 
					    setState,
 | 
				
			||||||
| 
						 | 
					@ -18,7 +35,7 @@ export function usePTT(client, groupCall, userMediaFeeds) {
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  useEffect(() => {
 | 
					  useEffect(() => {
 | 
				
			||||||
    function onMuteStateChanged(...args) {
 | 
					    function onMuteStateChanged(...args): void {
 | 
				
			||||||
      const activeSpeakerFeed = userMediaFeeds.find((f) => !f.isAudioMuted());
 | 
					      const activeSpeakerFeed = userMediaFeeds.find((f) => !f.isAudioMuted());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      setState((prevState) => ({
 | 
					      setState((prevState) => ({
 | 
				
			||||||
| 
						 | 
					@ -66,7 +83,7 @@ export function usePTT(client, groupCall, userMediaFeeds) {
 | 
				
			||||||
  }, []);
 | 
					  }, []);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  useEffect(() => {
 | 
					  useEffect(() => {
 | 
				
			||||||
    function onKeyDown(event) {
 | 
					    function onKeyDown(event: KeyboardEvent): void {
 | 
				
			||||||
      if (event.code === "Space") {
 | 
					      if (event.code === "Space") {
 | 
				
			||||||
        event.preventDefault();
 | 
					        event.preventDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,7 +91,7 @@ export function usePTT(client, groupCall, userMediaFeeds) {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function onKeyUp(event) {
 | 
					    function onKeyUp(event: KeyboardEvent): void {
 | 
				
			||||||
      if (event.code === "Space") {
 | 
					      if (event.code === "Space") {
 | 
				
			||||||
        event.preventDefault();
 | 
					        event.preventDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -82,7 +99,7 @@ export function usePTT(client, groupCall, userMediaFeeds) {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function onBlur() {
 | 
					    function onBlur(): void {
 | 
				
			||||||
      // TODO: We will need to disable this for a global PTT hotkey to work
 | 
					      // TODO: We will need to disable this for a global PTT hotkey to work
 | 
				
			||||||
      if (!groupCall.isMicrophoneMuted()) {
 | 
					      if (!groupCall.isMicrophoneMuted()) {
 | 
				
			||||||
        groupCall.setMicrophoneMuted(true);
 | 
					        groupCall.setMicrophoneMuted(true);
 | 
				
			||||||
| 
						 | 
					@ -118,4 +135,4 @@ export function usePTT(client, groupCall, userMediaFeeds) {
 | 
				
			||||||
    startTalking,
 | 
					    startTalking,
 | 
				
			||||||
    stopTalking,
 | 
					    stopTalking,
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					};
 | 
				
			||||||
							
								
								
									
										11
									
								
								src/types.d.ts
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/types.d.ts
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					declare module "*.module.css" {
 | 
				
			||||||
 | 
					  const classes: {
 | 
				
			||||||
 | 
					    [key: string]: string;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  export default classes;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					declare module "*.svg" {
 | 
				
			||||||
 | 
					  export const ReactComponent: React.FunctionComponent<
 | 
				
			||||||
 | 
					    React.SVGAttributes<SVGElement>
 | 
				
			||||||
 | 
					  >;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								tsconfig.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								tsconfig.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "compilerOptions": {
 | 
				
			||||||
 | 
					    "resolveJsonModule": true,
 | 
				
			||||||
 | 
					    "esModuleInterop": true,
 | 
				
			||||||
 | 
					    "module": "commonjs",
 | 
				
			||||||
 | 
					    "moduleResolution": "node",
 | 
				
			||||||
 | 
					    "target": "es2016",
 | 
				
			||||||
 | 
					    "noImplicitAny": false,
 | 
				
			||||||
 | 
					    "noUnusedLocals": true,
 | 
				
			||||||
 | 
					    "sourceMap": false,
 | 
				
			||||||
 | 
					    "outDir": "./lib",
 | 
				
			||||||
 | 
					    "declaration": true,
 | 
				
			||||||
 | 
					    "jsx": "react",
 | 
				
			||||||
 | 
					    "lib": [
 | 
				
			||||||
 | 
					      "es2020",
 | 
				
			||||||
 | 
					      "dom",
 | 
				
			||||||
 | 
					      "dom.iterable"
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "include": [
 | 
				
			||||||
 | 
					    "./src/**/*.ts",
 | 
				
			||||||
 | 
					    "./src/**/*.tsx",
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										222
									
								
								yarn.lock
									
										
									
									
									
								
							
							
						
						
									
										222
									
								
								yarn.lock
									
										
									
									
									
								
							| 
						 | 
					@ -2894,6 +2894,16 @@
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
 | 
					  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
 | 
				
			||||||
  integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
 | 
					  integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@types/json-schema@^7.0.9":
 | 
				
			||||||
 | 
					  version "7.0.11"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
 | 
				
			||||||
 | 
					  integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@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/mdast@^3.0.0":
 | 
					"@types/mdast@^3.0.0":
 | 
				
			||||||
  version "3.0.10"
 | 
					  version "3.0.10"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
 | 
					  resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
 | 
				
			||||||
| 
						 | 
					@ -3038,6 +3048,86 @@
 | 
				
			||||||
    anymatch "^3.0.0"
 | 
					    anymatch "^3.0.0"
 | 
				
			||||||
    source-map "^0.6.0"
 | 
					    source-map "^0.6.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@typescript-eslint/eslint-plugin@^5.22.0":
 | 
				
			||||||
 | 
					  version "5.22.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz#7b52a0de2e664044f28b36419210aea4ab619e2a"
 | 
				
			||||||
 | 
					  integrity sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@typescript-eslint/scope-manager" "5.22.0"
 | 
				
			||||||
 | 
					    "@typescript-eslint/type-utils" "5.22.0"
 | 
				
			||||||
 | 
					    "@typescript-eslint/utils" "5.22.0"
 | 
				
			||||||
 | 
					    debug "^4.3.2"
 | 
				
			||||||
 | 
					    functional-red-black-tree "^1.0.1"
 | 
				
			||||||
 | 
					    ignore "^5.1.8"
 | 
				
			||||||
 | 
					    regexpp "^3.2.0"
 | 
				
			||||||
 | 
					    semver "^7.3.5"
 | 
				
			||||||
 | 
					    tsutils "^3.21.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@typescript-eslint/parser@^5.22.0":
 | 
				
			||||||
 | 
					  version "5.22.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.22.0.tgz#7bedf8784ef0d5d60567c5ba4ce162460e70c178"
 | 
				
			||||||
 | 
					  integrity sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@typescript-eslint/scope-manager" "5.22.0"
 | 
				
			||||||
 | 
					    "@typescript-eslint/types" "5.22.0"
 | 
				
			||||||
 | 
					    "@typescript-eslint/typescript-estree" "5.22.0"
 | 
				
			||||||
 | 
					    debug "^4.3.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@typescript-eslint/scope-manager@5.22.0":
 | 
				
			||||||
 | 
					  version "5.22.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz#590865f244ebe6e46dc3e9cab7976fc2afa8af24"
 | 
				
			||||||
 | 
					  integrity sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@typescript-eslint/types" "5.22.0"
 | 
				
			||||||
 | 
					    "@typescript-eslint/visitor-keys" "5.22.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@typescript-eslint/type-utils@5.22.0":
 | 
				
			||||||
 | 
					  version "5.22.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz#0c0e93b34210e334fbe1bcb7250c470f4a537c19"
 | 
				
			||||||
 | 
					  integrity sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@typescript-eslint/utils" "5.22.0"
 | 
				
			||||||
 | 
					    debug "^4.3.2"
 | 
				
			||||||
 | 
					    tsutils "^3.21.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@typescript-eslint/types@5.22.0":
 | 
				
			||||||
 | 
					  version "5.22.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.22.0.tgz#50a4266e457a5d4c4b87ac31903b28b06b2c3ed0"
 | 
				
			||||||
 | 
					  integrity sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@typescript-eslint/typescript-estree@5.22.0":
 | 
				
			||||||
 | 
					  version "5.22.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz#e2116fd644c3e2fda7f4395158cddd38c0c6df97"
 | 
				
			||||||
 | 
					  integrity sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@typescript-eslint/types" "5.22.0"
 | 
				
			||||||
 | 
					    "@typescript-eslint/visitor-keys" "5.22.0"
 | 
				
			||||||
 | 
					    debug "^4.3.2"
 | 
				
			||||||
 | 
					    globby "^11.0.4"
 | 
				
			||||||
 | 
					    is-glob "^4.0.3"
 | 
				
			||||||
 | 
					    semver "^7.3.5"
 | 
				
			||||||
 | 
					    tsutils "^3.21.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@typescript-eslint/utils@5.22.0":
 | 
				
			||||||
 | 
					  version "5.22.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.22.0.tgz#1f2c4897e2cf7e44443c848a13c60407861babd8"
 | 
				
			||||||
 | 
					  integrity sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@types/json-schema" "^7.0.9"
 | 
				
			||||||
 | 
					    "@typescript-eslint/scope-manager" "5.22.0"
 | 
				
			||||||
 | 
					    "@typescript-eslint/types" "5.22.0"
 | 
				
			||||||
 | 
					    "@typescript-eslint/typescript-estree" "5.22.0"
 | 
				
			||||||
 | 
					    eslint-scope "^5.1.1"
 | 
				
			||||||
 | 
					    eslint-utils "^3.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@typescript-eslint/visitor-keys@5.22.0":
 | 
				
			||||||
 | 
					  version "5.22.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz#f49c0ce406944ffa331a1cfabeed451ea4d0909c"
 | 
				
			||||||
 | 
					  integrity sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@typescript-eslint/types" "5.22.0"
 | 
				
			||||||
 | 
					    eslint-visitor-keys "^3.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@use-gesture/core@10.2.11":
 | 
					"@use-gesture/core@10.2.11":
 | 
				
			||||||
  version "10.2.11"
 | 
					  version "10.2.11"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@use-gesture/core/-/core-10.2.11.tgz#914c36f190bcf452500d11a11fc294fe56e5dc2f"
 | 
					  resolved "https://registry.yarnpkg.com/@use-gesture/core/-/core-10.2.11.tgz#914c36f190bcf452500d11a11fc294fe56e5dc2f"
 | 
				
			||||||
| 
						 | 
					@ -3601,6 +3691,16 @@ array.prototype.flat@^1.2.1:
 | 
				
			||||||
    define-properties "^1.1.3"
 | 
					    define-properties "^1.1.3"
 | 
				
			||||||
    es-abstract "^1.19.0"
 | 
					    es-abstract "^1.19.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					array.prototype.flat@^1.2.5:
 | 
				
			||||||
 | 
					  version "1.3.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b"
 | 
				
			||||||
 | 
					  integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    call-bind "^1.0.2"
 | 
				
			||||||
 | 
					    define-properties "^1.1.3"
 | 
				
			||||||
 | 
					    es-abstract "^1.19.2"
 | 
				
			||||||
 | 
					    es-shim-unscopables "^1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
array.prototype.flatmap@^1.2.1:
 | 
					array.prototype.flatmap@^1.2.1:
 | 
				
			||||||
  version "1.2.5"
 | 
					  version "1.2.5"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446"
 | 
					  resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446"
 | 
				
			||||||
| 
						 | 
					@ -5453,14 +5553,14 @@ debounce@^1.2.1:
 | 
				
			||||||
  resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
 | 
					  resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
 | 
				
			||||||
  integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
 | 
					  integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0:
 | 
					debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
 | 
				
			||||||
  version "2.6.9"
 | 
					  version "2.6.9"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
 | 
					  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
 | 
				
			||||||
  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
 | 
					  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    ms "2.0.0"
 | 
					    ms "2.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
debug@^3.0.0:
 | 
					debug@^3.0.0, debug@^3.2.7:
 | 
				
			||||||
  version "3.2.7"
 | 
					  version "3.2.7"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
 | 
					  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
 | 
				
			||||||
  integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
 | 
					  integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
 | 
				
			||||||
| 
						 | 
					@ -6203,11 +6303,51 @@ escape-string-regexp@^4.0.0:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
 | 
					  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
 | 
				
			||||||
  integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
 | 
					  integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eslint-config-google@^0.14.0:
 | 
				
			||||||
 | 
					  version "0.14.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.14.0.tgz#4f5f8759ba6e11b424294a219dbfa18c508bcc1a"
 | 
				
			||||||
 | 
					  integrity sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eslint-config-prettier@^8.5.0:
 | 
					eslint-config-prettier@^8.5.0:
 | 
				
			||||||
  version "8.5.0"
 | 
					  version "8.5.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
 | 
					  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
 | 
				
			||||||
  integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
 | 
					  integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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.3:
 | 
				
			||||||
 | 
					  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-import@^2.26.0:
 | 
				
			||||||
 | 
					  version "2.26.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b"
 | 
				
			||||||
 | 
					  integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==
 | 
				
			||||||
 | 
					  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.3"
 | 
				
			||||||
 | 
					    has "^1.0.3"
 | 
				
			||||||
 | 
					    is-core-module "^2.8.1"
 | 
				
			||||||
 | 
					    is-glob "^4.0.3"
 | 
				
			||||||
 | 
					    minimatch "^3.1.2"
 | 
				
			||||||
 | 
					    object.values "^1.1.5"
 | 
				
			||||||
 | 
					    resolve "^1.22.0"
 | 
				
			||||||
 | 
					    tsconfig-paths "^3.14.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eslint-plugin-jsx-a11y@^6.5.1:
 | 
					eslint-plugin-jsx-a11y@^6.5.1:
 | 
				
			||||||
  version "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"
 | 
					  resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8"
 | 
				
			||||||
| 
						 | 
					@ -6256,7 +6396,7 @@ eslint-plugin-react@^7.29.4:
 | 
				
			||||||
    semver "^6.3.0"
 | 
					    semver "^6.3.0"
 | 
				
			||||||
    string.prototype.matchall "^4.0.6"
 | 
					    string.prototype.matchall "^4.0.6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eslint-scope@5.1.1:
 | 
					eslint-scope@5.1.1, eslint-scope@^5.1.1:
 | 
				
			||||||
  version "5.1.1"
 | 
					  version "5.1.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
 | 
					  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
 | 
				
			||||||
  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
 | 
					  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
 | 
				
			||||||
| 
						 | 
					@ -6292,7 +6432,7 @@ eslint-visitor-keys@^2.0.0:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
 | 
					  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
 | 
				
			||||||
  integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
 | 
					  integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eslint-visitor-keys@^3.3.0:
 | 
					eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0:
 | 
				
			||||||
  version "3.3.0"
 | 
					  version "3.3.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
 | 
					  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
 | 
				
			||||||
  integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
 | 
					  integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
 | 
				
			||||||
| 
						 | 
					@ -6683,6 +6823,13 @@ find-up@^1.0.0:
 | 
				
			||||||
    path-exists "^2.0.0"
 | 
					    path-exists "^2.0.0"
 | 
				
			||||||
    pinkie-promise "^2.0.0"
 | 
					    pinkie-promise "^2.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:
 | 
					find-up@^3.0.0:
 | 
				
			||||||
  version "3.0.0"
 | 
					  version "3.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
 | 
					  resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
 | 
				
			||||||
| 
						 | 
					@ -7073,7 +7220,7 @@ globalthis@^1.0.0:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    define-properties "^1.1.3"
 | 
					    define-properties "^1.1.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
globby@^11.0.2:
 | 
					globby@^11.0.2, globby@^11.0.4:
 | 
				
			||||||
  version "11.1.0"
 | 
					  version "11.1.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
 | 
					  resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
 | 
				
			||||||
  integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
 | 
					  integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
 | 
				
			||||||
| 
						 | 
					@ -7474,7 +7621,7 @@ ignore@^4.0.3:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
 | 
					  resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
 | 
				
			||||||
  integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
 | 
					  integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ignore@^5.2.0:
 | 
					ignore@^5.1.8, ignore@^5.2.0:
 | 
				
			||||||
  version "5.2.0"
 | 
					  version "5.2.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
 | 
					  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
 | 
				
			||||||
  integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
 | 
					  integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
 | 
				
			||||||
| 
						 | 
					@ -8251,6 +8398,14 @@ loader-utils@^2.0.0:
 | 
				
			||||||
    emojis-list "^3.0.0"
 | 
					    emojis-list "^3.0.0"
 | 
				
			||||||
    json5 "^2.1.2"
 | 
					    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:
 | 
					locate-path@^3.0.0:
 | 
				
			||||||
  version "3.0.0"
 | 
					  version "3.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
 | 
					  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
 | 
				
			||||||
| 
						 | 
					@ -8672,6 +8827,11 @@ minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
 | 
				
			||||||
  resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
 | 
					  resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
 | 
				
			||||||
  integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
 | 
					  integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					minimist@^1.2.6:
 | 
				
			||||||
 | 
					  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:
 | 
					minipass-collect@^1.0.2:
 | 
				
			||||||
  version "1.0.2"
 | 
					  version "1.0.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
 | 
					  resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
 | 
				
			||||||
| 
						 | 
					@ -9134,6 +9294,13 @@ p-finally@^1.0.0:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
 | 
					  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
 | 
				
			||||||
  integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
 | 
					  integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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:
 | 
					p-limit@^2.0.0, p-limit@^2.2.0:
 | 
				
			||||||
  version "2.3.0"
 | 
					  version "2.3.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
 | 
					  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
 | 
				
			||||||
| 
						 | 
					@ -9148,6 +9315,13 @@ p-limit@^3.0.2:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    yocto-queue "^0.1.0"
 | 
					    yocto-queue "^0.1.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:
 | 
					p-locate@^3.0.0:
 | 
				
			||||||
  version "3.0.0"
 | 
					  version "3.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
 | 
					  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
 | 
				
			||||||
| 
						 | 
					@ -9203,6 +9377,11 @@ p-timeout@^3.1.0:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    p-finally "^1.0.0"
 | 
					    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:
 | 
					p-try@^2.0.0:
 | 
				
			||||||
  version "2.2.0"
 | 
					  version "2.2.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
 | 
					  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
 | 
				
			||||||
| 
						 | 
					@ -10656,7 +10835,7 @@ resolve-url@^0.2.1:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
 | 
					  resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
 | 
				
			||||||
  integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
 | 
					  integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
resolve@^1.1.6:
 | 
					resolve@^1.1.6, resolve@^1.22.0:
 | 
				
			||||||
  version "1.22.0"
 | 
					  version "1.22.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
 | 
					  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
 | 
				
			||||||
  integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
 | 
					  integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
 | 
				
			||||||
| 
						 | 
					@ -11339,6 +11518,11 @@ strip-bom@^2.0.0:
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    is-utf8 "^0.2.0"
 | 
					    is-utf8 "^0.2.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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-indent@^1.0.1:
 | 
					strip-indent@^1.0.1:
 | 
				
			||||||
  version "1.0.1"
 | 
					  version "1.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
 | 
					  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
 | 
				
			||||||
| 
						 | 
					@ -11658,7 +11842,17 @@ ts-pnp@^1.1.6:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
 | 
					  resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
 | 
				
			||||||
  integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
 | 
					  integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tslib@^1.9.3:
 | 
					tsconfig-paths@^3.14.1:
 | 
				
			||||||
 | 
					  version "3.14.1"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
 | 
				
			||||||
 | 
					  integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    "@types/json5" "^0.0.29"
 | 
				
			||||||
 | 
					    json5 "^1.0.1"
 | 
				
			||||||
 | 
					    minimist "^1.2.6"
 | 
				
			||||||
 | 
					    strip-bom "^3.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tslib@^1.8.1, tslib@^1.9.3:
 | 
				
			||||||
  version "1.14.1"
 | 
					  version "1.14.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
 | 
					  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
 | 
				
			||||||
  integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
 | 
					  integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
 | 
				
			||||||
| 
						 | 
					@ -11668,6 +11862,13 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
 | 
					  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
 | 
				
			||||||
  integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
 | 
					  integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tty-browserify@0.0.0:
 | 
					tty-browserify@0.0.0:
 | 
				
			||||||
  version "0.0.0"
 | 
					  version "0.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
 | 
					  resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
 | 
				
			||||||
| 
						 | 
					@ -11720,6 +11921,11 @@ typedarray@^0.0.6:
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
 | 
					  resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
 | 
				
			||||||
  integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
 | 
					  integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typescript@^4.6.4:
 | 
				
			||||||
 | 
					  version "4.6.4"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9"
 | 
				
			||||||
 | 
					  integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ua-parser-js@^0.7.18:
 | 
					ua-parser-js@^0.7.18:
 | 
				
			||||||
  version "0.7.28"
 | 
					  version "0.7.28"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31"
 | 
					  resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue