{"version":3,"file":"index.cjs","sources":["../../src/components/ConnectWalletButton/StyledButtonElements.tsx","../../src/hooks/useCardano.ts","../../../node_modules/color-name/index.js","../../../node_modules/color-string/index.js","../../../node_modules/color-convert/conversions.js","../../../node_modules/color-convert/route.js","../../../node_modules/color-convert/index.js","../../../node_modules/color/index.js","../../src/components/ModalDialog/StyledDialogElements.tsx","../../../node_modules/qrcode-generator/dist/qrcode.mjs","../../../node_modules/react-qrcode-logo/dist/esm/utils.js","../../../node_modules/react-qrcode-logo/dist/esm/renderer.js","../../../node_modules/react-qrcode-logo/dist/esm/QRCode.js","../../src/components/ModalDialog/ModalDialog.tsx","../../src/common.ts","../../src/components/ConnectWalletButton/ConnectWalletButton.tsx","../../src/components/ConnectWalletList/StyledListElements.tsx","../../src/components/ConnectWalletList/ConnectWalletList.tsx"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport { MenuItemStyle, ButtonStyle, DesktopMenuItemStyle } from '../../types';\n\nexport const Menu = styled.div`\n  min-width: 180px;\n  max-width: 240px;\n  font-family: sans-serif;\n  width: var(--radix-dropdown-menu-trigger-width);\n  overflow: hidden;\n  z-index: 10;\n  background-color: white;\n  border-radius: 15px;\n  box-shadow: 0px 5px 15px rgba(0,0,0,0.1);\n  margin-top: 8px;\n`;\n\nexport const MenuItem = styled('div').withConfig({\n  shouldForwardProp: (prop) =>\n    !['primaryColor', 'primaryColorLight', 'borderRadius'].includes(prop),\n})<MenuItemStyle>`\n  color: ${(props) => props.primaryColor};\n  padding: 12px 16px;\n  text-decoration: none;\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  border-color: ${(props) => props.primaryColor};\n  border-style: solid;\n  border-width: 1px;\n  border-bottom: none;\n  background-color: white;\n  outline: none;\n\n  transition: border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,\n    color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n\n  &:hover, &:focus, &[data-highlighted] {\n    background-color: ${(props) => props.primaryColorLight};\n  }\n\n  &:first-child {\n    border-top-left-radius: ${(props) => `${props.borderRadius}px;`}\n    border-top-right-radius: ${(props) => `${props.borderRadius}px;`}\n    border-bottom: none;\n  }\n\n  &:last-child {\n    border-bottom-left-radius: ${(props) => `${props.borderRadius}px;`}\n    border-bottom-right-radius: ${(props) => `${props.borderRadius}px;`}\n    border-bottom: 1px solid ${(props) => props.primaryColor};\n  }\n`;\n\nexport const MenuItemIcon = styled.img`\n  width: 24px;\n  height: 24px;\n  margin-right: 8px;\n`;\n\nexport const Button = styled('button').withConfig({\n  shouldForwardProp: (prop) =>\n    !['primaryColor', 'customCSS', 'borderRadius'].includes(prop),\n})<ButtonStyle>`\n  padding: 16px;\n  cursor: pointer;\n  font-size: 16px;\n  font-weight: bold;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  border: 1px solid ${(props) => props.primaryColor};\n  color: ${(props) => props.primaryColor};\n  background-color: white;\n\n  ${(props) => props.borderRadius && `border-radius: ${props.borderRadius}px;`}\n\n  &:disabled {\n    border: 1px solid #333;\n    color: #333;\n    backgroundcolor: #eee;\n  }\n`;\n\nexport const Dropdown = styled('div').withConfig({\n  shouldForwardProp: (prop) =>\n    !['primaryColor', 'customCSS', 'borderRadius'].includes(prop),\n})<ButtonStyle>`\n  min-width: 180px;\n  max-width: 240px;\n  font-weight: bold;\n  position: relative;\n  display: inline-block;\n  padding-bottom: 8px;\n  padding-top: 8px;\n\n  ${(props) => props.customCSS}\n`;\n\nexport const DesktopMenuItem = styled('div').withConfig({\n  shouldForwardProp: (prop) => !['borderRadius'].includes(prop),\n})<DesktopMenuItemStyle>`\n  color: #333;\n  position: relative;\n  padding: 12px 16px;\n  text-decoration: none;\n  display: flex;\n  align-items: center;\n  border-color: #333;\n  border-style: solid;\n  border-width: 1px;\n  border-bottom: none;\n  background-color: #e3e3e3;\n  overflow: hidden;\n  outline: none;\n\n  &:first-child {\n    border-top-left-radius: ${(props) => `${props.borderRadius}px;`}\n    border-top-right-radius: ${(props) => `${props.borderRadius}px;`}\n    border-bottom: none;\n  }\n\n  &:last-child {\n    border-bottom-left-radius: ${(props) => `${props.borderRadius}px;`}\n    border-bottom-right-radius: ${(props) => `${props.borderRadius}px;`}\n    border-bottom: 1px solid #333;\n  }\n\n  & > span {\n    text-transform: uppercase;\n    font-size: 0.5rem;\n    position: absolute;\n    right: 0;\n    width: 100%;\n    padding: 3px;\n    background: #777;\n    color: #fff;\n    text-align: center;\n    transform: rotate(-35deg);\n    translate: 25%;\n  }\n\n  & ${MenuItemIcon} {\n    filter: brightness(0);\n  }\n`;\n","import { useState, useEffect, useCallback, useRef } from 'react';\nimport {\n  Extension,\n  NetworkType,\n  Wallet,\n} from '@cardano-foundation/cardano-connect-with-wallet-core';\nimport { DAppPeerConnect } from '@fabianbormann/cardano-peer-connect';\nimport { IWalletInfo } from '@fabianbormann/cardano-peer-connect/dist/src/types';\n\nfunction useCardano(props?: { limitNetwork?: NetworkType }) {\n  const dAppConnect = useRef<null | DAppPeerConnect>(null);\n  const cip45Connected = useRef<boolean>(false);\n  const cip45Address = useRef<string | null>(null);\n  const cip45Identicon = useRef<string | null>(null);\n  const connectedCip45Wallet = useRef<IWalletInfo | null>(null);\n\n  const [peerConnectAddress, setPeerConnectAddress] = useState<string>(\n    Wallet.peerConnectAddressObserver.get()\n  );\n  const [isEnabled, setIsEnabled] = useState<boolean>(\n    Wallet.enabledObserver.get()\n  );\n  const [isConnecting, setIsConnecting] = useState<boolean>(\n    Wallet.isConnectingObserver.get()\n  );\n  const [enabledWallet, setEnabledWallet] = useState<string | null>(\n    Wallet.enabledWalletObserver.get()\n  );\n  const [stakeAddress, setStakeAddress] = useState<string | null>(\n    Wallet.stakeAddressObserver.get()\n  );\n  const [usedAddresses, setUsedAddresses] = useState<Array<string>>(\n    Wallet.usedAddressesObserver.get()\n  );\n  const [unusedAddresses, setUnusedAddresses] = useState<Array<string>>(\n    Wallet.unusedAddressesObserver.get()\n  );\n  const [accountBalance, setAccountBalance] = useState<number>(\n    Wallet.accountBalanceObserver.get()\n  );\n  const [installedExtensions, setInstalledExtensions] = useState<Array<string>>(\n    Wallet.installedWalletExtensionsObserver.get()\n  );\n  const [isConnected, setIsConnected] = useState<boolean>(\n    Wallet.isConnected.get()\n  );\n  const [lastConnectedWallet, setLastConnectedWallet] = useState<string>(\n    Wallet.lastConnectedWallet.get()\n  );\n  const [enabledExtensions, setEnabledExtensions] = useState<Array<Extension>>(\n    Wallet.enabledExtensionsObserver.get()\n  );\n  const [supportedExtensions, setSupportedExtensions] = useState<Array<Extension>>(\n    Wallet.supportedExtensionsObserver.get()\n  );\n\n  const limitNetwork = props?.limitNetwork || NetworkType.MAINNET;\n\n  useEffect(() => {\n    Wallet.checkEnabled(limitNetwork).catch((error) => {\n      console.error(error);\n      disconnect();\n    });\n\n    Wallet.subscribeToObservables(\n      setIsEnabled,\n      setIsConnecting,\n      setEnabledWallet,\n      setStakeAddress,\n      setUsedAddresses,\n      setUnusedAddresses,\n      setInstalledExtensions,\n      setAccountBalance,\n      setIsConnected,\n      setLastConnectedWallet,\n      setPeerConnectAddress,\n      setEnabledExtensions,\n      setSupportedExtensions\n    );\n\n    return () => {\n      Wallet.unsubscribeFromObservables(\n        setIsEnabled,\n        setIsConnecting,\n        setEnabledWallet,\n        setStakeAddress,\n        setUsedAddresses,\n        setUnusedAddresses,\n        setInstalledExtensions,\n        setAccountBalance,\n        setIsConnected,\n        setLastConnectedWallet,\n        setPeerConnectAddress,\n        setEnabledExtensions,\n        setSupportedExtensions\n      );\n    };\n  }, []);\n\n  const initDappConnect = useCallback(\n    (\n      dAppName: string,\n      dAppUrl: string,\n      verifyConnection: (\n        walletInfo: any,\n        callback: (granted: boolean, allowAutoConnect: boolean) => void\n      ) => void,\n      onApiInject: (name: string, address: string) => void,\n      onApiEject: (name: string, address: string) => void,\n      onConnect: (address: string, walletInfo?: IWalletInfo) => void\n    ) => {\n      dAppConnect.current = new DAppPeerConnect({\n        dAppInfo: {\n          name: dAppName,\n          url: dAppUrl,\n        },\n        verifyConnection: verifyConnection,\n        onApiInject: onApiInject,\n        onApiEject: onApiEject,\n        onConnect: (address: string, walletInfo?: IWalletInfo) => {\n          cip45Connected.current = true;\n          cip45Address.current = address;\n\n          cip45Identicon.current = dAppConnect.current?.getIdenticon() ?? null;\n\n          if (walletInfo) {\n            connectedCip45Wallet.current = walletInfo;\n          }\n\n          if (typeof onConnect === 'function') {\n            onConnect(address, walletInfo);\n          }\n        },\n        onDisconnect: (_address: string) => {\n          cip45Connected.current = false;\n          cip45Address.current = null;\n\n          cip45Identicon.current = null;\n        },\n        useWalletDiscovery: true,\n      });\n\n      setPeerConnectAddress(dAppConnect.current.getAddress());\n    },\n    []\n  );\n\n  const disconnect = useCallback(() => {\n    Wallet.disconnect();\n  }, []);\n\n  const connectToWallet = useCallback(\n    async (walletName: string, retries = 20, retryIntervalInMs = 25) => {\n      try {\n        await Wallet.connectToWallet(\n          walletName,\n          limitNetwork,\n          undefined,\n          retries,\n          retryIntervalInMs\n        );\n      } catch (error) {\n        console.error(error);\n      }\n    },\n    [limitNetwork]\n  );\n\n  const checkEnabled = useCallback(async () => {\n    try {\n      await Wallet.checkEnabled(limitNetwork);\n    } catch (error) {\n      console.error(error);\n      disconnect();\n    }\n  }, [lastConnectedWallet]);\n\n  const signMessage = useCallback(\n    async (\n      message: string,\n      onSignMessage?: (signature: string, key: string | undefined) => void,\n      onSignError?: (error: Error) => void\n    ) => {\n      Wallet.signMessage(message, onSignMessage, onSignError);\n    },\n    [isEnabled, enabledWallet, limitNetwork]\n  );\n\n  const connect = useCallback(\n    async (\n      walletName: string,\n      onConnect?: () => void | undefined,\n      onError?: (code: Error) => void,\n      extensions?: Array<number>\n    ) => {\n      if (isConnecting) return;\n\n      const errorHandler =\n        typeof onError === 'undefined'\n          ? (error: Error) => console.error(error)\n          : onError;\n\n      const extensionObjects = extensions?.map((cip) => ({ cip })) ?? [];\n      Wallet.connect(walletName, limitNetwork, onConnect, errorHandler, extensionObjects);\n    },\n    [connectToWallet, isConnecting]\n  );\n\n  useEffect(() => {\n    if (isConnected) {\n      checkEnabled();\n    }\n  }, [isConnected]);\n\n  useEffect(() => {\n    Wallet.startInjectWalletListener();\n\n    return () => {\n      Wallet.stopInjectWalletListener();\n    };\n  }, []);\n\n  return {\n    isEnabled,\n    isConnected,\n    isConnecting,\n    enabledWallet,\n    stakeAddress,\n    usedAddresses,\n    unusedAddresses,\n    signMessage,\n    connect,\n    disconnect,\n    installedExtensions,\n    accountBalance,\n    dAppConnect,\n    initDappConnect,\n    peerConnectAddress,\n    cip45Connected,\n    cip45Address,\n    cip45Identicon,\n    connectedCip45Wallet,\n    enabledExtensions,\n    supportedExtensions,\n  };\n}\n\nexport default useCardano;\n","const colors = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50],\n}\n\nfor (const key in colors) Object.freeze(colors[key]);\nexport default Object.freeze(colors);","import colorNames from 'color-name';\n\nconst reverseNames = Object.create(null);\n\n// Create a list of reverse color names\nfor (const name in colorNames) {\n\tif (Object.hasOwn(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nconst cs = {\n\tto: {},\n\tget: {},\n};\n\ncs.get = function (string) {\n\tconst prefix = string.slice(0, 3).toLowerCase();\n\tlet value;\n\tlet model;\n\tswitch (prefix) {\n\t\tcase 'hsl': {\n\t\t\tvalue = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'hwb': {\n\t\t\tvalue = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tvalue = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!value) {\n\t\treturn null;\n\t}\n\n\treturn {model, value};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst abbr = /^#([a-f\\d]{3,4})$/i;\n\tconst hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n\tconst rgba = /^rgba?\\(\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)\\s*(?:[\\s,|/]\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(%?)\\s*)?\\)$/i;\n\tconst per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/i;\n\tconst keyword = /^(\\w+)$/;\n\n\tlet rgb = [0, 0, 0, 1];\n\tlet match;\n\tlet i;\n\tlet hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tconst i2 = i * 2;\n\t\t\trgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseFloat(match[i + 1]);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.toLowerCase().match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!Object.hasOwn(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// eslint-disable-next-line unicorn/prefer-spread\n\t\trgb = colorNames[match[1]].slice();\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hsl);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst s = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst l = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hwb);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst w = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst b = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function (...rgba) {\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function (...rgba) {\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function (...rgba) {\n\tconst r = Math.round(rgba[0] / 255 * 100);\n\tconst g = Math.round(rgba[1] / 255 * 100);\n\tconst b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function (...hsla) {\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// Hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function (...hwba) {\n\tlet a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (...rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// Helpers\nfunction clamp(number_, min, max) {\n\treturn Math.min(Math.max(min, number_), max);\n}\n\nfunction hexDouble(number_) {\n\tconst string_ = Math.round(number_).toString(16).toUpperCase();\n\treturn (string_.length < 2) ? '0' + string_ : string_;\n}\n\nexport default cs;\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nimport cssKeywords from 'color-name';\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\toklab: {channels: 3, labels: ['okl', 'oka', 'okb']},\n\tlch: {channels: 3, labels: 'lch'},\n\toklch: {channels: 3, labels: ['okl', 'okc', 'okh']},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']},\n};\n\nexport default convert;\n\n// LAB f(t) constant\nconst LAB_FT = (6 / 29) ** 3;\n\n// SRGB non-linear transform functions\nfunction srgbNonlinearTransform(c) {\n\tconst cc = c > 0.003_130_8\n\t\t? ((1.055 * (c ** (1 / 2.4))) - 0.055)\n\t\t: c * 12.92;\n\treturn Math.min(Math.max(0, cc), 1);\n}\n\nfunction srgbNonlinearTransformInv(c) {\n\treturn c > 0.040_45 ? (((c + 0.055) / 1.055) ** 2.4) : (c / 12.92);\n}\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tswitch (max) {\n\t\tcase min: {\n\t\t\th = 0;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase r: {\n\t\t\th = (g - b) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase g: {\n\t\t\th = 2 + (b - r) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase b: {\n\t\t\th = 4 + (r - g) / delta;\n\n\t\t\tbreak;\n\t\t}\n\t// No default\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tswitch (v) {\n\t\t\tcase r: {\n\t\t\t\th = bdif - gdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase g: {\n\t\t\t\th = (1 / 3) + rdif - bdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase b: {\n\t\t\t\th = (2 / 3) + gdif - rdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t// No default\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100,\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.oklab = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst lp = Math.cbrt(0.412_221_470_8 * r + 0.536_332_536_3 * g + 0.051_445_992_9 * b);\n\tconst mp = Math.cbrt(0.211_903_498_2 * r + 0.680_699_545_1 * g + 0.107_396_956_6 * b);\n\tconst sp = Math.cbrt(0.088_302_461_9 * r + 0.281_718_837_6 * g + 0.629_978_700_5 * b);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst aa = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst bb = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, aa * 100, bb * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Number.POSITIVE_INFINITY;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn [...cssKeywords[keyword]];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst x = (r * 0.412_456_4) + (g * 0.357_576_1) + (b * 0.180_437_5);\n\tconst y = (r * 0.212_672_9) + (g * 0.715_152_2) + (b * 0.072_175);\n\tconst z = (r * 0.019_333_9) + (g * 0.119_192) + (b * 0.950_304_1);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t3;\n\tlet value;\n\n\tif (s === 0) {\n\t\tvalue = l * 255;\n\t\treturn [value, value, value];\n\t}\n\n\tconst t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tvalue = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tvalue = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tvalue = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tvalue = t1;\n\t\t}\n\n\t\trgb[i] = value * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0: {\n\t\t\treturn [v, t, p];\n\t\t}\n\n\t\tcase 1: {\n\t\t\treturn [q, v, p];\n\t\t}\n\n\t\tcase 2: {\n\t\t\treturn [p, v, t];\n\t\t}\n\n\t\tcase 3: {\n\t\t\treturn [p, q, v];\n\t\t}\n\n\t\tcase 4: {\n\t\t\treturn [t, p, v];\n\t\t}\n\n\t\tcase 5: {\n\t\t\treturn [v, p, q];\n\t\t}\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\t// eslint-disable-next-line no-bitwise\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces, default-case-last */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: { r = v;  g = n;  b = wh; break;\n\t\t}\n\n\t\tcase 1: { r = n;  g = v;  b = wh; break;\n\t\t}\n\n\t\tcase 2: { r = wh; g = v;  b = n; break;\n\t\t}\n\n\t\tcase 3: { r = wh; g = n;  b = v; break;\n\t\t}\n\n\t\tcase 4: { r = n;  g = wh; b = v; break;\n\t\t}\n\n\t\tcase 5: { r = v;  g = wh; b = n; break;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces, default-case-last */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.240_454_2) + (y * -1.537_138_5) + (z * -0.498_531_4);\n\tg = (x * -0.969_266) + (y * 1.876_010_8) + (z * 0.041_556);\n\tb = (x * 0.055_643_4) + (y * -0.204_025_9) + (z * 1.057_225_2);\n\n\t// Assume sRGB\n\tr = srgbNonlinearTransform(r);\n\tg = srgbNonlinearTransform(g);\n\tb = srgbNonlinearTransform(b);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.xyz.oklab = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\n\tconst lp = Math.cbrt(0.818_933_010_1 * x + 0.361_866_742_4 * y - 0.128_859_713_7 * z);\n\tconst mp = Math.cbrt(0.032_984_543_6 * x + 0.929_311_871_5 * y + 0.036_145_638_7 * z);\n\tconst sp = Math.cbrt(0.048_200_301_8 * x + 0.264_366_269_1 * y + 0.633_851_707 * z);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst a = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst b = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, a * 100, b * 100];\n};\n\nconvert.oklab.oklch = function (oklab) {\n\treturn convert.lab.lch(oklab);\n};\n\nconvert.oklab.xyz = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst a = oklab[1] / 100;\n\tconst b = oklab[2] / 100;\n\n\tconst l = (0.999_999_998 * ll + 0.396_337_792 * a + 0.215_803_758 * b) ** 3;\n\tconst m = (1.000_000_008 * ll - 0.105_561_342 * a - 0.063_854_175 * b) ** 3;\n\tconst s = (1.000_000_055 * ll - 0.089_484_182 * a - 1.291_485_538 * b) ** 3;\n\n\tconst x = 1.227_013_851 * l - 0.557_799_98 * m + 0.281_256_149 * s;\n\tconst y = -0.040_580_178 * l + 1.112_256_87 * m - 0.071_676_679 * s;\n\tconst z = -0.076_381_285 * l - 0.421_481_978 * m + 1.586_163_22 * s;\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.oklab.rgb = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst aa = oklab[1] / 100;\n\tconst bb = oklab[2] / 100;\n\n\tconst l = (ll + 0.396_337_777_4 * aa + 0.215_803_757_3 * bb) ** 3;\n\tconst m = (ll - 0.105_561_345_8 * aa - 0.063_854_172_8 * bb) ** 3;\n\tconst s = (ll - 0.089_484_177_5 * aa - 1.291_485_548 * bb) ** 3;\n\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransform(4.076_741_662_1 * l - 3.307_711_591_3 * m + 0.230_969_929_2 * s);\n\tconst g = srgbNonlinearTransform(-1.268_438_004_6 * l + 2.609_757_401_1 * m - 0.341_319_396_5 * s);\n\tconst b = srgbNonlinearTransform(-0.004_196_086_3 * l - 0.703_418_614_7 * m + 1.707_614_701 * s);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.oklch.oklab = function (oklch) {\n\treturn convert.lch.lab(oklch);\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787;\n\n\t// Illuminant D65 XYZ Tristrimulus Values\n\t// https://en.wikipedia.org/wiki/CIE_1931_color_space\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t/* eslint-disable no-bitwise */\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\t\t/* eslint-enable no-bitwise */\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\t// eslint-disable-next-line no-bitwise\n\tif (r >> 4 === g >> 4 && g >> 4 === b >> 4) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\targs = args[0];\n\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (Math.trunc(args > 50) + 1) * 0.5;\n\t/* eslint-disable no-bitwise */\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\targs = args[0];\n\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\t/* eslint-disable no-bitwise */\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f\\d]{6}|[a-f\\d]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = [...colorString].map(char => char + char).join('');\n\t}\n\n\tconst integer = Number.parseInt(colorString, 16);\n\t/* eslint-disable no-bitwise */\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet hue;\n\n\tconst grayscale = chroma < 1 ? min / (1 - chroma) : 0;\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else if (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else if (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2 * s * l) : (2 * s * (1 - l));\n\n\tlet f = 0;\n\tif (c < 1) {\n\t\tf = (l - 0.5 * c) / (1 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0: {\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 1: {\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 2: {\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\t}\n\n\t\tcase 3: {\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\t}\n\n\t\tcase 4: {\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\t}\n\n\t\tdefault: {\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255,\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1 - c);\n\tlet f = 0;\n\n\tif (v > 0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else if (l >= 0.5 && l < 1) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65_535) * 255, (apple[1] / 65_535) * 255, (apple[2] / 65_535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65_535, (rgb[1] / 255) * 65_535, (rgb[2] / 255) * 65_535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\t/* eslint-disable no-bitwise */\n\tconst value = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (value << 16) + (value << 8) + value;\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst value = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [value / 255 * 100];\n};\n","import conversions from './conversions.js';\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null,\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length > 0) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let {length} = adjacents, i = 0; i < length; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nfunction route(fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n}\n\nexport default route;\n","import conversions from './conversions.js';\nimport route from './route.js';\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let {length} = result, i = 0; i < length; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfor (const fromModel of models) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\tfor (const toModel of routeModels) {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t}\n}\n\nexport default convert;\n","import colorString from 'color-string';\nimport convert from 'color-convert';\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](...arguments_);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(...arguments_);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(...this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(...rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_colour_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...arguments_) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments_.length > 0) {\n\t\t\treturn new Color(arguments_, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...arguments_) {\n\t\tlet color = arguments_[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(arguments_, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] ||= [])[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nexport default Color;\n","import { CopyInputContainerProps, CustomStyle } from '../../types';\nimport styled, { keyframes } from 'styled-components';\n\nexport const Modal = styled('div').withConfig({\n  shouldForwardProp: (prop) => !['customCSS'].includes(prop),\n})<CustomStyle>`\n  position: fixed;\n  z-index: 100;\n  inset: 0;\n  background-color: rgba(0, 0, 0, 0.4);\n  ${(props) => props.customCSS}\n`;\n\nexport const ModalContent = styled.div`\n  background-color: #fefefe;\n  padding: 20px;\n  border: 1px solid #aeaeae;\n  border-radius: 9px;\n  width: fit-content;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n  z-index: 101;\n  max-width: 90vw;\n  max-height: 90vh;\n  overflow-y: auto;\n  overflow-x: hidden;\n  box-shadow: 0px 10px 38px -10px rgba(22, 23, 24, 0.35), 0px 10px 20px -15px rgba(22, 23, 24, 0.2);\n\n  &:focus {\n    outline: none;\n  }\n`;\n\nexport const CopyInputContainer = styled('div').withConfig({\n  shouldForwardProp: (prop) => !['primaryColor'].includes(prop),\n})<CopyInputContainerProps>`\n  display: flex;\n  align-items: center;\n  border: 1px solid #ccc;\n  border-radius: 3px;\n  margin-top: 10px;\n  padding: 10px;\n  width: 95%;\n  max-width: 300px;\n\n  & > input {\n    flex: 1;\n    border: none;\n    outline: none;\n    padding-left: 10px;\n    padding-right: 10px;\n  }\n  & > button {\n    background-color: ${(props) => props.primaryColor};\n    border-radius: 3px;\n    color: white;\n    border: none;\n    padding: 6px 10px;\n    cursor: pointer;\n  }\n`;\n\nconst fadeInOut = keyframes`\n  0%, 100% {\n    opacity: 0;\n  }\n  10%, 90% {\n    opacity: 1;\n  }\n`;\n\nexport const Toast = styled.div`\n  visibility: hidden;\n  background-color: #333;\n  color: #fff;\n  text-align: center;\n  border-radius: 5px;\n  padding: 10px;\n  position: fixed;\n  bottom: 20px;\n  left: 50%;\n  transform: translateX(-50%);\n  z-index: 1;\n\n  &.show {\n    visibility: visible;\n    animation: ${fadeInOut} 3s ease;\n  }\n`;\n","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n//  http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n//  http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\n//---------------------------------------------------------------------\n// qrcode\n//---------------------------------------------------------------------\n\n/**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\nexport const qrcode = function(typeNumber, errorCorrectionLevel) {\n\n  const PAD0 = 0xEC;\n  const PAD1 = 0x11;\n\n  let _typeNumber = typeNumber;\n  const _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n  let _modules = null;\n  let _moduleCount = 0;\n  let _dataCache = null;\n  const _dataList = [];\n\n  const _this = {};\n\n  const makeImpl = function(test, maskPattern) {\n\n    _moduleCount = _typeNumber * 4 + 17;\n    _modules = function(moduleCount) {\n      const modules = new Array(moduleCount);\n      for (let row = 0; row < moduleCount; row += 1) {\n        modules[row] = new Array(moduleCount);\n        for (let col = 0; col < moduleCount; col += 1) {\n          modules[row][col] = null;\n        }\n      }\n      return modules;\n    }(_moduleCount);\n\n    setupPositionProbePattern(0, 0);\n    setupPositionProbePattern(_moduleCount - 7, 0);\n    setupPositionProbePattern(0, _moduleCount - 7);\n    setupPositionAdjustPattern();\n    setupTimingPattern();\n    setupTypeInfo(test, maskPattern);\n\n    if (_typeNumber >= 7) {\n      setupTypeNumber(test);\n    }\n\n    if (_dataCache == null) {\n      _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n    }\n\n    mapData(_dataCache, maskPattern);\n  };\n\n  const setupPositionProbePattern = function(row, col) {\n\n    for (let r = -1; r <= 7; r += 1) {\n\n      if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n      for (let c = -1; c <= 7; c += 1) {\n\n        if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n        if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n            || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n            || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n          _modules[row + r][col + c] = true;\n        } else {\n          _modules[row + r][col + c] = false;\n        }\n      }\n    }\n  };\n\n  const getBestMaskPattern = function() {\n\n    let minLostPoint = 0;\n    let pattern = 0;\n\n    for (let i = 0; i < 8; i += 1) {\n\n      makeImpl(true, i);\n\n      const lostPoint = QRUtil.getLostPoint(_this);\n\n      if (i == 0 || minLostPoint > lostPoint) {\n        minLostPoint = lostPoint;\n        pattern = i;\n      }\n    }\n\n    return pattern;\n  };\n\n  const setupTimingPattern = function() {\n\n    for (let r = 8; r < _moduleCount - 8; r += 1) {\n      if (_modules[r][6] != null) {\n        continue;\n      }\n      _modules[r][6] = (r % 2 == 0);\n    }\n\n    for (let c = 8; c < _moduleCount - 8; c += 1) {\n      if (_modules[6][c] != null) {\n        continue;\n      }\n      _modules[6][c] = (c % 2 == 0);\n    }\n  };\n\n  const setupPositionAdjustPattern = function() {\n\n    const pos = QRUtil.getPatternPosition(_typeNumber);\n\n    for (let i = 0; i < pos.length; i += 1) {\n\n      for (let j = 0; j < pos.length; j += 1) {\n\n        const row = pos[i];\n        const col = pos[j];\n\n        if (_modules[row][col] != null) {\n          continue;\n        }\n\n        for (let r = -2; r <= 2; r += 1) {\n\n          for (let c = -2; c <= 2; c += 1) {\n\n            if (r == -2 || r == 2 || c == -2 || c == 2\n                || (r == 0 && c == 0) ) {\n              _modules[row + r][col + c] = true;\n            } else {\n              _modules[row + r][col + c] = false;\n            }\n          }\n        }\n      }\n    }\n  };\n\n  const setupTypeNumber = function(test) {\n\n    const bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n    for (let i = 0; i < 18; i += 1) {\n      const mod = (!test && ( (bits >> i) & 1) == 1);\n      _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n    }\n\n    for (let i = 0; i < 18; i += 1) {\n      const mod = (!test && ( (bits >> i) & 1) == 1);\n      _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n    }\n  };\n\n  const setupTypeInfo = function(test, maskPattern) {\n\n    const data = (_errorCorrectionLevel << 3) | maskPattern;\n    const bits = QRUtil.getBCHTypeInfo(data);\n\n    // vertical\n    for (let i = 0; i < 15; i += 1) {\n\n      const mod = (!test && ( (bits >> i) & 1) == 1);\n\n      if (i < 6) {\n        _modules[i][8] = mod;\n      } else if (i < 8) {\n        _modules[i + 1][8] = mod;\n      } else {\n        _modules[_moduleCount - 15 + i][8] = mod;\n      }\n    }\n\n    // horizontal\n    for (let i = 0; i < 15; i += 1) {\n\n      const mod = (!test && ( (bits >> i) & 1) == 1);\n\n      if (i < 8) {\n        _modules[8][_moduleCount - i - 1] = mod;\n      } else if (i < 9) {\n        _modules[8][15 - i - 1 + 1] = mod;\n      } else {\n        _modules[8][15 - i - 1] = mod;\n      }\n    }\n\n    // fixed module\n    _modules[_moduleCount - 8][8] = (!test);\n  };\n\n  const mapData = function(data, maskPattern) {\n\n    let inc = -1;\n    let row = _moduleCount - 1;\n    let bitIndex = 7;\n    let byteIndex = 0;\n    const maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n    for (let col = _moduleCount - 1; col > 0; col -= 2) {\n\n      if (col == 6) col -= 1;\n\n      while (true) {\n\n        for (let c = 0; c < 2; c += 1) {\n\n          if (_modules[row][col - c] == null) {\n\n            let dark = false;\n\n            if (byteIndex < data.length) {\n              dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n            }\n\n            const mask = maskFunc(row, col - c);\n\n            if (mask) {\n              dark = !dark;\n            }\n\n            _modules[row][col - c] = dark;\n            bitIndex -= 1;\n\n            if (bitIndex == -1) {\n              byteIndex += 1;\n              bitIndex = 7;\n            }\n          }\n        }\n\n        row += inc;\n\n        if (row < 0 || _moduleCount <= row) {\n          row -= inc;\n          inc = -inc;\n          break;\n        }\n      }\n    }\n  };\n\n  const createBytes = function(buffer, rsBlocks) {\n\n    let offset = 0;\n\n    let maxDcCount = 0;\n    let maxEcCount = 0;\n\n    const dcdata = new Array(rsBlocks.length);\n    const ecdata = new Array(rsBlocks.length);\n\n    for (let r = 0; r < rsBlocks.length; r += 1) {\n\n      const dcCount = rsBlocks[r].dataCount;\n      const ecCount = rsBlocks[r].totalCount - dcCount;\n\n      maxDcCount = Math.max(maxDcCount, dcCount);\n      maxEcCount = Math.max(maxEcCount, ecCount);\n\n      dcdata[r] = new Array(dcCount);\n\n      for (let i = 0; i < dcdata[r].length; i += 1) {\n        dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n      }\n      offset += dcCount;\n\n      const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n      const rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n      const modPoly = rawPoly.mod(rsPoly);\n      ecdata[r] = new Array(rsPoly.getLength() - 1);\n      for (let i = 0; i < ecdata[r].length; i += 1) {\n        const modIndex = i + modPoly.getLength() - ecdata[r].length;\n        ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n      }\n    }\n\n    let totalCodeCount = 0;\n    for (let i = 0; i < rsBlocks.length; i += 1) {\n      totalCodeCount += rsBlocks[i].totalCount;\n    }\n\n    const data = new Array(totalCodeCount);\n    let index = 0;\n\n    for (let i = 0; i < maxDcCount; i += 1) {\n      for (let r = 0; r < rsBlocks.length; r += 1) {\n        if (i < dcdata[r].length) {\n          data[index] = dcdata[r][i];\n          index += 1;\n        }\n      }\n    }\n\n    for (let i = 0; i < maxEcCount; i += 1) {\n      for (let r = 0; r < rsBlocks.length; r += 1) {\n        if (i < ecdata[r].length) {\n          data[index] = ecdata[r][i];\n          index += 1;\n        }\n      }\n    }\n\n    return data;\n  };\n\n  const createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n    const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n    const buffer = qrBitBuffer();\n\n    for (let i = 0; i < dataList.length; i += 1) {\n      const data = dataList[i];\n      buffer.put(data.getMode(), 4);\n      buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n      data.write(buffer);\n    }\n\n    // calc num max data.\n    let totalDataCount = 0;\n    for (let i = 0; i < rsBlocks.length; i += 1) {\n      totalDataCount += rsBlocks[i].dataCount;\n    }\n\n    if (buffer.getLengthInBits() > totalDataCount * 8) {\n      throw 'code length overflow. ('\n        + buffer.getLengthInBits()\n        + '>'\n        + totalDataCount * 8\n        + ')';\n    }\n\n    // end code\n    if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n      buffer.put(0, 4);\n    }\n\n    // padding\n    while (buffer.getLengthInBits() % 8 != 0) {\n      buffer.putBit(false);\n    }\n\n    // padding\n    while (true) {\n\n      if (buffer.getLengthInBits() >= totalDataCount * 8) {\n        break;\n      }\n      buffer.put(PAD0, 8);\n\n      if (buffer.getLengthInBits() >= totalDataCount * 8) {\n        break;\n      }\n      buffer.put(PAD1, 8);\n    }\n\n    return createBytes(buffer, rsBlocks);\n  };\n\n  _this.addData = function(data, mode) {\n\n    mode = mode || 'Byte';\n\n    let newData = null;\n\n    switch(mode) {\n    case 'Numeric' :\n      newData = qrNumber(data);\n      break;\n    case 'Alphanumeric' :\n      newData = qrAlphaNum(data);\n      break;\n    case 'Byte' :\n      newData = qr8BitByte(data);\n      break;\n    case 'Kanji' :\n      newData = qrKanji(data);\n      break;\n    default :\n      throw 'mode:' + mode;\n    }\n\n    _dataList.push(newData);\n    _dataCache = null;\n  };\n\n  _this.isDark = function(row, col) {\n    if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n      throw row + ',' + col;\n    }\n    return _modules[row][col];\n  };\n\n  _this.getModuleCount = function() {\n    return _moduleCount;\n  };\n\n  _this.make = function() {\n    if (_typeNumber < 1) {\n      let typeNumber = 1;\n\n      for (; typeNumber < 40; typeNumber++) {\n        const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n        const buffer = qrBitBuffer();\n\n        for (let i = 0; i < _dataList.length; i++) {\n          const data = _dataList[i];\n          buffer.put(data.getMode(), 4);\n          buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n          data.write(buffer);\n        }\n\n        let totalDataCount = 0;\n        for (let i = 0; i < rsBlocks.length; i++) {\n          totalDataCount += rsBlocks[i].dataCount;\n        }\n\n        if (buffer.getLengthInBits() <= totalDataCount * 8) {\n          break;\n        }\n      }\n\n      _typeNumber = typeNumber;\n    }\n\n    makeImpl(false, getBestMaskPattern() );\n  };\n\n  _this.createTableTag = function(cellSize, margin) {\n\n    cellSize = cellSize || 2;\n    margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n    let qrHtml = '';\n\n    qrHtml += '<table style=\"';\n    qrHtml += ' border-width: 0px; border-style: none;';\n    qrHtml += ' border-collapse: collapse;';\n    qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n    qrHtml += '\">';\n    qrHtml += '<tbody>';\n\n    for (let r = 0; r < _this.getModuleCount(); r += 1) {\n\n      qrHtml += '<tr>';\n\n      for (let c = 0; c < _this.getModuleCount(); c += 1) {\n        qrHtml += '<td style=\"';\n        qrHtml += ' border-width: 0px; border-style: none;';\n        qrHtml += ' border-collapse: collapse;';\n        qrHtml += ' padding: 0px; margin: 0px;';\n        qrHtml += ' width: ' + cellSize + 'px;';\n        qrHtml += ' height: ' + cellSize + 'px;';\n        qrHtml += ' background-color: ';\n        qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n        qrHtml += ';';\n        qrHtml += '\"/>';\n      }\n\n      qrHtml += '</tr>';\n    }\n\n    qrHtml += '</tbody>';\n    qrHtml += '</table>';\n\n    return qrHtml;\n  };\n\n  _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n    let opts = {};\n    if (typeof arguments[0] == 'object') {\n      // Called by options.\n      opts = arguments[0];\n      // overwrite cellSize and margin.\n      cellSize = opts.cellSize;\n      margin = opts.margin;\n      alt = opts.alt;\n      title = opts.title;\n    }\n\n    cellSize = cellSize || 2;\n    margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n    // Compose alt property surrogate\n    alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n    alt.text = alt.text || null;\n    alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n    // Compose title property surrogate\n    title = (typeof title === 'string') ? {text: title} : title || {};\n    title.text = title.text || null;\n    title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n    const size = _this.getModuleCount() * cellSize + margin * 2;\n    let c, mc, r, mr, qrSvg='', rect;\n\n    rect = 'l' + cellSize + ',0 0,' + cellSize +\n      ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n    qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n    qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n    qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n    qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n    qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n        escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n    qrSvg += '>';\n    qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n        escapeXml(title.text) + '</title>' : '';\n    qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n        escapeXml(alt.text) + '</description>' : '';\n    qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n    qrSvg += '<path d=\"';\n\n    for (r = 0; r < _this.getModuleCount(); r += 1) {\n      mr = r * cellSize + margin;\n      for (c = 0; c < _this.getModuleCount(); c += 1) {\n        if (_this.isDark(r, c) ) {\n          mc = c*cellSize+margin;\n          qrSvg += 'M' + mc + ',' + mr + rect;\n        }\n      }\n    }\n\n    qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n    qrSvg += '</svg>';\n\n    return qrSvg;\n  };\n\n  _this.createDataURL = function(cellSize, margin) {\n\n    cellSize = cellSize || 2;\n    margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n    const size = _this.getModuleCount() * cellSize + margin * 2;\n    const min = margin;\n    const max = size - margin;\n\n    return createDataURL(size, size, function(x, y) {\n      if (min <= x && x < max && min <= y && y < max) {\n        const c = Math.floor( (x - min) / cellSize);\n        const r = Math.floor( (y - min) / cellSize);\n        return _this.isDark(r, c)? 0 : 1;\n      } else {\n        return 1;\n      }\n    } );\n  };\n\n  _this.createImgTag = function(cellSize, margin, alt) {\n\n    cellSize = cellSize || 2;\n    margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n    const size = _this.getModuleCount() * cellSize + margin * 2;\n\n    let img = '';\n    img += '<img';\n    img += '\\u0020src=\"';\n    img += _this.createDataURL(cellSize, margin);\n    img += '\"';\n    img += '\\u0020width=\"';\n    img += size;\n    img += '\"';\n    img += '\\u0020height=\"';\n    img += size;\n    img += '\"';\n    if (alt) {\n      img += '\\u0020alt=\"';\n      img += escapeXml(alt);\n      img += '\"';\n    }\n    img += '/>';\n\n    return img;\n  };\n\n  const escapeXml = function(s) {\n    let escaped = '';\n    for (let i = 0; i < s.length; i += 1) {\n      const c = s.charAt(i);\n      switch(c) {\n      case '<': escaped += '&lt;'; break;\n      case '>': escaped += '&gt;'; break;\n      case '&': escaped += '&amp;'; break;\n      case '\"': escaped += '&quot;'; break;\n      default : escaped += c; break;\n      }\n    }\n    return escaped;\n  };\n\n  const _createHalfASCII = function(margin) {\n    const cellSize = 1;\n    margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n    const size = _this.getModuleCount() * cellSize + margin * 2;\n    const min = margin;\n    const max = size - margin;\n\n    let y, x, r1, r2, p;\n\n    const blocks = {\n      '██': '█',\n      '█ ': '▀',\n      ' █': '▄',\n      '  ': ' '\n    };\n\n    const blocksLastLineNoMargin = {\n      '██': '▀',\n      '█ ': '▀',\n      ' █': ' ',\n      '  ': ' '\n    };\n\n    let ascii = '';\n    for (y = 0; y < size; y += 2) {\n      r1 = Math.floor((y - min) / cellSize);\n      r2 = Math.floor((y + 1 - min) / cellSize);\n      for (x = 0; x < size; x += 1) {\n        p = '█';\n\n        if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n          p = ' ';\n        }\n\n        if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n          p += ' ';\n        }\n        else {\n          p += '█';\n        }\n\n        // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n        ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n      }\n\n      ascii += '\\n';\n    }\n\n    if (size % 2 && margin > 0) {\n      return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n    }\n\n    return ascii.substring(0, ascii.length-1);\n  };\n\n  _this.createASCII = function(cellSize, margin) {\n    cellSize = cellSize || 1;\n\n    if (cellSize < 2) {\n      return _createHalfASCII(margin);\n    }\n\n    cellSize -= 1;\n    margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n    const size = _this.getModuleCount() * cellSize + margin * 2;\n    const min = margin;\n    const max = size - margin;\n\n    let y, x, r, p;\n\n    const white = Array(cellSize+1).join('██');\n    const black = Array(cellSize+1).join('  ');\n\n    let ascii = '';\n    let line = '';\n    for (y = 0; y < size; y += 1) {\n      r = Math.floor( (y - min) / cellSize);\n      line = '';\n      for (x = 0; x < size; x += 1) {\n        p = 1;\n\n        if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n          p = 0;\n        }\n\n        // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n        line += p ? white : black;\n      }\n\n      for (r = 0; r < cellSize; r += 1) {\n        ascii += line + '\\n';\n      }\n    }\n\n    return ascii.substring(0, ascii.length-1);\n  };\n\n  _this.renderTo2dContext = function(context, cellSize) {\n    cellSize = cellSize || 2;\n    const length = _this.getModuleCount();\n    for (let row = 0; row < length; row++) {\n      for (let col = 0; col < length; col++) {\n        context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n        context.fillRect(col * cellSize, row * cellSize, cellSize, cellSize);\n      }\n    }\n  }\n\n  return _this;\n};\n\n//---------------------------------------------------------------------\n// qrcode.stringToBytes\n//---------------------------------------------------------------------\n\nqrcode.stringToBytes = function(s) {\n  const bytes = [];\n  for (let i = 0; i < s.length; i += 1) {\n    const c = s.charCodeAt(i);\n    bytes.push(c & 0xff);\n  }\n  return bytes;\n};\n\n//---------------------------------------------------------------------\n// qrcode.createStringToBytes\n//---------------------------------------------------------------------\n\n/**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\nqrcode.createStringToBytes = function(unicodeData, numChars) {\n\n  // create conversion map.\n\n  const unicodeMap = function() {\n\n    const bin = base64DecodeInputStream(unicodeData);\n    const read = function() {\n      const b = bin.read();\n      if (b == -1) throw 'eof';\n      return b;\n    };\n\n    let count = 0;\n    const unicodeMap = {};\n    while (true) {\n      const b0 = bin.read();\n      if (b0 == -1) break;\n      const b1 = read();\n      const b2 = read();\n      const b3 = read();\n      const k = String.fromCharCode( (b0 << 8) | b1);\n      const v = (b2 << 8) | b3;\n      unicodeMap[k] = v;\n      count += 1;\n    }\n    if (count != numChars) {\n      throw count + ' != ' + numChars;\n    }\n\n    return unicodeMap;\n  }();\n\n  const unknownChar = '?'.charCodeAt(0);\n\n  return function(s) {\n    const bytes = [];\n    for (let i = 0; i < s.length; i += 1) {\n      const c = s.charCodeAt(i);\n      if (c < 128) {\n        bytes.push(c);\n      } else {\n        const b = unicodeMap[s.charAt(i)];\n        if (typeof b == 'number') {\n          if ( (b & 0xff) == b) {\n            // 1byte\n            bytes.push(b);\n          } else {\n            // 2bytes\n            bytes.push(b >>> 8);\n            bytes.push(b & 0xff);\n          }\n        } else {\n          bytes.push(unknownChar);\n        }\n      }\n    }\n    return bytes;\n  };\n};\n\n//---------------------------------------------------------------------\n// QRMode\n//---------------------------------------------------------------------\n\nconst QRMode = {\n  MODE_NUMBER :    1 << 0,\n  MODE_ALPHA_NUM : 1 << 1,\n  MODE_8BIT_BYTE : 1 << 2,\n  MODE_KANJI :     1 << 3\n};\n\n//---------------------------------------------------------------------\n// QRErrorCorrectionLevel\n//---------------------------------------------------------------------\n\nconst QRErrorCorrectionLevel = {\n  L : 1,\n  M : 0,\n  Q : 3,\n  H : 2\n};\n\n//---------------------------------------------------------------------\n// QRMaskPattern\n//---------------------------------------------------------------------\n\nconst QRMaskPattern = {\n  PATTERN000 : 0,\n  PATTERN001 : 1,\n  PATTERN010 : 2,\n  PATTERN011 : 3,\n  PATTERN100 : 4,\n  PATTERN101 : 5,\n  PATTERN110 : 6,\n  PATTERN111 : 7\n};\n\n//---------------------------------------------------------------------\n// QRUtil\n//---------------------------------------------------------------------\n\nconst QRUtil = function() {\n\n  const PATTERN_POSITION_TABLE = [\n    [],\n    [6, 18],\n    [6, 22],\n    [6, 26],\n    [6, 30],\n    [6, 34],\n    [6, 22, 38],\n    [6, 24, 42],\n    [6, 26, 46],\n    [6, 28, 50],\n    [6, 30, 54],\n    [6, 32, 58],\n    [6, 34, 62],\n    [6, 26, 46, 66],\n    [6, 26, 48, 70],\n    [6, 26, 50, 74],\n    [6, 30, 54, 78],\n    [6, 30, 56, 82],\n    [6, 30, 58, 86],\n    [6, 34, 62, 90],\n    [6, 28, 50, 72, 94],\n    [6, 26, 50, 74, 98],\n    [6, 30, 54, 78, 102],\n    [6, 28, 54, 80, 106],\n    [6, 32, 58, 84, 110],\n    [6, 30, 58, 86, 114],\n    [6, 34, 62, 90, 118],\n    [6, 26, 50, 74, 98, 122],\n    [6, 30, 54, 78, 102, 126],\n    [6, 26, 52, 78, 104, 130],\n    [6, 30, 56, 82, 108, 134],\n    [6, 34, 60, 86, 112, 138],\n    [6, 30, 58, 86, 114, 142],\n    [6, 34, 62, 90, 118, 146],\n    [6, 30, 54, 78, 102, 126, 150],\n    [6, 24, 50, 76, 102, 128, 154],\n    [6, 28, 54, 80, 106, 132, 158],\n    [6, 32, 58, 84, 110, 136, 162],\n    [6, 26, 54, 82, 110, 138, 166],\n    [6, 30, 58, 86, 114, 142, 170]\n  ];\n  const G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n  const G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n  const G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n  const _this = {};\n\n  const getBCHDigit = function(data) {\n    let digit = 0;\n    while (data != 0) {\n      digit += 1;\n      data >>>= 1;\n    }\n    return digit;\n  };\n\n  _this.getBCHTypeInfo = function(data) {\n    let d = data << 10;\n    while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n      d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n    }\n    return ( (data << 10) | d) ^ G15_MASK;\n  };\n\n  _this.getBCHTypeNumber = function(data) {\n    let d = data << 12;\n    while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n      d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n    }\n    return (data << 12) | d;\n  };\n\n  _this.getPatternPosition = function(typeNumber) {\n    return PATTERN_POSITION_TABLE[typeNumber - 1];\n  };\n\n  _this.getMaskFunction = function(maskPattern) {\n\n    switch (maskPattern) {\n\n    case QRMaskPattern.PATTERN000 :\n      return function(i, j) { return (i + j) % 2 == 0; };\n    case QRMaskPattern.PATTERN001 :\n      return function(i, j) { return i % 2 == 0; };\n    case QRMaskPattern.PATTERN010 :\n      return function(i, j) { return j % 3 == 0; };\n    case QRMaskPattern.PATTERN011 :\n      return function(i, j) { return (i + j) % 3 == 0; };\n    case QRMaskPattern.PATTERN100 :\n      return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n    case QRMaskPattern.PATTERN101 :\n      return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n    case QRMaskPattern.PATTERN110 :\n      return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n    case QRMaskPattern.PATTERN111 :\n      return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n    default :\n      throw 'bad maskPattern:' + maskPattern;\n    }\n  };\n\n  _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n    let a = qrPolynomial([1], 0);\n    for (let i = 0; i < errorCorrectLength; i += 1) {\n      a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n    }\n    return a;\n  };\n\n  _this.getLengthInBits = function(mode, type) {\n\n    if (1 <= type && type < 10) {\n\n      // 1 - 9\n\n      switch(mode) {\n      case QRMode.MODE_NUMBER    : return 10;\n      case QRMode.MODE_ALPHA_NUM : return 9;\n      case QRMode.MODE_8BIT_BYTE : return 8;\n      case QRMode.MODE_KANJI     : return 8;\n      default :\n        throw 'mode:' + mode;\n      }\n\n    } else if (type < 27) {\n\n      // 10 - 26\n\n      switch(mode) {\n      case QRMode.MODE_NUMBER    : return 12;\n      case QRMode.MODE_ALPHA_NUM : return 11;\n      case QRMode.MODE_8BIT_BYTE : return 16;\n      case QRMode.MODE_KANJI     : return 10;\n      default :\n        throw 'mode:' + mode;\n      }\n\n    } else if (type < 41) {\n\n      // 27 - 40\n\n      switch(mode) {\n      case QRMode.MODE_NUMBER    : return 14;\n      case QRMode.MODE_ALPHA_NUM : return 13;\n      case QRMode.MODE_8BIT_BYTE : return 16;\n      case QRMode.MODE_KANJI     : return 12;\n      default :\n        throw 'mode:' + mode;\n      }\n\n    } else {\n      throw 'type:' + type;\n    }\n  };\n\n  _this.getLostPoint = function(qrcode) {\n\n    const moduleCount = qrcode.getModuleCount();\n\n    let lostPoint = 0;\n\n    // LEVEL1\n\n    for (let row = 0; row < moduleCount; row += 1) {\n      for (let col = 0; col < moduleCount; col += 1) {\n\n        let sameCount = 0;\n        const dark = qrcode.isDark(row, col);\n\n        for (let r = -1; r <= 1; r += 1) {\n\n          if (row + r < 0 || moduleCount <= row + r) {\n            continue;\n          }\n\n          for (let c = -1; c <= 1; c += 1) {\n\n            if (col + c < 0 || moduleCount <= col + c) {\n              continue;\n            }\n\n            if (r == 0 && c == 0) {\n              continue;\n            }\n\n            if (dark == qrcode.isDark(row + r, col + c) ) {\n              sameCount += 1;\n            }\n          }\n        }\n\n        if (sameCount > 5) {\n          lostPoint += (3 + sameCount - 5);\n        }\n      }\n    };\n\n    // LEVEL2\n\n    for (let row = 0; row < moduleCount - 1; row += 1) {\n      for (let col = 0; col < moduleCount - 1; col += 1) {\n        let count = 0;\n        if (qrcode.isDark(row, col) ) count += 1;\n        if (qrcode.isDark(row + 1, col) ) count += 1;\n        if (qrcode.isDark(row, col + 1) ) count += 1;\n        if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n        if (count == 0 || count == 4) {\n          lostPoint += 3;\n        }\n      }\n    }\n\n    // LEVEL3\n\n    for (let row = 0; row < moduleCount; row += 1) {\n      for (let col = 0; col < moduleCount - 6; col += 1) {\n        if (qrcode.isDark(row, col)\n            && !qrcode.isDark(row, col + 1)\n            &&  qrcode.isDark(row, col + 2)\n            &&  qrcode.isDark(row, col + 3)\n            &&  qrcode.isDark(row, col + 4)\n            && !qrcode.isDark(row, col + 5)\n            &&  qrcode.isDark(row, col + 6) ) {\n          lostPoint += 40;\n        }\n      }\n    }\n\n    for (let col = 0; col < moduleCount; col += 1) {\n      for (let row = 0; row < moduleCount - 6; row += 1) {\n        if (qrcode.isDark(row, col)\n            && !qrcode.isDark(row + 1, col)\n            &&  qrcode.isDark(row + 2, col)\n            &&  qrcode.isDark(row + 3, col)\n            &&  qrcode.isDark(row + 4, col)\n            && !qrcode.isDark(row + 5, col)\n            &&  qrcode.isDark(row + 6, col) ) {\n          lostPoint += 40;\n        }\n      }\n    }\n\n    // LEVEL4\n\n    let darkCount = 0;\n\n    for (let col = 0; col < moduleCount; col += 1) {\n      for (let row = 0; row < moduleCount; row += 1) {\n        if (qrcode.isDark(row, col) ) {\n          darkCount += 1;\n        }\n      }\n    }\n\n    const ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n    lostPoint += ratio * 10;\n\n    return lostPoint;\n  };\n\n  return _this;\n}();\n\n//---------------------------------------------------------------------\n// QRMath\n//---------------------------------------------------------------------\n\nconst QRMath = function() {\n\n  const EXP_TABLE = new Array(256);\n  const LOG_TABLE = new Array(256);\n\n  // initialize tables\n  for (let i = 0; i < 8; i += 1) {\n    EXP_TABLE[i] = 1 << i;\n  }\n  for (let i = 8; i < 256; i += 1) {\n    EXP_TABLE[i] = EXP_TABLE[i - 4]\n      ^ EXP_TABLE[i - 5]\n      ^ EXP_TABLE[i - 6]\n      ^ EXP_TABLE[i - 8];\n  }\n  for (let i = 0; i < 255; i += 1) {\n    LOG_TABLE[EXP_TABLE[i] ] = i;\n  }\n\n  const _this = {};\n\n  _this.glog = function(n) {\n\n    if (n < 1) {\n      throw 'glog(' + n + ')';\n    }\n\n    return LOG_TABLE[n];\n  };\n\n  _this.gexp = function(n) {\n\n    while (n < 0) {\n      n += 255;\n    }\n\n    while (n >= 256) {\n      n -= 255;\n    }\n\n    return EXP_TABLE[n];\n  };\n\n  return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrPolynomial\n//---------------------------------------------------------------------\n\nconst qrPolynomial = function(num, shift) {\n\n  if (typeof num.length == 'undefined') {\n    throw num.length + '/' + shift;\n  }\n\n  const _num = function() {\n    let offset = 0;\n    while (offset < num.length && num[offset] == 0) {\n      offset += 1;\n    }\n    const _num = new Array(num.length - offset + shift);\n    for (let i = 0; i < num.length - offset; i += 1) {\n      _num[i] = num[i + offset];\n    }\n    return _num;\n  }();\n\n  const _this = {};\n\n  _this.getAt = function(index) {\n    return _num[index];\n  };\n\n  _this.getLength = function() {\n    return _num.length;\n  };\n\n  _this.multiply = function(e) {\n\n    const num = new Array(_this.getLength() + e.getLength() - 1);\n\n    for (let i = 0; i < _this.getLength(); i += 1) {\n      for (let j = 0; j < e.getLength(); j += 1) {\n        num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n      }\n    }\n\n    return qrPolynomial(num, 0);\n  };\n\n  _this.mod = function(e) {\n\n    if (_this.getLength() - e.getLength() < 0) {\n      return _this;\n    }\n\n    const ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n    const num = new Array(_this.getLength() );\n    for (let i = 0; i < _this.getLength(); i += 1) {\n      num[i] = _this.getAt(i);\n    }\n\n    for (let i = 0; i < e.getLength(); i += 1) {\n      num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n    }\n\n    // recursive call\n    return qrPolynomial(num, 0).mod(e);\n  };\n\n  return _this;\n};\n\n//---------------------------------------------------------------------\n// QRRSBlock\n//---------------------------------------------------------------------\n\nconst QRRSBlock = function() {\n\n  const RS_BLOCK_TABLE = [\n\n    // L\n    // M\n    // Q\n    // H\n\n    // 1\n    [1, 26, 19],\n    [1, 26, 16],\n    [1, 26, 13],\n    [1, 26, 9],\n\n    // 2\n    [1, 44, 34],\n    [1, 44, 28],\n    [1, 44, 22],\n    [1, 44, 16],\n\n    // 3\n    [1, 70, 55],\n    [1, 70, 44],\n    [2, 35, 17],\n    [2, 35, 13],\n\n    // 4\n    [1, 100, 80],\n    [2, 50, 32],\n    [2, 50, 24],\n    [4, 25, 9],\n\n    // 5\n    [1, 134, 108],\n    [2, 67, 43],\n    [2, 33, 15, 2, 34, 16],\n    [2, 33, 11, 2, 34, 12],\n\n    // 6\n    [2, 86, 68],\n    [4, 43, 27],\n    [4, 43, 19],\n    [4, 43, 15],\n\n    // 7\n    [2, 98, 78],\n    [4, 49, 31],\n    [2, 32, 14, 4, 33, 15],\n    [4, 39, 13, 1, 40, 14],\n\n    // 8\n    [2, 121, 97],\n    [2, 60, 38, 2, 61, 39],\n    [4, 40, 18, 2, 41, 19],\n    [4, 40, 14, 2, 41, 15],\n\n    // 9\n    [2, 146, 116],\n    [3, 58, 36, 2, 59, 37],\n    [4, 36, 16, 4, 37, 17],\n    [4, 36, 12, 4, 37, 13],\n\n    // 10\n    [2, 86, 68, 2, 87, 69],\n    [4, 69, 43, 1, 70, 44],\n    [6, 43, 19, 2, 44, 20],\n    [6, 43, 15, 2, 44, 16],\n\n    // 11\n    [4, 101, 81],\n    [1, 80, 50, 4, 81, 51],\n    [4, 50, 22, 4, 51, 23],\n    [3, 36, 12, 8, 37, 13],\n\n    // 12\n    [2, 116, 92, 2, 117, 93],\n    [6, 58, 36, 2, 59, 37],\n    [4, 46, 20, 6, 47, 21],\n    [7, 42, 14, 4, 43, 15],\n\n    // 13\n    [4, 133, 107],\n    [8, 59, 37, 1, 60, 38],\n    [8, 44, 20, 4, 45, 21],\n    [12, 33, 11, 4, 34, 12],\n\n    // 14\n    [3, 145, 115, 1, 146, 116],\n    [4, 64, 40, 5, 65, 41],\n    [11, 36, 16, 5, 37, 17],\n    [11, 36, 12, 5, 37, 13],\n\n    // 15\n    [5, 109, 87, 1, 110, 88],\n    [5, 65, 41, 5, 66, 42],\n    [5, 54, 24, 7, 55, 25],\n    [11, 36, 12, 7, 37, 13],\n\n    // 16\n    [5, 122, 98, 1, 123, 99],\n    [7, 73, 45, 3, 74, 46],\n    [15, 43, 19, 2, 44, 20],\n    [3, 45, 15, 13, 46, 16],\n\n    // 17\n    [1, 135, 107, 5, 136, 108],\n    [10, 74, 46, 1, 75, 47],\n    [1, 50, 22, 15, 51, 23],\n    [2, 42, 14, 17, 43, 15],\n\n    // 18\n    [5, 150, 120, 1, 151, 121],\n    [9, 69, 43, 4, 70, 44],\n    [17, 50, 22, 1, 51, 23],\n    [2, 42, 14, 19, 43, 15],\n\n    // 19\n    [3, 141, 113, 4, 142, 114],\n    [3, 70, 44, 11, 71, 45],\n    [17, 47, 21, 4, 48, 22],\n    [9, 39, 13, 16, 40, 14],\n\n    // 20\n    [3, 135, 107, 5, 136, 108],\n    [3, 67, 41, 13, 68, 42],\n    [15, 54, 24, 5, 55, 25],\n    [15, 43, 15, 10, 44, 16],\n\n    // 21\n    [4, 144, 116, 4, 145, 117],\n    [17, 68, 42],\n    [17, 50, 22, 6, 51, 23],\n    [19, 46, 16, 6, 47, 17],\n\n    // 22\n    [2, 139, 111, 7, 140, 112],\n    [17, 74, 46],\n    [7, 54, 24, 16, 55, 25],\n    [34, 37, 13],\n\n    // 23\n    [4, 151, 121, 5, 152, 122],\n    [4, 75, 47, 14, 76, 48],\n    [11, 54, 24, 14, 55, 25],\n    [16, 45, 15, 14, 46, 16],\n\n    // 24\n    [6, 147, 117, 4, 148, 118],\n    [6, 73, 45, 14, 74, 46],\n    [11, 54, 24, 16, 55, 25],\n    [30, 46, 16, 2, 47, 17],\n\n    // 25\n    [8, 132, 106, 4, 133, 107],\n    [8, 75, 47, 13, 76, 48],\n    [7, 54, 24, 22, 55, 25],\n    [22, 45, 15, 13, 46, 16],\n\n    // 26\n    [10, 142, 114, 2, 143, 115],\n    [19, 74, 46, 4, 75, 47],\n    [28, 50, 22, 6, 51, 23],\n    [33, 46, 16, 4, 47, 17],\n\n    // 27\n    [8, 152, 122, 4, 153, 123],\n    [22, 73, 45, 3, 74, 46],\n    [8, 53, 23, 26, 54, 24],\n    [12, 45, 15, 28, 46, 16],\n\n    // 28\n    [3, 147, 117, 10, 148, 118],\n    [3, 73, 45, 23, 74, 46],\n    [4, 54, 24, 31, 55, 25],\n    [11, 45, 15, 31, 46, 16],\n\n    // 29\n    [7, 146, 116, 7, 147, 117],\n    [21, 73, 45, 7, 74, 46],\n    [1, 53, 23, 37, 54, 24],\n    [19, 45, 15, 26, 46, 16],\n\n    // 30\n    [5, 145, 115, 10, 146, 116],\n    [19, 75, 47, 10, 76, 48],\n    [15, 54, 24, 25, 55, 25],\n    [23, 45, 15, 25, 46, 16],\n\n    // 31\n    [13, 145, 115, 3, 146, 116],\n    [2, 74, 46, 29, 75, 47],\n    [42, 54, 24, 1, 55, 25],\n    [23, 45, 15, 28, 46, 16],\n\n    // 32\n    [17, 145, 115],\n    [10, 74, 46, 23, 75, 47],\n    [10, 54, 24, 35, 55, 25],\n    [19, 45, 15, 35, 46, 16],\n\n    // 33\n    [17, 145, 115, 1, 146, 116],\n    [14, 74, 46, 21, 75, 47],\n    [29, 54, 24, 19, 55, 25],\n    [11, 45, 15, 46, 46, 16],\n\n    // 34\n    [13, 145, 115, 6, 146, 116],\n    [14, 74, 46, 23, 75, 47],\n    [44, 54, 24, 7, 55, 25],\n    [59, 46, 16, 1, 47, 17],\n\n    // 35\n    [12, 151, 121, 7, 152, 122],\n    [12, 75, 47, 26, 76, 48],\n    [39, 54, 24, 14, 55, 25],\n    [22, 45, 15, 41, 46, 16],\n\n    // 36\n    [6, 151, 121, 14, 152, 122],\n    [6, 75, 47, 34, 76, 48],\n    [46, 54, 24, 10, 55, 25],\n    [2, 45, 15, 64, 46, 16],\n\n    // 37\n    [17, 152, 122, 4, 153, 123],\n    [29, 74, 46, 14, 75, 47],\n    [49, 54, 24, 10, 55, 25],\n    [24, 45, 15, 46, 46, 16],\n\n    // 38\n    [4, 152, 122, 18, 153, 123],\n    [13, 74, 46, 32, 75, 47],\n    [48, 54, 24, 14, 55, 25],\n    [42, 45, 15, 32, 46, 16],\n\n    // 39\n    [20, 147, 117, 4, 148, 118],\n    [40, 75, 47, 7, 76, 48],\n    [43, 54, 24, 22, 55, 25],\n    [10, 45, 15, 67, 46, 16],\n\n    // 40\n    [19, 148, 118, 6, 149, 119],\n    [18, 75, 47, 31, 76, 48],\n    [34, 54, 24, 34, 55, 25],\n    [20, 45, 15, 61, 46, 16]\n  ];\n\n  const qrRSBlock = function(totalCount, dataCount) {\n    const _this = {};\n    _this.totalCount = totalCount;\n    _this.dataCount = dataCount;\n    return _this;\n  };\n\n  const _this = {};\n\n  const getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n    switch(errorCorrectionLevel) {\n    case QRErrorCorrectionLevel.L :\n      return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n    case QRErrorCorrectionLevel.M :\n      return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n    case QRErrorCorrectionLevel.Q :\n      return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n    case QRErrorCorrectionLevel.H :\n      return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n    default :\n      return undefined;\n    }\n  };\n\n  _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n    const rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n    if (typeof rsBlock == 'undefined') {\n      throw 'bad rs block @ typeNumber:' + typeNumber +\n          '/errorCorrectionLevel:' + errorCorrectionLevel;\n    }\n\n    const length = rsBlock.length / 3;\n\n    const list = [];\n\n    for (let i = 0; i < length; i += 1) {\n\n      const count = rsBlock[i * 3 + 0];\n      const totalCount = rsBlock[i * 3 + 1];\n      const dataCount = rsBlock[i * 3 + 2];\n\n      for (let j = 0; j < count; j += 1) {\n        list.push(qrRSBlock(totalCount, dataCount) );\n      }\n    }\n\n    return list;\n  };\n\n  return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrBitBuffer\n//---------------------------------------------------------------------\n\nconst qrBitBuffer = function() {\n\n  const _buffer = [];\n  let _length = 0;\n\n  const _this = {};\n\n  _this.getBuffer = function() {\n    return _buffer;\n  };\n\n  _this.getAt = function(index) {\n    const bufIndex = Math.floor(index / 8);\n    return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n  };\n\n  _this.put = function(num, length) {\n    for (let i = 0; i < length; i += 1) {\n      _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n    }\n  };\n\n  _this.getLengthInBits = function() {\n    return _length;\n  };\n\n  _this.putBit = function(bit) {\n\n    const bufIndex = Math.floor(_length / 8);\n    if (_buffer.length <= bufIndex) {\n      _buffer.push(0);\n    }\n\n    if (bit) {\n      _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n    }\n\n    _length += 1;\n  };\n\n  return _this;\n};\n\n//---------------------------------------------------------------------\n// qrNumber\n//---------------------------------------------------------------------\n\nconst qrNumber = function(data) {\n\n  const _mode = QRMode.MODE_NUMBER;\n  const _data = data;\n\n  const _this = {};\n\n  _this.getMode = function() {\n    return _mode;\n  };\n\n  _this.getLength = function(buffer) {\n    return _data.length;\n  };\n\n  _this.write = function(buffer) {\n\n    const data = _data;\n\n    let i = 0;\n\n    while (i + 2 < data.length) {\n      buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n      i += 3;\n    }\n\n    if (i < data.length) {\n      if (data.length - i == 1) {\n        buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n      } else if (data.length - i == 2) {\n        buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n      }\n    }\n  };\n\n  const strToNum = function(s) {\n    let num = 0;\n    for (let i = 0; i < s.length; i += 1) {\n      num = num * 10 + chatToNum(s.charAt(i) );\n    }\n    return num;\n  };\n\n  const chatToNum = function(c) {\n    if ('0' <= c && c <= '9') {\n      return c.charCodeAt(0) - '0'.charCodeAt(0);\n    }\n    throw 'illegal char :' + c;\n  };\n\n  return _this;\n};\n\n//---------------------------------------------------------------------\n// qrAlphaNum\n//---------------------------------------------------------------------\n\nconst qrAlphaNum = function(data) {\n\n  const _mode = QRMode.MODE_ALPHA_NUM;\n  const _data = data;\n\n  const _this = {};\n\n  _this.getMode = function() {\n    return _mode;\n  };\n\n  _this.getLength = function(buffer) {\n    return _data.length;\n  };\n\n  _this.write = function(buffer) {\n\n    const s = _data;\n\n    let i = 0;\n\n    while (i + 1 < s.length) {\n      buffer.put(\n        getCode(s.charAt(i) ) * 45 +\n        getCode(s.charAt(i + 1) ), 11);\n      i += 2;\n    }\n\n    if (i < s.length) {\n      buffer.put(getCode(s.charAt(i) ), 6);\n    }\n  };\n\n  const getCode = function(c) {\n\n    if ('0' <= c && c <= '9') {\n      return c.charCodeAt(0) - '0'.charCodeAt(0);\n    } else if ('A' <= c && c <= 'Z') {\n      return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n    } else {\n      switch (c) {\n      case '\\u0020' : return 36;\n      case '$' : return 37;\n      case '%' : return 38;\n      case '*' : return 39;\n      case '+' : return 40;\n      case '-' : return 41;\n      case '.' : return 42;\n      case '/' : return 43;\n      case ':' : return 44;\n      default :\n        throw 'illegal char :' + c;\n      }\n    }\n  };\n\n  return _this;\n};\n\n//---------------------------------------------------------------------\n// qr8BitByte\n//---------------------------------------------------------------------\n\nconst qr8BitByte = function(data) {\n\n  const _mode = QRMode.MODE_8BIT_BYTE;\n  const _data = data;\n  const _bytes = qrcode.stringToBytes(data);\n\n  const _this = {};\n\n  _this.getMode = function() {\n    return _mode;\n  };\n\n  _this.getLength = function(buffer) {\n    return _bytes.length;\n  };\n\n  _this.write = function(buffer) {\n    for (let i = 0; i < _bytes.length; i += 1) {\n      buffer.put(_bytes[i], 8);\n    }\n  };\n\n  return _this;\n};\n\n//---------------------------------------------------------------------\n// qrKanji\n//---------------------------------------------------------------------\n\nconst qrKanji = function(data) {\n\n  const _mode = QRMode.MODE_KANJI;\n  const _data = data;\n\n  const stringToBytes = qrcode.stringToBytes;\n  !function(c, code) {\n    // self test for sjis support.\n    const test = stringToBytes(c);\n    if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n      throw 'sjis not supported.';\n    }\n  }('\\u53cb', 0x9746);\n\n  const _bytes = stringToBytes(data);\n\n  const _this = {};\n\n  _this.getMode = function() {\n    return _mode;\n  };\n\n  _this.getLength = function(buffer) {\n    return ~~(_bytes.length / 2);\n  };\n\n  _this.write = function(buffer) {\n\n    const data = _bytes;\n\n    let i = 0;\n\n    while (i + 1 < data.length) {\n\n      let c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n      if (0x8140 <= c && c <= 0x9FFC) {\n        c -= 0x8140;\n      } else if (0xE040 <= c && c <= 0xEBBF) {\n        c -= 0xC140;\n      } else {\n        throw 'illegal char at ' + (i + 1) + '/' + c;\n      }\n\n      c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n      buffer.put(c, 13);\n\n      i += 2;\n    }\n\n    if (i < data.length) {\n      throw 'illegal char at ' + (i + 1);\n    }\n  };\n\n  return _this;\n};\n\n//=====================================================================\n// GIF Support etc.\n//\n\n//---------------------------------------------------------------------\n// byteArrayOutputStream\n//---------------------------------------------------------------------\n\nconst byteArrayOutputStream = function() {\n\n  const _bytes = [];\n\n  const _this = {};\n\n  _this.writeByte = function(b) {\n    _bytes.push(b & 0xff);\n  };\n\n  _this.writeShort = function(i) {\n    _this.writeByte(i);\n    _this.writeByte(i >>> 8);\n  };\n\n  _this.writeBytes = function(b, off, len) {\n    off = off || 0;\n    len = len || b.length;\n    for (let i = 0; i < len; i += 1) {\n      _this.writeByte(b[i + off]);\n    }\n  };\n\n  _this.writeString = function(s) {\n    for (let i = 0; i < s.length; i += 1) {\n      _this.writeByte(s.charCodeAt(i) );\n    }\n  };\n\n  _this.toByteArray = function() {\n    return _bytes;\n  };\n\n  _this.toString = function() {\n    let s = '';\n    s += '[';\n    for (let i = 0; i < _bytes.length; i += 1) {\n      if (i > 0) {\n        s += ',';\n      }\n      s += _bytes[i];\n    }\n    s += ']';\n    return s;\n  };\n\n  return _this;\n};\n\n//---------------------------------------------------------------------\n// base64EncodeOutputStream\n//---------------------------------------------------------------------\n\nconst base64EncodeOutputStream = function() {\n\n  let _buffer = 0;\n  let _buflen = 0;\n  let _length = 0;\n  let _base64 = '';\n\n  const _this = {};\n\n  const writeEncoded = function(b) {\n    _base64 += String.fromCharCode(encode(b & 0x3f) );\n  };\n\n  const encode = function(n) {\n    if (n < 0) {\n      throw 'n:' + n;\n    } else if (n < 26) {\n      return 0x41 + n;\n    } else if (n < 52) {\n      return 0x61 + (n - 26);\n    } else if (n < 62) {\n      return 0x30 + (n - 52);\n    } else if (n == 62) {\n      return 0x2b;\n    } else if (n == 63) {\n      return 0x2f;\n    } else {\n      throw 'n:' + n;\n    }\n  };\n\n  _this.writeByte = function(n) {\n\n    _buffer = (_buffer << 8) | (n & 0xff);\n    _buflen += 8;\n    _length += 1;\n\n    while (_buflen >= 6) {\n      writeEncoded(_buffer >>> (_buflen - 6) );\n      _buflen -= 6;\n    }\n  };\n\n  _this.flush = function() {\n\n    if (_buflen > 0) {\n      writeEncoded(_buffer << (6 - _buflen) );\n      _buffer = 0;\n      _buflen = 0;\n    }\n\n    if (_length % 3 != 0) {\n      // padding\n      const padlen = 3 - _length % 3;\n      for (let i = 0; i < padlen; i += 1) {\n        _base64 += '=';\n      }\n    }\n  };\n\n  _this.toString = function() {\n    return _base64;\n  };\n\n  return _this;\n};\n\n//---------------------------------------------------------------------\n// base64DecodeInputStream\n//---------------------------------------------------------------------\n\nconst base64DecodeInputStream = function(str) {\n\n  const _str = str;\n  let _pos = 0;\n  let _buffer = 0;\n  let _buflen = 0;\n\n  const _this = {};\n\n  _this.read = function() {\n\n    while (_buflen < 8) {\n\n      if (_pos >= _str.length) {\n        if (_buflen == 0) {\n          return -1;\n        }\n        throw 'unexpected end of file./' + _buflen;\n      }\n\n      const c = _str.charAt(_pos);\n      _pos += 1;\n\n      if (c == '=') {\n        _buflen = 0;\n        return -1;\n      } else if (c.match(/^\\s$/) ) {\n        // ignore if whitespace.\n        continue;\n      }\n\n      _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n      _buflen += 6;\n    }\n\n    const n = (_buffer >>> (_buflen - 8) ) & 0xff;\n    _buflen -= 8;\n    return n;\n  };\n\n  const decode = function(c) {\n    if (0x41 <= c && c <= 0x5a) {\n      return c - 0x41;\n    } else if (0x61 <= c && c <= 0x7a) {\n      return c - 0x61 + 26;\n    } else if (0x30 <= c && c <= 0x39) {\n      return c - 0x30 + 52;\n    } else if (c == 0x2b) {\n      return 62;\n    } else if (c == 0x2f) {\n      return 63;\n    } else {\n      throw 'c:' + c;\n    }\n  };\n\n  return _this;\n};\n\n//---------------------------------------------------------------------\n// gifImage (B/W)\n//---------------------------------------------------------------------\n\nconst gifImage = function(width, height) {\n\n  const _width = width;\n  const _height = height;\n  const _data = new Array(width * height);\n\n  const _this = {};\n\n  _this.setPixel = function(x, y, pixel) {\n    _data[y * _width + x] = pixel;\n  };\n\n  _this.write = function(out) {\n\n    //---------------------------------\n    // GIF Signature\n\n    out.writeString('GIF87a');\n\n    //---------------------------------\n    // Screen Descriptor\n\n    out.writeShort(_width);\n    out.writeShort(_height);\n\n    out.writeByte(0x80); // 2bit\n    out.writeByte(0);\n    out.writeByte(0);\n\n    //---------------------------------\n    // Global Color Map\n\n    // black\n    out.writeByte(0x00);\n    out.writeByte(0x00);\n    out.writeByte(0x00);\n\n    // white\n    out.writeByte(0xff);\n    out.writeByte(0xff);\n    out.writeByte(0xff);\n\n    //---------------------------------\n    // Image Descriptor\n\n    out.writeString(',');\n    out.writeShort(0);\n    out.writeShort(0);\n    out.writeShort(_width);\n    out.writeShort(_height);\n    out.writeByte(0);\n\n    //---------------------------------\n    // Local Color Map\n\n    //---------------------------------\n    // Raster Data\n\n    const lzwMinCodeSize = 2;\n    const raster = getLZWRaster(lzwMinCodeSize);\n\n    out.writeByte(lzwMinCodeSize);\n\n    let offset = 0;\n\n    while (raster.length - offset > 255) {\n      out.writeByte(255);\n      out.writeBytes(raster, offset, 255);\n      offset += 255;\n    }\n\n    out.writeByte(raster.length - offset);\n    out.writeBytes(raster, offset, raster.length - offset);\n    out.writeByte(0x00);\n\n    //---------------------------------\n    // GIF Terminator\n    out.writeString(';');\n  };\n\n  const bitOutputStream = function(out) {\n\n    const _out = out;\n    let _bitLength = 0;\n    let _bitBuffer = 0;\n\n    const _this = {};\n\n    _this.write = function(data, length) {\n\n      if ( (data >>> length) != 0) {\n        throw 'length over';\n      }\n\n      while (_bitLength + length >= 8) {\n        _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n        length -= (8 - _bitLength);\n        data >>>= (8 - _bitLength);\n        _bitBuffer = 0;\n        _bitLength = 0;\n      }\n\n      _bitBuffer = (data << _bitLength) | _bitBuffer;\n      _bitLength = _bitLength + length;\n    };\n\n    _this.flush = function() {\n      if (_bitLength > 0) {\n        _out.writeByte(_bitBuffer);\n      }\n    };\n\n    return _this;\n  };\n\n  const getLZWRaster = function(lzwMinCodeSize) {\n\n    const clearCode = 1 << lzwMinCodeSize;\n    const endCode = (1 << lzwMinCodeSize) + 1;\n    let bitLength = lzwMinCodeSize + 1;\n\n    // Setup LZWTable\n    const table = lzwTable();\n\n    for (let i = 0; i < clearCode; i += 1) {\n      table.add(String.fromCharCode(i) );\n    }\n    table.add(String.fromCharCode(clearCode) );\n    table.add(String.fromCharCode(endCode) );\n\n    const byteOut = byteArrayOutputStream();\n    const bitOut = bitOutputStream(byteOut);\n\n    // clear code\n    bitOut.write(clearCode, bitLength);\n\n    let dataIndex = 0;\n\n    let s = String.fromCharCode(_data[dataIndex]);\n    dataIndex += 1;\n\n    while (dataIndex < _data.length) {\n\n      const c = String.fromCharCode(_data[dataIndex]);\n      dataIndex += 1;\n\n      if (table.contains(s + c) ) {\n\n        s = s + c;\n\n      } else {\n\n        bitOut.write(table.indexOf(s), bitLength);\n\n        if (table.size() < 0xfff) {\n\n          if (table.size() == (1 << bitLength) ) {\n            bitLength += 1;\n          }\n\n          table.add(s + c);\n        }\n\n        s = c;\n      }\n    }\n\n    bitOut.write(table.indexOf(s), bitLength);\n\n    // end code\n    bitOut.write(endCode, bitLength);\n\n    bitOut.flush();\n\n    return byteOut.toByteArray();\n  };\n\n  const lzwTable = function() {\n\n    const _map = {};\n    let _size = 0;\n\n    const _this = {};\n\n    _this.add = function(key) {\n      if (_this.contains(key) ) {\n        throw 'dup key:' + key;\n      }\n      _map[key] = _size;\n      _size += 1;\n    };\n\n    _this.size = function() {\n      return _size;\n    };\n\n    _this.indexOf = function(key) {\n      return _map[key];\n    };\n\n    _this.contains = function(key) {\n      return typeof _map[key] != 'undefined';\n    };\n\n    return _this;\n  };\n\n  return _this;\n};\n\nconst createDataURL = function(width, height, getPixel) {\n  const gif = gifImage(width, height);\n  for (let y = 0; y < height; y += 1) {\n    for (let x = 0; x < width; x += 1) {\n      gif.setPixel(x, y, getPixel(x, y) );\n    }\n  }\n\n  const b = byteArrayOutputStream();\n  gif.write(b);\n\n  const base64 = base64EncodeOutputStream();\n  const bytes = b.toByteArray();\n  for (let i = 0; i < bytes.length; i += 1) {\n    base64.writeByte(bytes[i]);\n  }\n  base64.flush();\n\n  return 'data:image/gif;base64,' + base64;\n};\n\nexport default qrcode;\n\nexport const stringToBytes = qrcode.stringToBytes;\n","/**\n *  Props equality check\n */\nexport function deepEqual(a, b, visited = new WeakMap()) {\n    // same reference or same primitive value\n    if (Object.is(a, b))\n        return true;\n    // different types -> cannot be equal\n    if (typeof a !== typeof b)\n        return false;\n    // null / undefined check\n    if (a == null || b == null)\n        return false;\n    // functions compare only by reference\n    if (typeof a === 'function' || typeof b === 'function') {\n        return a === b;\n    }\n    // avoid infinite loops on circular references\n    if (typeof a === 'object' && typeof b === 'object') {\n        if (visited.has(a) && visited.get(a) === b) {\n            return true;\n        }\n        visited.set(a, b);\n    }\n    // date\n    if (a instanceof Date && b instanceof Date) {\n        return a.getTime() === b.getTime();\n    }\n    // arrays\n    if (Array.isArray(a) && Array.isArray(b)) {\n        if (a.length !== b.length)\n            return false;\n        for (let i = 0; i < a.length; i++) {\n            if (!deepEqual(a[i], b[i], visited))\n                return false;\n        }\n        return true;\n    }\n    // sets\n    if (a instanceof Set && b instanceof Set) {\n        if (a.size !== b.size)\n            return false;\n        for (const val of a) {\n            if (![...b].some(bVal => deepEqual(val, bVal, visited)))\n                return false;\n        }\n        return true;\n    }\n    // maps\n    if (a instanceof Map && b instanceof Map) {\n        if (a.size !== b.size)\n            return false;\n        for (const [key, val] of a) {\n            if (!b.has(key) || !deepEqual(val, b.get(key), visited))\n                return false;\n        }\n        return true;\n    }\n    // plain objects\n    if (Object.getPrototypeOf(a) === Object.prototype ||\n        Object.getPrototypeOf(a) === null) {\n        const keysA = Object.keys(a);\n        const keysB = Object.keys(b);\n        if (keysA.length !== keysB.length)\n            return false;\n        for (const key of keysA) {\n            if (!keysB.includes(key))\n                return false;\n            if (!deepEqual(a[key], b[key], visited))\n                return false;\n        }\n        return true;\n    }\n    // remaining objects with custom prototypes (e.g., DOMPointInit, CSSProperties)\n    try {\n        return JSON.stringify(a) === JSON.stringify(b);\n    }\n    catch {\n        return false;\n    }\n}\n/**\n *  FileType to MimeType mapping\n */\nexport function mimeFor(fileType = 'png') {\n    switch (fileType) {\n        case 'jpg':\n            return 'image/jpeg';\n        case 'webp':\n            return 'image/webp';\n        case 'png':\n        default:\n            return 'image/png';\n    }\n}\n/**\n *  Create an <a download> and click it\n */\nexport function triggerDownload(url, fileName) {\n    const link = document.createElement('a');\n    link.download = fileName;\n    link.href = url;\n    document.body.appendChild(link); // Safari in some contexts requires the element to be in the DOM.\n    link.click();\n    link.remove();\n}\n","import qrGenerator from 'qrcode-generator';\nimport { mimeFor, triggerDownload } from './utils';\nfunction utf16to8(str) {\n    let out = '', i, c;\n    const len = str.length;\n    for (i = 0; i < len; i++) {\n        c = str.charCodeAt(i);\n        if ((c >= 0x0001) && (c <= 0x007F)) {\n            out += str.charAt(i);\n        }\n        else if (c > 0x07FF) {\n            out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));\n            out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));\n            out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\n        }\n        else {\n            out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));\n            out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));\n        }\n    }\n    return out;\n}\n/**\n * Draw a rounded square in the canvas\n */\nfunction drawRoundedSquare(lineWidth, x, y, size, color, radii, fill, ctx) {\n    ctx.lineWidth = lineWidth;\n    ctx.fillStyle = color;\n    ctx.strokeStyle = color;\n    // Adjust coordinates so that the outside of the stroke is aligned to the edges\n    y += lineWidth / 2;\n    x += lineWidth / 2;\n    size -= lineWidth;\n    if (!Array.isArray(radii)) {\n        radii = [radii, radii, radii, radii];\n    }\n    // Radius should not be greater than half the size or less than zero\n    radii = radii.map((r) => {\n        r = Math.min(r, size / 2);\n        return (r < 0) ? 0 : r;\n    });\n    const rTopLeft = radii[0] || 0;\n    const rTopRight = radii[1] || 0;\n    const rBottomRight = radii[2] || 0;\n    const rBottomLeft = radii[3] || 0;\n    ctx.beginPath();\n    ctx.moveTo(x + rTopLeft, y);\n    ctx.lineTo(x + size - rTopRight, y);\n    if (rTopRight)\n        ctx.quadraticCurveTo(x + size, y, x + size, y + rTopRight);\n    ctx.lineTo(x + size, y + size - rBottomRight);\n    if (rBottomRight)\n        ctx.quadraticCurveTo(x + size, y + size, x + size - rBottomRight, y + size);\n    ctx.lineTo(x + rBottomLeft, y + size);\n    if (rBottomLeft)\n        ctx.quadraticCurveTo(x, y + size, x, y + size - rBottomLeft);\n    ctx.lineTo(x, y + rTopLeft);\n    if (rTopLeft)\n        ctx.quadraticCurveTo(x, y, x + rTopLeft, y);\n    ctx.closePath();\n    ctx.stroke();\n    if (fill) {\n        ctx.fill();\n    }\n}\n/**\n * Draw a single positional pattern eye.\n */\nfunction drawPositioningPattern(ctx, cellSize, offset, row, col, color, radii = [0, 0, 0, 0]) {\n    const lineWidth = Math.ceil(cellSize);\n    let radiiOuter;\n    let radiiInner;\n    if (typeof radii !== 'number' && !Array.isArray(radii)) {\n        radiiOuter = radii.outer || 0;\n        radiiInner = radii.inner || 0;\n    }\n    else {\n        radiiOuter = radii;\n        radiiInner = radiiOuter;\n    }\n    let colorOuter;\n    let colorInner;\n    if (typeof color !== 'string') {\n        colorOuter = color.outer;\n        colorInner = color.inner;\n    }\n    else {\n        colorOuter = color;\n        colorInner = color;\n    }\n    let y = (row * cellSize) + offset;\n    let x = (col * cellSize) + offset;\n    let size = cellSize * 7;\n    // Outer box\n    drawRoundedSquare(lineWidth, x, y, size, colorOuter, radiiOuter, false, ctx);\n    // Inner box\n    size = cellSize * 3;\n    y += cellSize * 2;\n    x += cellSize * 2;\n    drawRoundedSquare(lineWidth, x, y, size, colorInner, radiiInner, true, ctx);\n}\n;\n/**\n * Is this dot inside a positional pattern zone.\n */\nfunction isInPositioninZone(row, col, zones) {\n    return zones.some((zone) => (row >= zone.row && row <= zone.row + 7 &&\n        col >= zone.col && col <= zone.col + 7));\n}\n/**\n * Checks whether the coordinate is behind the logo and needs to be removed. true if the coordinate is behind the logo and needs to be removed.\n */\nfunction removeCoordinateBehindLogo(removeQrCodeBehindLogo, row, col, dWidthLogo, dHeightLogo, dxLogo, dyLogo, cellSize, offset, logoImage, logoPadding = 0, logoPaddingStyle = 'square') {\n    if (!removeQrCodeBehindLogo || !logoImage) {\n        return false;\n    }\n    const paddingInCells = Math.ceil(logoPadding / cellSize);\n    const snappedPadding = paddingInCells * cellSize;\n    const absolute_dxLogo = dxLogo + offset;\n    const absolute_dyLogo = dyLogo + offset;\n    const cellLeft = Math.round(col * cellSize) + offset;\n    const cellTop = Math.round(row * cellSize) + offset;\n    const w = (Math.ceil((col + 1) * cellSize) - Math.floor(col * cellSize));\n    const h = (Math.ceil((row + 1) * cellSize) - Math.floor(row * cellSize));\n    const cellRight = cellLeft + w;\n    const cellBottom = cellTop + h;\n    if (logoPaddingStyle === 'square') {\n        const logoLeft = absolute_dxLogo - snappedPadding;\n        const logoRight = absolute_dxLogo + dWidthLogo + snappedPadding;\n        const logoTop = absolute_dyLogo - snappedPadding;\n        const logoBottom = absolute_dyLogo + dHeightLogo + snappedPadding;\n        const overlapX = cellLeft < logoRight && cellRight > logoLeft;\n        const overlapY = cellTop < logoBottom && cellBottom > logoTop;\n        return overlapX && overlapY;\n    }\n    if (logoPaddingStyle === 'circle') {\n        const logoCenterX = absolute_dxLogo + dWidthLogo / 2;\n        const logoCenterY = absolute_dyLogo + dHeightLogo / 2;\n        const circleRadius = (Math.max(dWidthLogo, dHeightLogo) / 2) + snappedPadding;\n        const closestX = Math.max(cellLeft, Math.min(logoCenterX, cellRight));\n        const closestY = Math.max(cellTop, Math.min(logoCenterY, cellBottom));\n        const distanceX = logoCenterX - closestX;\n        const distanceY = logoCenterY - closestY;\n        const distanceSquared = (distanceX * distanceX) + (distanceY * distanceY);\n        return distanceSquared < (circleRadius * circleRadius);\n    }\n    return false;\n}\n/**\n *  Load an HTMLImageElement as a Promise so we can await it\n */\nfunction loadImage(src, enableCORS) {\n    return new Promise((resolve, reject) => {\n        const image = new Image();\n        if (enableCORS) {\n            image.crossOrigin = 'Anonymous';\n        }\n        image.onload = (event) => resolve({ image, event });\n        image.onerror = () => reject(new Error(`Failed to load logo image: ${src}`));\n        image.src = src;\n    });\n}\nexport const DEFAULT_PROPS = {\n    value: 'https://reactjs.org/',\n    ecLevel: 'M',\n    enableCORS: false,\n    size: 150,\n    quietZone: 10,\n    bgColor: '#FFFFFF',\n    fgColor: '#000000',\n    logoOpacity: 1,\n    qrStyle: 'squares',\n    eyeRadius: [0, 0, 0],\n    logoPaddingStyle: 'square',\n    logoPaddingRadius: 0,\n    removeQrCodeBehindLogo: false,\n};\n/**\n *  Render a QR code into a canvas.\n\n *  - If `canvas` is provided, draws into it. Otherwise creates a new offscreen canvas.\n *  - Resolves AFTER the logo (if any) has been loaded and drawn, so the returned canvas is always in its final state.\n *\n *   Browser-only: uses `document`, `Image`, and `window.devicePixelRatio`.\n */\nexport async function renderQRCodeToCanvas(canvas, opts) {\n    if (typeof document === 'undefined') {\n        throw new Error('renderQRCodeToCanvas must be called in a browser environment');\n    }\n    const props = { ...DEFAULT_PROPS, ...opts };\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n        throw new Error('Canvas 2D context not available');\n    }\n    // just make sure that these params are passed as numbers\n    const size = +props.size;\n    const quietZone = +props.quietZone;\n    const logoWidth = props.logoWidth ? +props.logoWidth : 0;\n    const logoHeight = props.logoHeight ? +props.logoHeight : 0;\n    const logoPadding = props.logoPadding ? +props.logoPadding : 0;\n    const qrCode = qrGenerator(0, props.ecLevel);\n    qrCode.addData(utf16to8(props.value));\n    qrCode.make();\n    const canvasSize = size + (2 * quietZone);\n    const length = qrCode.getModuleCount();\n    const cellSize = size / length;\n    const scale = props.pixelRatio ?? window.devicePixelRatio ?? 1;\n    const dWidthLogo = logoWidth || size * 0.2;\n    const dHeightLogo = logoHeight || dWidthLogo;\n    const dxLogo = (size - dWidthLogo) / 2;\n    const dyLogo = (size - dHeightLogo) / 2;\n    canvas.height = canvas.width = canvasSize * scale;\n    ctx.setTransform(scale, 0, 0, scale, 0, 0);\n    ctx.fillStyle = props.bgColor;\n    ctx.fillRect(0, 0, canvasSize, canvasSize);\n    const offset = quietZone;\n    const positioningZones = [\n        { row: 0, col: 0 },\n        { row: 0, col: length - 7 },\n        { row: length - 7, col: 0 },\n    ];\n    ctx.strokeStyle = props.fgColor;\n    const shouldSkipCell = (row, col) => isInPositioninZone(row, col, positioningZones) ||\n        removeCoordinateBehindLogo(props.removeQrCodeBehindLogo, row, col, dWidthLogo, dHeightLogo, dxLogo, dyLogo, cellSize, offset, props.logoImage, logoPadding, props.logoPaddingStyle);\n    if (props.qrStyle === 'dots') {\n        ctx.fillStyle = props.fgColor;\n        const radius = cellSize / 2;\n        for (let row = 0; row < length; row++) {\n            for (let col = 0; col < length; col++) {\n                if (qrCode.isDark(row, col) && !shouldSkipCell(row, col)) {\n                    ctx.beginPath();\n                    ctx.arc(Math.round(col * cellSize) + radius + offset, Math.round(row * cellSize) + radius + offset, (radius / 100) * 75, 0, 2 * Math.PI, false);\n                    ctx.closePath();\n                    ctx.fill();\n                }\n            }\n        }\n    }\n    else if (props.qrStyle === 'fluid') {\n        const radius = Math.ceil(cellSize / 2);\n        for (let row = 0; row < length; row++) {\n            for (let col = 0; col < length; col++) {\n                if (qrCode.isDark(row, col) && !shouldSkipCell(row, col)) {\n                    const roundedCorners = [false, false, false, false]; // top-left, top-right, bottom-right, bottom-left\n                    if ((row > 0 && !qrCode.isDark(row - 1, col)) && (col > 0 && !qrCode.isDark(row, col - 1)))\n                        roundedCorners[0] = true;\n                    if ((row > 0 && !qrCode.isDark(row - 1, col)) && (col < length - 1 && !qrCode.isDark(row, col + 1)))\n                        roundedCorners[1] = true;\n                    if ((row < length - 1 && !qrCode.isDark(row + 1, col)) && (col < length - 1 && !qrCode.isDark(row, col + 1)))\n                        roundedCorners[2] = true;\n                    if ((row < length - 1 && !qrCode.isDark(row + 1, col)) && (col > 0 && !qrCode.isDark(row, col - 1)))\n                        roundedCorners[3] = true;\n                    const w = (Math.ceil((col + 1) * cellSize) - Math.floor(col * cellSize));\n                    const h = (Math.ceil((row + 1) * cellSize) - Math.floor(row * cellSize));\n                    ctx.fillStyle = props.fgColor;\n                    ctx.beginPath();\n                    ctx.arc(Math.round(col * cellSize) + radius + offset, Math.round(row * cellSize) + radius + offset, radius, 0, 2 * Math.PI, false);\n                    ctx.closePath();\n                    ctx.fill();\n                    if (!roundedCorners[0])\n                        ctx.fillRect(Math.round(col * cellSize) + offset, Math.round(row * cellSize) + offset, w / 2, h / 2);\n                    if (!roundedCorners[1])\n                        ctx.fillRect(Math.round(col * cellSize) + offset + Math.floor(w / 2), Math.round(row * cellSize) + offset, w / 2, h / 2);\n                    if (!roundedCorners[2])\n                        ctx.fillRect(Math.round(col * cellSize) + offset + Math.floor(w / 2), Math.round(row * cellSize) + offset + Math.floor(h / 2), w / 2, h / 2);\n                    if (!roundedCorners[3])\n                        ctx.fillRect(Math.round(col * cellSize) + offset, Math.round(row * cellSize) + offset + Math.floor(h / 2), w / 2, h / 2);\n                }\n            }\n        }\n    }\n    else {\n        for (let row = 0; row < length; row++) {\n            for (let col = 0; col < length; col++) {\n                if (qrCode.isDark(row, col) && !shouldSkipCell(row, col)) {\n                    ctx.fillStyle = props.fgColor;\n                    const w = Math.ceil((col + 1) * cellSize) - Math.floor(col * cellSize);\n                    const h = Math.ceil((row + 1) * cellSize) - Math.floor(row * cellSize);\n                    ctx.fillRect(Math.round(col * cellSize) + offset, Math.round(row * cellSize) + offset, w, h);\n                }\n            }\n        }\n    }\n    // Draw positioning patterns (eyes)\n    for (let i = 0; i < 3; i++) {\n        const { row, col } = positioningZones[i];\n        let radii = props.eyeRadius;\n        let color;\n        if (Array.isArray(radii)) {\n            radii = radii[i];\n        }\n        if (typeof radii === 'number') {\n            radii = [radii, radii, radii, radii];\n        }\n        if (!opts.eyeColor) {\n            color = props.fgColor;\n        }\n        else if (Array.isArray(opts.eyeColor)) {\n            color = opts.eyeColor[i];\n        }\n        else {\n            color = opts.eyeColor;\n        }\n        drawPositioningPattern(ctx, cellSize, offset, row, col, color, radii);\n    }\n    if (props.logoImage) {\n        try {\n            const { image, event } = await loadImage(props.logoImage, props.enableCORS);\n            ctx.save();\n            if (logoPadding) {\n                ctx.beginPath();\n                ctx.strokeStyle = props.bgColor;\n                ctx.fillStyle = props.bgColor;\n                const dWidthLogoPadding = dWidthLogo + (2 * logoPadding);\n                const dHeightLogoPadding = dHeightLogo + (2 * logoPadding);\n                const dxLogoPadding = dxLogo + offset - logoPadding;\n                const dyLogoPadding = dyLogo + offset - logoPadding;\n                if (props.logoPaddingStyle === 'circle') {\n                    const dxCenterLogoPadding = dxLogoPadding + (dWidthLogoPadding / 2);\n                    const dyCenterLogoPadding = dyLogoPadding + (dHeightLogoPadding / 2);\n                    ctx.ellipse(dxCenterLogoPadding, dyCenterLogoPadding, dWidthLogoPadding / 2, dHeightLogoPadding / 2, 0, 0, 2 * Math.PI);\n                    ctx.stroke();\n                    ctx.fill();\n                }\n                else {\n                    ctx.roundRect(dxLogoPadding, dyLogoPadding, dWidthLogoPadding, dHeightLogoPadding, props.logoPaddingRadius);\n                    ctx.stroke();\n                    ctx.fill();\n                }\n            }\n            ctx.globalAlpha = props.logoOpacity;\n            ctx.drawImage(image, dxLogo + offset, dyLogo + offset, dWidthLogo, dHeightLogo);\n            ctx.restore();\n            if (opts.logoOnLoad) {\n                opts.logoOnLoad(event);\n            }\n        }\n        catch (err) {\n            // do not fail the whole render if the logo can't load\n            console.warn('[react-qrcode-logo] QRCode logo loading failed:', err);\n        }\n    }\n    return canvas;\n}\n// --------------------------\n// Public headless API\n// --------------------------\n/**\n * Build a fully-rendered canvas with the QR code.\n * Defaults to devicePixelRatio = 1 for pixel-perfect export output.\n */\nexport async function generateCanvas(opts) {\n    const canvas = document.createElement('canvas');\n    return renderQRCodeToCanvas(canvas, { ...opts, pixelRatio: opts.pixelRatio ?? 1 });\n}\n/**\n * Return a data URL for the QR code\n */\nexport async function generateDataURL(opts, fileType = 'png') {\n    const canvas = await generateCanvas(opts);\n    return canvas.toDataURL(mimeFor(fileType), 1.0);\n}\n/**\n * Return a Blob for the QR code\n */\nexport async function generateBlob(opts, fileType = 'png') {\n    const canvas = await generateCanvas(opts);\n    return new Promise((resolve, reject) => {\n        canvas.toBlob((blob) => (blob ? resolve(blob) : reject(new Error('toBlob returned null'))), mimeFor(fileType), 1.0);\n    });\n}\n/**\n * Generate and downloads QRCode w specified props\n */\nexport async function downloadQRCode(opts, fileType = 'png', fileName = 'react-qrcode-logo') {\n    const url = await generateDataURL(opts, fileType);\n    triggerDownload(url, fileName);\n}\n","import React from 'react';\nimport { DEFAULT_PROPS, renderQRCodeToCanvas } from './renderer';\nimport { deepEqual, mimeFor, triggerDownload } from './utils';\nexport class QRCode extends React.Component {\n    canvasRef = React.createRef();\n    /**\n     * Download the currently-rendered QR code.\n     * Uses the on-screen canvas (DPR-scaled) — the visible result is identical to what the user sees.\n     */\n    download(fileType, fileName) {\n        if (!this.canvasRef.current)\n            return;\n        const url = this.canvasRef.current.toDataURL(mimeFor(fileType), 1.0);\n        triggerDownload(url, fileName ?? 'react-qrcode-logo');\n    }\n    shouldComponentUpdate(nextProps) {\n        return !deepEqual(this.props, nextProps);\n    }\n    componentDidMount() {\n        this.update();\n    }\n    componentDidUpdate() {\n        this.update();\n    }\n    update() {\n        if (!this.canvasRef.current)\n            return;\n        renderQRCodeToCanvas(this.canvasRef.current, this.props)\n            .catch((err) => {\n            console.error('[react-qrcode-logo] QRCode render failed:', err);\n        });\n    }\n    render() {\n        const size = this.props.size ?? DEFAULT_PROPS.size;\n        const quietZone = this.props.quietZone ?? DEFAULT_PROPS.quietZone;\n        const qrSize = +size + 2 * +quietZone;\n        return (React.createElement(\"canvas\", { id: this.props.id ?? 'react-qrcode-logo', height: qrSize, width: qrSize, style: { height: qrSize + 'px', width: qrSize + 'px', ...this.props.style }, ref: this.canvasRef }));\n    }\n}\nexport default QRCode;\n","import React, { useRef } from 'react';\nimport {\n  CopyInputContainer,\n  Modal,\n  ModalContent,\n  Toast,\n} from './StyledDialogElements';\nimport { QRCode } from 'react-qrcode-logo';\nimport { ModalDialogProps } from '../../types';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { VisuallyHidden } from '@radix-ui/react-visually-hidden';\n\nconst ModalDialog = (props: ModalDialogProps) => {\n  const {\n    visible,\n    content,\n    handleClose,\n    qrStyle,\n    eyeRadius,\n    icon,\n    subtitle,\n    primaryColor,\n    customCSS,\n  } = props;\n\n  const toastRef = useRef<HTMLDivElement>(null);\n\n  const onClickCopy = (event: React.MouseEvent<HTMLElement>) => {\n    event.stopPropagation();\n    navigator.clipboard.writeText(content);\n\n    toastRef.current?.classList.add('show');\n    setTimeout(function () {\n      toastRef.current?.classList.remove('show');\n    }, 3000);\n  };\n\n  return (\n    <Dialog.Root open={visible} onOpenChange={(open) => !open && handleClose()}>\n      <Dialog.Portal>\n        <Dialog.Overlay asChild>\n          <Modal customCSS={customCSS || ''} />\n        </Dialog.Overlay>\n        <Dialog.Content asChild>\n          <ModalContent data-testid=\"modal-content\">\n            <VisuallyHidden>\n              <Dialog.Title>P2P Wallet Connection</Dialog.Title>\n            </VisuallyHidden>\n            <QRCode\n              removeQrCodeBehindLogo={true}\n              logoImage={icon ? icon : undefined}\n              ecLevel=\"H\"\n              eyeRadius={eyeRadius ? eyeRadius : 0}\n              qrStyle={qrStyle ? qrStyle : 'squares'}\n              value={content}\n            />\n            <CopyInputContainer primaryColor={primaryColor || '#0538AF'}>\n              <input\n                type=\"text\"\n                value={content}\n                style={{ textOverflow: 'ellipsis' }}\n                readOnly\n              />\n              <button onClick={onClickCopy}>Copy</button>\n            </CopyInputContainer>\n            <Dialog.Description asChild>\n              <p style={{ maxWidth: 300 }}>\n                {subtitle\n                  ? subtitle\n                  : 'You can utilize a CIP45-compliant mobile wallet, such as Eternl, on your smartphone to establish a connection as a peer-to-peer wallet.'}\n              </p>\n            </Dialog.Description>\n            <Toast ref={toastRef}>P2P identifier copied to clipboard!</Toast>\n          </ModalContent>\n        </Dialog.Content>\n      </Dialog.Portal>\n    </Dialog.Root>\n  );\n};\n\nexport default ModalDialog;\n","export function getMobileOS(): 'iOS' | 'Android' | 'unknown' {\n  if ('userAgentData' in navigator) {\n    const platform = (navigator as any).userAgentData?.platform;\n    if (platform === 'Android') return 'Android';\n  }\n\n  const ua = navigator.userAgent;\n  if (/iPad|iPhone|iPod/.test(ua)) return 'iOS';\n  if (/android/i.test(ua)) return 'Android';\n\n  return 'unknown';\n}\n","import React from 'react';\nimport { ConnectWalletButtonProps } from '../../types';\nimport {\n  Dropdown,\n  Menu,\n  MenuItem,\n  MenuItemIcon,\n  Button,\n  DesktopMenuItem,\n} from './StyledButtonElements';\nimport { useCardano } from '../../hooks';\nimport Color from 'color';\nimport {\n  getWalletIcon,\n  isWalletInstalled,\n  checkIsMobile,\n  estimateAvailableWallets,\n  WalletExtensionNotFoundError,\n  UnavailableWalletVisibility,\n  capitalize,\n  chromeStoreUrl,\n  formatSupportedWallets,\n  mobileWallets,\n  getWalletConfig,\n  generateCip158DeepLink,\n} from '@cardano-foundation/cardano-connect-with-wallet-core';\nimport { useEffect, useState } from 'react';\nimport ModalDialog from '../ModalDialog/ModalDialog';\nimport { IWalletInfo } from '@fabianbormann/cardano-peer-connect/dist/src/types';\nimport { getMobileOS } from '../../common';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\n\nconst ConnectWalletButton = ({\n  label,\n  disabled,\n  message,\n  supportedWallets = [\n    'Flint',\n    'Nami',\n    'Eternl',\n    'Yoroi',\n    'TyphonCip30',\n    'NuFi',\n    'Lace',\n  ],\n  showUnavailableWallets = UnavailableWalletVisibility.SHOW_UNAVAILABLE_ON_MOBILE,\n  alwaysVisibleWallets = [],\n  primaryColor,\n  borderRadius = 15,\n  customCSS,\n  customActions = [],\n  hideActionMenu = false,\n  afterComponent,\n  beforeComponent,\n  limitNetwork,\n  peerConnectEnabled = true,\n  cip158Enabled = true,\n  peerConnectSubtitle,\n  peerConnectCustomCSS,\n  dAppName = 'Awesome DApp',\n  dAppUrl = 'http://awesome-dapp-url.tld/',\n  extensions,\n  onConnect,\n  onDisconnect,\n  onSignMessage,\n  showAccountBalance = false,\n  onStakeAddressClick,\n  onConnectError = (walletName: string, error: Error, level: 'error' | 'warn' = 'error') => alert(`${level}: ${error.message} (${walletName})`),\n}: ConnectWalletButtonProps) => {\n  const {\n    isEnabled,\n    stakeAddress,\n    signMessage,\n    connect,\n    disconnect,\n    isConnected,\n    installedExtensions,\n    enabledWallet,\n    accountBalance,\n    dAppConnect,\n    initDappConnect,\n    peerConnectAddress,\n    connectedCip45Wallet,\n  } = useCardano({ limitNetwork: limitNetwork });\n\n  const [showModalDialog, setShowModalDialog] = useState(false);\n\n  useEffect(() => {\n    if (peerConnectEnabled && dAppConnect.current === null) {\n      const verifyConnection = (\n        walletInfo: IWalletInfo,\n        callback: (granted: boolean, autoconnect: boolean) => void,\n      ) => {\n        if (walletInfo.requestAutoconnect) {\n          const accessAndAutoConnect = window.confirm(\n            `Do you want to automatically connect to wallet ${walletInfo.name} (${walletInfo.address})?`,\n          );\n\n          callback(accessAndAutoConnect, accessAndAutoConnect);\n        } else {\n          callback(\n            window.confirm(\n              `Do you want to connect to wallet ${walletInfo.name} (${walletInfo.address})?`,\n            ),\n            true,\n          );\n        }\n      };\n\n      const onApiInject = (name: string, address: string): void => {\n        connectWallet(name);\n      };\n\n      const onApiEject = (name: string, address: string): void => {\n        disconnect();\n      };\n\n      const onP2PConnect = (\n        address: string,\n        walletInfo?: IWalletInfo,\n      ): void => {\n        setShowModalDialog(false);\n      };\n\n      initDappConnect(\n        dAppName,\n        dAppUrl,\n        verifyConnection,\n        onApiInject,\n        onApiEject,\n        onP2PConnect,\n      );\n    }\n  }, []);\n\n  const isMobile = checkIsMobile();\n  const availableWallets = estimateAvailableWallets(\n    peerConnectEnabled && connectedCip45Wallet.current?.name\n      ? [connectedCip45Wallet.current.name, ...supportedWallets]\n      : supportedWallets,\n    showUnavailableWallets,\n    alwaysVisibleWallets,\n    installedExtensions,\n  );\n\n  const connectWallet = async (walletName: string) => {\n    const onSuccess = () => {\n      if (typeof onConnect === 'function') {\n        onConnect(walletName);\n      }\n    };\n\n    const onError = (error: Error) => {\n      if (error instanceof WalletExtensionNotFoundError) {\n        const config = getWalletConfig(walletName);\n        if (config?.chromeExtensionId && config?.chromeExtensionName) {\n          window.open(\n            `${chromeStoreUrl}${config.chromeExtensionName}/${config.chromeExtensionId}`,\n          );\n        } else {\n          onConnectError(walletName, error, 'warn');\n        }\n      } else {\n        onConnectError(walletName, error);\n        console.warn(error);\n      }\n    };\n\n    connect(walletName, onSuccess, onError, extensions);\n  };\n\n  const connectMobileWallet = async (walletName: string) => {\n    if (!isMobile) {\n      connectWallet(walletName);\n      return;\n    }\n\n    if (!mobileWallets.includes(walletName.toLowerCase())) {\n      return;\n    }\n\n    const config = getWalletConfig(walletName);\n\n    if (isWalletInstalled(walletName)) {\n      connectWallet(walletName);\n      return;\n    }\n\n    if (config?.mobileDeepLinkPrefix) {\n      window.location.href = `${config.mobileDeepLinkPrefix}${encodeURIComponent(window.location.href)}`;\n      return;\n    }\n\n    if (cip158Enabled && config?.hasCIP158Support) {\n      const deepLink = generateCip158DeepLink(window.location.href);\n\n      const appStoreTimeout = setTimeout(() => {\n        if (getMobileOS() === 'iOS') {\n          window.location.href = config.appStoreUrl!;\n        } else if (getMobileOS() === 'Android') {\n          window.location.href = config.playStoreUrl!;\n        }\n      }, 2500);\n\n      document.addEventListener(\n        'visibilitychange',\n        () => {\n          if (document.visibilityState === 'hidden') {\n            clearTimeout(appStoreTimeout);\n          }\n        },\n        { once: true },\n      );\n\n      window.location.href = deepLink;\n      return;\n    }\n\n    if (getMobileOS() === 'iOS') {\n      window.location.href = config?.appStoreUrl ?? '';\n    } else if (getMobileOS() === 'Android') {\n      window.location.href = config?.playStoreUrl ?? '';\n    } else {\n      onConnectError(walletName, new Error('Please install the wallet from the app store.'), 'warn');\n    }\n  };\n\n  const themeColorObject = primaryColor\n    ? Color(primaryColor)\n    : Color('#0538AF');\n\n  const getDefaultButtonTitle = () => {\n    if (showAccountBalance) {\n      const balanceWithTwoDecimalPlaces =\n        Math.round(accountBalance * 100) / 100;\n      return `₳ ${balanceWithTwoDecimalPlaces}`;\n    }\n    return `${stakeAddress!.slice(0, 12)}...`;\n  };\n\n  const buttonTitle =\n    stakeAddress && isConnected\n      ? getDefaultButtonTitle()\n      : label || 'Connect Wallet';\n\n  const clickStakeAddress = () => {\n    if (\n      stakeAddress &&\n      isConnected &&\n      typeof onStakeAddressClick === 'function'\n    ) {\n      onStakeAddressClick(stakeAddress);\n    }\n  };\n\n  const renderWalletMenu = () => (\n    <DropdownMenu.Content asChild>\n      <Menu id=\"connect-wallet-menu\">\n        {peerConnectEnabled && (\n          <DropdownMenu.Item asChild onSelect={() => setShowModalDialog(true)}>\n            <MenuItem\n              gap={0}\n              borderRadius={borderRadius}\n              primaryColor={themeColorObject.hex()}\n              primaryColorLight={themeColorObject\n                .mix(Color('white'), 0.9)\n                .hex()}\n            >\n              <MenuItemIcon src={getWalletIcon('peer-connect')} />\n              P2P Wallet\n            </MenuItem>\n          </DropdownMenu.Item>\n        )}\n        {availableWallets ? (\n          availableWallets.map((availableWallet) => {\n            const displayName =\n              getWalletConfig(availableWallet)?.displayName ?? availableWallet;\n\n            if (\n              isMobile &&\n              !mobileWallets.includes(availableWallet.toLowerCase())\n            ) {\n              return (\n                <DropdownMenu.Item asChild key={availableWallet} disabled>\n                  <DesktopMenuItem\n                    borderRadius={borderRadius}\n                    key={availableWallet}\n                  >\n                    <MenuItemIcon src={getWalletIcon(availableWallet)} />\n                    {capitalize(displayName)}\n                    <span>Desktop Only</span>\n                  </DesktopMenuItem>\n                </DropdownMenu.Item>\n              );\n            }\n\n            return (\n              <DropdownMenu.Item\n                asChild\n                key={availableWallet}\n                onSelect={() => connectMobileWallet(availableWallet)}\n              >\n                <MenuItem\n                  gap={0}\n                  borderRadius={borderRadius}\n                  primaryColor={themeColorObject.hex()}\n                  primaryColorLight={themeColorObject\n                    .mix(Color('white'), 0.9)\n                    .hex()}\n                >\n                  <MenuItemIcon src={getWalletIcon(availableWallet)} />\n                  {capitalize(displayName)}\n                </MenuItem>\n              </DropdownMenu.Item>\n            );\n          })\n        ) : (\n          <span id=\"connect-wallet-hint\">{`Please install a wallet browser extension (${formatSupportedWallets(\n            supportedWallets,\n          )} are supported)`}</span>\n        )}\n      </Menu>\n    </DropdownMenu.Content>\n  );\n\n  const renderActionMenu = () =>\n    hideActionMenu ? null : (\n      <DropdownMenu.Content asChild>\n        <Menu id=\"connect-wallet-menu\">\n          {typeof message === 'string' && (\n            <DropdownMenu.Item\n              asChild\n              onSelect={() => signMessage(message, onSignMessage)}\n            >\n              <MenuItem\n                gap={0}\n                borderRadius={borderRadius}\n                primaryColor={themeColorObject.hex()}\n                primaryColorLight={themeColorObject\n                  .mix(Color('white'), 0.9)\n                  .hex()}\n              >\n                Sign a message\n              </MenuItem>\n            </DropdownMenu.Item>\n          )}\n          {customActions.map((customAction, index) => (\n            <DropdownMenu.Item\n              asChild\n              key={`custom-action-${index}`}\n              onSelect={customAction.onClick}\n            >\n              <MenuItem\n                gap={0}\n                borderRadius={borderRadius}\n                primaryColor={themeColorObject.hex()}\n                primaryColorLight={themeColorObject\n                  .mix(Color('white'), 0.9)\n                  .hex()}\n              >\n                {customAction.label}\n              </MenuItem>\n            </DropdownMenu.Item>\n          ))}\n          <DropdownMenu.Item\n            asChild\n            onSelect={() => {\n              disconnect();\n              if (typeof onDisconnect === 'function') {\n                onDisconnect();\n              }\n            }}\n          >\n            <MenuItem\n              gap={0}\n              borderRadius={borderRadius}\n              primaryColor={themeColorObject.hex()}\n              primaryColorLight={themeColorObject\n                .mix(Color('white'), 0.9)\n                .hex()}\n            >\n              Disconnect\n            </MenuItem>\n          </DropdownMenu.Item>\n        </Menu>\n      </DropdownMenu.Content>\n    );\n\n  if (typeof beforeComponent === 'undefined' && enabledWallet) {\n    const walletIcon = getWalletIcon(enabledWallet);\n    beforeComponent = (\n      <img\n        height={24}\n        width={24}\n        style={{ marginRight: '8px' }}\n        src={walletIcon}\n        alt={`${enabledWallet}-icon`}\n      />\n    );\n  }\n\n  return (\n    <Dropdown\n      id=\"connect-wallet-dropdown\"\n      customCSS={customCSS || ''}\n      borderRadius={0}\n      primaryColor={themeColorObject.hex()}\n    >\n      {peerConnectEnabled && (\n        <ModalDialog\n          handleClose={() => setShowModalDialog(false)}\n          content={peerConnectAddress}\n          icon={dAppConnect.current?.getIdenticon()}\n          visible={showModalDialog}\n          primaryColor={themeColorObject.hex()}\n          subtitle={peerConnectSubtitle}\n          customCSS={peerConnectCustomCSS}\n        />\n      )}\n\n      <DropdownMenu.Root>\n        <DropdownMenu.Trigger asChild>\n          <Button\n            customCSS=\"\"\n            id=\"connect-wallet-button\"\n            onClick={clickStakeAddress}\n            borderRadius={borderRadius}\n            primaryColor={themeColorObject.hex()}\n            disabled={disabled}\n          >\n            {beforeComponent}\n            {buttonTitle}\n            {afterComponent}\n          </Button>\n        </DropdownMenu.Trigger>\n\n        <DropdownMenu.Portal>\n          {!disabled &&\n            (isEnabled && isConnected\n              ? renderActionMenu()\n              : renderWalletMenu())}\n        </DropdownMenu.Portal>\n      </DropdownMenu.Root>\n    </Dropdown>\n  );\n};\n\nexport default ConnectWalletButton;\n","import styled from 'styled-components';\nimport { MenuItemStyle, CustomStyle } from '../../types';\n\nexport const Menu = styled('div').withConfig({\n  shouldForwardProp: (prop) => !['customCSS'].includes(prop),\n})<CustomStyle>`\n  font-family: sans-serif;\n  min-width: 160px;\n  max-width: 240px;\n  width: fit-content;\n  z-index: 1;\n  ${(props) => props.customCSS}\n`;\n\nexport const MenuItem = styled('button').withConfig({\n  shouldForwardProp: (prop) =>\n    !['primaryColor', 'primaryColorLight', 'borderRadius', 'gap'].includes(\n      prop\n    ),\n})<MenuItemStyle>`\n  color: ${(props) => props.primaryColor};\n  padding: 12px 16px;\n  text-decoration: none;\n  display: flex;\n  transition: border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,\n    color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n  align-items: center;\n  cursor: pointer;\n  border-color: ${(props) => props.primaryColor};\n  border-style: solid;\n  border-width: 1px;\n  border-bottom: none;\n  background-color: white;\n  width: 100%;\n  text-align: left;\n  font-size: 1rem;\n  font-family: sans-serif;\n\n  ${(props) =>\n    props.gap && props.gap > 0\n      ? `margin-bottom: ${props.gap}px;\n         border-bottom: 1px solid ${props.primaryColor};`\n      : `&:first-child {\n          border-bottom: none;\n        }\n        \n        &:last-child {\n          border: 1px solid ${props.primaryColor};\n        }`}\n\n  ${(props) => props.borderRadius && `border-radius: ${props.borderRadius}px;`}\n\n  ${(props) =>\n    props.borderRadius &&\n    (!props.gap || props.gap < 1) &&\n    `border-radius: unset;\n      &:first-child {\n    border-top-left-radius: ${props.borderRadius}px;\n    border-top-right-radius: ${props.borderRadius}px;\n      }\n      \n      &:last-child {\n    border-bottom-left-radius: ${props.borderRadius}px;\n    border-bottom-right-radius: ${props.borderRadius}px;\n      }\n    `}  \n\n  &:hover {\n    background-color: ${(props) => props.primaryColorLight};\n  }\n`;\n\nexport const MenuItemIcon = styled.img`\n  width: 24px;\n  height: 24px;\n  margin-right: 8px;\n`;\n\nexport const DesktopMenuItem = styled('span').withConfig({\n  shouldForwardProp: (prop) =>\n    !['primaryColor', 'primaryColorLight', 'borderRadius', 'gap'].includes(\n      prop\n    ),\n})<MenuItemStyle>`\n  color: #333;\n  position: relative;\n  padding: 12px 16px;\n  text-decoration: none;\n  display: flex;\n  align-items: center;\n  border-color: #333;\n  border-style: solid;\n  border-width: 1px;\n  background-color: #e3e3e3;\n  overflow: hidden;\n  border-bottom: none;\n\n  ${(props) => props.borderRadius && `border-radius: ${props.borderRadius}px;`}\n\n  ${(props) =>\n    props.gap && props.gap > 0\n      ? `margin-bottom: ${props.gap}px;\n         border-bottom: 1px solid #333;`\n      : `&:first-child {\n          border-bottom: none;\n        }\n        \n        &:last-child {\n          border-bottom: 1px solid #333;\n        }`}\n\n  ${(props) =>\n    props.borderRadius &&\n    (!props.gap || props.gap < 1) &&\n    `border-radius: unset;\n      &:first-child {\n    border-top-left-radius: ${props.borderRadius}px;\n    border-top-right-radius: ${props.borderRadius}px;\n      }\n      \n      &:last-child {\n    border-bottom-left-radius: ${props.borderRadius}px;\n    border-bottom-right-radius: ${props.borderRadius}px;\n      }\n    `}  \n\n  & > span {\n    text-transform: uppercase;\n    font-size: 0.5rem;\n    position: absolute;\n    right: 0;\n    width: 100%;\n    padding: 3px;\n    background: #777;\n    color: #fff;\n    text-align: center;\n    transform: rotate(-35deg);\n    translate: 25%;\n  }\n\n  & ${MenuItemIcon} {\n    filter: brightness(0);\n  }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useCardano } from '../../hooks';\nimport { ConnectWalletListProps } from '../../types';\nimport {\n  getWalletIcon,\n  isWalletInstalled,\n  UnavailableWalletVisibility,\n  checkIsMobile,\n  estimateAvailableWallets,\n  WalletExtensionNotFoundError,\n  capitalize,\n  mobileWallets,\n  formatSupportedWallets,\n  chromeStoreUrl,\n  getWalletConfig,\n  generateCip158DeepLink,\n} from '@cardano-foundation/cardano-connect-with-wallet-core';\nimport Color from 'color';\nimport {\n  DesktopMenuItem,\n  Menu,\n  MenuItem,\n  MenuItemIcon,\n} from './StyledListElements';\nimport { IWalletInfo } from '@fabianbormann/cardano-peer-connect/dist/src/types';\nimport ModalDialog from '../ModalDialog/ModalDialog';\nimport { getMobileOS } from '../../common';\n\nconst ConnectWalletList = ({\n  supportedWallets = [\n    'Flint',\n    'Nami',\n    'Eternl',\n    'Yoroi',\n    'NuFi',\n    'Lace',\n    'TyphonCip30',\n  ],\n  primaryColor,\n  borderRadius,\n  gap,\n  showUnavailableWallets = UnavailableWalletVisibility.SHOW_UNAVAILABLE_ON_MOBILE,\n  alwaysVisibleWallets = [],\n  customCSS,\n  peerConnectEnabled = true,\n  cip158Enabled = true,\n  peerConnectSubtitle,\n  peerConnectCustomCSS,\n  dAppName = 'Awesome DApp',\n  dAppUrl = 'http://awesome-dapp-url.tld/',\n  extensions,\n  limitNetwork,\n  onConnect,\n  onConnectError = (walletName: string, error: Error, level: 'error' | 'warn' = 'error') => alert(`${level}: ${error.message} (${walletName})`),\n}: ConnectWalletListProps) => {\n  const {\n    connect,\n    dAppConnect,\n    disconnect,\n    initDappConnect,\n    installedExtensions,\n    connectedCip45Wallet,\n    peerConnectAddress,\n  } = useCardano({\n    limitNetwork: limitNetwork,\n  });\n\n  const [showModalDialog, setShowModalDialog] = useState(false);\n\n  useEffect(() => {\n    if (peerConnectEnabled && dAppConnect.current === null) {\n      const verifyConnection = (\n        walletInfo: IWalletInfo,\n        callback: (granted: boolean, autoconnect: boolean) => void,\n      ) => {\n        if (walletInfo.requestAutoconnect) {\n          const accessAndAutoConnect = window.confirm(\n            `Do you want to automatically connect to wallet ${walletInfo.name} (${walletInfo.address})?`,\n          );\n\n          callback(accessAndAutoConnect, accessAndAutoConnect);\n        } else {\n          callback(\n            window.confirm(\n              `Do you want to connect to wallet ${walletInfo.name} (${walletInfo.address})?`,\n            ),\n            true,\n          );\n        }\n      };\n\n      const onApiInject = (name: string, address: string): void => {\n        connectWallet(name);\n      };\n\n      const onApiEject = (name: string, address: string): void => {\n        disconnect();\n      };\n\n      const onP2PConnect = (\n        address: string,\n        walletInfo?: IWalletInfo,\n      ): void => {\n        setShowModalDialog(false);\n      };\n\n      initDappConnect(\n        dAppName,\n        dAppUrl,\n        verifyConnection,\n        onApiInject,\n        onApiEject,\n        onP2PConnect,\n      );\n    }\n  }, []);\n\n  const isMobile = checkIsMobile();\n  const availableWallets = estimateAvailableWallets(\n    peerConnectEnabled && connectedCip45Wallet.current?.name\n      ? [connectedCip45Wallet.current.name, ...supportedWallets]\n      : supportedWallets,\n    showUnavailableWallets,\n    alwaysVisibleWallets,\n    installedExtensions,\n  );\n\n  const connectWallet = async (walletName: string) => {\n    const onSuccess = () => {\n      if (typeof onConnect === 'function') {\n        onConnect(walletName);\n      }\n    };\n\n    const onError = (error: Error) => {\n      if (error instanceof WalletExtensionNotFoundError) {\n        const config = getWalletConfig(walletName);\n        if (config?.chromeExtensionId && config?.chromeExtensionName) {\n          window.open(\n            `${chromeStoreUrl}${config.chromeExtensionName}/${config.chromeExtensionId}`,\n          );\n        } else {\n          onConnectError(walletName, error, 'warn');\n        }\n      } else {\n        onConnectError(walletName, error);\n      }\n    };\n\n    connect(walletName, onSuccess, onError, extensions);\n  };\n\n  const connectMobileWallet = async (walletName: string) => {\n    if (!isMobile) {\n      connectWallet(walletName);\n      return;\n    }\n\n    if (!mobileWallets.includes(walletName.toLowerCase())) {\n      return;\n    }\n\n    const config = getWalletConfig(walletName);\n\n    if (isWalletInstalled(walletName)) {\n      connectWallet(walletName);\n      return;\n    }\n\n    if (config?.mobileDeepLinkPrefix) {\n      window.location.href = `${config.mobileDeepLinkPrefix}${encodeURIComponent(window.location.href)}`;\n      return;\n    }\n\n    if (cip158Enabled && config?.hasCIP158Support) {\n      const deepLink = generateCip158DeepLink(window.location.href);\n\n      const appStoreTimeout = setTimeout(() => {\n        if (getMobileOS() === 'iOS') {\n          window.location.href = config.appStoreUrl!;\n        } else if (getMobileOS() === 'Android') {\n          window.location.href = config.playStoreUrl!;\n        }\n      }, 2500);\n\n      document.addEventListener(\n        'visibilitychange',\n        () => {\n          if (document.visibilityState === 'hidden') {\n            clearTimeout(appStoreTimeout);\n          }\n        },\n        { once: true },\n      );\n\n      window.location.href = deepLink;\n      return;\n    }\n\n    if (getMobileOS() === 'iOS') {\n      window.location.href = config?.appStoreUrl ?? '';\n    } else if (getMobileOS() === 'Android') {\n      window.location.href = config?.playStoreUrl ?? '';\n    } else {\n      onConnectError(walletName, new Error('Please install the wallet from the app store.'), 'warn');\n    }\n  };\n\n  const themeColorObject = primaryColor\n    ? Color(primaryColor)\n    : Color('#0538AF');\n\n  return (\n    <>\n      {peerConnectEnabled && (\n        <ModalDialog\n          handleClose={() => setShowModalDialog(false)}\n          content={peerConnectAddress}\n          icon={dAppConnect.current?.getIdenticon()}\n          visible={showModalDialog}\n          primaryColor={themeColorObject.hex()}\n          subtitle={peerConnectSubtitle}\n          customCSS={peerConnectCustomCSS}\n        />\n      )}\n\n      <Menu customCSS={customCSS || ''} data-testid=\"connect-wallet-list\">\n        {peerConnectEnabled && (\n          <MenuItem\n            gap={gap || 0}\n            key=\"peer-connect\"\n            borderRadius={borderRadius || 0}\n            primaryColor={themeColorObject.hex()}\n            primaryColorLight={themeColorObject.mix(Color('white'), 0.9).hex()}\n            onClick={() => setShowModalDialog(true)}\n          >\n            <MenuItemIcon src={getWalletIcon('peer-connect')} />\n            P2P Wallet\n          </MenuItem>\n        )}\n        {availableWallets ? (\n          availableWallets.map((availableWallet) => {\n            const displayName =\n              getWalletConfig(availableWallet)?.displayName ?? availableWallet;\n            if (\n              isMobile &&\n              !mobileWallets.includes(availableWallet.toLowerCase())\n            ) {\n              return (\n                <DesktopMenuItem\n                  primaryColor={themeColorObject.hex()}\n                  primaryColorLight={themeColorObject\n                    .mix(Color('white'), 0.9)\n                    .hex()}\n                  borderRadius={borderRadius || 0}\n                  gap={gap || 0}\n                  key={availableWallet}\n                >\n                  <MenuItemIcon src={getWalletIcon(availableWallet)} />\n                  {capitalize(displayName)}\n                  <span>Desktop Only</span>\n                </DesktopMenuItem>\n              );\n            }\n\n            return (\n              <MenuItem\n                primaryColor={themeColorObject.hex()}\n                primaryColorLight={themeColorObject\n                  .mix(Color('white'), 0.9)\n                  .hex()}\n                borderRadius={borderRadius || 0}\n                gap={gap || 0}\n                key={availableWallet}\n                onClick={() => connectMobileWallet(availableWallet)}\n              >\n                <MenuItemIcon\n                  src={getWalletIcon(availableWallet)}\n                ></MenuItemIcon>\n                {capitalize(displayName)}\n              </MenuItem>\n            );\n          })\n        ) : (\n          <span>{`Please install a wallet browser extension (${formatSupportedWallets(\n            supportedWallets,\n          )} are supported)`}</span>\n        )}\n      </Menu>\n    </>\n  );\n};\n\nexport default ConnectWalletList;\n"],"names":["Menu","MenuItem","MenuItemIcon","DesktopMenuItem","useRef","useState","Wallet","NetworkType","useEffect","useCallback","DAppPeerConnect","colorNames","convert","conversions","colorString","keyframes","qrGenerator","_jsx","Dialog","_jsxs","VisuallyHidden","UnavailableWalletVisibility","checkIsMobile","estimateAvailableWallets","WalletExtensionNotFoundError","getWalletConfig","chromeStoreUrl","mobileWallets","isWalletInstalled","generateCip158DeepLink","DropdownMenu","getWalletIcon","capitalize","formatSupportedWallets","_Fragment"],"mappings":"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EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AACxB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AACxB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AACxB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AACxB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAC5B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;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AAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAChB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE1B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACjB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE1B;AACA,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE1B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAChB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE1B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE1B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACjB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAChB,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAChB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAEhB;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC9B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAClB,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE3B;AACA,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;AAE5B;AACA,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC3B,GAAG;;AAEH,EAAE,MAAM,SAAS,GAAG,SAAS,UAAU,EAAE,SAAS,EAAE;AACpD,IAAI,MAAM,KAAK,GAAG,EAAE;AACpB,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU;AACjC,IAAI,KAAK,CAAC,SAAS,GAAG,SAAS;AAC/B,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,MAAM,eAAe,GAAG,SAAS,UAAU,EAAE,oBAAoB,EAAE;;AAErE,IAAI,OAAO,oBAAoB;AAC/B,IAAI,KAAK,sBAAsB,CAAC,CAAC;AACjC,MAAM,OAAO,cAAc,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,IAAI,KAAK,sBAAsB,CAAC,CAAC;AACjC,MAAM,OAAO,cAAc,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,IAAI,KAAK,sBAAsB,CAAC,CAAC;AACjC,MAAM,OAAO,cAAc,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,IAAI,KAAK,sBAAsB,CAAC,CAAC;AACjC,MAAM,OAAO,cAAc,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,IAAI;AACJ,MAAM,OAAO,SAAS;AACtB;AACA,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,UAAU,EAAE,oBAAoB,EAAE;;AAEjE,IAAI,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,oBAAoB,CAAC;;AAErE,IAAI,IAAI,OAAO,OAAO,IAAI,WAAW,EAAE;AACvC,MAAM,MAAM,4BAA4B,GAAG,UAAU;AACrD,UAAU,wBAAwB,GAAG,oBAAoB;AACzD,IAAI;;AAEJ,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;;AAErC,IAAI,MAAM,IAAI,GAAG,EAAE;;AAEnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;;AAExC,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;AAE1C,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;AACpD,MAAM;AACN,IAAI;;AAEJ,IAAI,OAAO,IAAI;AACf,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC,EAAE;;AAEH;AACA;AACA;;AAEA,MAAM,WAAW,GAAG,WAAW;;AAE/B,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,IAAI,OAAO,GAAG,CAAC;;AAEjB,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,KAAK,CAAC,SAAS,GAAG,WAAW;AAC/B,IAAI,OAAO,OAAO;AAClB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE;AAChC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAC1C,IAAI,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/D,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,MAAM,EAAE;AACpC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACxC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5D,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,eAAe,GAAG,WAAW;AACrC,IAAI,OAAO,OAAO;AAClB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE;;AAE/B,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC5C,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE;AACpC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACrB,IAAI;;AAEJ,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE;AACpD,IAAI;;AAEJ,IAAI,OAAO,IAAI,CAAC;AAChB,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;;AAEA,MAAM,QAAQ,GAAG,SAAS,IAAI,EAAE;;AAEhC,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW;AAClC,EAAE,MAAM,KAAK,GAAG,IAAI;;AAEpB,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,KAAK,CAAC,OAAO,GAAG,WAAW;AAC7B,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,MAAM,EAAE;AACrC,IAAI,OAAO,KAAK,CAAC,MAAM;AACvB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE;;AAEjC,IAAI,MAAM,IAAI,GAAG,KAAK;;AAEtB,IAAI,IAAI,CAAC,GAAG,CAAC;;AAEb,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AAChC,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;AACzD,MAAM,CAAC,IAAI,CAAC;AACZ,IAAI;;AAEJ,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE;AAChC,QAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE;AACvC,QAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1D,MAAM;AACN,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE;AAC/B,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1C,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC9C,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,EAAE,CAAC;;AAEH,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,EAAE;AAChC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AAC9B,MAAM,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAChD,IAAI;AACJ,IAAI,MAAM,gBAAgB,GAAG,CAAC;AAC9B,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;;AAEA,MAAM,UAAU,GAAG,SAAS,IAAI,EAAE;;AAElC,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc;AACrC,EAAE,MAAM,KAAK,GAAG,IAAI;;AAEpB,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,KAAK,CAAC,OAAO,GAAG,WAAW;AAC7B,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,MAAM,EAAE;AACrC,IAAI,OAAO,KAAK,CAAC,MAAM;AACvB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE;;AAEjC,IAAI,MAAM,CAAC,GAAG,KAAK;;AAEnB,IAAI,IAAI,CAAC,GAAG,CAAC;;AAEb,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC7B,MAAM,MAAM,CAAC,GAAG;AAChB,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AAClC,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;AACtC,MAAM,CAAC,IAAI,CAAC;AACZ,IAAI;;AAEJ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACtB,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1C,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE;;AAE9B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AAC9B,MAAM,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAChD,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACrC,MAAM,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;AACrD,IAAI,CAAC,MAAM;AACX,MAAM,QAAQ,CAAC;AACf,MAAM,KAAK,QAAQ,GAAG,OAAO,EAAE;AAC/B,MAAM,KAAK,GAAG,GAAG,OAAO,EAAE;AAC1B,MAAM,KAAK,GAAG,GAAG,OAAO,EAAE;AAC1B,MAAM,KAAK,GAAG,GAAG,OAAO,EAAE;AAC1B,MAAM,KAAK,GAAG,GAAG,OAAO,EAAE;AAC1B,MAAM,KAAK,GAAG,GAAG,OAAO,EAAE;AAC1B,MAAM,KAAK,GAAG,GAAG,OAAO,EAAE;AAC1B,MAAM,KAAK,GAAG,GAAG,OAAO,EAAE;AAC1B,MAAM,KAAK,GAAG,GAAG,OAAO,EAAE;AAC1B,MAAM;AACN,QAAQ,MAAM,gBAAgB,GAAG,CAAC;AAClC;AACA,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;;AAEA,MAAM,UAAU,GAAG,SAAS,IAAI,EAAE;;AAElC,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc;AAErC,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;;AAE3C,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,KAAK,CAAC,OAAO,GAAG,WAAW;AAC7B,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,MAAM,EAAE;AACrC,IAAI,OAAO,MAAM,CAAC,MAAM;AACxB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE;AACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;;AAEA,MAAM,OAAO,GAAG,SAAS,IAAI,EAAE;;AAE/B,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU;;AAGjC,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa;AAC5C,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE;AACrB;AACA,IAAI,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AACjE,MAAM,MAAM,qBAAqB;AACjC,IAAI;AACJ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;;AAErB,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;;AAEpC,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,KAAK,CAAC,OAAO,GAAG,WAAW;AAC7B,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,MAAM,EAAE;AACrC,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE;;AAEjC,IAAI,MAAM,IAAI,GAAG,MAAM;;AAEvB,IAAI,IAAI,CAAC,GAAG,CAAC;;AAEb,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;;AAEhC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;AAE7D,MAAM,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;AACtC,QAAQ,CAAC,IAAI,MAAM;AACnB,MAAM,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;AAC7C,QAAQ,CAAC,IAAI,MAAM;AACnB,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM,kBAAkB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AACpD,MAAM;;AAEN,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;;AAEjD,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;;AAEvB,MAAM,CAAC,IAAI,CAAC;AACZ,IAAI;;AAEJ,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,MAAM,MAAM,kBAAkB,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM,qBAAqB,GAAG,WAAW;;AAEzC,EAAE,MAAM,MAAM,GAAG,EAAE;;AAEnB,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;AAChC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AACzB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE;AACjC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACtB,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5B,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3C,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;AAClB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM;AACzB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;AACrC,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AACjC,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE;AAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1C,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AACvC,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,WAAW,GAAG,WAAW;AACjC,IAAI,OAAO,MAAM;AACjB,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,QAAQ,GAAG,WAAW;AAC9B,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,IAAI,CAAC,IAAI,GAAG;AACZ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,QAAQ,CAAC,IAAI,GAAG;AAChB,MAAM;AACN,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;AACpB,IAAI;AACJ,IAAI,CAAC,IAAI,GAAG;AACZ,IAAI,OAAO,CAAC;AACZ,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;;AAEA,MAAM,wBAAwB,GAAG,WAAW;;AAE5C,EAAE,IAAI,OAAO,GAAG,CAAC;AACjB,EAAE,IAAI,OAAO,GAAG,CAAC;AACjB,EAAE,IAAI,OAAO,GAAG,CAAC;AACjB,EAAE,IAAI,OAAO,GAAG,EAAE;;AAElB,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE;AACnC,IAAI,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;AACrD,EAAE,CAAC;;AAEH,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;AACf,MAAM,MAAM,IAAI,GAAG,CAAC;AACpB,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,OAAO,IAAI,GAAG,CAAC;AACrB,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;AACvB,MAAM,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AACxB,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AACxB,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,IAAI,GAAG,CAAC;AACpB,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;;AAEhC,IAAI,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACzC,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI,OAAO,IAAI,CAAC;;AAEhB,IAAI,OAAO,OAAO,IAAI,CAAC,EAAE;AACzB,MAAM,YAAY,CAAC,OAAO,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE;AAC9C,MAAM,OAAO,IAAI,CAAC;AAClB,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,KAAK,GAAG,WAAW;;AAE3B,IAAI,IAAI,OAAO,GAAG,CAAC,EAAE;AACrB,MAAM,YAAY,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE;AAC7C,MAAM,OAAO,GAAG,CAAC;AACjB,MAAM,OAAO,GAAG,CAAC;AACjB,IAAI;;AAEJ,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE;AAC1B;AACA,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACpC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1C,QAAQ,OAAO,IAAI,GAAG;AACtB,MAAM;AACN,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,QAAQ,GAAG,WAAW;AAC9B,IAAI,OAAO,OAAO;AAClB,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;;AAEA,MAAM,uBAAuB,GAAG,SAAS,GAAG,EAAE;;AAE9C,EAAE,MAAM,IAAI,GAAG,GAAG;AAClB,EAAE,IAAI,IAAI,GAAG,CAAC;AACd,EAAE,IAAI,OAAO,GAAG,CAAC;AACjB,EAAE,IAAI,OAAO,GAAG,CAAC;;AAEjB,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,KAAK,CAAC,IAAI,GAAG,WAAW;;AAE1B,IAAI,OAAO,OAAO,GAAG,CAAC,EAAE;;AAExB,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/B,QAAQ,IAAI,OAAO,IAAI,CAAC,EAAE;AAC1B,UAAU,OAAO,EAAE;AACnB,QAAQ;AACR,QAAQ,MAAM,0BAA0B,GAAG,OAAO;AAClD,MAAM;;AAEN,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACjC,MAAM,IAAI,IAAI,CAAC;;AAEf,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE;AACpB,QAAQ,OAAO,GAAG,CAAC;AACnB,QAAQ,OAAO,EAAE;AACjB,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;AACnC;AACA,QAAQ;AACR,MAAM;;AAEN,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AACzD,MAAM,OAAO,IAAI,CAAC;AAClB,IAAI;;AAEJ,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI;AACjD,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI,OAAO,CAAC;AACZ,EAAE,CAAC;;AAEH,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE;AAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AAChC,MAAM,OAAO,CAAC,GAAG,IAAI;AACrB,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AACvC,MAAM,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE;AAC1B,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AACvC,MAAM,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE;AAC1B,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;AAC1B,MAAM,OAAO,EAAE;AACf,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;AAC1B,MAAM,OAAO,EAAE;AACf,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,IAAI,GAAG,CAAC;AACpB,IAAI;AACJ,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;;AAEA,MAAM,QAAQ,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE;;AAEzC,EAAE,MAAM,MAAM,GAAG,KAAK;AACtB,EAAE,MAAM,OAAO,GAAG,MAAM;AACxB,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;;AAEzC,EAAE,MAAM,KAAK,GAAG,EAAE;;AAElB,EAAE,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;AACzC,IAAI,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK;AACjC,EAAE,CAAC;;AAEH,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;;AAE9B;AACA;;AAEA,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC;;AAE7B;AACA;;AAEA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAC1B,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;;AAE3B,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACpB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;;AAEpB;AACA;;AAEA;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACvB,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACvB,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;;AAEvB;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACvB,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACvB,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;;AAEvB;AACA;;AAEA,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC;AACxB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACrB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACrB,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAC1B,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAC3B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;;AAEpB;AACA;;AAEA;AACA;;AAEA,IAAI,MAAM,cAAc,GAAG,CAAC;AAC5B,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC;;AAE/C,IAAI,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC;;AAEjC,IAAI,IAAI,MAAM,GAAG,CAAC;;AAElB,IAAI,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE;AACzC,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC;AACxB,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC;AACzC,MAAM,MAAM,IAAI,GAAG;AACnB,IAAI;;AAEJ,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACzC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1D,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;;AAEvB;AACA;AACA,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC;AACxB,EAAE,CAAC;;AAEH,EAAE,MAAM,eAAe,GAAG,SAAS,GAAG,EAAE;;AAExC,IAAI,MAAM,IAAI,GAAG,GAAG;AACpB,IAAI,IAAI,UAAU,GAAG,CAAC;AACtB,IAAI,IAAI,UAAU,GAAG,CAAC;;AAEtB,IAAI,MAAM,KAAK,GAAG,EAAE;;AAEpB,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE;;AAEzC,MAAM,KAAK,CAAC,IAAI,KAAK,MAAM,KAAK,CAAC,EAAE;AACnC,QAAQ,MAAM,aAAa;AAC3B,MAAM;;AAEN,MAAM,OAAO,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE;AACvC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,UAAU,IAAI,UAAU,CAAC,EAAE;AACpE,QAAQ,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC;AAClC,QAAQ,IAAI,OAAO,CAAC,GAAG,UAAU,CAAC;AAClC,QAAQ,UAAU,GAAG,CAAC;AACtB,QAAQ,UAAU,GAAG,CAAC;AACtB,MAAM;;AAEN,MAAM,UAAU,GAAG,CAAC,IAAI,IAAI,UAAU,IAAI,UAAU;AACpD,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM;AACtC,IAAI,CAAC;;AAEL,IAAI,KAAK,CAAC,KAAK,GAAG,WAAW;AAC7B,MAAM,IAAI,UAAU,GAAG,CAAC,EAAE;AAC1B,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAClC,MAAM;AACN,IAAI,CAAC;;AAEL,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAE,MAAM,YAAY,GAAG,SAAS,cAAc,EAAE;;AAEhD,IAAI,MAAM,SAAS,GAAG,CAAC,IAAI,cAAc;AACzC,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,cAAc,IAAI,CAAC;AAC7C,IAAI,IAAI,SAAS,GAAG,cAAc,GAAG,CAAC;;AAEtC;AACA,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;;AAE5B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;AAC3C,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAC9C,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;;AAE5C,IAAI,MAAM,OAAO,GAAG,qBAAqB,EAAE;AAC3C,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC;;AAE3C;AACA,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;;AAEtC,IAAI,IAAI,SAAS,GAAG,CAAC;;AAErB,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACjD,IAAI,SAAS,IAAI,CAAC;;AAElB,IAAI,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE;;AAErC,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACrD,MAAM,SAAS,IAAI,CAAC;;AAEpB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;;AAElC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;;AAEjB,MAAM,CAAC,MAAM;;AAEb,QAAQ,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;;AAEjD,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE;;AAElC,UAAU,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG;AACjD,YAAY,SAAS,IAAI,CAAC;AAC1B,UAAU;;AAEV,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B,QAAQ;;AAER,QAAQ,CAAC,GAAG,CAAC;AACb,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;;AAE7C;AACA,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;;AAEpC,IAAI,MAAM,CAAC,KAAK,EAAE;;AAElB,IAAI,OAAO,OAAO,CAAC,WAAW,EAAE;AAChC,EAAE,CAAC;;AAEH,EAAE,MAAM,QAAQ,GAAG,WAAW;;AAE9B,IAAI,MAAM,IAAI,GAAG,EAAE;AACnB,IAAI,IAAI,KAAK,GAAG,CAAC;;AAEjB,IAAI,MAAM,KAAK,GAAG,EAAE;;AAEpB,IAAI,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;AAC9B,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AAChC,QAAQ,MAAM,UAAU,GAAG,GAAG;AAC9B,MAAM;AACN,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,MAAM,KAAK,IAAI,CAAC;AAChB,IAAI,CAAC;;AAEL,IAAI,KAAK,CAAC,IAAI,GAAG,WAAW;AAC5B,MAAM,OAAO,KAAK;AAClB,IAAI,CAAC;;AAEL,IAAI,KAAK,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE;AAClC,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC;AACtB,IAAI,CAAC;;AAEL,IAAI,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,EAAE;AACnC,MAAM,OAAO,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW;AAC5C,IAAI,CAAC;;AAEL,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC;;AAEH,EAAE,OAAO,KAAK;AACd,CAAC;;AAED,MAAM,aAAa,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;AACxD,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;AACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AACvC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI;AACJ,EAAE;;AAEF,EAAE,MAAM,CAAC,GAAG,qBAAqB,EAAE;AACnC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;;AAEd,EAAE,MAAM,MAAM,GAAG,wBAAwB,EAAE;AAC3C,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE;AAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5C,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE;AACF,EAAE,MAAM,CAAC,KAAK,EAAE;;AAEhB,EAAE,OAAO,wBAAwB,GAAG,MAAM;AAC1C,CAAC;;AAI4B,MAAM,CAAC;;AC5rEpC;AACA;AACA;AACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,IAAI,OAAO,EAAE,EAAE;AACzD;AACA,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACvB,QAAQ,OAAO,IAAI;AACnB;AACA,IAAI,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;AAC7B,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;AAC9B,QAAQ,OAAO,KAAK;AACpB;AACA,IAAI,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;AAC5D,QAAQ,OAAO,CAAC,KAAK,CAAC;AACtB,IAAI;AACJ;AACA,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACxD,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACpD,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACzB,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;AAChD,QAAQ,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE;AAC1C,IAAI;AACJ;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AACjC,YAAY,OAAO,KAAK;AACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AAC/C,gBAAgB,OAAO,KAAK;AAC5B,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;AAC7B,YAAY,OAAO,KAAK;AACxB,QAAQ,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE;AAC7B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACnE,gBAAgB,OAAO,KAAK;AAC5B,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;AAC7B,YAAY,OAAO,KAAK;AACxB,QAAQ,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;AACpC,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;AACnE,gBAAgB,OAAO,KAAK;AAC5B,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS;AACrD,QAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC3C,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AACzC,YAAY,OAAO,KAAK;AACxB,QAAQ,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AACjC,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpC,gBAAgB,OAAO,KAAK;AAC5B,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;AACnD,gBAAgB,OAAO,KAAK;AAC5B,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,IAAI;AACR,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,QAAQ,GAAG,KAAK,EAAE;AAC1C,IAAI,QAAQ,QAAQ;AACpB,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,YAAY;AAC/B,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,YAAY;AAC/B,QAAQ,KAAK,KAAK;AAClB,QAAQ;AACR,YAAY,OAAO,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACO,SAAS,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC/C,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AAC5C,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG;AACnB,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB;;ACvGA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AACtB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM;AAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,QAAQ,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI,CAAC,CAAC,IAAI,MAAM,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE;AAC5C,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,QAAQ;AACR,aAAa,IAAI,CAAC,GAAG,MAAM,EAAE;AAC7B,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AACjE,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAChE,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAChE,QAAQ;AACR,aAAa;AACb,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAChE,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAChE,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE;AAC3E,IAAI,GAAG,CAAC,SAAS,GAAG,SAAS;AAC7B,IAAI,GAAG,CAAC,SAAS,GAAG,KAAK;AACzB,IAAI,GAAG,CAAC,WAAW,GAAG,KAAK;AAC3B;AACA,IAAI,CAAC,IAAI,SAAS,GAAG,CAAC;AACtB,IAAI,CAAC,IAAI,SAAS,GAAG,CAAC;AACtB,IAAI,IAAI,IAAI,SAAS;AACrB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,QAAQ,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAC5C,IAAI;AACJ;AACA,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC7B,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;AACjC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9B,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,IAAI,GAAG,CAAC,SAAS,EAAE;AACnB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;AAC/B,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC;AACvC,IAAI,IAAI,SAAS;AACjB,QAAQ,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;AAClE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC;AACjD,IAAI,IAAI,YAAY;AACpB,QAAQ,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC;AACnF,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;AACzC,IAAI,IAAI,WAAW;AACnB,QAAQ,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC;AACpE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;AAC/B,IAAI,IAAI,QAAQ;AAChB,QAAQ,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;AACnD,IAAI,GAAG,CAAC,SAAS,EAAE;AACnB,IAAI,GAAG,CAAC,MAAM,EAAE;AAChB,IAAI,IAAI,IAAI,EAAE;AACd,QAAQ,GAAG,CAAC,IAAI,EAAE;AAClB,IAAI;AACJ;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC9F,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzC,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5D,QAAQ,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC;AACrC,QAAQ,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC;AACrC,IAAI;AACJ,SAAS;AACT,QAAQ,UAAU,GAAG,KAAK;AAC1B,QAAQ,UAAU,GAAG,UAAU;AAC/B,IAAI;AACJ,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,UAAU,GAAG,KAAK,CAAC,KAAK;AAChC,QAAQ,UAAU,GAAG,KAAK,CAAC,KAAK;AAChC,IAAI;AACJ,SAAS;AACT,QAAQ,UAAU,GAAG,KAAK;AAC1B,QAAQ,UAAU,GAAG,KAAK;AAC1B,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,IAAI,MAAM;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,IAAI,MAAM;AACrC,IAAI,IAAI,IAAI,GAAG,QAAQ,GAAG,CAAC;AAC3B;AACA,IAAI,iBAAiB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC;AAChF;AACA,IAAI,IAAI,GAAG,QAAQ,GAAG,CAAC;AACvB,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC;AACrB,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC;AACrB,IAAI,iBAAiB,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC;AAC/E;AAEA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7C,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AACvE,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA,SAAS,0BAA0B,CAAC,sBAAsB,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,GAAG,CAAC,EAAE,gBAAgB,GAAG,QAAQ,EAAE;AAC1L,IAAI,IAAI,CAAC,sBAAsB,IAAI,CAAC,SAAS,EAAE;AAC/C,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5D,IAAI,MAAM,cAAc,GAAG,cAAc,GAAG,QAAQ;AACpD,IAAI,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM;AAC3C,IAAI,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM;AAC3C,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM;AACxD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM;AACvD,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;AAC5E,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;AAC5E,IAAI,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC;AAClC,IAAI,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC;AAClC,IAAI,IAAI,gBAAgB,KAAK,QAAQ,EAAE;AACvC,QAAQ,MAAM,QAAQ,GAAG,eAAe,GAAG,cAAc;AACzD,QAAQ,MAAM,SAAS,GAAG,eAAe,GAAG,UAAU,GAAG,cAAc;AACvE,QAAQ,MAAM,OAAO,GAAG,eAAe,GAAG,cAAc;AACxD,QAAQ,MAAM,UAAU,GAAG,eAAe,GAAG,WAAW,GAAG,cAAc;AACzE,QAAQ,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,IAAI,SAAS,GAAG,QAAQ;AACrE,QAAQ,MAAM,QAAQ,GAAG,OAAO,GAAG,UAAU,IAAI,UAAU,GAAG,OAAO;AACrE,QAAQ,OAAO,QAAQ,IAAI,QAAQ;AACnC,IAAI;AACJ,IAAI,IAAI,gBAAgB,KAAK,QAAQ,EAAE;AACvC,QAAQ,MAAM,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,CAAC;AAC5D,QAAQ,MAAM,WAAW,GAAG,eAAe,GAAG,WAAW,GAAG,CAAC;AAC7D,QAAQ,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,cAAc;AACrF,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC7E,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC7E,QAAQ,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ;AAChD,QAAQ,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ;AAChD,QAAQ,MAAM,eAAe,GAAG,CAAC,SAAS,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,CAAC;AACjF,QAAQ,OAAO,eAAe,IAAI,YAAY,GAAG,YAAY,CAAC;AAC9D,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE;AACpC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;AACjC,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,KAAK,CAAC,WAAW,GAAG,WAAW;AAC3C,QAAQ;AACR,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC3D,QAAQ,KAAK,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACpF,QAAQ,KAAK,CAAC,GAAG,GAAG,GAAG;AACvB,IAAI,CAAC,CAAC;AACN;AACO,MAAM,aAAa,GAAG;AAC7B,IAAI,KAAK,EAAE,sBAAsB;AACjC,IAAI,OAAO,EAAE,GAAG;AAChB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxB,IAAI,gBAAgB,EAAE,QAAQ;AAC9B,IAAI,iBAAiB,EAAE,CAAC;AACxB,IAAI,sBAAsB,EAAE,KAAK;AACjC,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,eAAe,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE;AACzD,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC;AACvF,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,IAAI,EAAE;AAC/C,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACvC,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,QAAQ,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;AAC1D,IAAI;AACJ;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI;AAC5B,IAAI,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS;AACtC,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC;AAC5D,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC;AAC/D,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC;AAClE,IAAI,MAAM,MAAM,GAAGC,MAAW,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;AAChD,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,IAAI,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC;AAC7C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE;AAC1C,IAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM;AAClC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC;AAClE,IAAI,MAAM,UAAU,GAAG,SAAS,IAAI,IAAI,GAAG,GAAG;AAC9C,IAAI,MAAM,WAAW,GAAG,UAAU,IAAI,UAAU;AAChD,IAAI,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,UAAU,IAAI,CAAC;AAC1C,IAAI,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,WAAW,IAAI,CAAC;AAC3C,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,UAAU,GAAG,KAAK;AACrD,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,IAAI,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;AACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC;AAC9C,IAAI,MAAM,MAAM,GAAG,SAAS;AAC5B,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC1B,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;AACnC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AACnC,KAAK;AACL,IAAI,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO;AACnC,IAAI,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC;AACvF,QAAQ,0BAA0B,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC;AAC3L,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;AAClC,QAAQ,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;AACrC,QAAQ,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC;AACnC,QAAQ,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;AAC/C,YAAY,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;AACnD,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AAC1E,oBAAoB,GAAG,CAAC,SAAS,EAAE;AACnC,oBAAoB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;AACnK,oBAAoB,GAAG,CAAC,SAAS,EAAE;AACnC,oBAAoB,GAAG,CAAC,IAAI,EAAE;AAC9B,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE;AACxC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC9C,QAAQ,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;AAC/C,YAAY,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;AACnD,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AAC1E,oBAAoB,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxE,oBAAoB,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAC9G,wBAAwB,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;AAChD,oBAAoB,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACvH,wBAAwB,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;AAChD,oBAAoB,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAChI,wBAAwB,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;AAChD,oBAAoB,IAAI,CAAC,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACvH,wBAAwB,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;AAChD,oBAAoB,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;AAC5F,oBAAoB,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;AAC5F,oBAAoB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;AACjD,oBAAoB,GAAG,CAAC,SAAS,EAAE;AACnC,oBAAoB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;AACtJ,oBAAoB,GAAG,CAAC,SAAS,EAAE;AACnC,oBAAoB,GAAG,CAAC,IAAI,EAAE;AAC9B,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAC1C,wBAAwB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5H,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAC1C,wBAAwB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAChJ,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAC1C,wBAAwB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACpK,oBAAoB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AAC1C,wBAAwB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAChJ,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,SAAS;AACT,QAAQ,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;AAC/C,YAAY,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;AACnD,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;AAC1E,oBAAoB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;AACjD,oBAAoB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC;AAC1F,oBAAoB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC;AAC1F,oBAAoB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAChH,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS;AACnC,QAAQ,IAAI,KAAK;AACjB,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClC,YAAY,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5B,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAY,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAChD,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO;AACjC,QAAQ;AACR,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC/C,YAAY,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpC,QAAQ;AACR,aAAa;AACb,YAAY,KAAK,GAAG,IAAI,CAAC,QAAQ;AACjC,QAAQ;AACR,QAAQ,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;AAC7E,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE;AACzB,QAAQ,IAAI;AACZ,YAAY,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC;AACvF,YAAY,GAAG,CAAC,IAAI,EAAE;AACtB,YAAY,IAAI,WAAW,EAAE;AAC7B,gBAAgB,GAAG,CAAC,SAAS,EAAE;AAC/B,gBAAgB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO;AAC/C,gBAAgB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO;AAC7C,gBAAgB,MAAM,iBAAiB,GAAG,UAAU,IAAI,CAAC,GAAG,WAAW,CAAC;AACxE,gBAAgB,MAAM,kBAAkB,GAAG,WAAW,IAAI,CAAC,GAAG,WAAW,CAAC;AAC1E,gBAAgB,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW;AACnE,gBAAgB,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW;AACnE,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,KAAK,QAAQ,EAAE;AACzD,oBAAoB,MAAM,mBAAmB,GAAG,aAAa,IAAI,iBAAiB,GAAG,CAAC,CAAC;AACvF,oBAAoB,MAAM,mBAAmB,GAAG,aAAa,IAAI,kBAAkB,GAAG,CAAC,CAAC;AACxF,oBAAoB,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,GAAG,CAAC,EAAE,kBAAkB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAC3I,oBAAoB,GAAG,CAAC,MAAM,EAAE;AAChC,oBAAoB,GAAG,CAAC,IAAI,EAAE;AAC9B,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,CAAC;AAC/H,oBAAoB,GAAG,CAAC,MAAM,EAAE;AAChC,oBAAoB,GAAG,CAAC,IAAI,EAAE;AAC9B,gBAAgB;AAChB,YAAY;AACZ,YAAY,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;AAC/C,YAAY,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC;AAC3F,YAAY,GAAG,CAAC,OAAO,EAAE;AACzB,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtC,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,GAAG,EAAE;AACpB;AACA,YAAY,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,GAAG,CAAC;AAChF,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;;ACpVO,MAAM,MAAM,SAAS,KAAK,CAAC,SAAS,CAAC;AAC5C,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE;AACjC;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE;AACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AACnC,YAAY;AACZ,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;AAC5E,QAAQ,eAAe,CAAC,GAAG,EAAE,QAAQ,IAAI,mBAAmB,CAAC;AAC7D,IAAI;AACJ,IAAI,qBAAqB,CAAC,SAAS,EAAE;AACrC,QAAQ,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;AAChD,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;AACnC,YAAY;AACZ,QAAQ,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK;AAC/D,aAAa,KAAK,CAAC,CAAC,GAAG,KAAK;AAC5B,YAAY,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC;AAC3E,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI;AAC1D,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS;AACzE,QAAQ,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS;AAC7C,QAAQ,QAAQ,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5N,IAAI;AACJ;;AC1BA,MAAM,WAAW,GAAG,CAAC,KAAuB,KAAI;IAC9C,MAAM,EACJ,OAAO,EACP,OAAO,EACP,WAAW,EACX,OAAO,EACP,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,SAAS,GACV,GAAG,KAAK;AAET,IAAA,MAAM,QAAQ,GAAGZ,YAAM,CAAiB,IAAI,CAAC;AAE7C,IAAA,MAAM,WAAW,GAAG,CAAC,KAAoC,KAAI;;QAC3D,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;QAEtC,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AACvC,QAAA,UAAU,CAAC,YAAA;;YACT,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,CAAC,EAAE,IAAI,CAAC;AACV,IAAA,CAAC;AAED,IAAA,QACEa,cAAA,CAACC,iBAAM,CAAC,IAAI,EAAA,EAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,WAAW,EAAE,YACxEC,eAAA,CAACD,iBAAM,CAAC,MAAM,EAAA,EAAA,QAAA,EAAA,CACZD,eAACC,iBAAM,CAAC,OAAO,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EACrBD,cAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAE,SAAS,IAAI,EAAE,EAAA,CAAI,GACtB,EACjBA,cAAA,CAACC,iBAAM,CAAC,OAAO,IAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EACrBC,eAAA,CAAC,YAAY,mBAAa,eAAe,EAAA,QAAA,EAAA,CACvCF,eAACG,kCAAc,EAAA,EAAA,QAAA,EACbH,eAACC,iBAAM,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAqC,GACnC,EACjBD,cAAA,CAAC,MAAM,EAAA,EACL,sBAAsB,EAAE,IAAI,EAC5B,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAClC,OAAO,EAAC,GAAG,EACX,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,CAAC,EACpC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,EACtC,KAAK,EAAE,OAAO,EAAA,CACd,EACFE,eAAA,CAAC,kBAAkB,EAAA,EAAC,YAAY,EAAE,YAAY,IAAI,SAAS,EAAA,QAAA,EAAA,CACzDF,cAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EACnC,QAAQ,EAAA,IAAA,EAAA,CACR,EACFA,2BAAQ,OAAO,EAAE,WAAW,EAAA,QAAA,EAAA,MAAA,EAAA,CAAe,IACxB,EACrBA,cAAA,CAACC,iBAAM,CAAC,WAAW,IAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EACzBD,cAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,YACxB;AACC,0CAAE;AACF,0CAAE,yIAAyI,EAAA,CAC3I,EAAA,CACe,EACrBA,eAAC,KAAK,EAAA,EAAC,GAAG,EAAE,QAAQ,EAAA,QAAA,EAAA,qCAAA,EAAA,CAA6C,CAAA,EAAA,CACpD,GACA,CAAA,EAAA,CACH,EAAA,CACJ;AAElB,CAAC;;SC9Ee,WAAW,GAAA;;AACzB,IAAA,IAAI,eAAe,IAAI,SAAS,EAAE;QAChC,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAC,SAAiB,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ;QAC3D,IAAI,QAAQ,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;IAC9C;AAEA,IAAA,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS;AAC9B,IAAA,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,KAAK;AAC7C,IAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,SAAS;AAEzC,IAAA,OAAO,SAAS;AAClB;;ACqBA,MAAM,mBAAmB,GAAG,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,gBAAgB,GAAG;IACjB,OAAO;IACP,MAAM;IACN,QAAQ;IACR,OAAO;IACP,aAAa;IACb,MAAM;IACN,MAAM;CACP,EACD,sBAAsB,GAAGI,wDAA2B,CAAC,0BAA0B,EAC/E,oBAAoB,GAAG,EAAE,EACzB,YAAY,EACZ,YAAY,GAAG,EAAE,EACjB,SAAS,EACT,aAAa,GAAG,EAAE,EAClB,cAAc,GAAG,KAAK,EACtB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,GAAG,IAAI,EACzB,aAAa,GAAG,IAAI,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,QAAQ,GAAG,cAAc,EACzB,OAAO,GAAG,8BAA8B,EACxC,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EACb,kBAAkB,GAAG,KAAK,EAC1B,mBAAmB,EACnB,cAAc,GAAG,CAAC,UAAkB,EAAE,KAAY,EAAE,QAA0B,OAAO,KAAK,KAAK,CAAC,CAAA,EAAG,KAAK,KAAK,KAAK,CAAC,OAAO,CAAA,EAAA,EAAK,UAAU,GAAG,CAAC,GACpH,KAAI;;AAC7B,IAAA,MAAM,EACJ,SAAS,EACT,YAAY,EACZ,WAAW,EACX,OAAO,EACP,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,GAAG,UAAU,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;IAE9C,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGhB,cAAQ,CAAC,KAAK,CAAC;IAE7DG,eAAS,CAAC,MAAK;QACb,IAAI,kBAAkB,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE;AACtD,YAAA,MAAM,gBAAgB,GAAG,CACvB,UAAuB,EACvB,QAA0D,KACxD;AACF,gBAAA,IAAI,UAAU,CAAC,kBAAkB,EAAE;AACjC,oBAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CACzC,CAAA,+CAAA,EAAkD,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,CAAA,EAAA,CAAI,CAC7F;AAED,oBAAA,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;gBACtD;qBAAO;AACL,oBAAA,QAAQ,CACN,MAAM,CAAC,OAAO,CACZ,CAAA,iCAAA,EAAoC,UAAU,CAAC,IAAI,CAAA,EAAA,EAAK,UAAU,CAAC,OAAO,CAAA,EAAA,CAAI,CAC/E,EACD,IAAI,CACL;gBACH;AACF,YAAA,CAAC;AAED,YAAA,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAAe,KAAU;gBAC1D,aAAa,CAAC,IAAI,CAAC;AACrB,YAAA,CAAC;AAED,YAAA,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,OAAe,KAAU;AACzD,gBAAA,UAAU,EAAE;AACd,YAAA,CAAC;AAED,YAAA,MAAM,YAAY,GAAG,CACnB,OAAe,EACf,UAAwB,KAChB;gBACR,kBAAkB,CAAC,KAAK,CAAC;AAC3B,YAAA,CAAC;AAED,YAAA,eAAe,CACb,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,CACb;QACH;IACF,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,QAAQ,GAAGc,0CAAa,EAAE;AAChC,IAAA,MAAM,gBAAgB,GAAGC,qDAAwB,CAC/C,kBAAkB,KAAI,CAAA,EAAA,GAAA,oBAAoB,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI;UACpD,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,gBAAgB;UACvD,gBAAgB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,CACpB;AAED,IAAA,MAAM,aAAa,GAAG,OAAO,UAAkB,KAAI;QACjD,MAAM,SAAS,GAAG,MAAK;AACrB,YAAA,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;gBACnC,SAAS,CAAC,UAAU,CAAC;YACvB;AACF,QAAA,CAAC;AAED,QAAA,MAAM,OAAO,GAAG,CAAC,KAAY,KAAI;AAC/B,YAAA,IAAI,KAAK,YAAYC,yDAA4B,EAAE;AACjD,gBAAA,MAAM,MAAM,GAAGC,4CAAe,CAAC,UAAU,CAAC;AAC1C,gBAAA,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,iBAAiB,MAAI,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,mBAAmB,CAAA,EAAE;AAC5D,oBAAA,MAAM,CAAC,IAAI,CACT,CAAA,EAAGC,2CAAc,CAAA,EAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,iBAAiB,CAAA,CAAE,CAC7E;gBACH;qBAAO;AACL,oBAAA,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC;gBAC3C;YACF;iBAAO;AACL,gBAAA,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC;AACjC,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YACrB;AACF,QAAA,CAAC;QAED,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;AACrD,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,OAAO,UAAkB,KAAI;;QACvD,IAAI,CAAC,QAAQ,EAAE;YACb,aAAa,CAAC,UAAU,CAAC;YACzB;QACF;QAEA,IAAI,CAACC,0CAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE;YACrD;QACF;AAEA,QAAA,MAAM,MAAM,GAAGF,4CAAe,CAAC,UAAU,CAAC;AAE1C,QAAA,IAAIG,8CAAiB,CAAC,UAAU,CAAC,EAAE;YACjC,aAAa,CAAC,UAAU,CAAC;YACzB;QACF;QAEA,IAAI,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,oBAAoB,EAAE;AAChC,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA,EAAG,MAAM,CAAC,oBAAoB,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClG;QACF;QAEA,IAAI,aAAa,KAAI,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,gBAAgB,CAAA,EAAE;YAC7C,MAAM,QAAQ,GAAGC,mDAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAE7D,YAAA,MAAM,eAAe,GAAG,UAAU,CAAC,MAAK;AACtC,gBAAA,IAAI,WAAW,EAAE,KAAK,KAAK,EAAE;oBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,WAAY;gBAC5C;AAAO,qBAAA,IAAI,WAAW,EAAE,KAAK,SAAS,EAAE;oBACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,YAAa;gBAC7C;YACF,CAAC,EAAE,IAAI,CAAC;AAER,YAAA,QAAQ,CAAC,gBAAgB,CACvB,kBAAkB,EAClB,MAAK;AACH,gBAAA,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE;oBACzC,YAAY,CAAC,eAAe,CAAC;gBAC/B;AACF,YAAA,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AAED,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ;YAC/B;QACF;AAEA,QAAA,IAAI,WAAW,EAAE,KAAK,KAAK,EAAE;AAC3B,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;QAClD;AAAO,aAAA,IAAI,WAAW,EAAE,KAAK,SAAS,EAAE;AACtC,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;QACnD;aAAO;YACL,cAAc,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,+CAA+C,CAAC,EAAE,MAAM,CAAC;QAChG;AACF,IAAA,CAAC;IAED,MAAM,gBAAgB,GAAG;AACvB,UAAE,KAAK,CAAC,YAAY;AACpB,UAAE,KAAK,CAAC,SAAS,CAAC;IAEpB,MAAM,qBAAqB,GAAG,MAAK;QACjC,IAAI,kBAAkB,EAAE;AACtB,YAAA,MAAM,2BAA2B,GAC/B,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,GAAG;YACxC,OAAO,CAAA,EAAA,EAAK,2BAA2B,CAAA,CAAE;QAC3C;QACA,OAAO,CAAA,EAAG,YAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,GAAA,CAAK;AAC3C,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GACf,YAAY,IAAI;UACZ,qBAAqB;AACvB,UAAE,KAAK,IAAI,gBAAgB;IAE/B,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,IACE,YAAY;YACZ,WAAW;AACX,YAAA,OAAO,mBAAmB,KAAK,UAAU,EACzC;YACA,mBAAmB,CAAC,YAAY,CAAC;QACnC;AACF,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,OACvBZ,cAAA,CAACa,uBAAY,CAAC,OAAO,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EAC3BX,eAAA,CAACnB,MAAI,EAAA,EAAC,EAAE,EAAC,qBAAqB,EAAA,QAAA,EAAA,CAC3B,kBAAkB,KACjBiB,cAAA,CAACa,uBAAY,CAAC,IAAI,EAAA,EAAC,OAAO,EAAA,IAAA,EAAC,QAAQ,EAAE,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAA,QAAA,EACjEX,eAAA,CAAClB,UAAQ,EAAA,EACP,GAAG,EAAE,CAAC,EACN,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,iBAAiB,EAAE;AAChB,6BAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG;AACvB,6BAAA,GAAG,EAAE,EAAA,QAAA,EAAA,CAERgB,cAAA,CAACf,cAAY,EAAA,EAAC,GAAG,EAAE6B,0CAAa,CAAC,cAAc,CAAC,EAAA,CAAI,EAAA,YAAA,CAAA,EAAA,CAE3C,EAAA,CACO,CACrB,EACA,gBAAgB,IACf,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,KAAI;;AACvC,oBAAA,MAAM,WAAW,GACf,CAAA,EAAA,GAAA,CAAA,EAAA,GAAAN,4CAAe,CAAC,eAAe,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,eAAe;AAElE,oBAAA,IACE,QAAQ;wBACR,CAACE,0CAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,EACtD;AACA,wBAAA,QACEV,cAAA,CAACa,uBAAY,CAAC,IAAI,EAAA,EAAC,OAAO,EAAA,IAAA,EAAuB,QAAQ,EAAA,IAAA,EAAA,QAAA,EACvDX,eAAA,CAAChB,iBAAe,EAAA,EACd,YAAY,EAAE,YAAY,EAAA,QAAA,EAAA,CAG1Bc,eAACf,cAAY,EAAA,EAAC,GAAG,EAAE6B,0CAAa,CAAC,eAAe,CAAC,EAAA,CAAI,EACpDC,uCAAU,CAAC,WAAW,CAAC,EACxBf,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAyB,KAJpB,eAAe,CAKJ,IARY,eAAe,CAS3B;oBAExB;AAEA,oBAAA,QACEA,cAAA,CAACa,uBAAY,CAAC,IAAI,IAChB,OAAO,EAAA,IAAA,EAEP,QAAQ,EAAE,MAAM,mBAAmB,CAAC,eAAe,CAAC,EAAA,QAAA,EAEpDX,eAAA,CAAClB,UAAQ,EAAA,EACP,GAAG,EAAE,CAAC,EACN,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,iBAAiB,EAAE;AAChB,iCAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG;iCACvB,GAAG,EAAE,aAERgB,cAAA,CAACf,cAAY,IAAC,GAAG,EAAE6B,0CAAa,CAAC,eAAe,CAAC,GAAI,EACpDC,uCAAU,CAAC,WAAW,CAAC,IACf,EAAA,EAbN,eAAe,CAcF;gBAExB,CAAC,CAAC,KAEFf,cAAA,CAAA,MAAA,EAAA,EAAM,EAAE,EAAC,qBAAqB,EAAA,QAAA,EAAE,8CAA8CgB,mDAAsB,CAClG,gBAAgB,CACjB,CAAA,eAAA,CAAiB,GAAQ,CAC3B,CAAA,EAAA,CACI,EAAA,CACc,CACxB;AAED,IAAA,MAAM,gBAAgB,GAAG,MACvB,cAAc,GAAG,IAAI,IACnBhB,eAACa,uBAAY,CAAC,OAAO,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EAC3BX,eAAA,CAACnB,MAAI,IAAC,EAAE,EAAC,qBAAqB,EAAA,QAAA,EAAA,CAC3B,OAAO,OAAO,KAAK,QAAQ,KAC1BiB,cAAA,CAACa,uBAAY,CAAC,IAAI,EAAA,EAChB,OAAO,EAAA,IAAA,EACP,QAAQ,EAAE,MAAM,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,YAEnDb,cAAA,CAAChB,UAAQ,EAAA,EACP,GAAG,EAAE,CAAC,EACN,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,iBAAiB,EAAE;AAChB,6BAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG;6BACvB,GAAG,EAAE,+BAGC,EAAA,CACO,CACrB,EACA,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,MACrCgB,cAAA,CAACa,uBAAY,CAAC,IAAI,EAAA,EAChB,OAAO,EAAA,IAAA,EAEP,QAAQ,EAAE,YAAY,CAAC,OAAO,EAAA,QAAA,EAE9Bb,cAAA,CAAChB,UAAQ,EAAA,EACP,GAAG,EAAE,CAAC,EACN,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,iBAAiB,EAAE;AAChB,6BAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG;6BACvB,GAAG,EAAE,EAAA,QAAA,EAEP,YAAY,CAAC,KAAK,GACV,EAAA,EAZN,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAE,CAaX,CACrB,CAAC,EACFgB,cAAA,CAACa,uBAAY,CAAC,IAAI,EAAA,EAChB,OAAO,EAAA,IAAA,EACP,QAAQ,EAAE,MAAK;AACb,wBAAA,UAAU,EAAE;AACZ,wBAAA,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;AACtC,4BAAA,YAAY,EAAE;wBAChB;oBACF,CAAC,EAAA,QAAA,EAEDb,eAAChB,UAAQ,EAAA,EACP,GAAG,EAAE,CAAC,EACN,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,iBAAiB,EAAE;AAChB,6BAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG;AACvB,6BAAA,GAAG,EAAE,EAAA,QAAA,EAAA,YAAA,EAAA,CAGC,EAAA,CACO,CAAA,EAAA,CACf,EAAA,CACc,CACxB;AAEH,IAAA,IAAI,OAAO,eAAe,KAAK,WAAW,IAAI,aAAa,EAAE;AAC3D,QAAA,MAAM,UAAU,GAAG8B,0CAAa,CAAC,aAAa,CAAC;AAC/C,QAAA,eAAe,IACbd,cAAA,CAAA,KAAA,EAAA,EACE,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,EAAE,EACT,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAC7B,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,CAAA,EAAG,aAAa,CAAA,KAAA,CAAO,EAAA,CAC5B,CACH;IACH;AAEA,IAAA,QACEE,eAAA,CAAC,QAAQ,EAAA,EACP,EAAE,EAAC,yBAAyB,EAC5B,SAAS,EAAE,SAAS,IAAI,EAAE,EAC1B,YAAY,EAAE,CAAC,EACf,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EAAA,QAAA,EAAA,CAEnC,kBAAkB,KACjBF,cAAA,CAAC,WAAW,EAAA,EACV,WAAW,EAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAC5C,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,YAAY,EAAE,EACzC,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,oBAAoB,EAAA,CAC/B,CACH,EAEDE,eAAA,CAACW,uBAAY,CAAC,IAAI,eAChBb,cAAA,CAACa,uBAAY,CAAC,OAAO,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EAC3BX,eAAA,CAAC,MAAM,EAAA,EACL,SAAS,EAAC,EAAE,EACZ,EAAE,EAAC,uBAAuB,EAC1B,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAAA,CAEjB,eAAe,EACf,WAAW,EACX,cAAc,CAAA,EAAA,CACR,EAAA,CACY,EAEvBF,cAAA,CAACa,uBAAY,CAAC,MAAM,EAAA,EAAA,QAAA,EACjB,CAAC,QAAQ;6BACP,SAAS,IAAI;kCACV,gBAAgB;kCAChB,gBAAgB,EAAE,CAAC,GACL,CAAA,EAAA,CACJ,CAAA,EAAA,CACX;AAEf;;AC1bO,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;AAC3C,IAAA,iBAAiB,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3D,CAAA,CAAC,CAAa;;;;;;AAMX,EAAA,EAAA,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS;CAC7B;AAEM,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;IAClD,iBAAiB,EAAE,CAAC,IAAI,KACtB,CAAC,CAAC,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,QAAQ,CACpE,IAAI,CACL;AACJ,CAAA,CAAC,CAAe;AACN,SAAA,EAAA,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAA;;;;;;;;AAQtB,gBAAA,EAAA,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAA;;;;;;;;;;AAU3C,EAAA,EAAA,CAAC,KAAK,KACN,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG;AACvB,MAAE,CAAA,eAAA,EAAkB,KAAK,CAAC,GAAG,CAAA;oCACC,KAAK,CAAC,YAAY,CAAA,CAAA;AAChD,MAAE,CAAA;;;;;AAKsB,4BAAA,EAAA,KAAK,CAAC,YAAY,CAAA;AACtC,SAAA,CAAA;;AAEN,EAAA,EAAA,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,IAAI,CAAA,eAAA,EAAkB,KAAK,CAAC,YAAY,CAAA,GAAA,CAAK;;AAE1E,EAAA,EAAA,CAAC,KAAK,KACN,KAAK,CAAC,YAAY;KACjB,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAC7B,IAAA,CAAA;;AAE0B,4BAAA,EAAA,KAAK,CAAC,YAAY,CAAA;AACjB,6BAAA,EAAA,KAAK,CAAC,YAAY,CAAA;;;;AAIhB,+BAAA,EAAA,KAAK,CAAC,YAAY,CAAA;AACjB,gCAAA,EAAA,KAAK,CAAC,YAAY,CAAA;;AAE/C,IAAA,CAAA,CAAA;;;AAGmB,sBAAA,EAAA,CAAC,KAAK,KAAK,KAAK,CAAC,iBAAiB,CAAA;;CAEzD;AAEM,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAIrC;AAEM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;IACvD,iBAAiB,EAAE,CAAC,IAAI,KACtB,CAAC,CAAC,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,QAAQ,CACpE,IAAI,CACL;AACJ,CAAA,CAAC,CAAe;;;;;;;;;;;;;;AAcb,EAAA,EAAA,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,IAAI,CAAA,eAAA,EAAkB,KAAK,CAAC,YAAY,CAAA,GAAA,CAAK;;AAE1E,EAAA,EAAA,CAAC,KAAK,KACN,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG;AACvB,MAAE,CAAA,eAAA,EAAkB,KAAK,CAAC,GAAG,CAAA;AACK,uCAAA;AAClC,MAAE,CAAA;;;;;;AAME,SAAA,CAAA;;AAEN,EAAA,EAAA,CAAC,KAAK,KACN,KAAK,CAAC,YAAY;KACjB,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAC7B,IAAA,CAAA;;AAE0B,4BAAA,EAAA,KAAK,CAAC,YAAY,CAAA;AACjB,6BAAA,EAAA,KAAK,CAAC,YAAY,CAAA;;;;AAIhB,+BAAA,EAAA,KAAK,CAAC,YAAY,CAAA;AACjB,gCAAA,EAAA,KAAK,CAAC,YAAY,CAAA;;AAE/C,IAAA,CAAA,CAAA;;;;;;;;;;;;;;;;MAgBC,YAAY,CAAA;;;CAGjB;;ACnHD,MAAM,iBAAiB,GAAG,CAAC,EACzB,gBAAgB,GAAG;IACjB,OAAO;IACP,MAAM;IACN,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,aAAa;AACd,CAAA,EACD,YAAY,EACZ,YAAY,EACZ,GAAG,EACH,sBAAsB,GAAGT,wDAA2B,CAAC,0BAA0B,EAC/E,oBAAoB,GAAG,EAAE,EACzB,SAAS,EACT,kBAAkB,GAAG,IAAI,EACzB,aAAa,GAAG,IAAI,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,QAAQ,GAAG,cAAc,EACzB,OAAO,GAAG,8BAA8B,EACxC,UAAU,EACV,YAAY,EACZ,SAAS,EACT,cAAc,GAAG,CAAC,UAAkB,EAAE,KAAY,EAAE,KAAA,GAA0B,OAAO,KAAK,KAAK,CAAC,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,KAAK,CAAC,OAAO,KAAK,UAAU,CAAA,CAAA,CAAG,CAAC,GACtH,KAAI;;AAC3B,IAAA,MAAM,EACJ,OAAO,EACP,WAAW,EACX,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACnB,GAAG,UAAU,CAAC;AACb,QAAA,YAAY,EAAE,YAAY;AAC3B,KAAA,CAAC;IAEF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGhB,cAAQ,CAAC,KAAK,CAAC;IAE7DG,eAAS,CAAC,MAAK;QACb,IAAI,kBAAkB,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE;AACtD,YAAA,MAAM,gBAAgB,GAAG,CACvB,UAAuB,EACvB,QAA0D,KACxD;AACF,gBAAA,IAAI,UAAU,CAAC,kBAAkB,EAAE;AACjC,oBAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CACzC,CAAA,+CAAA,EAAkD,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,CAAA,EAAA,CAAI,CAC7F;AAED,oBAAA,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;gBACtD;qBAAO;AACL,oBAAA,QAAQ,CACN,MAAM,CAAC,OAAO,CACZ,CAAA,iCAAA,EAAoC,UAAU,CAAC,IAAI,CAAA,EAAA,EAAK,UAAU,CAAC,OAAO,CAAA,EAAA,CAAI,CAC/E,EACD,IAAI,CACL;gBACH;AACF,YAAA,CAAC;AAED,YAAA,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAAe,KAAU;gBAC1D,aAAa,CAAC,IAAI,CAAC;AACrB,YAAA,CAAC;AAED,YAAA,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,OAAe,KAAU;AACzD,gBAAA,UAAU,EAAE;AACd,YAAA,CAAC;AAED,YAAA,MAAM,YAAY,GAAG,CACnB,OAAe,EACf,UAAwB,KAChB;gBACR,kBAAkB,CAAC,KAAK,CAAC;AAC3B,YAAA,CAAC;AAED,YAAA,eAAe,CACb,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,CACb;QACH;IACF,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,QAAQ,GAAGc,0CAAa,EAAE;AAChC,IAAA,MAAM,gBAAgB,GAAGC,qDAAwB,CAC/C,kBAAkB,KAAI,CAAA,EAAA,GAAA,oBAAoB,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI;UACpD,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,gBAAgB;UACvD,gBAAgB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,CACpB;AAED,IAAA,MAAM,aAAa,GAAG,OAAO,UAAkB,KAAI;QACjD,MAAM,SAAS,GAAG,MAAK;AACrB,YAAA,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;gBACnC,SAAS,CAAC,UAAU,CAAC;YACvB;AACF,QAAA,CAAC;AAED,QAAA,MAAM,OAAO,GAAG,CAAC,KAAY,KAAI;AAC/B,YAAA,IAAI,KAAK,YAAYC,yDAA4B,EAAE;AACjD,gBAAA,MAAM,MAAM,GAAGC,4CAAe,CAAC,UAAU,CAAC;AAC1C,gBAAA,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,iBAAiB,MAAI,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,mBAAmB,CAAA,EAAE;AAC5D,oBAAA,MAAM,CAAC,IAAI,CACT,CAAA,EAAGC,2CAAc,CAAA,EAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,iBAAiB,CAAA,CAAE,CAC7E;gBACH;qBAAO;AACL,oBAAA,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC;gBAC3C;YACF;iBAAO;AACL,gBAAA,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC;YACnC;AACF,QAAA,CAAC;QAED,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;AACrD,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,OAAO,UAAkB,KAAI;;QACvD,IAAI,CAAC,QAAQ,EAAE;YACb,aAAa,CAAC,UAAU,CAAC;YACzB;QACF;QAEA,IAAI,CAACC,0CAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE;YACrD;QACF;AAEA,QAAA,MAAM,MAAM,GAAGF,4CAAe,CAAC,UAAU,CAAC;AAE1C,QAAA,IAAIG,8CAAiB,CAAC,UAAU,CAAC,EAAE;YACjC,aAAa,CAAC,UAAU,CAAC;YACzB;QACF;QAEA,IAAI,MAAM,aAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,oBAAoB,EAAE;AAChC,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA,EAAG,MAAM,CAAC,oBAAoB,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAClG;QACF;QAEA,IAAI,aAAa,KAAI,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,gBAAgB,CAAA,EAAE;YAC7C,MAAM,QAAQ,GAAGC,mDAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAE7D,YAAA,MAAM,eAAe,GAAG,UAAU,CAAC,MAAK;AACtC,gBAAA,IAAI,WAAW,EAAE,KAAK,KAAK,EAAE;oBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,WAAY;gBAC5C;AAAO,qBAAA,IAAI,WAAW,EAAE,KAAK,SAAS,EAAE;oBACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,YAAa;gBAC7C;YACF,CAAC,EAAE,IAAI,CAAC;AAER,YAAA,QAAQ,CAAC,gBAAgB,CACvB,kBAAkB,EAClB,MAAK;AACH,gBAAA,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE;oBACzC,YAAY,CAAC,eAAe,CAAC;gBAC/B;AACF,YAAA,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf;AAED,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ;YAC/B;QACF;AAEA,QAAA,IAAI,WAAW,EAAE,KAAK,KAAK,EAAE;AAC3B,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;QAClD;AAAO,aAAA,IAAI,WAAW,EAAE,KAAK,SAAS,EAAE;AACtC,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;QACnD;aAAO;YACL,cAAc,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,+CAA+C,CAAC,EAAE,MAAM,CAAC;QAChG;AACF,IAAA,CAAC;IAED,MAAM,gBAAgB,GAAG;AACvB,UAAE,KAAK,CAAC,YAAY;AACpB,UAAE,KAAK,CAAC,SAAS,CAAC;AAEpB,IAAA,QACEV,eAAA,CAAAe,mBAAA,EAAA,EAAA,QAAA,EAAA,CACG,kBAAkB,KACjBjB,cAAA,CAAC,WAAW,EAAA,EACV,WAAW,EAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAC5C,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,YAAY,EAAE,EACzC,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,oBAAoB,EAAA,CAC/B,CACH,EAEDE,eAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAE,SAAS,IAAI,EAAE,EAAA,aAAA,EAAc,qBAAqB,aAChE,kBAAkB,KACjBA,eAAA,CAAC,QAAQ,EAAA,EACP,GAAG,EAAE,GAAG,IAAI,CAAC,EAEb,YAAY,EAAE,YAAY,IAAI,CAAC,EAC/B,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAClE,OAAO,EAAE,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,CAEvCF,cAAA,CAAC,YAAY,EAAA,EAAC,GAAG,EAAEc,0CAAa,CAAC,cAAc,CAAC,EAAA,CAAI,EAAA,YAAA,CAAA,EAAA,EANhD,cAAc,CAQT,CACZ,EACA,gBAAgB,IACf,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,KAAI;;AACvC,wBAAA,MAAM,WAAW,GACf,CAAA,EAAA,GAAA,CAAA,EAAA,GAAAN,4CAAe,CAAC,eAAe,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,eAAe;AAClE,wBAAA,IACE,QAAQ;4BACR,CAACE,0CAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,EACtD;AACA,4BAAA,QACER,eAAA,CAAC,eAAe,EAAA,EACd,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,iBAAiB,EAAE;AAChB,qCAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG;AACvB,qCAAA,GAAG,EAAE,EACR,YAAY,EAAE,YAAY,IAAI,CAAC,EAC/B,GAAG,EAAE,GAAG,IAAI,CAAC,EAAA,QAAA,EAAA,CAGbF,eAAC,YAAY,EAAA,EAAC,GAAG,EAAEc,0CAAa,CAAC,eAAe,CAAC,EAAA,CAAI,EACpDC,uCAAU,CAAC,WAAW,CAAC,EACxBf,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAyB,CAAA,EAAA,EAJpB,eAAe,CAKJ;wBAEtB;AAEA,wBAAA,QACEE,eAAA,CAAC,QAAQ,EAAA,EACP,YAAY,EAAE,gBAAgB,CAAC,GAAG,EAAE,EACpC,iBAAiB,EAAE;AAChB,iCAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG;AACvB,iCAAA,GAAG,EAAE,EACR,YAAY,EAAE,YAAY,IAAI,CAAC,EAC/B,GAAG,EAAE,GAAG,IAAI,CAAC,EAEb,OAAO,EAAE,MAAM,mBAAmB,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,CAEnDF,eAAC,YAAY,EAAA,EACX,GAAG,EAAEc,0CAAa,CAAC,eAAe,CAAC,GACrB,EACfC,uCAAU,CAAC,WAAW,CAAC,KANnB,eAAe,CAOX;AAEf,oBAAA,CAAC,CAAC,KAEFf,mCAAO,CAAA,2CAAA,EAA8CgB,mDAAsB,CACzE,gBAAgB,CACjB,CAAA,eAAA,CAAiB,EAAA,CAAQ,CAC3B,CAAA,EAAA,CACI,CAAA,EAAA,CACN;AAEP;;;;;;","x_google_ignoreList":[2,3,4,5,6,7,9,10,11,12]}