@likec4/language-server 1.53.0 → 1.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,6 +7,12 @@ LikeC4 Language Server Protocol (LSP) based on [langium](https://github.com/lang
7
7
  >
8
8
  > Please use the main [`likec4`](https://www.npmjs.com/package/likec4) package instead.
9
9
 
10
+ > [!TIP]
11
+ > For standalone LSP server usage (Neovim, Zed, and other editors), install [`@likec4/lsp`](https://www.npmjs.com/package/@likec4/lsp):
12
+ > ```sh
13
+ > npm install -g @likec4/lsp
14
+ > ```
15
+
10
16
  ## Getting help
11
17
 
12
18
  We are always happy to help you get started:
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- console.error('This package is not available as a standalone LSP server. Use `likec4 lsp` instead.')
3
+ console.error('This package is not available as a standalone LSP server. Use `@likec4/lsp` or `likec4 lsp` instead.')
4
4
  process.exit(1)
@@ -1,3 +1,3 @@
1
- import{a as e,r as t}from"./likec4lib.mjs";import{n}from"./noop.mjs";import{c as r,n as i,o as a,oi as o,s}from"./utils.mjs";import{isLikeC4Config as c,loadConfig as l}from"@likec4/config/node";import{fdir as u}from"fdir";import{SimpleCache as d,URI as f,UriUtils as p}from"langium";import{NodeFileSystemProvider as m}from"langium/node";import{mkdirSync as h,statSync as g}from"node:fs";import{unlink as _,writeFile as v}from"node:fs/promises";import{basename as y,dirname as b}from"node:path";import{objectHash as x,onNextTick as S}from"@likec4/core/utils";import C from"chokidar";import w from"p-queue";import{exact as T}from"@likec4/core";import E from"json5";import D from"p-limit";import{indexBy as O,prop as k}from"remeda";import{Position as A,Range as j}from"vscode-languageserver-types";const M=o.getChild(`manual-layouts`),N=`.likec4.snap`,isManualLayoutFile=e=>e.endsWith(N);function fileName(e){return`${e}${N}`}function viewIdFromURI(e){let t=p.basename(e);return isManualLayoutFile(t)?t.slice(0,-12):null}function getManualLayoutsOutDir(e){return p.resolvePath(e.folderUri,e.config.manualLayouts?.outDir??`.likec4`)}const P={manualLayouts:e=>new DefaultLikeC4ManualLayouts(e)},F=`file://./`;var DefaultLikeC4ManualLayouts=class{cache;listeners=[];#e=D(1);constructor(e){this.services=e,this.cache=new d,S(()=>{e.workspace.ProjectsManager.onProjectsUpdate(()=>{this.clearCaches()})})}async handleFileSystemUpdate(e){let t=e.update??e.delete,n=viewIdFromURI(t)??void 0,r=this.services.workspace.ProjectsManager.ownerProjectId(t);if(this.cache.delete(r),`delete`in e){this.triggerUpdate(T({removed:t,projectId:r,viewId:n}));return}let i=this.services.workspace.ProjectsManager.getProject(r);if(!n){let e=await this.readSnapshot(t,i);e?n=e.id:(M.error(`File ${t} does not exist or is not a valid manual layout file`),n=`index`)}this.triggerUpdate({updated:t,projectId:r,viewId:n})}onManualLayoutUpdate(e){return this.listeners.push(e),{dispose:()=>{let t=this.listeners.indexOf(e);t!==-1&&this.listeners.splice(t,1)}}}async readManualLayouts(e){let t=M.getChild(e.id),n=this.services.workspace.FileSystemProvider,r=getManualLayoutsOutDir(e),i=[];try{let a=await n.scanDirectory(r,isManualLayoutFile);if(a.length===0)return null;for(let r of a)try{let t=await n.readFile(r.uri),a=E.parse(t),o=this.resolveIconPathsAfterRead(a,e.folderUri);i.push({...o,_layout:`manual`})}catch(e){t.warn(`Failed to read view snapshot ${r.uri.fsPath}`,{err:e})}i.length&&t.trace`read manual layouts for ${e.id}, found ${i.length}`}catch(n){t.warn(`Failed to read manual layouts for ${e.folderUri.fsPath}`,{err:n})}if(i.length===0)return null;let a=O(i,k(`id`));return{hash:x(a),views:a}}async readSnapshot(e,t){let n=this.services.workspace.FileSystemProvider;try{let r=await n.readFile(e),i=E.parse(r);if(!t){let n=this.services.workspace.ProjectsManager.ownerProjectId(e);t=this.services.workspace.ProjectsManager.getProject(n)}return{...this.resolveIconPathsAfterRead(i,t.folderUri),_layout:`manual`}}catch(t){return M.warn(`Failed to read view snapshot ${e.fsPath}`,{err:t}),null}}async read(e){return await this.#e(async()=>{let t=this.cache.get(e.id);if(t!==void 0)return t;let n=await this.readManualLayouts(e);return this.cache.set(e.id,n),n})}async write(e,t){this.cache.delete(e.id);let n=M.getChild(e.id),r=getManualLayoutsOutDir(e),i=p.joinPath(r,fileName(t.id));if(`manualLayout`in t){let{manualLayout:e,...n}=t;t=n}let a=E.stringify(this.normalizeIconPathsForWrite(t,e.folderUri),{space:2,quote:`'`}),o={uri:i.toString(),range:j.create(A.create(0,0),A.create(a.split(`
1
+ import{t as e}from"./icons.mjs";import{isLikeC4Builtin as t}from"../likec4lib.mjs";import{n}from"./noop.mjs";import{c as r,n as i,o as a,oi as o,s}from"./utils.mjs";import{isLikeC4Config as c,loadConfig as l}from"@likec4/config/node";import{fdir as u}from"fdir";import{SimpleCache as d,URI as f,UriUtils as p}from"langium";import{NodeFileSystemProvider as m}from"langium/node";import{mkdirSync as h,statSync as g}from"node:fs";import{unlink as _,writeFile as v}from"node:fs/promises";import{basename as y,dirname as b}from"node:path";import{objectHash as x,onNextTick as S}from"@likec4/core/utils";import C from"chokidar";import w from"p-queue";import{exact as T}from"@likec4/core";import E from"json5";import D from"p-limit";import{indexBy as O,prop as k}from"remeda";import{Position as A,Range as j}from"vscode-languageserver-types";const M=o.getChild(`manual-layouts`),N=`.likec4.snap`,isManualLayoutFile=e=>e.endsWith(N);function fileName(e){return`${e}${N}`}function viewIdFromURI(e){let t=p.basename(e);return isManualLayoutFile(t)?t.slice(0,-12):null}function getManualLayoutsOutDir(e){return p.resolvePath(e.folderUri,e.config.manualLayouts?.outDir??`.likec4`)}const P={manualLayouts:e=>new DefaultLikeC4ManualLayouts(e)},F=`file://./`;var DefaultLikeC4ManualLayouts=class{cache;listeners=[];#e=D(1);constructor(e){this.services=e,this.cache=new d,S(()=>{e.workspace.ProjectsManager.onProjectsUpdate(()=>{this.clearCaches()})})}async handleFileSystemUpdate(e){let t=e.update??e.delete,n=viewIdFromURI(t)??void 0,r=this.services.workspace.ProjectsManager.ownerProjectId(t);if(this.cache.delete(r),`delete`in e){this.triggerUpdate(T({removed:t,projectId:r,viewId:n}));return}let i=this.services.workspace.ProjectsManager.getProject(r);if(!n){let e=await this.readSnapshot(t,i);e?n=e.id:(M.error(`File ${t} does not exist or is not a valid manual layout file`),n=`index`)}this.triggerUpdate({updated:t,projectId:r,viewId:n})}onManualLayoutUpdate(e){return this.listeners.push(e),{dispose:()=>{let t=this.listeners.indexOf(e);t!==-1&&this.listeners.splice(t,1)}}}async readManualLayouts(e){let t=M.getChild(e.id),n=this.services.workspace.FileSystemProvider,r=getManualLayoutsOutDir(e),i=[];try{let a=await n.scanDirectory(r,isManualLayoutFile);if(a.length===0)return null;for(let r of a)try{let t=await n.readFile(r.uri),a=E.parse(t),o=this.resolveIconPathsAfterRead(a,e.folderUri);i.push({...o,_layout:`manual`})}catch(e){t.warn(`Failed to read view snapshot ${r.uri.fsPath}`,{err:e})}i.length&&t.trace`read manual layouts for ${e.id}, found ${i.length}`}catch(n){t.warn(`Failed to read manual layouts for ${e.folderUri.fsPath}`,{err:n})}if(i.length===0)return null;let a=O(i,k(`id`));return{hash:x(a),views:a}}async readSnapshot(e,t){let n=this.services.workspace.FileSystemProvider;try{let r=await n.readFile(e),i=E.parse(r);if(!t){let n=this.services.workspace.ProjectsManager.ownerProjectId(e);t=this.services.workspace.ProjectsManager.getProject(n)}return{...this.resolveIconPathsAfterRead(i,t.folderUri),_layout:`manual`}}catch(t){return M.warn(`Failed to read view snapshot ${e.fsPath}`,{err:t}),null}}async read(e){return await this.#e(async()=>{let t=this.cache.get(e.id);if(t!==void 0)return t;let n=await this.readManualLayouts(e);return this.cache.set(e.id,n),n})}async write(e,t){this.cache.delete(e.id);let n=M.getChild(e.id),r=getManualLayoutsOutDir(e),i=p.joinPath(r,fileName(t.id));if(`manualLayout`in t){let{manualLayout:e,...n}=t;t=n}let a=E.stringify(this.normalizeIconPathsForWrite(t,e.folderUri),{space:2,quote:`'`}),o={uri:i.toString(),range:j.create(A.create(0,0),A.create(a.split(`
2
2
  `).length-1,1))};n.debug`write snapshot of ${t.id} in project ${e.id} to ${i.fsPath}`;let s=this.services.workspace.FileSystemProvider;try{await s.writeFile(i,a+`
3
3
  `),this.triggerUpdate({updated:i,projectId:e.id,viewId:t.id})}catch(e){n.warn(`Failed to write snapshot ${t.id} to ${i.fsPath}`,{err:e})}return o}async remove(e,t){this.cache.delete(e.id);let n=M.getChild(e.id),r=getManualLayoutsOutDir(e),i=p.joinPath(r,fileName(t));n.debug`delete snapshot of ${t} in project ${e.id}. File: ${i.fsPath}`;let a={uri:i.toString(),range:j.create(0,0,0,0)};try{if(!await this.services.workspace.FileSystemProvider.deleteFile(i))return n.warn`Snapshot ${t} did not exist at ${i.fsPath}`,null;this.triggerUpdate({removed:i,projectId:e.id,viewId:t})}catch(e){n.warn(`Failed to delete snapshot ${t} from ${i.fsPath}`,{err:e})}return a}clearCaches(){M.trace`clear caches`,this.cache.clear()}triggerUpdate(e){for(let t of this.listeners)i(()=>t(e))}normalizeIconPathsForWrite(e,t){let n=e.nodes.map(e=>{if(!e.icon||typeof e.icon!=`string`)return e;if(e.icon.startsWith(`file://`)){let n=f.parse(e.icon),r=p.relative(t,n);return r.startsWith(`..`)?e:{...e,icon:`${F}${r}`}}return e});return{...e,nodes:n}}resolveIconPathsAfterRead(e,t){let n=e.nodes.map(e=>{if(!e.icon||typeof e.icon!=`string`)return e;if(e.icon.startsWith(F)){let n=e.icon.substring(9),r=p.joinPath(t,n);return{...e,icon:r.toString()}}return e});return{...e,nodes:n}}};const I=o.getChild(`chokidar`),L={fileSystemWatcher:e=>new ChokidarFileSystemWatcher(e)},isAnyLikeC4File=e=>{let t=y(e);return r(t)||c(t)||isManualLayoutFile(t)};var ChokidarFileSystemWatcher=class{watcher;queue=new w({concurrency:1,timeout:5e3});constructor(e){this.services=e}watch(e){if(this.watcher){I.debug`add watching folder: ${e}`,this.watcher.add(e);return}this.watcher=this.createWatcher(e)}async dispose(){if(this.watcher){let e=this.watcher;this.watcher=void 0,await e.close()}}createWatcher(e){I.debug`create watcher for folder: ${e}`;let t=C.watch(e,{ignored:[e=>e.includes(`node_modules`)||e.includes(`.git`),(e,t)=>!!t?.isFile()&&!isAnyLikeC4File(e)],followSymlinks:!0,ignoreInitial:!0}),onAddOrChange=(e,t)=>{t?.isDirectory()||this.enqueueFileOp(`addOrChange: `+e,async()=>{await this.onAddOrChange(e)})};return t.on(`add`,onAddOrChange).on(`change`,onAddOrChange).on(`unlink`,(e,t)=>{t?.isDirectory()||this.enqueueFileOp(`remove: `+e,async()=>{await this.onRemove(e)})}).on(`unlinkDir`,e=>{this.enqueueFileOp(`removeDir: `+e,async()=>{await this.onRemoveDir(e)})}),t}enqueueFileOp(e,t){this.queue.add(async()=>{try{await t()}catch(t){I.warn(`Failed on {fileop}`,{fileop:e,error:t})}}).catch(t=>{I.error(`Error on {fileop}`,{fileop:e,error:t})})}async onAddOrChange(e){let t=this.services.workspace,n=y(e),i=f.file(e);switch(!0){case c(n):I.debug`project file changed: ${e}`,t.ManualLayouts.clearCaches(),await t.ProjectsManager.registerConfigFile(i);break;case r(n):I.debug`file changed: ${e}`,await t.DocumentBuilder.update([i],[]);break;case isManualLayoutFile(n):I.debug`manual layout file changed: ${e}`,t.ManualLayouts.clearCaches(),await t.ManualLayouts.handleFileSystemUpdate({update:i});break;default:I.warn`Unknown file change: ${e}`}}async onRemove(e){let t=this.services.workspace,n=y(e),i=f.file(e);switch(!0){case c(n):I.debug`project file removed: ${e}`,t.ManualLayouts.clearCaches(),await t.ProjectsManager.reloadProjects();break;case r(n):I.debug`file removed: ${e}`,await t.DocumentBuilder.update([],[i]);break;case isManualLayoutFile(n):I.debug`manual layout file removed: ${e}`,await t.ManualLayouts.handleFileSystemUpdate({delete:i});break;default:I.warn`Unknown file removal: ${e}`}}async onRemoveDir(e){I.debug`directory removed: ${e}`;let t=this.services.workspace;t.ProjectsManager.findOverlaped(e).length>0&&(t.ManualLayouts.clearCaches(),await t.ProjectsManager.reloadProjects())}};const R=o.getChild(`filesystem`);function isLikeC4ConfigFile(e,t=!1){return!t&&c(y(e))}function isLikeC4File(e,t=!1){return!t&&r(y(e))}const WithFileSystem=(e=!0)=>({fileSystemProvider:()=>new SymLinkTraversingFileSystemProvider,...e?L:n});var SymLinkTraversingFileSystemProvider=class extends m{async readFile(n){if(t(n))return Promise.resolve(e);try{return await super.readFile(n)}catch(e){return R.warn(`Failed to read file ${n.fsPath}`,{error:e}),``}}async readDirectory(e,t){let n=t?.recursive??!0,r=t?.maxDepth??1/0,i=[];try{let t=new u().withSymlinks({resolvePaths:!1}).exclude(s).withFullPaths().filter(isLikeC4File);n?r!==1/0&&(t=t.withMaxDepth(r)):t=t.withMaxDepth(1);let a=await t.crawl(e.fsPath).withPromise();for(let e of a)i.push({isFile:!0,isDirectory:!1,uri:f.file(e)})}catch(t){R.warn(`Failed to read directory ${e.fsPath}`,{error:t})}return i.sort(a)}async scanProjectFiles(e){return await this.scanDirectory(e,isLikeC4ConfigFile)}async scanDirectory(e,t){let n=[];try{let r=await new u().withSymlinks({resolvePaths:!1}).exclude(s).withFullPaths().filter(t).crawl(e.fsPath).withPromise();for(let e of r)n.push({isFile:!0,isDirectory:!1,uri:f.file(e)})}catch(t){R.warn(`Failed to scan directory {path}`,{path:e.fsPath,error:t})}return n}async loadProjectConfig(e){return await l(e)}async writeFile(e,t){let n=b(e.fsPath),r=g(n,{throwIfNoEntry:!1});if(r?.isFile())throw Error(`Cannot create directory ${n} because a file with the same name exists.`);return r||(R.debug(`creating directory {path}`,{path:n}),h(n,{recursive:!0})),R.debug(`writing file {path}`,{path:e.fsPath}),await v(e.fsPath,t,{encoding:`utf-8`})}async deleteFile(e){try{let t=e.fsPath,n=g(t,{throwIfNoEntry:!1});return n?.isFile()||n?.isSymbolicLink()?(await _(t),R.debug(`deleted file {path}`,{path:t}),!0):(R.warn(`deleteFile failed: {path} does not exist, or is not a file`,{path:t}),!1)}catch(t){R.warn(`Failed to delete file ${e.fsPath}`,{error:t})}return!1}};export{L as n,P as r,WithFileSystem as t};
@@ -0,0 +1,18 @@
1
+ //#region src/generated-lib/icons.d.ts
2
+ declare const groupedIcons: {
3
+ readonly aws: readonly ["activate", "alexa-for-business", "amplify", "apache-mxnet-on-aws", "api-gateway", "app-config", "app-flow", "app-mesh", "app-runner", "app-stream", "app-sync", "application-auto-scaling", "application-composer", "application-cost-profiler", "application-discovery-service", "application-migration-service", "artifact", "athena", "audit-manager", "augmented-ai-a2i", "aurora", "auto-scaling", "backint-agent", "backup", "batch", "billing-conductor", "bottlerocket", "braket", "budgets", "certificate-manager", "chatbot", "chime-sdk", "chime-voice-connector", "chime", "clean-rooms", "client-vpn", "cloud-control-api", "cloud-development-kit", "cloud-directory", "cloud-formation", "cloud-front", "cloud-hsm", "cloud-map", "cloud-search", "cloud-shell", "cloud-trail", "cloud-wan", "cloud-watch", "cloud9", "code-artifact", "code-build", "code-catalyst", "code-commit", "code-deploy", "code-guru", "code-pipeline", "code-star", "code-whisperer", "cognito", "command-line-interface", "comprehend-medical", "comprehend", "compute-optimizer", "config", "connect", "console-mobile-application", "control-tower", "corretto", "cost-and-usage-report", "cost-explorer", "data-exchange", "data-pipeline", "data-sync", "data-zone", "database-migration-service", "deep-composer", "deep-learning-amis", "deep-learning-containers", "deep-lens", "deep-racer", "detective", "dev-ops-guru", "device-farm", "direct-connect", "directory-service", "distro-for-open-telemetry", "document-db", "dynamo-db", "ec2-auto-scaling", "ec2-image-builder", "ec2", "ecs-anywhere", "efs", "eks-anywhere", "eks-cloud", "eks-distro", "elasti-cache", "elastic-beanstalk", "elastic-block-store", "elastic-container-registry", "elastic-container-service", "elastic-disaster-recovery", "elastic-fabric-adapter", "elastic-inference", "elastic-kubernetes-service", "elastic-load-balancing", "elastic-transcoder", "elemental-appliances-software", "elemental-conductor", "elemental-delta", "elemental-link", "elemental-live", "elemental-media-connect", "elemental-media-convert", "elemental-media-live", "elemental-media-package", "elemental-media-store", "elemental-media-tailor", "elemental-server", "emr", "event-bridge", "express-workflows", "fargate", "fault-injection-simulator", "file-cache", "fin-space", "firewall-manager", "forecast", "fraud-detector", "free-rtos", "fsx-for-lustre", "fsx-for-net-app-ontap", "fsx-for-open-zfs", "fsx-for-wfs", "fsx", "game-kit", "game-lift", "game-sparks", "genomics-cli", "global-accelerator", "glue-data-brew", "glue-elastic-views", "glue", "ground-station", "guard-duty", "health-lake", "honeycode", "iam-identity-center", "identity-and-access-management", "inspector", "interactive-video-service", "io-t-1-click", "io-t-analytics", "io-t-button", "io-t-core", "io-t-device-defender", "io-t-device-management", "io-t-edu-kit", "io-t-events", "io-t-express-link", "io-t-fleet-wise", "io-t-greengrass", "io-t-robo-runner", "io-t-site-wise", "io-t-things-graph", "io-t-twin-maker", "iq", "kendra", "key-management-service", "keyspaces", "kinesis-data-analytics", "kinesis-data-streams", "kinesis-firehose", "kinesis-video-streams", "kinesis", "lake-formation", "lambda", "launch-wizard", "lex", "license-manager", "lightsail", "local-zones", "location-service", "lookout-for-equipment", "lookout-for-metrics", "lookout-for-vision", "lumberyard", "macie", "mainframe-modernization", "managed-blockchain", "managed-grafana", "managed-service-for-prometheus", "managed-services", "managed-streaming-for-apache-kafka", "managed-workflows-for-apache-airflow", "management-console", "marketplace-dark", "marketplace-light", "memory-db-for-redis", "migration-evaluator", "migration-hub", "monitron", "mq", "neptune", "network-firewall", "neuron", "nice-dcv", "nice-engin-frame", "nimble-studio", "nitro-enclaves", "omics", "open-3d-engine", "open-search-service", "ops-works", "organizations", "outposts-family", "outposts-rack", "outposts-servers", "panorama", "parallel-cluster", "personal-health-dashboard", "personalize", "pinpoint-apis", "pinpoint", "polly", "private-5g", "private-certificate-authority", "private-link", "professional-services", "proton", "quantum-ledger-database", "quick-sight", "rds-on-vmware", "rds", "re-post", "red-hat-open-shift-service-on-aws", "redshift", "rekognition", "reserved-instance-reporting", "resilience-hub", "resource-access-manager", "resource-explorer", "robo-maker", "route-53", "s3-on-outposts", "sage-maker-ground-truth", "sage-maker-studio-lab", "sage-maker", "savings-plans", "secrets-manager", "security-hub", "security-lake", "server-migration-service", "serverless-application-repository", "service-catalog", "service-management-connector", "shield", "signer", "sim-space-weaver", "simple-email-service", "simple-notification-service", "simple-queue-service", "simple-storage-service-glacier", "simple-storage-service", "site-to-site-vpn", "snowball-edge", "snowball", "snowcone", "snowmobile", "step-functions", "storage-gateway", "sumerian", "supply-chain", "support", "systems-manager", "tensor-flow-on-aws", "textract", "thinkbox-deadline", "thinkbox-frost", "thinkbox-krakatoa", "thinkbox-sequoia", "thinkbox-stoke", "thinkbox-xmesh", "timestream", "tools-and-sdks", "torch-serve", "training-certification", "transcribe", "transfer-family", "transit-gateway", "translate", "trusted-advisor", "verified-access", "verified-permissions", "virtual-private-cloud", "vmware-cloud-on-aws", "vpc-lattice", "waf", "wavelength", "well-architected-tool", "wickr", "work-docs-sdk", "work-docs", "work-link", "work-mail", "work-spaces-family", "x-ray"];
4
+ readonly azure: readonly ["abs-member", "active-directory-connect-health", "activity-log", "administrative-units", "advisor", "ai-at-edge", "ai-studio", "aks-automatic", "aks-istio", "alerts", "all-resources", "analysis-services", "anomaly-detector", "api-center", "api-connections", "api-management-services", "api-proxy", "app-compliance-automation", "app-configuration", "app-registrations", "app-service-certificates", "app-service-domains", "app-service-environments", "app-service-plans", "app-services", "app-space-component", "app-space", "applens", "application-gateway-containers", "application-gateways", "application-group", "application-insights", "application-security-groups", "aquila", "arc-data-services", "arc-kubernetes", "arc-machines", "arc-postgre-sql", "arc-sql-managed-instance", "arc-sql-server", "atm-multistack", "auto-scale", "automanaged-vm", "automation-accounts", "availability-sets", "avs-vm", "azure-a", "azure-ad-b2c", "azure-api-for-fhir", "azure-applied-ai-services", "azure-arc", "azure-attestation", "azure-backup-center", "azure-blockchain-service", "azure-center-for-sap", "azure-chaos-studio", "azure-cloud-shell", "azure-communication-services", "azure-communications-gateway", "azure-compute-galleries", "azure-consumption-commitment", "azure-cosmos-db", "azure-data-catalog", "azure-data-explorer-clusters", "azure-database-maria-db-server", "azure-database-migration-services", "azure-database-my-sql-server", "azure-database-postgre-sql-server-group", "azure-database-postgre-sql-server", "azure-databox-gateway", "azure-databricks", "azure-deployment-environments", "azure-dev-ops", "azure-dev-tunnels", "azure-edge-hardware-center", "azure-experimentation-studio", "azure-fileshares", "azure-firewall-manager", "azure-firewall-policy", "azure-hcp-cache", "azure-hpc-workbenches", "azure-hybrid-center", "azure-information-protection", "azure-io-t-operations", "azure-lighthouse", "azure-load-testing", "azure-managed-grafana", "azure-managed-redis", "azure-maps-accounts", "azure-media-service", "azure-migrate", "azure-monitor-dashboard", "azure-monitor-pipeline", "azure-monitors-for-sap-solutions", "azure-net-app-files", "azure-network-function-manager-functions", "azure-network-function-manager", "azure-object-understanding", "azure-open-ai", "azure-operator-5g-core", "azure-operator-insights", "azure-operator-nexus", "azure-operator-service-manager", "azure-orbital", "azure-programmable-connectivity", "azure-purview-accounts", "azure-quotas", "azure-red-hat-open-shift", "azure-sentinel", "azure-service-bus", "azure-sphere", "azure-spring-apps", "azure-sql-edge", "azure-sql-server-stretch-databases", "azure-sql-vm", "azure-sql", "azure-stack-edge", "azure-stack-hci-sizer", "azure-stack", "azure-storage-mover", "azure-support-center-blue", "azure-sustainability", "azure-synapse-analytics", "azure-token-service", "azure-video-indexer", "azure-virtual-desktop", "azure-vmware-solution", "azure-workbooks", "azurite", "backlog", "backup-vault", "bare-metal-infrastructure", "bastions", "batch-accounts", "batch-ai", "biz-talk", "blob-block", "blob-page", "blockchain-applications", "blueprints", "bonsai", "bot-services", "branch", "breeze", "browser", "bug", "builds", "business-process-tracking", "cache-redis", "cache", "capacity-reservation-groups", "capacity", "cdn-profiles", "central-service-instance-for-sap", "ceres", "change-analysis", "client-apps", "cloud-services-classic", "cloud-services-extended-support", "cloud-test", "code-optimization", "code", "cognitive-search", "cognitive-services-decisions", "cognitive-services", "collaborative-service", "commit", "community-images", "compliance-center", "compliance", "compute-fleet", "computer-vision", "conditional-access", "confidential-ledgers", "connected-cache", "connected-vehicle-platform", "connections", "consortium", "container-apps-environments", "container-instances", "container-registries", "container-services-deprecated", "content-moderators", "content-safety", "controls-horizontal", "controls", "cost-alerts", "cost-analysis", "cost-budgets", "cost-export", "cost-management-and-billing", "cost-management", "counter", "cubes", "custom-ip-prefix", "custom-vision", "customer-lockbox-for-microsoft-azure", "dashboard-hub", "dashboard", "data-box", "data-collection-rules", "data-factories", "data-lake-analytics", "data-lake-storage-gen1", "data-lake-store-gen1", "data-share-invitations", "data-shares", "data-virtualization", "database-instance-for-sap", "ddo-s-protection-plans", "dedicated-hsm", "defender-cm-local-manager", "defender-dcs-controller", "defender-distributer-control-system", "defender-engineering-station", "defender-external-management", "defender-freezer-monitor", "defender-historian", "defender-hmi", "defender-industrial-packaging-system", "defender-industrial-printer", "defender-industrial-robot", "defender-industrial-scale-system", "defender-marquee", "defender-meter", "defender-plc", "defender-pneumatic-device", "defender-programable-board", "defender-relay", "defender-robot-controller", "defender-rtu", "defender-sensor", "defender-slot", "defender-web-guiding-system", "detonation", "dev-console", "dev-ops-starter", "dev-test-labs", "device-compliance", "device-configuration", "device-enrollment", "device-provisioning-services", "device-security-apple", "device-security-google", "device-security-windows", "device-update-io-t-hub", "devices", "diagnostics-settings", "digital-twins", "disk-encryption-sets", "disk-pool", "disks-classic", "disks-snapshots", "disks", "dns-multistack", "dns-private-resolver", "dns-security-policy", "dns-zones", "download", "e-books", "edge-actions", "edge-management", "edge-storage-accelerator", "education", "elastic-job-agents", "elastic-san", "endpoint-analytics", "engage-center-connect", "enterprise-applications", "entra-connect-health", "entra-connect-sync", "entra-connect", "entra-domain-services", "entra-global-secure-access", "entra-id-protection", "entra-identity-custom-roles", "entra-identity-licenses", "entra-identity-risky-signins", "entra-identity-risky-users", "entra-identity-roles-and-administrators", "entra-internet-access", "entra-managed-identities", "entra-private-access", "entra-privleged-identity-management", "entra-verified-id", "error", "event-grid-domains", "event-grid-subscriptions", "event-grid-topics", "event-hub-clusters", "event-hubs", "exchange-access", "exchange-on-premises-access", "express-route-circuits", "express-route-direct", "express-route-traffic-collector", "extended-security-updates", "extensions", "external-id-modified", "external-id", "external-identities", "face-apis", "feature-previews", "fhir-service", "fiji", "file", "files", "firewalls", "folder-blank", "folder-website", "form-recognizers", "frd-qa", "free-services", "front-door-and-cdn-profiles", "ftp", "function-apps", "gear", "genomics-accounts", "genomics", "globe-error", "globe-success", "globe-warning", "groups", "guide", "hd-insight-clusters", "hdi-aks-cluster", "heart", "help-and-support", "host-groups", "host-pools", "hosts", "hybrid-connectivity-hub", "ic-m-troubleshooting", "identity-governance", "identity-multi-factor-authentication", "identity-secure-score", "image-definitions", "image-templates", "image-versions", "image", "images", "immersive-readers", "import-export-jobs", "industrial-io-t", "information", "infrastructure-backup", "input-output", "instance-pools", "integration-accounts", "integration-environments", "integration-service-environments", "internet-analyzer-profiles", "intune-app-protection", "intune-for-education", "intune-trends", "intune", "io-t-central-applications", "io-t-edge", "io-t-hub", "ip-address-manager", "ip-groups", "journey-hub", "key-vaults", "keys", "kubernetes-fleet-manager", "kubernetes-services", "lab-accounts", "lab-services", "landing-zone", "language-understanding", "language", "launch-portal", "learn", "load-balancer-hub", "load-balancers", "load-test", "load-testing", "local-network-gateways", "location", "log-analytics-query-pack", "log-analytics-workspaces", "log-streaming", "logic-apps-custom-connector", "logic-apps-template", "logic-apps", "machine-learning-studio-classic-web-services", "machine-learning-studio-web-service-plans", "machine-learning-studio-workspaces", "machine-learning", "machines-azure-arc", "maintenance-configuration", "managed-applications-center", "managed-database", "managed-desktop", "managed-dev-ops-pools", "managed-file-shares", "managed-identities", "managed-instance-apache-cassandra", "managed-service-fabric", "management-groups", "management-portal", "marketplace-management", "marketplace", "med-tech-service", "media-file", "media", "mesh-applications", "metrics-advisor", "metrics", "microsoft-defender-easm", "microsoft-defender-for-cloud", "microsoft-defender-for-io-t", "microsoft-dev-box", "mindaro", "mission-landing-zone", "mobile-engagement", "mobile-networks", "mobile", "modular-data-center", "module", "monitor-health-models", "monitor", "multi-tenancy", "multifactor-authentication", "my-customers", "nat", "network-foundation-hub", "network-interfaces", "network-managers", "network-security-groups", "network-security-hub", "network-security-perimeters", "network-watcher", "notification-hub-namespaces", "notification-hubs", "offers", "on-premises-data-gateways", "open-supply-chain-platform", "operation-log-classic", "oracle-database", "os-images-classic", "osconfig", "outbound-connection", "partner-namespace", "partner-registration", "partner-topic", "peering-service", "peerings", "personalizers", "planetary-computer-pro", "plans", "policy", "power-bi-embedded", "power-platform", "power-up", "power", "powershell", "preview-features", "private-endpoints", "private-link-service", "private-link-services", "private-link", "process-explorer", "production-ready-database", "promethus", "proximity-placement-groups", "public-ip-addresses-classic", "public-ip-addresses", "public-ip-prefixes", "qn-a-makers", "quickstart-center", "recent", "recovery-services-vaults", "region-management", "relays", "remote-rendering", "reservations", "reserved-capacity", "reserved-ip-addresses-classic", "resource-explorer", "resource-graph-explorer", "resource-group-list", "resource-groups", "resource-guard", "resource-linked", "resource-management-private-link", "resource-mover", "resources-provider", "restore-points-collections", "restore-points", "route-filters", "route-tables", "rtos", "savings-plans", "scheduler-job-collections", "scheduler", "scvmm-management-servers", "search-grid", "search", "security-baselines", "security", "send-grid-accounts", "server-farm", "serverless-search", "service-catalog-mad", "service-endpoint-policies", "service-fabric-clusters", "service-group-relationships", "service-groups", "service-health", "service-providers", "shared-image-galleries", "signal-r", "software-as-a-service", "software-updates", "solutions", "sonic-dash", "spatial-anchor-accounts", "speech-services", "spot-vm", "spot-vmss", "sql-data-warehouses", "sql-database-fleet-manager", "sql-database", "sql-elastic-pools", "sql-managed-instance", "sql-server-registries", "sql-server", "ssd", "ssh-keys", "ssis-lift-and-shift-ir", "stack-hci-premium", "static-apps", "stor-simple-data-managers", "stor-simple-device-managers", "storage-accounts-classic", "storage-accounts", "storage-actions", "storage-azure-files", "storage-container", "storage-explorer", "storage-functions", "storage-hubs", "storage-queue", "storage-sync-services", "stream-analytics-jobs", "subnet", "subscriptions", "system-topic", "table", "tag", "tags", "targets-management", "template-specs", "templates", "tenant-properties", "tenant-status", "test-base", "tfs-vc-repository", "time-series-data-sets", "time-series-insights-access-policies", "time-series-insights-environments", "time-series-insights-event-sources", "toolbox", "toolchain-orchestrator", "traffic-manager-profiles", "translator-text", "troubleshoot", "universal-print", "update-management-center", "updates", "user-privacy", "user-settings", "user-subscriptions", "users", "verifiable-credentials", "verification-as-a-service", "versions", "video-analyzers", "virtual-clusters", "virtual-enclaves", "virtual-instance-for-sap", "virtual-machine", "virtual-machines-classic", "virtual-network-gateways", "virtual-networks-classic", "virtual-networks", "virtual-router", "virtual-visits-builder", "virtual-wan-hub", "virtual-wans", "vm-app-definitions", "vm-app-versions", "vm-image-version", "vm-images-classic", "vm-scale-sets", "vpnclient-windows", "wac-installer", "wac", "web-app-database", "web-application-firewall-policies-waf", "web-jobs", "web-slots", "web-test", "website-power", "website-staging", "windows-notification-services", "windows10-core-services", "workbooks", "worker-container-app", "workflow", "workload-orchestration", "workspace-gateway", "workspaces"];
5
+ readonly gcp: readonly ["access-context-manager", "administration", "advanced-agent-modeling", "advanced-solutions-lab", "agent-assist", "ai-hub", "ai-platform-unified", "ai-platform", "analytics-hub", "anthos-config-management", "anthos-service-mesh", "anthos", "api-analytics", "api-monetization", "api", "apigee-api-platform", "apigee-sense", "app-engine", "artifact-registry", "asset-inventory", "assured-workloads", "auto-ml-natural-language", "auto-ml-tables", "auto-ml-translation", "auto-ml-video-intelligence", "auto-ml-vision", "auto-ml", "bare-metal-solutions", "batch", "beyondcorp", "big-query", "bigtable", "billing", "binary-authorization", "catalog", "certificate-authority-service", "certificate-manager", "cloud-api-gateway", "cloud-apis", "cloud-armor", "cloud-asset-inventory", "cloud-audit-logs", "cloud-build", "cloud-cdn", "cloud-code", "cloud-composer", "cloud-data-fusion", "cloud-deploy", "cloud-deployment-manager", "cloud-dns", "cloud-domains", "cloud-ekm", "cloud-endpoints", "cloud-external-ip-addresses", "cloud-firewall-rules", "cloud-for-marketing", "cloud-functions", "cloud-generic", "cloud-gpu", "cloud-healthcare-api", "cloud-healthcare-marketplace", "cloud-hsm", "cloud-ids", "cloud-inference-api", "cloud-interconnect", "cloud-jobs-api", "cloud-load-balancing", "cloud-logging", "cloud-media-edge", "cloud-monitoring", "cloud-nat", "cloud-natural-language-api", "cloud-network", "cloud-ops", "cloud-optimization-ai-fleet-routing-api", "cloud-optimization-ai", "cloud-router", "cloud-routes", "cloud-run-for-anthos", "cloud-run", "cloud-scheduler", "cloud-security-scanner", "cloud-shell", "cloud-spanner", "cloud-sql", "cloud-storage", "cloud-tasks", "cloud-test-lab", "cloud-tpu", "cloud-translation-api", "cloud-vision-api", "cloud-vpn", "compute-engine", "configuration-management", "connectivity-test", "connectors", "contact-center-ai", "container-optimized-os", "container-registry", "data-catalog", "data-labeling", "data-layers", "data-loss-prevention-api", "data-qn-a", "data-studio", "data-transfer", "database-migration-service", "dataflow", "datalab", "dataplex", "datapol", "dataprep", "dataproc-metastore", "dataproc", "datashare", "datastore", "datastream", "debugger", "developer-portal", "dialogflow-cx", "dialogflow-insights", "dialogflow", "document-ai", "early-access-center", "error-reporting", "eventarc", "filestore", "financial-services-marketplace", "firestore", "fleet-engine", "free-trial", "game-servers", "gce-systems-management", "genomics", "gke-on-prem", "google-cloud-marketplace", "google-kubernetes-engine", "google-maps-platform", "healthcare-nlp-api", "home", "identity-and-access-management", "identity-aware-proxy", "identity-platform", "iot-core", "iot-edge", "key-access-justifications", "key-management-service", "kuberun", "launcher", "local-ssd", "looker", "managed-service-for-microsoft-active-directory", "media-translation-api", "memorystore", "migrate-for-anthos", "migrate-for-compute-engine", "my-cloud", "network-connectivity-center", "network-intelligence-center", "network-security", "network-tiers", "network-topology", "onboarding", "os-configuration-management", "os-inventory-management", "os-patch-management", "partner-interconnect", "partner-portal", "performance-dashboard", "permissions", "persistent-disk", "phishing-protection", "policy-analyzer", "premium-network-tier", "private-connectivity", "private-service-connect", "producer-portal", "profiler", "project", "pub-sub", "quantum-engine", "quotas", "real-world-insights", "recommendations-ai", "release-notes", "retail-api", "risk-manager", "runtime-config", "secret-manager", "security-command-center", "security-health-advisor", "security-key-enforcement", "security", "service-discovery", "speech-to-text", "stackdriver", "standard-network-tier", "stream-suite", "support", "tensorflow-enterprise", "text-to-speech", "tools-for-powershell", "trace", "traffic-director", "transfer-appliance", "transfer", "user-preferences", "vertex-ai", "video-intelligence-api", "virtual-private-cloud", "visual-inspection", "vmware-engine", "web-risk", "web-security-scanner", "workflows", "workload-identity-pool"];
6
+ readonly tech: readonly ["100tb", "500px", "aarch64", "active-campaign-icon", "active-campaign", "adobe-after-effects", "adobe-animate", "adobe-dreamweaver", "adobe-icon", "adobe-illustrator", "adobe-incopy", "adobe-indesign", "adobe-lightroom", "adobe-photoshop", "adobe-premiere-pro", "adobe-premiere", "adobe-xd", "adobe", "adonis-js", "adonisjs-icon", "adroll", "adyen", "aerogear", "aerospike-icon", "aerospike", "after-effects", "aha", "airbnb-icon", "airbnb", "airbrake", "airflow-icon", "airflow", "airtable", "aix", "akamai", "akka", "alfresco", "algolia", "alpinejs-icon", "alpinejs", "altair", "amazon-chime", "amazon-connect", "amazon-web-services", "amd", "amex-digital", "amex", "amp-icon", "amp", "ampersand", "amplication-icon", "amplication", "amplitude-icon", "amplitude", "anaconda", "analog", "android-icon", "android-studio", "android-vertical", "android", "angellist", "angular-icon", "angular-js", "angular", "ansible", "ant-design", "anthropic-icon", "anthropic", "apache-camel", "apache-cloudstack", "apache-flink-icon", "apache-flink", "apache-spark", "apache-superset-icon", "apache-superset", "apache", "apiary", "apidog-icon", "apidog", "apl", "apollostack", "apostrophe", "appbaseio-icon", "appbaseio", "appcelerator", "appcenter-icon", "appcenter", "appcircle-icon", "appcircle", "appcode", "appdynamics-icon", "appdynamics", "appium", "apple-app-store", "apple-pay", "apple-safari", "apple", "applitools-icon", "applitools", "appsignal-icon", "appsignal", "apptentive", "appveyor", "appwrite-icon", "appwrite", "arangodb-icon", "arangodb", "arc", "architect-icon", "architect", "archlinux", "arduino", "argo-icon", "argo", "argocd", "arm", "armory-icon", "armory", "asana-icon", "asana", "asciidoctor", "assembla-icon", "assembla", "astro-icon", "astro", "astronomer", "async-api-icon", "async-api", "atlassian", "atom-icon", "atom", "atomic-icon", "atomic", "atomicojs-icon", "atomicojs", "aurelia", "aurora", "auth0-icon", "auth0", "authy", "autodesk-maya", "autodesk-shot-grid", "autoit", "autoprefixer", "ava", "awesome", "awk", "aws-amplify", "aws-api-gateway", "aws-app-mesh", "aws-appflow", "aws-appsync", "aws-athena", "aws-aurora", "aws-backup", "aws-batch", "aws-certificate-manager", "aws-cloudformation", "aws-cloudfront", "aws-cloudsearch", "aws-cloudtrail", "aws-cloudwatch", "aws-codebuild", "aws-codecommit", "aws-codedeploy", "aws-codepipeline", "aws-codestar", "aws-cognito", "aws-config", "aws-documentdb", "aws-dynamodb", "aws-ec2", "aws-ecs", "aws-eks", "aws-elastic-beanstalk", "aws-elasticache", "aws-elb", "aws-eventbridge", "aws-fargate", "aws-glacier", "aws-glue", "aws-iam", "aws-keyspaces", "aws-kinesis", "aws-kms", "aws-lake-formation", "aws-lambda", "aws-lightsail", "aws-mq", "aws-msk", "aws-neptune", "aws-open-search", "aws-opsworks", "aws-quicksight", "aws-rds", "aws-redshift", "aws-route53", "aws-s3", "aws-secrets-manager", "aws-ses", "aws-shield", "aws-sns", "aws-sqs", "aws-step-functions", "aws-systems-manager", "aws-timestream", "aws-vpc", "aws-waf", "aws-xray", "aws", "axios", "azios", "azure-devops", "azure-sql-database", "azure", "babel", "backbone-icon", "backbone-js", "backbone", "backerkit", "baker-street", "balena", "ballerina", "bamboo", "basecamp-icon", "basecamp", "basekit", "baseline", "bash-icon", "bash", "batch", "beats", "behance", "bem-2", "bem", "bigpanda", "bing", "biomejs-icon", "biomejs", "bitbar", "bitbucket", "bitcoin", "bitnami", "bitrise-icon", "bitrise", "blender", "blitzjs-icon", "blitzjs", "blocs", "blogger", "blossom", "blueprint", "bluesky", "bluetooth", "booqable-icon", "booqable", "bootstrap", "bosun", "botanalytics", "bourbon", "bower", "box", "brackets", "brainjs", "branch-icon", "branch", "brandfolder-icon", "brandfolder", "brave", "braze-icon", "braze", "broadcom-icon", "broadcom", "broccoli", "brotli", "browserify-icon", "browserify", "browserling", "browserslist", "browserstack", "browsersync", "brunch", "bubble-icon", "bubble", "buck", "buddy", "buffer", "bugherd-icon", "bugherd", "bugsee", "bugsnag", "builder-io-icon", "builder-io", "buildkite-icon", "buildkite", "bulma", "bun", "bunny-net-icon", "bunny-net", "c", "cachet", "cairo-graphics", "cake-php", "cakephp-icon", "calibre-icon", "calibre", "campaignmonitor-icon", "campaignmonitor", "canjs", "canva", "capacitor", "capacitorjs-icon", "capacitorjs", "capistrano", "carbide", "cardano-icon", "cardano", "cassandra", "cent-os", "centos-icon", "certbot", "ceylon", "chai", "chalk", "chargebee-icon", "chargebee", "chartjs", "chef", "chevereto", "chroma", "chromatic-icon", "chromatic", "chrome-web-store", "chrome", "cinder", "circle-ci", "cirrus-ci", "cirrus", "clarity", "claude-icon", "claude", "clio-lang", "clion", "cljs", "clojure-script", "clojure", "close", "cloud9", "cloudacademy-icon", "cloudacademy", "cloudcraft", "cloudflare-icon", "cloudflare-workers-icon", "cloudflare-workers", "cloudflare", "cloudinary-icon", "cloudinary", "cloudlinux", "cmake", "cobalt", "cockpit", "cocoapods", "coda-icon", "coda", "codacy", "code-igniter", "code-pen", "codeac", "codebase", "codebeat", "codecademy", "codeception", "codeclimate-icon", "codeclimate", "codecov-icon", "codecov", "codefactor-icon", "codefactor", "codeigniter-icon", "codepen-icon", "codersrank-icon", "codersrank", "coderwall", "codesandbox-icon", "codesandbox", "codesee-icon", "codesee", "codio", "codium-icon", "codium", "coffee-script", "commitizen", "compass", "componentkit", "compose-multiplatform", "compose", "composer", "conan-io", "concourse", "concretecms-icon", "concretecms", "conda", "confluence", "consul", "contao", "contentful", "convox-icon", "convox", "copyleft-pirate", "copyleft", "corda", "cordova", "cosmosdb", "couchbase", "couchdb-icon", "couchdb", "coursera", "coveralls", "cpanel", "cplusplus", "craftcms", "crashlytics", "crateio", "create-react-app", "createjs", "crossplane-icon", "crossplane", "crucible", "crystal", "csharp", "css3-official", "css3", "cssnext", "cube-icon", "cube", "cucumber", "curl", "customerio-icon", "customerio", "cyclejs", "cypress-icon", "cypress", "d3", "d3js", "dailydev-icon", "dailydev", "daisy-ui-icon", "daisy-ui", "danfo", "dart", "dashlane-icon", "dashlane", "data-grip", "data-spell", "data-station", "database-labs", "datadog-icon", "datadog", "datasette-icon", "datasette", "datocms-icon", "datocms", "dbeaver", "dbt-icon", "dbt", "dcos-icon", "dcos", "debian", "delighted-icon", "delighted", "deno", "dependabot", "deployhq-icon", "deployhq", "derby", "descript-icon", "descript", "designernews", "deviantart-icon", "deviantart", "devicon", "dgraph-icon", "dgraph", "dialogflow", "digital-ocean-icon", "digital-ocean", "dimer", "dinersclub", "discord-icon", "discord-js", "discord", "discourse-icon", "discourse", "discover", "disqus", "django-icon", "django-rest", "django", "dockbit", "docker-icon", "docker", "doctrine", "docusaurus", "dojo-icon", "dojo-toolkit", "dojo", "dolt", "dotnet", "dovetail-icon", "dovetail", "dreamhost", "dribbble-icon", "dribbble", "drift", "drip", "drizzle-icon", "drizzle", "drone-icon", "drone", "drools-icon", "drools", "dropbox", "dropmark", "dropwizard", "dropzone", "drupal-icon", "drupal", "duckduckgo", "dynatrace-icon", "dynatrace", "dyndns", "ebanx", "eclipse-ceylon", "eclipse-icon", "eclipse-ide", "eclipse-vert-x", "eclipse", "ecma", "edgedb", "edgio-icon", "edgio", "editorconfig", "effect-icon", "effect", "effector", "egghead", "elasticbeats", "elasticpath-icon", "elasticpath", "elasticsearch", "electron", "element", "elemental-ui", "elementary", "eleventy-11ty", "eleventy", "elixir", "ello", "elm-classic", "elm", "elo", "emacs-classic", "emacs", "embedded-c", "embedly", "ember-js", "ember-tomster", "ember", "emmet", "enact", "engine-yard-icon", "engine-yard", "envato", "envoy-icon", "envoy", "envoyer", "eraser-icon", "eraser", "erlang", "esbuild", "esdoc", "eslint-old", "eslint", "eta-icon", "eta", "etcd", "ethereum-color", "ethereum", "ethers", "ethnio", "eventbrite-icon", "eventbrite", "eventsentry", "evergreen-icon", "evergreen", "expo-icon", "expo", "express", "fabric", "facebook", "faker", "falcor", "fast-api", "fastapi-icon", "fastify-icon", "fastify", "fastlane", "fastly", "fauna-icon", "fauna", "feathers", "feathersjs", "fedora", "fetch", "ffmpeg-icon", "ffmpeg", "figma", "file-zilla", "firebase-icon", "firebase", "firefox", "flannel", "flarum", "flask", "flat-ui", "flattr-icon", "flattr", "fleep", "flickr-icon", "flickr", "flight", "floodio", "flow", "flowxo", "floydhub", "flutter", "flux", "fluxxor", "fly-icon", "fly", "fogbugz-icon", "fogbugz", "fomo-icon", "fomo", "font-awesome", "forestadmin-icon", "forestadmin", "forever", "formkeep", "fortran", "foundation", "foundationdb-icon", "foundationdb", "framer", "framework7-icon", "framework7", "freebsd", "freedcamp-icon", "freedcamp", "freedomdefined", "fresh", "frontapp", "fsharp", "fuchsia", "galliumos", "game-analytics-icon", "game-analytics", "ganache-icon", "ganache", "gatling", "gatsby", "gazebo", "gcc", "geekbot", "geetest-icon", "geetest", "gentoo", "getyourguide", "ghost", "giantswarm", "gimp", "gin", "git-icon", "git", "gitboard", "gitbook", "github-actions", "github-codespaces", "github-copilot", "github-icon", "github-octocat", "github", "gitkraken", "gitlab-icon", "gitlab", "gitpod", "gitter", "gitup", "glamorous-icon", "glamorous", "gleam", "glimmerjs", "glint", "glitch-icon", "glitch", "gnome-icon", "gnome", "gnu-emacs", "gnu-net", "gnu", "gnupg-icon", "gnupg", "go-land", "go", "gocd", "godot-engine", "godot-icon", "godot", "gohorse", "google-360suite", "google-admob", "google-ads", "google-adsense", "google-analytics", "google-bard-icon", "google-bard", "google-calendar", "google-cloud-functions", "google-cloud-run", "google-cloud", "google-data-studio", "google-developers", "google-domains-icon", "google-domains", "google-drive", "google-fit", "google-gemini", "google-gmail", "google-home", "google-icon", "google-keep", "google-maps", "google-marketing-platform", "google-meet", "google-one", "google-optimize", "google-palm", "google-pay", "google-photos", "google-play-console-icon", "google-play-console", "google-play-icon", "google-play", "google-search-console", "google-tag-manager", "google-workspace", "google", "gopher", "gradio-icon", "gradio", "gradle", "grafana", "grails", "grammarly-icon", "grammarly", "graphene", "graphql", "grav", "gravatar-icon", "gravatar", "graylog-icon", "graylog", "greensock-icon", "greensock", "gridsome-icon", "gridsome", "grommet", "groovehq", "groovy", "grove", "growth-book-icon", "growth-book", "grpc", "grunt", "gruntjs", "gulp", "gulpjs", "gunicorn", "gunjs", "gusto", "gwt", "hack", "hacker-one", "hadoop", "haiku-icon", "haiku", "haml", "hanami", "handlebars", "hapi", "hardhat-icon", "hardhat", "harness-icon", "harness", "harvester", "hashicorp-icon", "hashicorp-vault", "hashicorp", "hashnode-icon", "hashnode", "haskell-icon", "haskell", "hasura-icon", "hasura", "haxe", "haxl", "hbase", "hcaptcha-icon", "hcaptcha", "headlessui-icon", "headlessui", "heap-icon", "heap", "helm", "helpscout-icon", "helpscout", "hermes", "heroku-icon", "heroku-redis", "heroku", "hexo", "hhvm", "hibernate", "highcharts", "hipercard", "homebrew", "hono", "hookstate", "hootsuite-icon", "hootsuite", "hosted-graphite", "hostgator-icon", "hostgator", "hotjar-icon", "hotjar", "houndci", "html5-boilerplate", "html5", "htmx-icon", "htmx", "httpie-icon", "httpie", "hubspot", "hugging-face-icon", "hugging-face", "huggy", "hugo", "humongous", "hyper", "hyperapp", "ibm-spss-statistics", "ibm", "ie10", "ieee", "ietf", "ifttt", "imagemin", "imba-icon", "imba", "immer-icon", "immer", "immutable", "impala", "importio-icon", "importio", "incident-icon", "incident", "infer", "inferno", "influxdb-icon", "influxdb", "ink", "inkscape", "insomnia", "instagram-icon", "instagram", "intel", "intellij-idea", "intercom-icon", "intercom", "internet-computer-icon", "internet-computer", "internetexplorer", "invision-icon", "invision", "ionic-icon", "ionic", "ios", "iron-icon", "iron", "itsalive-icon", "itsalive", "jade", "jaeger", "jamstack-icon", "jamstack", "jasmine", "java", "javascript", "jcb", "jeet", "jekyll", "jenkins", "jest", "jetbrains-icon", "jetbrains-space-icon", "jetbrains-space", "jetbrains", "jfrog", "jhipster-icon", "jhipster", "jira-align", "jira", "joomla", "jotai", "jquery-mobile", "jquery", "jruby", "jsbin", "jsdelivr", "jsdom", "jsfiddle", "json-ld", "json-schema-icon", "json-schema", "json", "jspm", "jss", "juju", "jule", "julia", "junit", "jupyter", "jwt-icon", "jwt", "k3os", "k3s", "kafka-icon", "kafka", "kaggle", "kaios", "kallithea", "karate", "karma", "katalon-icon", "katalon", "kde", "keen", "kemal", "keras", "keycdn-icon", "keycdn", "keydb-icon", "keydb", "keystonejs", "khan-academy-icon", "khan-academy", "kibana", "kickstarter-icon", "kickstarter", "kinto-icon", "kinto", "kirby-icon", "kirby", "knex-js", "knex", "knockout", "koa", "kong-icon", "kong", "kops", "koreio", "kotlin-icon", "kotlin", "kraken", "krakenjs", "ktor-icon", "ktor", "kubernetes", "kustomer", "labview", "languagetool", "laravel", "lastfm", "lateral-icon", "lateral", "latex", "launchdarkly-icon", "launchdarkly", "launchrock", "leaflet", "leankit-icon", "leankit", "lerna", "less-js", "less", "lets-cloud", "letsencrypt", "leveldb", "lexical-icon", "lexical", "liftweb", "lighthouse", "lightstep-icon", "lightstep", "lighttpd", "linear-icon", "linear", "linkedin-icon", "linkedin", "linkerd", "linode", "linux-mint", "linux-tux", "linux", "liquibase", "lit-icon", "lit", "litmus", "livewire", "llvm", "loader", "lodash", "logentries", "logstash", "lookback", "looker-icon", "looker", "loom-icon", "loom", "loopback-icon", "loopback", "losant", "lua", "lucene-net", "lucene", "lumen", "mac-os", "madge", "maestro", "mageia", "magento", "mailchimp-freddie", "mailchimp", "maildeveloper", "mailgun-icon", "mailgun", "mailjet-icon", "mailjet", "malinajs", "manjaro", "mantine-icon", "mantine", "mapbox-icon", "mapbox", "maps-me", "mapzen-icon", "mapzen", "mariadb-icon", "mariadb", "marionette", "markdown", "marko", "marvel", "mastercard", "mastodon-icon", "mastodon", "material-ui", "materialize", "materializecss", "matlab", "matomo-icon", "matomo", "matplotlib-icon", "matplotlib", "matter-icon", "matter", "mattermost-icon", "mattermost", "mautic-icon", "mautic", "maven", "mdn", "mdx", "medium-icon", "medium", "medusa-icon", "medusa", "meilisearch", "memcached", "memgraph", "mention", "mercurial", "mesos", "messenger", "meta-icon", "meta", "metabase", "metamask-icon", "metamask", "meteor-icon", "meteor-js", "meteor", "micro-icon", "micro-python", "micro", "microcosm", "micron-icon", "micron", "microsoft-azure", "microsoft-edge", "microsoft-icon", "microsoft-onedrive", "microsoft-power-bi", "microsoft-sql-server", "microsoft-teams", "microsoft-windows-icon", "microsoft-windows", "microsoft", "mida-icon", "mida", "middleman", "midjourney", "milligram", "million-icon", "million", "milvus-icon", "milvus", "mindsdb-icon", "mindsdb", "minitab", "mint-lang", "mio", "miro-icon", "miro", "mist", "mistral-ai-icon", "mistral-ai", "mithril", "mixmax", "mixpanel", "mlab", "mob-x", "mocha", "mockflow-icon", "mockflow", "modernizr", "modx-icon", "modx", "moleculer", "momentjs", "monday-icon", "monday", "monero", "mongodb-icon", "mongodb", "mongoose-js", "mono", "moodle", "moon", "mootools", "morpheus-icon", "morpheus", "mozilla", "mparticle-icon", "mparticle", "mps-icon", "mps", "ms-dos", "msw-icon", "msw", "multipass", "mysql-icon", "mysql", "naiveui", "namecheap", "nano", "nanonets", "nasm", "nativescript", "nats-icon", "nats", "neat", "neo4j", "neon-icon", "neon", "neovim", "nerog", "nestjs", "net-core", "net", "netbeans", "netflix-icon", "netflix", "netlify-icon", "netlify", "network-x", "neverinstall-icon", "neverinstall", "new-relic-icon", "new-relic", "new4j", "nextjs-icon", "nextjs", "nginx", "ngrok", "nhibernate", "nhost-icon", "nhost", "nightwatch", "nim-lang", "nim", "nimble", "nix", "nocodb", "nodal", "node-sass", "nodebots", "nodejs-icon-alt", "nodejs-icon", "nodejs", "nodemon", "nodeos", "nodewebkit", "nomad-icon", "nomad", "notion-icon", "notion", "noysi", "npm-icon", "npm", "nuclide", "nuget", "num-py", "nuxt-icon", "nuxt-js", "nuxt", "nvidia", "nvm", "nx", "oauth", "objective-c", "observablehq", "obsidian-icon", "obsidian", "ocaml", "octodns", "octopus-deploy", "oh-my-zsh", "okta-icon", "okta", "olark", "onesignal", "open-al", "open-api", "open-cl", "open-cv", "open-gl", "open-graph", "open-stack", "open-suse", "open-telemetry", "open-zeppelin-icon", "open-zeppelin", "openai-icon", "openai", "openapi-icon", "opencart", "opencollective", "openframeworks", "openjs-foundation-icon", "openjs-foundation", "openlayers", "opensearch-icon", "opensearch", "openshift", "opensource", "openstack-icon", "opentelemetry-icon", "opera", "opsgenie", "optimizely-icon", "optimizely", "oracle", "oreilly", "origami", "origin", "oshw", "osquery", "overloop-icon", "overloop", "p5js", "packer", "pagekit", "pagekite", "pagerduty-icon", "pagerduty", "panda", "pandacss-icon", "pandacss", "pandas-icon", "pandas", "parcel-icon", "parcel", "parse", "parsehub", "partytown-icon", "partytown", "passbolt-icon", "passbolt", "passport", "patreon", "payload", "paypal", "peer5", "pepperoni", "percona", "percy-icon", "percy", "perf-rocks", "perl", "perplexity-icon", "perplexity", "pf-sense", "phalcon", "phoenix-framework", "phoenix", "photon-engine", "php-alt", "php-storm", "php", "pinecone-icon", "pinecone", "pinia", "pinterest", "pipedream", "pipedrive", "pipefy", "pivotal-tracker", "pixijs", "pkg", "planetscale", "planless-icon", "planless", "plasmic", "plastic-scm", "platformio", "play", "playwright", "playwrite", "ploty", "pluralsight-icon", "pluralsight", "pm2-icon", "pm2", "pnpm", "pocket-base", "podman", "poeditor", "polygon", "polymer", "portainer", "postcss", "postgraphile", "postgresql", "posthog-icon", "posthog", "postman-icon", "postman", "pouchdb", "powershell", "preact", "precursor", "prerender-icon", "prerender", "prestashop-icon", "prestashop", "presto-icon", "presto", "prettier", "prisma", "prismic-icon", "prismic", "processing", "processwire-icon", "processwire", "productboard-icon", "productboard", "producthunt", "progress", "prometheus", "promises", "proofy", "protoio", "protonet", "protractor", "prott", "pug", "pulumi-icon", "pulumi", "pumpkindb", "puppet-icon", "puppet", "puppeteer", "purescript-icon", "purescript", "pushbullet", "pusher-icon", "pusher", "putty", "pwa", "pycharm", "pypi", "pyscript", "pytest", "python-poetry", "python", "pytorch-icon", "pytorch", "pyup", "q", "qdrant-icon", "qdrant", "qlik", "qodana", "qt", "qualcomm", "quarkus-icon", "quarkus", "quasar", "quay", "quobyte", "quora", "qwik-icon", "qwik", "r-lang", "r", "rabbitmq-icon", "rabbitmq", "rackspace-icon", "rackspace", "rails", "ramda", "raml", "rancher-icon", "rancher", "raphael", "raspberry-pi", "rax", "reach", "react-bootstrap", "react-query-icon", "react-query", "react-router", "react-spring", "react-styleguidist", "react", "reactivex", "realm", "reapp", "reasonml-icon", "reasonml", "recaptcha", "recoil-icon", "recoil", "red-cube-s-epic-compiler-thingy-programming-re-ct", "reddit-icon", "reddit", "redhat-icon", "redhat", "redis", "redsmin", "redux-observable", "redux-saga", "redux", "redwoodjs", "reindex", "relay", "release", "remix-icon", "remix", "ren-py", "renovatebot", "replay-icon", "replay", "replit-icon", "replit", "require", "rescript-icon", "rescript", "rest-li", "rethinkdb", "retool-icon", "retool", "riak", "rider", "riot", "risingwave-icon", "risingwave", "robot-operating-system-ros", "rocket-chat-icon", "rocket-chat", "rocksdb", "rocky-linux-icon", "rocky-linux", "rollbar-icon", "rollbar", "rollupjs", "rome-icon", "rome", "ros", "rsa", "rsmq", "rspec", "rstudio", "rubocop", "ruby-mine", "ruby-on-rails", "ruby", "rubygems", "rum", "runscope", "rush-icon", "rush", "rust", "rxdb", "safari", "sagui", "sails", "salesforce", "sameroom", "samsung", "sanity", "sap", "sass-doc", "sass", "saucelabs", "scala", "scaledrone", "scalingo", "scribd-icon", "scribd", "sdl", "seaborn-icon", "seaborn", "section-icon", "section", "segment-icon", "segment", "selenium", "sema-software", "semantic-release", "semantic-ui", "semaphoreci", "sencha", "sendgrid-icon", "sendgrid", "seneca", "sensu-icon", "sensu", "sentry-icon", "sentry", "sequelize", "serverless", "sherlock-icon", "sherlock", "shields", "shipit", "shogun", "shopify", "shopware", "shortcut-icon", "shortcut", "sidekiq-icon", "sidekiq", "signal", "sigstore-icon", "sigstore", "sinatra", "singlestore-icon", "singlestore", "sitepoint", "sk-hynix", "skaffolder", "sketch", "skylight", "skype", "slack-icon", "slack", "slides", "slidev", "slim", "smartling", "smashingmagazine", "snap-svg", "snaplet-icon", "snaplet", "snowflake-icon", "snowflake", "snowpack", "snyk", "socket-io", "solarwinds", "solid", "solidity", "solidjs-icon", "solidjs", "solr", "sonarcloud-icon", "sonarcloud", "sonarlint-icon", "sonarlint", "sonarqube", "soundcloud", "sourcegraph", "sourcetree", "spark", "sparkpost", "speakerdeck", "speedcurve", "spidermonkey-icon", "spidermonkey", "spinnaker", "splunk", "spotify-icon", "spotify", "spree", "spring-icon", "spring", "sql-developer", "sqlalchemy", "sqlite", "square", "squarespace", "ssh", "sst-icon", "sst", "stability-ai-icon", "stability-ai", "stackbit-icon", "stackbit", "stackblitz-icon", "stackblitz", "stackoverflow-icon", "stackoverflow", "stackshare", "stata", "stately-icon", "stately", "statuspage", "stdlib-icon", "stdlib", "steam", "stenciljs-icon", "stenciljs", "stetho", "stickermule", "stigg-icon", "stigg", "stimulus-icon", "stimulus", "stitch", "stoplight", "storyblocks-icon", "storyblocks", "storyblok-icon", "storyblok", "storybook-icon", "storybook", "strapi-icon", "strapi", "streamlit", "strider", "stripe", "struts", "styleci", "stylefmt", "stylelint", "stylis", "stylus", "stytch", "sublimetext-icon", "sublimetext", "subversion", "sugarss", "supabase-icon", "supabase", "supertokens-icon", "supertokens", "surge", "surrealdb-icon", "surrealdb", "survicate-icon", "survicate", "suse", "susy", "svelte-icon", "svelte-kit", "svelte", "svg", "svgator", "swagger", "swc", "swift", "swiftype", "swimm", "swr", "symfony", "sysdig-icon", "sysdig", "t3", "tableau-icon", "tableau", "taiga", "tailwindcss-icon", "tailwindcss", "tapcart-icon", "tapcart", "taskade-icon", "taskade", "tastejs", "tauri", "tealium", "teamcity", "teamgrid", "teamwork-icon", "teamwork", "telegram", "tensorflow", "terminal", "terraform-icon", "terraform", "terser-icon", "terser", "testcafe", "testing-library", "testlodge", "tex", "the-algorithms", "threejs", "thymeleaf-icon", "thymeleaf", "tidal-icon", "tidal", "tiktok-icon", "tiktok", "titanium-sdk", "tnw", "todoist-icon", "todoist", "todomvc", "tomcat", "toml", "tor-browser", "tor", "tortoise-git", "tower", "traackr", "trac", "traefik-mesh", "traefik-proxy", "travis-ci-monochrome", "travis-ci", "treasuredata-icon", "treasuredata", "treehouse-icon", "treehouse", "trello", "trpc", "truffle-icon", "truffle", "tsmc", "tsnode", "tsuru", "tumblr-icon", "tumblr", "tunein", "tuple", "turbopack-icon", "turbopack", "turborepo-icon", "turborepo", "turret", "twilio-icon", "twilio", "twitch", "twitter", "typeform-icon", "typeform", "typeorm", "typescript-icon-round", "typescript-icon", "typescript", "typesense-icon", "typesense", "typo3-icon", "typo3", "ubuntu", "udacity-icon", "udacity", "udemy-icon", "udemy", "uikit", "uml", "umu", "unbounce-icon", "unbounce", "undertow", "unionpay", "unitjs", "unito-icon", "unito", "unity", "unix", "unjs", "unocss", "unrealengine-icon", "unrealengine", "upcase", "upstash-icon", "upstash", "upwork", "user-testing-icon", "user-testing", "uservoice-icon", "uservoice", "uwsgi", "v8-ignition", "v8-turbofan", "v8", "vaadin", "vaddy", "vagrant-icon", "vagrant", "vala", "vault-icon", "vault", "vector", "vercel-icon", "vercel", "verdaccio-icon", "verdaccio", "vernemq", "veutify", "vim", "vimeo-icon", "vimeo", "visa", "visaelectron", "visual-studio-code", "visual-studio", "vite", "vitejs", "vitess", "vitest", "vivaldi-icon", "vivaldi", "vlang", "vmware", "void", "volar", "vorejs", "vscode", "vsphere", "vue-storefront", "vue", "vuetifyjs", "vueuse", "vulkan", "vultr-icon", "vultr", "vwo", "vyper", "w3c", "waffle-icon", "waffle", "wagtail", "wakatime", "walkme", "watchman", "waypoint-icon", "waypoint", "wayscript-icon", "wayscript", "wearos", "weave", "web-dev-icon", "web-dev", "web3js", "webassembly", "webcomponents", "webdriverio", "webflow", "webgpu", "webhint-icon", "webhint", "webhooks", "webix-icon", "webix", "webkit", "weblate", "webmin", "webpack", "webplatform", "webrtc", "websocket", "webstorm", "webtorrent", "weebly", "whalar-icon", "whalar", "whatsapp-icon", "whatsapp-monochrome-icon", "whatsapp", "whatwg", "wicket-icon", "wicket", "wifi", "wildfly", "windi-css", "windows11", "windows8", "winglang-icon", "winglang", "wire", "wix", "wmr", "woo-commerce", "woocommerce-icon", "woopra", "wordpress-icon-alt", "wordpress-icon", "wordpress", "workboard", "workos-icon", "workos", "workplace-icon", "workplace", "wpengine", "wufoo", "x", "xamarin", "xampp", "xata-icon", "xata", "xcart", "xcode", "xero", "xml", "xray-for-jira", "xstate", "xtend", "xwiki-icon", "xwiki", "yahoo", "yaml", "yammer", "yandex-ru", "yarn", "ycombinator", "yeoman", "yii-framework", "yii", "youtrack", "youtube-icon", "youtube", "yugabyte-icon", "yugabyte", "yuno-host", "zabbix", "zapier", "zend-framework", "zendesk-icon", "zendesk", "zenhub-icon", "zenhub", "zeplin", "zeroheight-icon", "zeroheight", "zig", "zod", "zoho", "zoom-icon", "zoom", "zorin-os", "zsh", "zube", "zulip-icon", "zulip", "zwave"];
7
+ readonly bootstrap: readonly ["0-circle-fill", "0-circle", "0-square-fill", "0-square", "1-circle-fill", "1-circle", "1-square-fill", "1-square", "123", "2-circle-fill", "2-circle", "2-square-fill", "2-square", "3-circle-fill", "3-circle", "3-square-fill", "3-square", "4-circle-fill", "4-circle", "4-square-fill", "4-square", "5-circle-fill", "5-circle", "5-square-fill", "5-square", "6-circle-fill", "6-circle", "6-square-fill", "6-square", "7-circle-fill", "7-circle", "7-square-fill", "7-square", "8-circle-fill", "8-circle", "8-square-fill", "8-square", "9-circle-fill", "9-circle", "9-square-fill", "9-square", "activity", "airplane-engines-fill", "airplane-engines", "airplane-fill", "airplane", "alarm-fill", "alarm", "alexa", "align-bottom", "align-center", "align-end", "align-middle", "align-start", "align-top", "alipay", "alphabet-uppercase", "alphabet", "alt", "amazon", "amd", "android", "android2", "app-indicator", "app", "apple", "archive-fill", "archive", "arrow-90deg-down", "arrow-90deg-left", "arrow-90deg-right", "arrow-90deg-up", "arrow-bar-down", "arrow-bar-left", "arrow-bar-right", "arrow-bar-up", "arrow-clockwise", "arrow-counterclockwise", "arrow-down-circle-fill", "arrow-down-circle", "arrow-down-left-circle-fill", "arrow-down-left-circle", "arrow-down-left-square-fill", "arrow-down-left-square", "arrow-down-left", "arrow-down-right-circle-fill", "arrow-down-right-circle", "arrow-down-right-square-fill", "arrow-down-right-square", "arrow-down-right", "arrow-down-short", "arrow-down-square-fill", "arrow-down-square", "arrow-down-up", "arrow-down", "arrow-left-circle-fill", "arrow-left-circle", "arrow-left-right", "arrow-left-short", "arrow-left-square-fill", "arrow-left-square", "arrow-left", "arrow-repeat", "arrow-return-left", "arrow-return-right", "arrow-right-circle-fill", "arrow-right-circle", "arrow-right-short", "arrow-right-square-fill", "arrow-right-square", "arrow-right", "arrow-through-heart-fill", "arrow-through-heart", "arrow-up-circle-fill", "arrow-up-circle", "arrow-up-left-circle-fill", "arrow-up-left-circle", "arrow-up-left-square-fill", "arrow-up-left-square", "arrow-up-left", "arrow-up-right-circle-fill", "arrow-up-right-circle", "arrow-up-right-square-fill", "arrow-up-right-square", "arrow-up-right", "arrow-up-short", "arrow-up-square-fill", "arrow-up-square", "arrow-up", "arrows-angle-contract", "arrows-angle-expand", "arrows-collapse-vertical", "arrows-collapse", "arrows-expand-vertical", "arrows-expand", "arrows-fullscreen", "arrows-move", "arrows-vertical", "arrows", "aspect-ratio-fill", "aspect-ratio", "asterisk", "at", "award-fill", "award", "back", "backpack-fill", "backpack", "backpack2-fill", "backpack2", "backpack3-fill", "backpack3", "backpack4-fill", "backpack4", "backspace-fill", "backspace-reverse-fill", "backspace-reverse", "backspace", "badge-3d-fill", "badge-3d", "badge-4k-fill", "badge-4k", "badge-8k-fill", "badge-8k", "badge-ad-fill", "badge-ad", "badge-ar-fill", "badge-ar", "badge-cc-fill", "badge-cc", "badge-hd-fill", "badge-hd", "badge-sd-fill", "badge-sd", "badge-tm-fill", "badge-tm", "badge-vo-fill", "badge-vo", "badge-vr-fill", "badge-vr", "badge-wc-fill", "badge-wc", "bag-check-fill", "bag-check", "bag-dash-fill", "bag-dash", "bag-fill", "bag-heart-fill", "bag-heart", "bag-plus-fill", "bag-plus", "bag-x-fill", "bag-x", "bag", "balloon-fill", "balloon-heart-fill", "balloon-heart", "balloon", "ban-fill", "ban", "bandaid-fill", "bandaid", "bank", "bank2", "bar-chart-fill", "bar-chart-line-fill", "bar-chart-line", "bar-chart-steps", "bar-chart", "basket-fill", "basket", "basket2-fill", "basket2", "basket3-fill", "basket3", "battery-charging", "battery-full", "battery-half", "battery", "behance", "bell-fill", "bell-slash-fill", "bell-slash", "bell", "bezier", "bezier2", "bicycle", "bing", "binoculars-fill", "binoculars", "blockquote-left", "blockquote-right", "bluetooth", "body-text", "book-fill", "book-half", "book", "bookmark-check-fill", "bookmark-check", "bookmark-dash-fill", "bookmark-dash", "bookmark-fill", "bookmark-heart-fill", "bookmark-heart", "bookmark-plus-fill", "bookmark-plus", "bookmark-star-fill", "bookmark-star", "bookmark-x-fill", "bookmark-x", "bookmark", "bookmarks-fill", "bookmarks", "bookshelf", "boombox-fill", "boombox", "bootstrap-fill", "bootstrap-icons", "bootstrap-reboot", "bootstrap", "border-all", "border-bottom", "border-center", "border-inner", "border-left", "border-middle", "border-outer", "border-right", "border-style", "border-top", "border-width", "border", "bounding-box-circles", "bounding-box", "box-arrow-down-left", "box-arrow-down-right", "box-arrow-down", "box-arrow-in-down-left", "box-arrow-in-down-right", "box-arrow-in-down", "box-arrow-in-left", "box-arrow-in-right", "box-arrow-in-up-left", "box-arrow-in-up-right", "box-arrow-in-up", "box-arrow-left", "box-arrow-right", "box-arrow-up-left", "box-arrow-up-right", "box-arrow-up", "box-fill", "box-seam-fill", "box-seam", "box", "box2-fill", "box2-heart-fill", "box2-heart", "box2", "boxes", "braces-asterisk", "braces", "bricks", "briefcase-fill", "briefcase", "brightness-alt-high-fill", "brightness-alt-high", "brightness-alt-low-fill", "brightness-alt-low", "brightness-high-fill", "brightness-high", "brightness-low-fill", "brightness-low", "brilliance", "broadcast-pin", "broadcast", "browser-chrome", "browser-edge", "browser-firefox", "browser-safari", "brush-fill", "brush", "bucket-fill", "bucket", "bug-fill", "bug", "building-add", "building-check", "building-dash", "building-down", "building-exclamation", "building-fill-add", "building-fill-check", "building-fill-dash", "building-fill-down", "building-fill-exclamation", "building-fill-gear", "building-fill-lock", "building-fill-slash", "building-fill-up", "building-fill-x", "building-fill", "building-gear", "building-lock", "building-slash", "building-up", "building-x", "building", "buildings-fill", "buildings", "bullseye", "bus-front-fill", "bus-front", "c-circle-fill", "c-circle", "c-square-fill", "c-square", "cake-fill", "cake", "cake2-fill", "cake2", "calculator-fill", "calculator", "calendar-check-fill", "calendar-check", "calendar-date-fill", "calendar-date", "calendar-day-fill", "calendar-day", "calendar-event-fill", "calendar-event", "calendar-fill", "calendar-heart-fill", "calendar-heart", "calendar-minus-fill", "calendar-minus", "calendar-month-fill", "calendar-month", "calendar-plus-fill", "calendar-plus", "calendar-range-fill", "calendar-range", "calendar-week-fill", "calendar-week", "calendar-x-fill", "calendar-x", "calendar", "calendar2-check-fill", "calendar2-check", "calendar2-date-fill", "calendar2-date", "calendar2-day-fill", "calendar2-day", "calendar2-event-fill", "calendar2-event", "calendar2-fill", "calendar2-heart-fill", "calendar2-heart", "calendar2-minus-fill", "calendar2-minus", "calendar2-month-fill", "calendar2-month", "calendar2-plus-fill", "calendar2-plus", "calendar2-range-fill", "calendar2-range", "calendar2-week-fill", "calendar2-week", "calendar2-x-fill", "calendar2-x", "calendar2", "calendar3-event-fill", "calendar3-event", "calendar3-fill", "calendar3-range-fill", "calendar3-range", "calendar3-week-fill", "calendar3-week", "calendar3", "calendar4-event", "calendar4-range", "calendar4-week", "calendar4", "camera-fill", "camera-reels-fill", "camera-reels", "camera-video-fill", "camera-video-off-fill", "camera-video-off", "camera-video", "camera", "camera2", "capslock-fill", "capslock", "capsule-pill", "capsule", "car-front-fill", "car-front", "card-checklist", "card-heading", "card-image", "card-list", "card-text", "caret-down-fill", "caret-down-square-fill", "caret-down-square", "caret-down", "caret-left-fill", "caret-left-square-fill", "caret-left-square", "caret-left", "caret-right-fill", "caret-right-square-fill", "caret-right-square", "caret-right", "caret-up-fill", "caret-up-square-fill", "caret-up-square", "caret-up", "cart-check-fill", "cart-check", "cart-dash-fill", "cart-dash", "cart-fill", "cart-plus-fill", "cart-plus", "cart-x-fill", "cart-x", "cart", "cart2", "cart3", "cart4", "cash-coin", "cash-stack", "cash", "cassette-fill", "cassette", "cast", "cc-circle-fill", "cc-circle", "cc-square-fill", "cc-square", "chat-dots-fill", "chat-dots", "chat-fill", "chat-heart-fill", "chat-heart", "chat-left-dots-fill", "chat-left-dots", "chat-left-fill", "chat-left-heart-fill", "chat-left-heart", "chat-left-quote-fill", "chat-left-quote", "chat-left-text-fill", "chat-left-text", "chat-left", "chat-quote-fill", "chat-quote", "chat-right-dots-fill", "chat-right-dots", "chat-right-fill", "chat-right-heart-fill", "chat-right-heart", "chat-right-quote-fill", "chat-right-quote", "chat-right-text-fill", "chat-right-text", "chat-right", "chat-square-dots-fill", "chat-square-dots", "chat-square-fill", "chat-square-heart-fill", "chat-square-heart", "chat-square-quote-fill", "chat-square-quote", "chat-square-text-fill", "chat-square-text", "chat-square", "chat-text-fill", "chat-text", "chat", "check-all", "check-circle-fill", "check-circle", "check-lg", "check-square-fill", "check-square", "check", "check2-all", "check2-circle", "check2-square", "check2", "chevron-bar-contract", "chevron-bar-down", "chevron-bar-expand", "chevron-bar-left", "chevron-bar-right", "chevron-bar-up", "chevron-compact-down", "chevron-compact-left", "chevron-compact-right", "chevron-compact-up", "chevron-contract", "chevron-double-down", "chevron-double-left", "chevron-double-right", "chevron-double-up", "chevron-down", "chevron-expand", "chevron-left", "chevron-right", "chevron-up", "circle-fill", "circle-half", "circle-square", "circle", "clipboard-check-fill", "clipboard-check", "clipboard-data-fill", "clipboard-data", "clipboard-fill", "clipboard-heart-fill", "clipboard-heart", "clipboard-minus-fill", "clipboard-minus", "clipboard-plus-fill", "clipboard-plus", "clipboard-pulse", "clipboard-x-fill", "clipboard-x", "clipboard", "clipboard2-check-fill", "clipboard2-check", "clipboard2-data-fill", "clipboard2-data", "clipboard2-fill", "clipboard2-heart-fill", "clipboard2-heart", "clipboard2-minus-fill", "clipboard2-minus", "clipboard2-plus-fill", "clipboard2-plus", "clipboard2-pulse-fill", "clipboard2-pulse", "clipboard2-x-fill", "clipboard2-x", "clipboard2", "clock-fill", "clock-history", "clock", "cloud-arrow-down-fill", "cloud-arrow-down", "cloud-arrow-up-fill", "cloud-arrow-up", "cloud-check-fill", "cloud-check", "cloud-download-fill", "cloud-download", "cloud-drizzle-fill", "cloud-drizzle", "cloud-fill", "cloud-fog-fill", "cloud-fog", "cloud-fog2-fill", "cloud-fog2", "cloud-hail-fill", "cloud-hail", "cloud-haze-fill", "cloud-haze", "cloud-haze2-fill", "cloud-haze2", "cloud-lightning-fill", "cloud-lightning-rain-fill", "cloud-lightning-rain", "cloud-lightning", "cloud-minus-fill", "cloud-minus", "cloud-moon-fill", "cloud-moon", "cloud-plus-fill", "cloud-plus", "cloud-rain-fill", "cloud-rain-heavy-fill", "cloud-rain-heavy", "cloud-rain", "cloud-slash-fill", "cloud-slash", "cloud-sleet-fill", "cloud-sleet", "cloud-snow-fill", "cloud-snow", "cloud-sun-fill", "cloud-sun", "cloud-upload-fill", "cloud-upload", "cloud", "clouds-fill", "clouds", "cloudy-fill", "cloudy", "code-slash", "code-square", "code", "coin", "collection-fill", "collection-play-fill", "collection-play", "collection", "columns-gap", "columns", "command", "compass-fill", "compass", "cone-striped", "cone", "controller", "cookie", "copy", "cpu-fill", "cpu", "credit-card-2-back-fill", "credit-card-2-back", "credit-card-2-front-fill", "credit-card-2-front", "credit-card-fill", "credit-card", "crop", "crosshair", "crosshair2", "cup-fill", "cup-hot-fill", "cup-hot", "cup-straw", "cup", "currency-bitcoin", "currency-dollar", "currency-euro", "currency-exchange", "currency-pound", "currency-rupee", "currency-yen", "cursor-fill", "cursor-text", "cursor", "dash-circle-dotted", "dash-circle-fill", "dash-circle", "dash-lg", "dash-square-dotted", "dash-square-fill", "dash-square", "dash", "database-add", "database-check", "database-dash", "database-down", "database-exclamation", "database-fill-add", "database-fill-check", "database-fill-dash", "database-fill-down", "database-fill-exclamation", "database-fill-gear", "database-fill-lock", "database-fill-slash", "database-fill-up", "database-fill-x", "database-fill", "database-gear", "database-lock", "database-slash", "database-up", "database-x", "database", "device-hdd-fill", "device-hdd", "device-ssd-fill", "device-ssd", "diagram-2-fill", "diagram-2", "diagram-3-fill", "diagram-3", "diamond-fill", "diamond-half", "diamond", "dice-1-fill", "dice-1", "dice-2-fill", "dice-2", "dice-3-fill", "dice-3", "dice-4-fill", "dice-4", "dice-5-fill", "dice-5", "dice-6-fill", "dice-6", "disc-fill", "disc", "discord", "display-fill", "display", "displayport-fill", "displayport", "distribute-horizontal", "distribute-vertical", "door-closed-fill", "door-closed", "door-open-fill", "door-open", "dot", "download", "dpad-fill", "dpad", "dribbble", "dropbox", "droplet-fill", "droplet-half", "droplet", "duffle-fill", "duffle", "ear-fill", "ear", "earbuds", "easel-fill", "easel", "easel2-fill", "easel2", "easel3-fill", "easel3", "egg-fill", "egg-fried", "egg", "eject-fill", "eject", "emoji-angry-fill", "emoji-angry", "emoji-astonished-fill", "emoji-astonished", "emoji-dizzy-fill", "emoji-dizzy", "emoji-expressionless-fill", "emoji-expressionless", "emoji-frown-fill", "emoji-frown", "emoji-grimace-fill", "emoji-grimace", "emoji-grin-fill", "emoji-grin", "emoji-heart-eyes-fill", "emoji-heart-eyes", "emoji-kiss-fill", "emoji-kiss", "emoji-laughing-fill", "emoji-laughing", "emoji-neutral-fill", "emoji-neutral", "emoji-smile-fill", "emoji-smile-upside-down-fill", "emoji-smile-upside-down", "emoji-smile", "emoji-sunglasses-fill", "emoji-sunglasses", "emoji-surprise-fill", "emoji-surprise", "emoji-tear-fill", "emoji-tear", "emoji-wink-fill", "emoji-wink", "envelope-arrow-down-fill", "envelope-arrow-down", "envelope-arrow-up-fill", "envelope-arrow-up", "envelope-at-fill", "envelope-at", "envelope-check-fill", "envelope-check", "envelope-dash-fill", "envelope-dash", "envelope-exclamation-fill", "envelope-exclamation", "envelope-fill", "envelope-heart-fill", "envelope-heart", "envelope-open-fill", "envelope-open-heart-fill", "envelope-open-heart", "envelope-open", "envelope-paper-fill", "envelope-paper-heart-fill", "envelope-paper-heart", "envelope-paper", "envelope-plus-fill", "envelope-plus", "envelope-slash-fill", "envelope-slash", "envelope-x-fill", "envelope-x", "envelope", "eraser-fill", "eraser", "escape", "ethernet", "ev-front-fill", "ev-front", "ev-station-fill", "ev-station", "exclamation-circle-fill", "exclamation-circle", "exclamation-diamond-fill", "exclamation-diamond", "exclamation-lg", "exclamation-octagon-fill", "exclamation-octagon", "exclamation-square-fill", "exclamation-square", "exclamation-triangle-fill", "exclamation-triangle", "exclamation", "exclude", "explicit-fill", "explicit", "exposure", "eye-fill", "eye-slash-fill", "eye-slash", "eye", "eyedropper", "eyeglasses", "facebook", "fan", "fast-forward-btn-fill", "fast-forward-btn", "fast-forward-circle-fill", "fast-forward-circle", "fast-forward-fill", "fast-forward", "feather", "feather2", "file-arrow-down-fill", "file-arrow-down", "file-arrow-up-fill", "file-arrow-up", "file-bar-graph-fill", "file-bar-graph", "file-binary-fill", "file-binary", "file-break-fill", "file-break", "file-check-fill", "file-check", "file-code-fill", "file-code", "file-diff-fill", "file-diff", "file-earmark-arrow-down-fill", "file-earmark-arrow-down", "file-earmark-arrow-up-fill", "file-earmark-arrow-up", "file-earmark-bar-graph-fill", "file-earmark-bar-graph", "file-earmark-binary-fill", "file-earmark-binary", "file-earmark-break-fill", "file-earmark-break", "file-earmark-check-fill", "file-earmark-check", "file-earmark-code-fill", "file-earmark-code", "file-earmark-diff-fill", "file-earmark-diff", "file-earmark-easel-fill", "file-earmark-easel", "file-earmark-excel-fill", "file-earmark-excel", "file-earmark-fill", "file-earmark-font-fill", "file-earmark-font", "file-earmark-image-fill", "file-earmark-image", "file-earmark-lock-fill", "file-earmark-lock", "file-earmark-lock2-fill", "file-earmark-lock2", "file-earmark-medical-fill", "file-earmark-medical", "file-earmark-minus-fill", "file-earmark-minus", "file-earmark-music-fill", "file-earmark-music", "file-earmark-pdf-fill", "file-earmark-pdf", "file-earmark-person-fill", "file-earmark-person", "file-earmark-play-fill", "file-earmark-play", "file-earmark-plus-fill", "file-earmark-plus", "file-earmark-post-fill", "file-earmark-post", "file-earmark-ppt-fill", "file-earmark-ppt", "file-earmark-richtext-fill", "file-earmark-richtext", "file-earmark-ruled-fill", "file-earmark-ruled", "file-earmark-slides-fill", "file-earmark-slides", "file-earmark-spreadsheet-fill", "file-earmark-spreadsheet", "file-earmark-text-fill", "file-earmark-text", "file-earmark-word-fill", "file-earmark-word", "file-earmark-x-fill", "file-earmark-x", "file-earmark-zip-fill", "file-earmark-zip", "file-earmark", "file-easel-fill", "file-easel", "file-excel-fill", "file-excel", "file-fill", "file-font-fill", "file-font", "file-image-fill", "file-image", "file-lock-fill", "file-lock", "file-lock2-fill", "file-lock2", "file-medical-fill", "file-medical", "file-minus-fill", "file-minus", "file-music-fill", "file-music", "file-pdf-fill", "file-pdf", "file-person-fill", "file-person", "file-play-fill", "file-play", "file-plus-fill", "file-plus", "file-post-fill", "file-post", "file-ppt-fill", "file-ppt", "file-richtext-fill", "file-richtext", "file-ruled-fill", "file-ruled", "file-slides-fill", "file-slides", "file-spreadsheet-fill", "file-spreadsheet", "file-text-fill", "file-text", "file-word-fill", "file-word", "file-x-fill", "file-x", "file-zip-fill", "file-zip", "file", "files-alt", "files", "filetype-aac", "filetype-ai", "filetype-bmp", "filetype-cs", "filetype-css", "filetype-csv", "filetype-doc", "filetype-docx", "filetype-exe", "filetype-gif", "filetype-heic", "filetype-html", "filetype-java", "filetype-jpg", "filetype-js", "filetype-json", "filetype-jsx", "filetype-key", "filetype-m4p", "filetype-md", "filetype-mdx", "filetype-mov", "filetype-mp3", "filetype-mp4", "filetype-otf", "filetype-pdf", "filetype-php", "filetype-png", "filetype-ppt", "filetype-pptx", "filetype-psd", "filetype-py", "filetype-raw", "filetype-rb", "filetype-sass", "filetype-scss", "filetype-sh", "filetype-sql", "filetype-svg", "filetype-tiff", "filetype-tsx", "filetype-ttf", "filetype-txt", "filetype-wav", "filetype-woff", "filetype-xls", "filetype-xlsx", "filetype-xml", "filetype-yml", "film", "filter-circle-fill", "filter-circle", "filter-left", "filter-right", "filter-square-fill", "filter-square", "filter", "fingerprint", "fire", "flag-fill", "flag", "floppy-fill", "floppy", "floppy2-fill", "floppy2", "flower1", "flower2", "flower3", "folder-check", "folder-fill", "folder-minus", "folder-plus", "folder-symlink-fill", "folder-symlink", "folder-x", "folder", "folder2-open", "folder2", "fonts", "forward-fill", "forward", "front", "fuel-pump-diesel-fill", "fuel-pump-diesel", "fuel-pump-fill", "fuel-pump", "fullscreen-exit", "fullscreen", "funnel-fill", "funnel", "gear-fill", "gear-wide-connected", "gear-wide", "gear", "gem", "gender-ambiguous", "gender-female", "gender-male", "gender-neuter", "gender-trans", "geo-alt-fill", "geo-alt", "geo-fill", "geo", "gift-fill", "gift", "git", "github", "gitlab", "globe-americas", "globe-asia-australia", "globe-central-south-asia", "globe-europe-africa", "globe", "globe2", "google-play", "google", "gpu-card", "graph-down-arrow", "graph-down", "graph-up-arrow", "graph-up", "grid-1x2-fill", "grid-1x2", "grid-3x2-gap-fill", "grid-3x2-gap", "grid-3x2", "grid-3x3-gap-fill", "grid-3x3-gap", "grid-3x3", "grid-fill", "grid", "grip-horizontal", "grip-vertical", "h-circle-fill", "h-circle", "h-square-fill", "h-square", "hammer", "hand-index-fill", "hand-index-thumb-fill", "hand-index-thumb", "hand-index", "hand-thumbs-down-fill", "hand-thumbs-down", "hand-thumbs-up-fill", "hand-thumbs-up", "handbag-fill", "handbag", "hash", "hdd-fill", "hdd-network-fill", "hdd-network", "hdd-rack-fill", "hdd-rack", "hdd-stack-fill", "hdd-stack", "hdd", "hdmi-fill", "hdmi", "headphones", "headset-vr", "headset", "heart-arrow", "heart-fill", "heart-half", "heart-pulse-fill", "heart-pulse", "heart", "heartbreak-fill", "heartbreak", "hearts", "heptagon-fill", "heptagon-half", "heptagon", "hexagon-fill", "hexagon-half", "hexagon", "highlighter", "highlights", "hospital-fill", "hospital", "hourglass-bottom", "hourglass-split", "hourglass-top", "hourglass", "house-add-fill", "house-add", "house-check-fill", "house-check", "house-dash-fill", "house-dash", "house-door-fill", "house-door", "house-down-fill", "house-down", "house-exclamation-fill", "house-exclamation", "house-fill", "house-gear-fill", "house-gear", "house-heart-fill", "house-heart", "house-lock-fill", "house-lock", "house-slash-fill", "house-slash", "house-up-fill", "house-up", "house-x-fill", "house-x", "house", "houses-fill", "houses", "hr", "hurricane", "hypnotize", "image-alt", "image-fill", "image", "images", "inbox-fill", "inbox", "inboxes-fill", "inboxes", "incognito", "indent", "infinity", "info-circle-fill", "info-circle", "info-lg", "info-square-fill", "info-square", "info", "input-cursor-text", "input-cursor", "instagram", "intersect", "journal-album", "journal-arrow-down", "journal-arrow-up", "journal-bookmark-fill", "journal-bookmark", "journal-check", "journal-code", "journal-medical", "journal-minus", "journal-plus", "journal-richtext", "journal-text", "journal-x", "journal", "journals", "joystick", "justify-left", "justify-right", "justify", "kanban-fill", "kanban", "key-fill", "key", "keyboard-fill", "keyboard", "ladder", "lamp-fill", "lamp", "laptop-fill", "laptop", "layer-backward", "layer-forward", "layers-fill", "layers-half", "layers", "layout-sidebar-inset-reverse", "layout-sidebar-inset", "layout-sidebar-reverse", "layout-sidebar", "layout-split", "layout-text-sidebar-reverse", "layout-text-sidebar", "layout-text-window-reverse", "layout-text-window", "layout-three-columns", "layout-wtf", "life-preserver", "lightbulb-fill", "lightbulb-off-fill", "lightbulb-off", "lightbulb", "lightning-charge-fill", "lightning-charge", "lightning-fill", "lightning", "line", "link-45deg", "link", "linkedin", "list-check", "list-columns-reverse", "list-columns", "list-nested", "list-ol", "list-stars", "list-task", "list-ul", "list", "lock-fill", "lock", "luggage-fill", "luggage", "lungs-fill", "lungs", "magic", "magnet-fill", "magnet", "mailbox-flag", "mailbox", "mailbox2-flag", "mailbox2", "map-fill", "map", "markdown-fill", "markdown", "marker-tip", "mask", "mastodon", "medium", "megaphone-fill", "megaphone", "memory", "menu-app-fill", "menu-app", "menu-button-fill", "menu-button-wide-fill", "menu-button-wide", "menu-button", "menu-down", "menu-up", "messenger", "meta", "mic-fill", "mic-mute-fill", "mic-mute", "mic", "microsoft-teams", "microsoft", "minecart-loaded", "minecart", "modem-fill", "modem", "moisture", "moon-fill", "moon-stars-fill", "moon-stars", "moon", "mortarboard-fill", "mortarboard", "motherboard-fill", "motherboard", "mouse-fill", "mouse", "mouse2-fill", "mouse2", "mouse3-fill", "mouse3", "music-note-beamed", "music-note-list", "music-note", "music-player-fill", "music-player", "newspaper", "nintendo-switch", "node-minus-fill", "node-minus", "node-plus-fill", "node-plus", "noise-reduction", "nut-fill", "nut", "nvidia", "nvme-fill", "nvme", "octagon-fill", "octagon-half", "octagon", "opencollective", "optical-audio-fill", "optical-audio", "option", "outlet", "p-circle-fill", "p-circle", "p-square-fill", "p-square", "paint-bucket", "palette-fill", "palette", "palette2", "paperclip", "paragraph", "pass-fill", "pass", "passport-fill", "passport", "patch-check-fill", "patch-check", "patch-exclamation-fill", "patch-exclamation", "patch-minus-fill", "patch-minus", "patch-plus-fill", "patch-plus", "patch-question-fill", "patch-question", "pause-btn-fill", "pause-btn", "pause-circle-fill", "pause-circle", "pause-fill", "pause", "paypal", "pc-display-horizontal", "pc-display", "pc-horizontal", "pc", "pci-card-network", "pci-card-sound", "pci-card", "peace-fill", "peace", "pen-fill", "pen", "pencil-fill", "pencil-square", "pencil", "pentagon-fill", "pentagon-half", "pentagon", "people-fill", "people", "percent", "person-add", "person-arms-up", "person-badge-fill", "person-badge", "person-bounding-box", "person-check-fill", "person-check", "person-circle", "person-dash-fill", "person-dash", "person-down", "person-exclamation", "person-fill-add", "person-fill-check", "person-fill-dash", "person-fill-down", "person-fill-exclamation", "person-fill-gear", "person-fill-lock", "person-fill-slash", "person-fill-up", "person-fill-x", "person-fill", "person-gear", "person-heart", "person-hearts", "person-lines-fill", "person-lock", "person-plus-fill", "person-plus", "person-raised-hand", "person-rolodex", "person-slash", "person-square", "person-standing-dress", "person-standing", "person-up", "person-vcard-fill", "person-vcard", "person-video", "person-video2", "person-video3", "person-walking", "person-wheelchair", "person-workspace", "person-x-fill", "person-x", "person", "phone-fill", "phone-flip", "phone-landscape-fill", "phone-landscape", "phone-vibrate-fill", "phone-vibrate", "phone", "pie-chart-fill", "pie-chart", "piggy-bank-fill", "piggy-bank", "pin-angle-fill", "pin-angle", "pin-fill", "pin-map-fill", "pin-map", "pin", "pinterest", "pip-fill", "pip", "play-btn-fill", "play-btn", "play-circle-fill", "play-circle", "play-fill", "play", "playstation", "plug-fill", "plug", "plugin", "plus-circle-dotted", "plus-circle-fill", "plus-circle", "plus-lg", "plus-slash-minus", "plus-square-dotted", "plus-square-fill", "plus-square", "plus", "postage-fill", "postage-heart-fill", "postage-heart", "postage", "postcard-fill", "postcard-heart-fill", "postcard-heart", "postcard", "power", "prescription", "prescription2", "printer-fill", "printer", "projector-fill", "projector", "puzzle-fill", "puzzle", "qr-code-scan", "qr-code", "question-circle-fill", "question-circle", "question-diamond-fill", "question-diamond", "question-lg", "question-octagon-fill", "question-octagon", "question-square-fill", "question-square", "question", "quora", "quote", "r-circle-fill", "r-circle", "r-square-fill", "r-square", "radar", "radioactive", "rainbow", "receipt-cutoff", "receipt", "reception-0", "reception-1", "reception-2", "reception-3", "reception-4", "record-btn-fill", "record-btn", "record-circle-fill", "record-circle", "record-fill", "record", "record2-fill", "record2", "recycle", "reddit", "regex", "repeat-1", "repeat", "reply-all-fill", "reply-all", "reply-fill", "reply", "rewind-btn-fill", "rewind-btn", "rewind-circle-fill", "rewind-circle", "rewind-fill", "rewind", "robot", "rocket-fill", "rocket-takeoff-fill", "rocket-takeoff", "rocket", "router-fill", "router", "rss-fill", "rss", "rulers", "safe-fill", "safe", "safe2-fill", "safe2", "save-fill", "save", "save2-fill", "save2", "scissors", "scooter", "screwdriver", "sd-card-fill", "sd-card", "search-heart-fill", "search-heart", "search", "segmented-nav", "send-arrow-down-fill", "send-arrow-down", "send-arrow-up-fill", "send-arrow-up", "send-check-fill", "send-check", "send-dash-fill", "send-dash", "send-exclamation-fill", "send-exclamation", "send-fill", "send-plus-fill", "send-plus", "send-slash-fill", "send-slash", "send-x-fill", "send-x", "send", "server", "shadows", "share-fill", "share", "shield-check", "shield-exclamation", "shield-fill-check", "shield-fill-exclamation", "shield-fill-minus", "shield-fill-plus", "shield-fill-x", "shield-fill", "shield-lock-fill", "shield-lock", "shield-minus", "shield-plus", "shield-shaded", "shield-slash-fill", "shield-slash", "shield-x", "shield", "shift-fill", "shift", "shop-window", "shop", "shuffle", "sign-dead-end-fill", "sign-dead-end", "sign-do-not-enter-fill", "sign-do-not-enter", "sign-intersection-fill", "sign-intersection-side-fill", "sign-intersection-side", "sign-intersection-t-fill", "sign-intersection-t", "sign-intersection-y-fill", "sign-intersection-y", "sign-intersection", "sign-merge-left-fill", "sign-merge-left", "sign-merge-right-fill", "sign-merge-right", "sign-no-left-turn-fill", "sign-no-left-turn", "sign-no-parking-fill", "sign-no-parking", "sign-no-right-turn-fill", "sign-no-right-turn", "sign-railroad-fill", "sign-railroad", "sign-stop-fill", "sign-stop-lights-fill", "sign-stop-lights", "sign-stop", "sign-turn-left-fill", "sign-turn-left", "sign-turn-right-fill", "sign-turn-right", "sign-turn-slight-left-fill", "sign-turn-slight-left", "sign-turn-slight-right-fill", "sign-turn-slight-right", "sign-yield-fill", "sign-yield", "signal", "signpost-2-fill", "signpost-2", "signpost-fill", "signpost-split-fill", "signpost-split", "signpost", "sim-fill", "sim-slash-fill", "sim-slash", "sim", "sina-weibo", "skip-backward-btn-fill", "skip-backward-btn", "skip-backward-circle-fill", "skip-backward-circle", "skip-backward-fill", "skip-backward", "skip-end-btn-fill", "skip-end-btn", "skip-end-circle-fill", "skip-end-circle", "skip-end-fill", "skip-end", "skip-forward-btn-fill", "skip-forward-btn", "skip-forward-circle-fill", "skip-forward-circle", "skip-forward-fill", "skip-forward", "skip-start-btn-fill", "skip-start-btn", "skip-start-circle-fill", "skip-start-circle", "skip-start-fill", "skip-start", "skype", "slack", "slash-circle-fill", "slash-circle", "slash-lg", "slash-square-fill", "slash-square", "slash", "sliders", "sliders2-vertical", "sliders2", "smartwatch", "snapchat", "snow", "snow2", "snow3", "sort-alpha-down-alt", "sort-alpha-down", "sort-alpha-up-alt", "sort-alpha-up", "sort-down-alt", "sort-down", "sort-numeric-down-alt", "sort-numeric-down", "sort-numeric-up-alt", "sort-numeric-up", "sort-up-alt", "sort-up", "soundwave", "sourceforge", "speaker-fill", "speaker", "speedometer", "speedometer2", "spellcheck", "spotify", "square-fill", "square-half", "square", "stack-overflow", "stack", "star-fill", "star-half", "star", "stars", "steam", "stickies-fill", "stickies", "sticky-fill", "sticky", "stop-btn-fill", "stop-btn", "stop-circle-fill", "stop-circle", "stop-fill", "stop", "stoplights-fill", "stoplights", "stopwatch-fill", "stopwatch", "strava", "stripe", "subscript", "substack", "subtract", "suit-club-fill", "suit-club", "suit-diamond-fill", "suit-diamond", "suit-heart-fill", "suit-heart", "suit-spade-fill", "suit-spade", "suitcase-fill", "suitcase-lg-fill", "suitcase-lg", "suitcase", "suitcase2-fill", "suitcase2", "sun-fill", "sun", "sunglasses", "sunrise-fill", "sunrise", "sunset-fill", "sunset", "superscript", "symmetry-horizontal", "symmetry-vertical", "table", "tablet-fill", "tablet-landscape-fill", "tablet-landscape", "tablet", "tag-fill", "tag", "tags-fill", "tags", "taxi-front-fill", "taxi-front", "telegram", "telephone-fill", "telephone-forward-fill", "telephone-forward", "telephone-inbound-fill", "telephone-inbound", "telephone-minus-fill", "telephone-minus", "telephone-outbound-fill", "telephone-outbound", "telephone-plus-fill", "telephone-plus", "telephone-x-fill", "telephone-x", "telephone", "tencent-qq", "terminal-dash", "terminal-fill", "terminal-plus", "terminal-split", "terminal-x", "terminal", "text-center", "text-indent-left", "text-indent-right", "text-left", "text-paragraph", "text-right", "text-wrap", "textarea-resize", "textarea-t", "textarea", "thermometer-half", "thermometer-high", "thermometer-low", "thermometer-snow", "thermometer-sun", "thermometer", "threads-fill", "threads", "three-dots-vertical", "three-dots", "thunderbolt-fill", "thunderbolt", "ticket-detailed-fill", "ticket-detailed", "ticket-fill", "ticket-perforated-fill", "ticket-perforated", "ticket", "tiktok", "toggle-off", "toggle-on", "toggle2-off", "toggle2-on", "toggles", "toggles2", "tools", "tornado", "train-freight-front-fill", "train-freight-front", "train-front-fill", "train-front", "train-lightrail-front-fill", "train-lightrail-front", "translate", "transparency", "trash-fill", "trash", "trash2-fill", "trash2", "trash3-fill", "trash3", "tree-fill", "tree", "trello", "triangle-fill", "triangle-half", "triangle", "trophy-fill", "trophy", "tropical-storm", "truck-flatbed", "truck-front-fill", "truck-front", "truck", "tsunami", "tv-fill", "tv", "twitch", "twitter-x", "twitter", "type-bold", "type-h1", "type-h2", "type-h3", "type-h4", "type-h5", "type-h6", "type-italic", "type-strikethrough", "type-underline", "type", "ubuntu", "ui-checks-grid", "ui-checks", "ui-radios-grid", "ui-radios", "umbrella-fill", "umbrella", "unindent", "union", "unity", "universal-access-circle", "universal-access", "unlock-fill", "unlock", "upc-scan", "upc", "upload", "usb-c-fill", "usb-c", "usb-drive-fill", "usb-drive", "usb-fill", "usb-micro-fill", "usb-micro", "usb-mini-fill", "usb-mini", "usb-plug-fill", "usb-plug", "usb-symbol", "usb", "valentine", "valentine2", "vector-pen", "view-list", "view-stacked", "vignette", "vimeo", "vinyl-fill", "vinyl", "virus", "virus2", "voicemail", "volume-down-fill", "volume-down", "volume-mute-fill", "volume-mute", "volume-off-fill", "volume-off", "volume-up-fill", "volume-up", "vr", "wallet-fill", "wallet", "wallet2", "watch", "water", "webcam-fill", "webcam", "wechat", "whatsapp", "wifi-1", "wifi-2", "wifi-off", "wifi", "wikipedia", "wind", "window-dash", "window-desktop", "window-dock", "window-fullscreen", "window-plus", "window-sidebar", "window-split", "window-stack", "window-x", "window", "windows", "wordpress", "wrench-adjustable-circle-fill", "wrench-adjustable-circle", "wrench-adjustable", "wrench", "x-circle-fill", "x-circle", "x-diamond-fill", "x-diamond", "x-lg", "x-octagon-fill", "x-octagon", "x-square-fill", "x-square", "x", "xbox", "yelp", "yin-yang", "youtube", "zoom-in", "zoom-out"];
8
+ };
9
+ type IconGroup = keyof typeof groupedIcons;
10
+ declare const iconGroups: IconGroup[];
11
+ type GroupedIcons = Record<IconGroup, readonly string[]>;
12
+ /**
13
+ * Grouped icon registry: maps each icon group name to its list of icon names.
14
+ */
15
+ declare const iconRegistry: GroupedIcons;
16
+ declare const LibIcons: string;
17
+ //#endregion
18
+ export { iconRegistry as a, iconGroups as i, IconGroup as n, LibIcons as r, GroupedIcons as t };
@@ -0,0 +1,2 @@
1
+ const e={aws:`activate.alexa-for-business.amplify.apache-mxnet-on-aws.api-gateway.app-config.app-flow.app-mesh.app-runner.app-stream.app-sync.application-auto-scaling.application-composer.application-cost-profiler.application-discovery-service.application-migration-service.artifact.athena.audit-manager.augmented-ai-a2i.aurora.auto-scaling.backint-agent.backup.batch.billing-conductor.bottlerocket.braket.budgets.certificate-manager.chatbot.chime-sdk.chime-voice-connector.chime.clean-rooms.client-vpn.cloud-control-api.cloud-development-kit.cloud-directory.cloud-formation.cloud-front.cloud-hsm.cloud-map.cloud-search.cloud-shell.cloud-trail.cloud-wan.cloud-watch.cloud9.code-artifact.code-build.code-catalyst.code-commit.code-deploy.code-guru.code-pipeline.code-star.code-whisperer.cognito.command-line-interface.comprehend-medical.comprehend.compute-optimizer.config.connect.console-mobile-application.control-tower.corretto.cost-and-usage-report.cost-explorer.data-exchange.data-pipeline.data-sync.data-zone.database-migration-service.deep-composer.deep-learning-amis.deep-learning-containers.deep-lens.deep-racer.detective.dev-ops-guru.device-farm.direct-connect.directory-service.distro-for-open-telemetry.document-db.dynamo-db.ec2-auto-scaling.ec2-image-builder.ec2.ecs-anywhere.efs.eks-anywhere.eks-cloud.eks-distro.elasti-cache.elastic-beanstalk.elastic-block-store.elastic-container-registry.elastic-container-service.elastic-disaster-recovery.elastic-fabric-adapter.elastic-inference.elastic-kubernetes-service.elastic-load-balancing.elastic-transcoder.elemental-appliances-software.elemental-conductor.elemental-delta.elemental-link.elemental-live.elemental-media-connect.elemental-media-convert.elemental-media-live.elemental-media-package.elemental-media-store.elemental-media-tailor.elemental-server.emr.event-bridge.express-workflows.fargate.fault-injection-simulator.file-cache.fin-space.firewall-manager.forecast.fraud-detector.free-rtos.fsx-for-lustre.fsx-for-net-app-ontap.fsx-for-open-zfs.fsx-for-wfs.fsx.game-kit.game-lift.game-sparks.genomics-cli.global-accelerator.glue-data-brew.glue-elastic-views.glue.ground-station.guard-duty.health-lake.honeycode.iam-identity-center.identity-and-access-management.inspector.interactive-video-service.io-t-1-click.io-t-analytics.io-t-button.io-t-core.io-t-device-defender.io-t-device-management.io-t-edu-kit.io-t-events.io-t-express-link.io-t-fleet-wise.io-t-greengrass.io-t-robo-runner.io-t-site-wise.io-t-things-graph.io-t-twin-maker.iq.kendra.key-management-service.keyspaces.kinesis-data-analytics.kinesis-data-streams.kinesis-firehose.kinesis-video-streams.kinesis.lake-formation.lambda.launch-wizard.lex.license-manager.lightsail.local-zones.location-service.lookout-for-equipment.lookout-for-metrics.lookout-for-vision.lumberyard.macie.mainframe-modernization.managed-blockchain.managed-grafana.managed-service-for-prometheus.managed-services.managed-streaming-for-apache-kafka.managed-workflows-for-apache-airflow.management-console.marketplace-dark.marketplace-light.memory-db-for-redis.migration-evaluator.migration-hub.monitron.mq.neptune.network-firewall.neuron.nice-dcv.nice-engin-frame.nimble-studio.nitro-enclaves.omics.open-3d-engine.open-search-service.ops-works.organizations.outposts-family.outposts-rack.outposts-servers.panorama.parallel-cluster.personal-health-dashboard.personalize.pinpoint-apis.pinpoint.polly.private-5g.private-certificate-authority.private-link.professional-services.proton.quantum-ledger-database.quick-sight.rds-on-vmware.rds.re-post.red-hat-open-shift-service-on-aws.redshift.rekognition.reserved-instance-reporting.resilience-hub.resource-access-manager.resource-explorer.robo-maker.route-53.s3-on-outposts.sage-maker-ground-truth.sage-maker-studio-lab.sage-maker.savings-plans.secrets-manager.security-hub.security-lake.server-migration-service.serverless-application-repository.service-catalog.service-management-connector.shield.signer.sim-space-weaver.simple-email-service.simple-notification-service.simple-queue-service.simple-storage-service-glacier.simple-storage-service.site-to-site-vpn.snowball-edge.snowball.snowcone.snowmobile.step-functions.storage-gateway.sumerian.supply-chain.support.systems-manager.tensor-flow-on-aws.textract.thinkbox-deadline.thinkbox-frost.thinkbox-krakatoa.thinkbox-sequoia.thinkbox-stoke.thinkbox-xmesh.timestream.tools-and-sdks.torch-serve.training-certification.transcribe.transfer-family.transit-gateway.translate.trusted-advisor.verified-access.verified-permissions.virtual-private-cloud.vmware-cloud-on-aws.vpc-lattice.waf.wavelength.well-architected-tool.wickr.work-docs-sdk.work-docs.work-link.work-mail.work-spaces-family.x-ray`.split(`.`),azure:`abs-member.active-directory-connect-health.activity-log.administrative-units.advisor.ai-at-edge.ai-studio.aks-automatic.aks-istio.alerts.all-resources.analysis-services.anomaly-detector.api-center.api-connections.api-management-services.api-proxy.app-compliance-automation.app-configuration.app-registrations.app-service-certificates.app-service-domains.app-service-environments.app-service-plans.app-services.app-space-component.app-space.applens.application-gateway-containers.application-gateways.application-group.application-insights.application-security-groups.aquila.arc-data-services.arc-kubernetes.arc-machines.arc-postgre-sql.arc-sql-managed-instance.arc-sql-server.atm-multistack.auto-scale.automanaged-vm.automation-accounts.availability-sets.avs-vm.azure-a.azure-ad-b2c.azure-api-for-fhir.azure-applied-ai-services.azure-arc.azure-attestation.azure-backup-center.azure-blockchain-service.azure-center-for-sap.azure-chaos-studio.azure-cloud-shell.azure-communication-services.azure-communications-gateway.azure-compute-galleries.azure-consumption-commitment.azure-cosmos-db.azure-data-catalog.azure-data-explorer-clusters.azure-database-maria-db-server.azure-database-migration-services.azure-database-my-sql-server.azure-database-postgre-sql-server-group.azure-database-postgre-sql-server.azure-databox-gateway.azure-databricks.azure-deployment-environments.azure-dev-ops.azure-dev-tunnels.azure-edge-hardware-center.azure-experimentation-studio.azure-fileshares.azure-firewall-manager.azure-firewall-policy.azure-hcp-cache.azure-hpc-workbenches.azure-hybrid-center.azure-information-protection.azure-io-t-operations.azure-lighthouse.azure-load-testing.azure-managed-grafana.azure-managed-redis.azure-maps-accounts.azure-media-service.azure-migrate.azure-monitor-dashboard.azure-monitor-pipeline.azure-monitors-for-sap-solutions.azure-net-app-files.azure-network-function-manager-functions.azure-network-function-manager.azure-object-understanding.azure-open-ai.azure-operator-5g-core.azure-operator-insights.azure-operator-nexus.azure-operator-service-manager.azure-orbital.azure-programmable-connectivity.azure-purview-accounts.azure-quotas.azure-red-hat-open-shift.azure-sentinel.azure-service-bus.azure-sphere.azure-spring-apps.azure-sql-edge.azure-sql-server-stretch-databases.azure-sql-vm.azure-sql.azure-stack-edge.azure-stack-hci-sizer.azure-stack.azure-storage-mover.azure-support-center-blue.azure-sustainability.azure-synapse-analytics.azure-token-service.azure-video-indexer.azure-virtual-desktop.azure-vmware-solution.azure-workbooks.azurite.backlog.backup-vault.bare-metal-infrastructure.bastions.batch-accounts.batch-ai.biz-talk.blob-block.blob-page.blockchain-applications.blueprints.bonsai.bot-services.branch.breeze.browser.bug.builds.business-process-tracking.cache-redis.cache.capacity-reservation-groups.capacity.cdn-profiles.central-service-instance-for-sap.ceres.change-analysis.client-apps.cloud-services-classic.cloud-services-extended-support.cloud-test.code-optimization.code.cognitive-search.cognitive-services-decisions.cognitive-services.collaborative-service.commit.community-images.compliance-center.compliance.compute-fleet.computer-vision.conditional-access.confidential-ledgers.connected-cache.connected-vehicle-platform.connections.consortium.container-apps-environments.container-instances.container-registries.container-services-deprecated.content-moderators.content-safety.controls-horizontal.controls.cost-alerts.cost-analysis.cost-budgets.cost-export.cost-management-and-billing.cost-management.counter.cubes.custom-ip-prefix.custom-vision.customer-lockbox-for-microsoft-azure.dashboard-hub.dashboard.data-box.data-collection-rules.data-factories.data-lake-analytics.data-lake-storage-gen1.data-lake-store-gen1.data-share-invitations.data-shares.data-virtualization.database-instance-for-sap.ddo-s-protection-plans.dedicated-hsm.defender-cm-local-manager.defender-dcs-controller.defender-distributer-control-system.defender-engineering-station.defender-external-management.defender-freezer-monitor.defender-historian.defender-hmi.defender-industrial-packaging-system.defender-industrial-printer.defender-industrial-robot.defender-industrial-scale-system.defender-marquee.defender-meter.defender-plc.defender-pneumatic-device.defender-programable-board.defender-relay.defender-robot-controller.defender-rtu.defender-sensor.defender-slot.defender-web-guiding-system.detonation.dev-console.dev-ops-starter.dev-test-labs.device-compliance.device-configuration.device-enrollment.device-provisioning-services.device-security-apple.device-security-google.device-security-windows.device-update-io-t-hub.devices.diagnostics-settings.digital-twins.disk-encryption-sets.disk-pool.disks-classic.disks-snapshots.disks.dns-multistack.dns-private-resolver.dns-security-policy.dns-zones.download.e-books.edge-actions.edge-management.edge-storage-accelerator.education.elastic-job-agents.elastic-san.endpoint-analytics.engage-center-connect.enterprise-applications.entra-connect-health.entra-connect-sync.entra-connect.entra-domain-services.entra-global-secure-access.entra-id-protection.entra-identity-custom-roles.entra-identity-licenses.entra-identity-risky-signins.entra-identity-risky-users.entra-identity-roles-and-administrators.entra-internet-access.entra-managed-identities.entra-private-access.entra-privleged-identity-management.entra-verified-id.error.event-grid-domains.event-grid-subscriptions.event-grid-topics.event-hub-clusters.event-hubs.exchange-access.exchange-on-premises-access.express-route-circuits.express-route-direct.express-route-traffic-collector.extended-security-updates.extensions.external-id-modified.external-id.external-identities.face-apis.feature-previews.fhir-service.fiji.file.files.firewalls.folder-blank.folder-website.form-recognizers.frd-qa.free-services.front-door-and-cdn-profiles.ftp.function-apps.gear.genomics-accounts.genomics.globe-error.globe-success.globe-warning.groups.guide.hd-insight-clusters.hdi-aks-cluster.heart.help-and-support.host-groups.host-pools.hosts.hybrid-connectivity-hub.ic-m-troubleshooting.identity-governance.identity-multi-factor-authentication.identity-secure-score.image-definitions.image-templates.image-versions.image.images.immersive-readers.import-export-jobs.industrial-io-t.information.infrastructure-backup.input-output.instance-pools.integration-accounts.integration-environments.integration-service-environments.internet-analyzer-profiles.intune-app-protection.intune-for-education.intune-trends.intune.io-t-central-applications.io-t-edge.io-t-hub.ip-address-manager.ip-groups.journey-hub.key-vaults.keys.kubernetes-fleet-manager.kubernetes-services.lab-accounts.lab-services.landing-zone.language-understanding.language.launch-portal.learn.load-balancer-hub.load-balancers.load-test.load-testing.local-network-gateways.location.log-analytics-query-pack.log-analytics-workspaces.log-streaming.logic-apps-custom-connector.logic-apps-template.logic-apps.machine-learning-studio-classic-web-services.machine-learning-studio-web-service-plans.machine-learning-studio-workspaces.machine-learning.machines-azure-arc.maintenance-configuration.managed-applications-center.managed-database.managed-desktop.managed-dev-ops-pools.managed-file-shares.managed-identities.managed-instance-apache-cassandra.managed-service-fabric.management-groups.management-portal.marketplace-management.marketplace.med-tech-service.media-file.media.mesh-applications.metrics-advisor.metrics.microsoft-defender-easm.microsoft-defender-for-cloud.microsoft-defender-for-io-t.microsoft-dev-box.mindaro.mission-landing-zone.mobile-engagement.mobile-networks.mobile.modular-data-center.module.monitor-health-models.monitor.multi-tenancy.multifactor-authentication.my-customers.nat.network-foundation-hub.network-interfaces.network-managers.network-security-groups.network-security-hub.network-security-perimeters.network-watcher.notification-hub-namespaces.notification-hubs.offers.on-premises-data-gateways.open-supply-chain-platform.operation-log-classic.oracle-database.os-images-classic.osconfig.outbound-connection.partner-namespace.partner-registration.partner-topic.peering-service.peerings.personalizers.planetary-computer-pro.plans.policy.power-bi-embedded.power-platform.power-up.power.powershell.preview-features.private-endpoints.private-link-service.private-link-services.private-link.process-explorer.production-ready-database.promethus.proximity-placement-groups.public-ip-addresses-classic.public-ip-addresses.public-ip-prefixes.qn-a-makers.quickstart-center.recent.recovery-services-vaults.region-management.relays.remote-rendering.reservations.reserved-capacity.reserved-ip-addresses-classic.resource-explorer.resource-graph-explorer.resource-group-list.resource-groups.resource-guard.resource-linked.resource-management-private-link.resource-mover.resources-provider.restore-points-collections.restore-points.route-filters.route-tables.rtos.savings-plans.scheduler-job-collections.scheduler.scvmm-management-servers.search-grid.search.security-baselines.security.send-grid-accounts.server-farm.serverless-search.service-catalog-mad.service-endpoint-policies.service-fabric-clusters.service-group-relationships.service-groups.service-health.service-providers.shared-image-galleries.signal-r.software-as-a-service.software-updates.solutions.sonic-dash.spatial-anchor-accounts.speech-services.spot-vm.spot-vmss.sql-data-warehouses.sql-database-fleet-manager.sql-database.sql-elastic-pools.sql-managed-instance.sql-server-registries.sql-server.ssd.ssh-keys.ssis-lift-and-shift-ir.stack-hci-premium.static-apps.stor-simple-data-managers.stor-simple-device-managers.storage-accounts-classic.storage-accounts.storage-actions.storage-azure-files.storage-container.storage-explorer.storage-functions.storage-hubs.storage-queue.storage-sync-services.stream-analytics-jobs.subnet.subscriptions.system-topic.table.tag.tags.targets-management.template-specs.templates.tenant-properties.tenant-status.test-base.tfs-vc-repository.time-series-data-sets.time-series-insights-access-policies.time-series-insights-environments.time-series-insights-event-sources.toolbox.toolchain-orchestrator.traffic-manager-profiles.translator-text.troubleshoot.universal-print.update-management-center.updates.user-privacy.user-settings.user-subscriptions.users.verifiable-credentials.verification-as-a-service.versions.video-analyzers.virtual-clusters.virtual-enclaves.virtual-instance-for-sap.virtual-machine.virtual-machines-classic.virtual-network-gateways.virtual-networks-classic.virtual-networks.virtual-router.virtual-visits-builder.virtual-wan-hub.virtual-wans.vm-app-definitions.vm-app-versions.vm-image-version.vm-images-classic.vm-scale-sets.vpnclient-windows.wac-installer.wac.web-app-database.web-application-firewall-policies-waf.web-jobs.web-slots.web-test.website-power.website-staging.windows-notification-services.windows10-core-services.workbooks.worker-container-app.workflow.workload-orchestration.workspace-gateway.workspaces`.split(`.`),gcp:`access-context-manager.administration.advanced-agent-modeling.advanced-solutions-lab.agent-assist.ai-hub.ai-platform-unified.ai-platform.analytics-hub.anthos-config-management.anthos-service-mesh.anthos.api-analytics.api-monetization.api.apigee-api-platform.apigee-sense.app-engine.artifact-registry.asset-inventory.assured-workloads.auto-ml-natural-language.auto-ml-tables.auto-ml-translation.auto-ml-video-intelligence.auto-ml-vision.auto-ml.bare-metal-solutions.batch.beyondcorp.big-query.bigtable.billing.binary-authorization.catalog.certificate-authority-service.certificate-manager.cloud-api-gateway.cloud-apis.cloud-armor.cloud-asset-inventory.cloud-audit-logs.cloud-build.cloud-cdn.cloud-code.cloud-composer.cloud-data-fusion.cloud-deploy.cloud-deployment-manager.cloud-dns.cloud-domains.cloud-ekm.cloud-endpoints.cloud-external-ip-addresses.cloud-firewall-rules.cloud-for-marketing.cloud-functions.cloud-generic.cloud-gpu.cloud-healthcare-api.cloud-healthcare-marketplace.cloud-hsm.cloud-ids.cloud-inference-api.cloud-interconnect.cloud-jobs-api.cloud-load-balancing.cloud-logging.cloud-media-edge.cloud-monitoring.cloud-nat.cloud-natural-language-api.cloud-network.cloud-ops.cloud-optimization-ai-fleet-routing-api.cloud-optimization-ai.cloud-router.cloud-routes.cloud-run-for-anthos.cloud-run.cloud-scheduler.cloud-security-scanner.cloud-shell.cloud-spanner.cloud-sql.cloud-storage.cloud-tasks.cloud-test-lab.cloud-tpu.cloud-translation-api.cloud-vision-api.cloud-vpn.compute-engine.configuration-management.connectivity-test.connectors.contact-center-ai.container-optimized-os.container-registry.data-catalog.data-labeling.data-layers.data-loss-prevention-api.data-qn-a.data-studio.data-transfer.database-migration-service.dataflow.datalab.dataplex.datapol.dataprep.dataproc-metastore.dataproc.datashare.datastore.datastream.debugger.developer-portal.dialogflow-cx.dialogflow-insights.dialogflow.document-ai.early-access-center.error-reporting.eventarc.filestore.financial-services-marketplace.firestore.fleet-engine.free-trial.game-servers.gce-systems-management.genomics.gke-on-prem.google-cloud-marketplace.google-kubernetes-engine.google-maps-platform.healthcare-nlp-api.home.identity-and-access-management.identity-aware-proxy.identity-platform.iot-core.iot-edge.key-access-justifications.key-management-service.kuberun.launcher.local-ssd.looker.managed-service-for-microsoft-active-directory.media-translation-api.memorystore.migrate-for-anthos.migrate-for-compute-engine.my-cloud.network-connectivity-center.network-intelligence-center.network-security.network-tiers.network-topology.onboarding.os-configuration-management.os-inventory-management.os-patch-management.partner-interconnect.partner-portal.performance-dashboard.permissions.persistent-disk.phishing-protection.policy-analyzer.premium-network-tier.private-connectivity.private-service-connect.producer-portal.profiler.project.pub-sub.quantum-engine.quotas.real-world-insights.recommendations-ai.release-notes.retail-api.risk-manager.runtime-config.secret-manager.security-command-center.security-health-advisor.security-key-enforcement.security.service-discovery.speech-to-text.stackdriver.standard-network-tier.stream-suite.support.tensorflow-enterprise.text-to-speech.tools-for-powershell.trace.traffic-director.transfer-appliance.transfer.user-preferences.vertex-ai.video-intelligence-api.virtual-private-cloud.visual-inspection.vmware-engine.web-risk.web-security-scanner.workflows.workload-identity-pool`.split(`.`),tech:`100tb.500px.aarch64.active-campaign-icon.active-campaign.adobe-after-effects.adobe-animate.adobe-dreamweaver.adobe-icon.adobe-illustrator.adobe-incopy.adobe-indesign.adobe-lightroom.adobe-photoshop.adobe-premiere-pro.adobe-premiere.adobe-xd.adobe.adonis-js.adonisjs-icon.adroll.adyen.aerogear.aerospike-icon.aerospike.after-effects.aha.airbnb-icon.airbnb.airbrake.airflow-icon.airflow.airtable.aix.akamai.akka.alfresco.algolia.alpinejs-icon.alpinejs.altair.amazon-chime.amazon-connect.amazon-web-services.amd.amex-digital.amex.amp-icon.amp.ampersand.amplication-icon.amplication.amplitude-icon.amplitude.anaconda.analog.android-icon.android-studio.android-vertical.android.angellist.angular-icon.angular-js.angular.ansible.ant-design.anthropic-icon.anthropic.apache-camel.apache-cloudstack.apache-flink-icon.apache-flink.apache-spark.apache-superset-icon.apache-superset.apache.apiary.apidog-icon.apidog.apl.apollostack.apostrophe.appbaseio-icon.appbaseio.appcelerator.appcenter-icon.appcenter.appcircle-icon.appcircle.appcode.appdynamics-icon.appdynamics.appium.apple-app-store.apple-pay.apple-safari.apple.applitools-icon.applitools.appsignal-icon.appsignal.apptentive.appveyor.appwrite-icon.appwrite.arangodb-icon.arangodb.arc.architect-icon.architect.archlinux.arduino.argo-icon.argo.argocd.arm.armory-icon.armory.asana-icon.asana.asciidoctor.assembla-icon.assembla.astro-icon.astro.astronomer.async-api-icon.async-api.atlassian.atom-icon.atom.atomic-icon.atomic.atomicojs-icon.atomicojs.aurelia.aurora.auth0-icon.auth0.authy.autodesk-maya.autodesk-shot-grid.autoit.autoprefixer.ava.awesome.awk.aws-amplify.aws-api-gateway.aws-app-mesh.aws-appflow.aws-appsync.aws-athena.aws-aurora.aws-backup.aws-batch.aws-certificate-manager.aws-cloudformation.aws-cloudfront.aws-cloudsearch.aws-cloudtrail.aws-cloudwatch.aws-codebuild.aws-codecommit.aws-codedeploy.aws-codepipeline.aws-codestar.aws-cognito.aws-config.aws-documentdb.aws-dynamodb.aws-ec2.aws-ecs.aws-eks.aws-elastic-beanstalk.aws-elasticache.aws-elb.aws-eventbridge.aws-fargate.aws-glacier.aws-glue.aws-iam.aws-keyspaces.aws-kinesis.aws-kms.aws-lake-formation.aws-lambda.aws-lightsail.aws-mq.aws-msk.aws-neptune.aws-open-search.aws-opsworks.aws-quicksight.aws-rds.aws-redshift.aws-route53.aws-s3.aws-secrets-manager.aws-ses.aws-shield.aws-sns.aws-sqs.aws-step-functions.aws-systems-manager.aws-timestream.aws-vpc.aws-waf.aws-xray.aws.axios.azios.azure-devops.azure-sql-database.azure.babel.backbone-icon.backbone-js.backbone.backerkit.baker-street.balena.ballerina.bamboo.basecamp-icon.basecamp.basekit.baseline.bash-icon.bash.batch.beats.behance.bem-2.bem.bigpanda.bing.biomejs-icon.biomejs.bitbar.bitbucket.bitcoin.bitnami.bitrise-icon.bitrise.blender.blitzjs-icon.blitzjs.blocs.blogger.blossom.blueprint.bluesky.bluetooth.booqable-icon.booqable.bootstrap.bosun.botanalytics.bourbon.bower.box.brackets.brainjs.branch-icon.branch.brandfolder-icon.brandfolder.brave.braze-icon.braze.broadcom-icon.broadcom.broccoli.brotli.browserify-icon.browserify.browserling.browserslist.browserstack.browsersync.brunch.bubble-icon.bubble.buck.buddy.buffer.bugherd-icon.bugherd.bugsee.bugsnag.builder-io-icon.builder-io.buildkite-icon.buildkite.bulma.bun.bunny-net-icon.bunny-net.c.cachet.cairo-graphics.cake-php.cakephp-icon.calibre-icon.calibre.campaignmonitor-icon.campaignmonitor.canjs.canva.capacitor.capacitorjs-icon.capacitorjs.capistrano.carbide.cardano-icon.cardano.cassandra.cent-os.centos-icon.certbot.ceylon.chai.chalk.chargebee-icon.chargebee.chartjs.chef.chevereto.chroma.chromatic-icon.chromatic.chrome-web-store.chrome.cinder.circle-ci.cirrus-ci.cirrus.clarity.claude-icon.claude.clio-lang.clion.cljs.clojure-script.clojure.close.cloud9.cloudacademy-icon.cloudacademy.cloudcraft.cloudflare-icon.cloudflare-workers-icon.cloudflare-workers.cloudflare.cloudinary-icon.cloudinary.cloudlinux.cmake.cobalt.cockpit.cocoapods.coda-icon.coda.codacy.code-igniter.code-pen.codeac.codebase.codebeat.codecademy.codeception.codeclimate-icon.codeclimate.codecov-icon.codecov.codefactor-icon.codefactor.codeigniter-icon.codepen-icon.codersrank-icon.codersrank.coderwall.codesandbox-icon.codesandbox.codesee-icon.codesee.codio.codium-icon.codium.coffee-script.commitizen.compass.componentkit.compose-multiplatform.compose.composer.conan-io.concourse.concretecms-icon.concretecms.conda.confluence.consul.contao.contentful.convox-icon.convox.copyleft-pirate.copyleft.corda.cordova.cosmosdb.couchbase.couchdb-icon.couchdb.coursera.coveralls.cpanel.cplusplus.craftcms.crashlytics.crateio.create-react-app.createjs.crossplane-icon.crossplane.crucible.crystal.csharp.css3-official.css3.cssnext.cube-icon.cube.cucumber.curl.customerio-icon.customerio.cyclejs.cypress-icon.cypress.d3.d3js.dailydev-icon.dailydev.daisy-ui-icon.daisy-ui.danfo.dart.dashlane-icon.dashlane.data-grip.data-spell.data-station.database-labs.datadog-icon.datadog.datasette-icon.datasette.datocms-icon.datocms.dbeaver.dbt-icon.dbt.dcos-icon.dcos.debian.delighted-icon.delighted.deno.dependabot.deployhq-icon.deployhq.derby.descript-icon.descript.designernews.deviantart-icon.deviantart.devicon.dgraph-icon.dgraph.dialogflow.digital-ocean-icon.digital-ocean.dimer.dinersclub.discord-icon.discord-js.discord.discourse-icon.discourse.discover.disqus.django-icon.django-rest.django.dockbit.docker-icon.docker.doctrine.docusaurus.dojo-icon.dojo-toolkit.dojo.dolt.dotnet.dovetail-icon.dovetail.dreamhost.dribbble-icon.dribbble.drift.drip.drizzle-icon.drizzle.drone-icon.drone.drools-icon.drools.dropbox.dropmark.dropwizard.dropzone.drupal-icon.drupal.duckduckgo.dynatrace-icon.dynatrace.dyndns.ebanx.eclipse-ceylon.eclipse-icon.eclipse-ide.eclipse-vert-x.eclipse.ecma.edgedb.edgio-icon.edgio.editorconfig.effect-icon.effect.effector.egghead.elasticbeats.elasticpath-icon.elasticpath.elasticsearch.electron.element.elemental-ui.elementary.eleventy-11ty.eleventy.elixir.ello.elm-classic.elm.elo.emacs-classic.emacs.embedded-c.embedly.ember-js.ember-tomster.ember.emmet.enact.engine-yard-icon.engine-yard.envato.envoy-icon.envoy.envoyer.eraser-icon.eraser.erlang.esbuild.esdoc.eslint-old.eslint.eta-icon.eta.etcd.ethereum-color.ethereum.ethers.ethnio.eventbrite-icon.eventbrite.eventsentry.evergreen-icon.evergreen.expo-icon.expo.express.fabric.facebook.faker.falcor.fast-api.fastapi-icon.fastify-icon.fastify.fastlane.fastly.fauna-icon.fauna.feathers.feathersjs.fedora.fetch.ffmpeg-icon.ffmpeg.figma.file-zilla.firebase-icon.firebase.firefox.flannel.flarum.flask.flat-ui.flattr-icon.flattr.fleep.flickr-icon.flickr.flight.floodio.flow.flowxo.floydhub.flutter.flux.fluxxor.fly-icon.fly.fogbugz-icon.fogbugz.fomo-icon.fomo.font-awesome.forestadmin-icon.forestadmin.forever.formkeep.fortran.foundation.foundationdb-icon.foundationdb.framer.framework7-icon.framework7.freebsd.freedcamp-icon.freedcamp.freedomdefined.fresh.frontapp.fsharp.fuchsia.galliumos.game-analytics-icon.game-analytics.ganache-icon.ganache.gatling.gatsby.gazebo.gcc.geekbot.geetest-icon.geetest.gentoo.getyourguide.ghost.giantswarm.gimp.gin.git-icon.git.gitboard.gitbook.github-actions.github-codespaces.github-copilot.github-icon.github-octocat.github.gitkraken.gitlab-icon.gitlab.gitpod.gitter.gitup.glamorous-icon.glamorous.gleam.glimmerjs.glint.glitch-icon.glitch.gnome-icon.gnome.gnu-emacs.gnu-net.gnu.gnupg-icon.gnupg.go-land.go.gocd.godot-engine.godot-icon.godot.gohorse.google-360suite.google-admob.google-ads.google-adsense.google-analytics.google-bard-icon.google-bard.google-calendar.google-cloud-functions.google-cloud-run.google-cloud.google-data-studio.google-developers.google-domains-icon.google-domains.google-drive.google-fit.google-gemini.google-gmail.google-home.google-icon.google-keep.google-maps.google-marketing-platform.google-meet.google-one.google-optimize.google-palm.google-pay.google-photos.google-play-console-icon.google-play-console.google-play-icon.google-play.google-search-console.google-tag-manager.google-workspace.google.gopher.gradio-icon.gradio.gradle.grafana.grails.grammarly-icon.grammarly.graphene.graphql.grav.gravatar-icon.gravatar.graylog-icon.graylog.greensock-icon.greensock.gridsome-icon.gridsome.grommet.groovehq.groovy.grove.growth-book-icon.growth-book.grpc.grunt.gruntjs.gulp.gulpjs.gunicorn.gunjs.gusto.gwt.hack.hacker-one.hadoop.haiku-icon.haiku.haml.hanami.handlebars.hapi.hardhat-icon.hardhat.harness-icon.harness.harvester.hashicorp-icon.hashicorp-vault.hashicorp.hashnode-icon.hashnode.haskell-icon.haskell.hasura-icon.hasura.haxe.haxl.hbase.hcaptcha-icon.hcaptcha.headlessui-icon.headlessui.heap-icon.heap.helm.helpscout-icon.helpscout.hermes.heroku-icon.heroku-redis.heroku.hexo.hhvm.hibernate.highcharts.hipercard.homebrew.hono.hookstate.hootsuite-icon.hootsuite.hosted-graphite.hostgator-icon.hostgator.hotjar-icon.hotjar.houndci.html5-boilerplate.html5.htmx-icon.htmx.httpie-icon.httpie.hubspot.hugging-face-icon.hugging-face.huggy.hugo.humongous.hyper.hyperapp.ibm-spss-statistics.ibm.ie10.ieee.ietf.ifttt.imagemin.imba-icon.imba.immer-icon.immer.immutable.impala.importio-icon.importio.incident-icon.incident.infer.inferno.influxdb-icon.influxdb.ink.inkscape.insomnia.instagram-icon.instagram.intel.intellij-idea.intercom-icon.intercom.internet-computer-icon.internet-computer.internetexplorer.invision-icon.invision.ionic-icon.ionic.ios.iron-icon.iron.itsalive-icon.itsalive.jade.jaeger.jamstack-icon.jamstack.jasmine.java.javascript.jcb.jeet.jekyll.jenkins.jest.jetbrains-icon.jetbrains-space-icon.jetbrains-space.jetbrains.jfrog.jhipster-icon.jhipster.jira-align.jira.joomla.jotai.jquery-mobile.jquery.jruby.jsbin.jsdelivr.jsdom.jsfiddle.json-ld.json-schema-icon.json-schema.json.jspm.jss.juju.jule.julia.junit.jupyter.jwt-icon.jwt.k3os.k3s.kafka-icon.kafka.kaggle.kaios.kallithea.karate.karma.katalon-icon.katalon.kde.keen.kemal.keras.keycdn-icon.keycdn.keydb-icon.keydb.keystonejs.khan-academy-icon.khan-academy.kibana.kickstarter-icon.kickstarter.kinto-icon.kinto.kirby-icon.kirby.knex-js.knex.knockout.koa.kong-icon.kong.kops.koreio.kotlin-icon.kotlin.kraken.krakenjs.ktor-icon.ktor.kubernetes.kustomer.labview.languagetool.laravel.lastfm.lateral-icon.lateral.latex.launchdarkly-icon.launchdarkly.launchrock.leaflet.leankit-icon.leankit.lerna.less-js.less.lets-cloud.letsencrypt.leveldb.lexical-icon.lexical.liftweb.lighthouse.lightstep-icon.lightstep.lighttpd.linear-icon.linear.linkedin-icon.linkedin.linkerd.linode.linux-mint.linux-tux.linux.liquibase.lit-icon.lit.litmus.livewire.llvm.loader.lodash.logentries.logstash.lookback.looker-icon.looker.loom-icon.loom.loopback-icon.loopback.losant.lua.lucene-net.lucene.lumen.mac-os.madge.maestro.mageia.magento.mailchimp-freddie.mailchimp.maildeveloper.mailgun-icon.mailgun.mailjet-icon.mailjet.malinajs.manjaro.mantine-icon.mantine.mapbox-icon.mapbox.maps-me.mapzen-icon.mapzen.mariadb-icon.mariadb.marionette.markdown.marko.marvel.mastercard.mastodon-icon.mastodon.material-ui.materialize.materializecss.matlab.matomo-icon.matomo.matplotlib-icon.matplotlib.matter-icon.matter.mattermost-icon.mattermost.mautic-icon.mautic.maven.mdn.mdx.medium-icon.medium.medusa-icon.medusa.meilisearch.memcached.memgraph.mention.mercurial.mesos.messenger.meta-icon.meta.metabase.metamask-icon.metamask.meteor-icon.meteor-js.meteor.micro-icon.micro-python.micro.microcosm.micron-icon.micron.microsoft-azure.microsoft-edge.microsoft-icon.microsoft-onedrive.microsoft-power-bi.microsoft-sql-server.microsoft-teams.microsoft-windows-icon.microsoft-windows.microsoft.mida-icon.mida.middleman.midjourney.milligram.million-icon.million.milvus-icon.milvus.mindsdb-icon.mindsdb.minitab.mint-lang.mio.miro-icon.miro.mist.mistral-ai-icon.mistral-ai.mithril.mixmax.mixpanel.mlab.mob-x.mocha.mockflow-icon.mockflow.modernizr.modx-icon.modx.moleculer.momentjs.monday-icon.monday.monero.mongodb-icon.mongodb.mongoose-js.mono.moodle.moon.mootools.morpheus-icon.morpheus.mozilla.mparticle-icon.mparticle.mps-icon.mps.ms-dos.msw-icon.msw.multipass.mysql-icon.mysql.naiveui.namecheap.nano.nanonets.nasm.nativescript.nats-icon.nats.neat.neo4j.neon-icon.neon.neovim.nerog.nestjs.net-core.net.netbeans.netflix-icon.netflix.netlify-icon.netlify.network-x.neverinstall-icon.neverinstall.new-relic-icon.new-relic.new4j.nextjs-icon.nextjs.nginx.ngrok.nhibernate.nhost-icon.nhost.nightwatch.nim-lang.nim.nimble.nix.nocodb.nodal.node-sass.nodebots.nodejs-icon-alt.nodejs-icon.nodejs.nodemon.nodeos.nodewebkit.nomad-icon.nomad.notion-icon.notion.noysi.npm-icon.npm.nuclide.nuget.num-py.nuxt-icon.nuxt-js.nuxt.nvidia.nvm.nx.oauth.objective-c.observablehq.obsidian-icon.obsidian.ocaml.octodns.octopus-deploy.oh-my-zsh.okta-icon.okta.olark.onesignal.open-al.open-api.open-cl.open-cv.open-gl.open-graph.open-stack.open-suse.open-telemetry.open-zeppelin-icon.open-zeppelin.openai-icon.openai.openapi-icon.opencart.opencollective.openframeworks.openjs-foundation-icon.openjs-foundation.openlayers.opensearch-icon.opensearch.openshift.opensource.openstack-icon.opentelemetry-icon.opera.opsgenie.optimizely-icon.optimizely.oracle.oreilly.origami.origin.oshw.osquery.overloop-icon.overloop.p5js.packer.pagekit.pagekite.pagerduty-icon.pagerduty.panda.pandacss-icon.pandacss.pandas-icon.pandas.parcel-icon.parcel.parse.parsehub.partytown-icon.partytown.passbolt-icon.passbolt.passport.patreon.payload.paypal.peer5.pepperoni.percona.percy-icon.percy.perf-rocks.perl.perplexity-icon.perplexity.pf-sense.phalcon.phoenix-framework.phoenix.photon-engine.php-alt.php-storm.php.pinecone-icon.pinecone.pinia.pinterest.pipedream.pipedrive.pipefy.pivotal-tracker.pixijs.pkg.planetscale.planless-icon.planless.plasmic.plastic-scm.platformio.play.playwright.playwrite.ploty.pluralsight-icon.pluralsight.pm2-icon.pm2.pnpm.pocket-base.podman.poeditor.polygon.polymer.portainer.postcss.postgraphile.postgresql.posthog-icon.posthog.postman-icon.postman.pouchdb.powershell.preact.precursor.prerender-icon.prerender.prestashop-icon.prestashop.presto-icon.presto.prettier.prisma.prismic-icon.prismic.processing.processwire-icon.processwire.productboard-icon.productboard.producthunt.progress.prometheus.promises.proofy.protoio.protonet.protractor.prott.pug.pulumi-icon.pulumi.pumpkindb.puppet-icon.puppet.puppeteer.purescript-icon.purescript.pushbullet.pusher-icon.pusher.putty.pwa.pycharm.pypi.pyscript.pytest.python-poetry.python.pytorch-icon.pytorch.pyup.q.qdrant-icon.qdrant.qlik.qodana.qt.qualcomm.quarkus-icon.quarkus.quasar.quay.quobyte.quora.qwik-icon.qwik.r-lang.r.rabbitmq-icon.rabbitmq.rackspace-icon.rackspace.rails.ramda.raml.rancher-icon.rancher.raphael.raspberry-pi.rax.reach.react-bootstrap.react-query-icon.react-query.react-router.react-spring.react-styleguidist.react.reactivex.realm.reapp.reasonml-icon.reasonml.recaptcha.recoil-icon.recoil.red-cube-s-epic-compiler-thingy-programming-re-ct.reddit-icon.reddit.redhat-icon.redhat.redis.redsmin.redux-observable.redux-saga.redux.redwoodjs.reindex.relay.release.remix-icon.remix.ren-py.renovatebot.replay-icon.replay.replit-icon.replit.require.rescript-icon.rescript.rest-li.rethinkdb.retool-icon.retool.riak.rider.riot.risingwave-icon.risingwave.robot-operating-system-ros.rocket-chat-icon.rocket-chat.rocksdb.rocky-linux-icon.rocky-linux.rollbar-icon.rollbar.rollupjs.rome-icon.rome.ros.rsa.rsmq.rspec.rstudio.rubocop.ruby-mine.ruby-on-rails.ruby.rubygems.rum.runscope.rush-icon.rush.rust.rxdb.safari.sagui.sails.salesforce.sameroom.samsung.sanity.sap.sass-doc.sass.saucelabs.scala.scaledrone.scalingo.scribd-icon.scribd.sdl.seaborn-icon.seaborn.section-icon.section.segment-icon.segment.selenium.sema-software.semantic-release.semantic-ui.semaphoreci.sencha.sendgrid-icon.sendgrid.seneca.sensu-icon.sensu.sentry-icon.sentry.sequelize.serverless.sherlock-icon.sherlock.shields.shipit.shogun.shopify.shopware.shortcut-icon.shortcut.sidekiq-icon.sidekiq.signal.sigstore-icon.sigstore.sinatra.singlestore-icon.singlestore.sitepoint.sk-hynix.skaffolder.sketch.skylight.skype.slack-icon.slack.slides.slidev.slim.smartling.smashingmagazine.snap-svg.snaplet-icon.snaplet.snowflake-icon.snowflake.snowpack.snyk.socket-io.solarwinds.solid.solidity.solidjs-icon.solidjs.solr.sonarcloud-icon.sonarcloud.sonarlint-icon.sonarlint.sonarqube.soundcloud.sourcegraph.sourcetree.spark.sparkpost.speakerdeck.speedcurve.spidermonkey-icon.spidermonkey.spinnaker.splunk.spotify-icon.spotify.spree.spring-icon.spring.sql-developer.sqlalchemy.sqlite.square.squarespace.ssh.sst-icon.sst.stability-ai-icon.stability-ai.stackbit-icon.stackbit.stackblitz-icon.stackblitz.stackoverflow-icon.stackoverflow.stackshare.stata.stately-icon.stately.statuspage.stdlib-icon.stdlib.steam.stenciljs-icon.stenciljs.stetho.stickermule.stigg-icon.stigg.stimulus-icon.stimulus.stitch.stoplight.storyblocks-icon.storyblocks.storyblok-icon.storyblok.storybook-icon.storybook.strapi-icon.strapi.streamlit.strider.stripe.struts.styleci.stylefmt.stylelint.stylis.stylus.stytch.sublimetext-icon.sublimetext.subversion.sugarss.supabase-icon.supabase.supertokens-icon.supertokens.surge.surrealdb-icon.surrealdb.survicate-icon.survicate.suse.susy.svelte-icon.svelte-kit.svelte.svg.svgator.swagger.swc.swift.swiftype.swimm.swr.symfony.sysdig-icon.sysdig.t3.tableau-icon.tableau.taiga.tailwindcss-icon.tailwindcss.tapcart-icon.tapcart.taskade-icon.taskade.tastejs.tauri.tealium.teamcity.teamgrid.teamwork-icon.teamwork.telegram.tensorflow.terminal.terraform-icon.terraform.terser-icon.terser.testcafe.testing-library.testlodge.tex.the-algorithms.threejs.thymeleaf-icon.thymeleaf.tidal-icon.tidal.tiktok-icon.tiktok.titanium-sdk.tnw.todoist-icon.todoist.todomvc.tomcat.toml.tor-browser.tor.tortoise-git.tower.traackr.trac.traefik-mesh.traefik-proxy.travis-ci-monochrome.travis-ci.treasuredata-icon.treasuredata.treehouse-icon.treehouse.trello.trpc.truffle-icon.truffle.tsmc.tsnode.tsuru.tumblr-icon.tumblr.tunein.tuple.turbopack-icon.turbopack.turborepo-icon.turborepo.turret.twilio-icon.twilio.twitch.twitter.typeform-icon.typeform.typeorm.typescript-icon-round.typescript-icon.typescript.typesense-icon.typesense.typo3-icon.typo3.ubuntu.udacity-icon.udacity.udemy-icon.udemy.uikit.uml.umu.unbounce-icon.unbounce.undertow.unionpay.unitjs.unito-icon.unito.unity.unix.unjs.unocss.unrealengine-icon.unrealengine.upcase.upstash-icon.upstash.upwork.user-testing-icon.user-testing.uservoice-icon.uservoice.uwsgi.v8-ignition.v8-turbofan.v8.vaadin.vaddy.vagrant-icon.vagrant.vala.vault-icon.vault.vector.vercel-icon.vercel.verdaccio-icon.verdaccio.vernemq.veutify.vim.vimeo-icon.vimeo.visa.visaelectron.visual-studio-code.visual-studio.vite.vitejs.vitess.vitest.vivaldi-icon.vivaldi.vlang.vmware.void.volar.vorejs.vscode.vsphere.vue-storefront.vue.vuetifyjs.vueuse.vulkan.vultr-icon.vultr.vwo.vyper.w3c.waffle-icon.waffle.wagtail.wakatime.walkme.watchman.waypoint-icon.waypoint.wayscript-icon.wayscript.wearos.weave.web-dev-icon.web-dev.web3js.webassembly.webcomponents.webdriverio.webflow.webgpu.webhint-icon.webhint.webhooks.webix-icon.webix.webkit.weblate.webmin.webpack.webplatform.webrtc.websocket.webstorm.webtorrent.weebly.whalar-icon.whalar.whatsapp-icon.whatsapp-monochrome-icon.whatsapp.whatwg.wicket-icon.wicket.wifi.wildfly.windi-css.windows11.windows8.winglang-icon.winglang.wire.wix.wmr.woo-commerce.woocommerce-icon.woopra.wordpress-icon-alt.wordpress-icon.wordpress.workboard.workos-icon.workos.workplace-icon.workplace.wpengine.wufoo.x.xamarin.xampp.xata-icon.xata.xcart.xcode.xero.xml.xray-for-jira.xstate.xtend.xwiki-icon.xwiki.yahoo.yaml.yammer.yandex-ru.yarn.ycombinator.yeoman.yii-framework.yii.youtrack.youtube-icon.youtube.yugabyte-icon.yugabyte.yuno-host.zabbix.zapier.zend-framework.zendesk-icon.zendesk.zenhub-icon.zenhub.zeplin.zeroheight-icon.zeroheight.zig.zod.zoho.zoom-icon.zoom.zorin-os.zsh.zube.zulip-icon.zulip.zwave`.split(`.`),bootstrap:`0-circle-fill.0-circle.0-square-fill.0-square.1-circle-fill.1-circle.1-square-fill.1-square.123.2-circle-fill.2-circle.2-square-fill.2-square.3-circle-fill.3-circle.3-square-fill.3-square.4-circle-fill.4-circle.4-square-fill.4-square.5-circle-fill.5-circle.5-square-fill.5-square.6-circle-fill.6-circle.6-square-fill.6-square.7-circle-fill.7-circle.7-square-fill.7-square.8-circle-fill.8-circle.8-square-fill.8-square.9-circle-fill.9-circle.9-square-fill.9-square.activity.airplane-engines-fill.airplane-engines.airplane-fill.airplane.alarm-fill.alarm.alexa.align-bottom.align-center.align-end.align-middle.align-start.align-top.alipay.alphabet-uppercase.alphabet.alt.amazon.amd.android.android2.app-indicator.app.apple.archive-fill.archive.arrow-90deg-down.arrow-90deg-left.arrow-90deg-right.arrow-90deg-up.arrow-bar-down.arrow-bar-left.arrow-bar-right.arrow-bar-up.arrow-clockwise.arrow-counterclockwise.arrow-down-circle-fill.arrow-down-circle.arrow-down-left-circle-fill.arrow-down-left-circle.arrow-down-left-square-fill.arrow-down-left-square.arrow-down-left.arrow-down-right-circle-fill.arrow-down-right-circle.arrow-down-right-square-fill.arrow-down-right-square.arrow-down-right.arrow-down-short.arrow-down-square-fill.arrow-down-square.arrow-down-up.arrow-down.arrow-left-circle-fill.arrow-left-circle.arrow-left-right.arrow-left-short.arrow-left-square-fill.arrow-left-square.arrow-left.arrow-repeat.arrow-return-left.arrow-return-right.arrow-right-circle-fill.arrow-right-circle.arrow-right-short.arrow-right-square-fill.arrow-right-square.arrow-right.arrow-through-heart-fill.arrow-through-heart.arrow-up-circle-fill.arrow-up-circle.arrow-up-left-circle-fill.arrow-up-left-circle.arrow-up-left-square-fill.arrow-up-left-square.arrow-up-left.arrow-up-right-circle-fill.arrow-up-right-circle.arrow-up-right-square-fill.arrow-up-right-square.arrow-up-right.arrow-up-short.arrow-up-square-fill.arrow-up-square.arrow-up.arrows-angle-contract.arrows-angle-expand.arrows-collapse-vertical.arrows-collapse.arrows-expand-vertical.arrows-expand.arrows-fullscreen.arrows-move.arrows-vertical.arrows.aspect-ratio-fill.aspect-ratio.asterisk.at.award-fill.award.back.backpack-fill.backpack.backpack2-fill.backpack2.backpack3-fill.backpack3.backpack4-fill.backpack4.backspace-fill.backspace-reverse-fill.backspace-reverse.backspace.badge-3d-fill.badge-3d.badge-4k-fill.badge-4k.badge-8k-fill.badge-8k.badge-ad-fill.badge-ad.badge-ar-fill.badge-ar.badge-cc-fill.badge-cc.badge-hd-fill.badge-hd.badge-sd-fill.badge-sd.badge-tm-fill.badge-tm.badge-vo-fill.badge-vo.badge-vr-fill.badge-vr.badge-wc-fill.badge-wc.bag-check-fill.bag-check.bag-dash-fill.bag-dash.bag-fill.bag-heart-fill.bag-heart.bag-plus-fill.bag-plus.bag-x-fill.bag-x.bag.balloon-fill.balloon-heart-fill.balloon-heart.balloon.ban-fill.ban.bandaid-fill.bandaid.bank.bank2.bar-chart-fill.bar-chart-line-fill.bar-chart-line.bar-chart-steps.bar-chart.basket-fill.basket.basket2-fill.basket2.basket3-fill.basket3.battery-charging.battery-full.battery-half.battery.behance.bell-fill.bell-slash-fill.bell-slash.bell.bezier.bezier2.bicycle.bing.binoculars-fill.binoculars.blockquote-left.blockquote-right.bluetooth.body-text.book-fill.book-half.book.bookmark-check-fill.bookmark-check.bookmark-dash-fill.bookmark-dash.bookmark-fill.bookmark-heart-fill.bookmark-heart.bookmark-plus-fill.bookmark-plus.bookmark-star-fill.bookmark-star.bookmark-x-fill.bookmark-x.bookmark.bookmarks-fill.bookmarks.bookshelf.boombox-fill.boombox.bootstrap-fill.bootstrap-icons.bootstrap-reboot.bootstrap.border-all.border-bottom.border-center.border-inner.border-left.border-middle.border-outer.border-right.border-style.border-top.border-width.border.bounding-box-circles.bounding-box.box-arrow-down-left.box-arrow-down-right.box-arrow-down.box-arrow-in-down-left.box-arrow-in-down-right.box-arrow-in-down.box-arrow-in-left.box-arrow-in-right.box-arrow-in-up-left.box-arrow-in-up-right.box-arrow-in-up.box-arrow-left.box-arrow-right.box-arrow-up-left.box-arrow-up-right.box-arrow-up.box-fill.box-seam-fill.box-seam.box.box2-fill.box2-heart-fill.box2-heart.box2.boxes.braces-asterisk.braces.bricks.briefcase-fill.briefcase.brightness-alt-high-fill.brightness-alt-high.brightness-alt-low-fill.brightness-alt-low.brightness-high-fill.brightness-high.brightness-low-fill.brightness-low.brilliance.broadcast-pin.broadcast.browser-chrome.browser-edge.browser-firefox.browser-safari.brush-fill.brush.bucket-fill.bucket.bug-fill.bug.building-add.building-check.building-dash.building-down.building-exclamation.building-fill-add.building-fill-check.building-fill-dash.building-fill-down.building-fill-exclamation.building-fill-gear.building-fill-lock.building-fill-slash.building-fill-up.building-fill-x.building-fill.building-gear.building-lock.building-slash.building-up.building-x.building.buildings-fill.buildings.bullseye.bus-front-fill.bus-front.c-circle-fill.c-circle.c-square-fill.c-square.cake-fill.cake.cake2-fill.cake2.calculator-fill.calculator.calendar-check-fill.calendar-check.calendar-date-fill.calendar-date.calendar-day-fill.calendar-day.calendar-event-fill.calendar-event.calendar-fill.calendar-heart-fill.calendar-heart.calendar-minus-fill.calendar-minus.calendar-month-fill.calendar-month.calendar-plus-fill.calendar-plus.calendar-range-fill.calendar-range.calendar-week-fill.calendar-week.calendar-x-fill.calendar-x.calendar.calendar2-check-fill.calendar2-check.calendar2-date-fill.calendar2-date.calendar2-day-fill.calendar2-day.calendar2-event-fill.calendar2-event.calendar2-fill.calendar2-heart-fill.calendar2-heart.calendar2-minus-fill.calendar2-minus.calendar2-month-fill.calendar2-month.calendar2-plus-fill.calendar2-plus.calendar2-range-fill.calendar2-range.calendar2-week-fill.calendar2-week.calendar2-x-fill.calendar2-x.calendar2.calendar3-event-fill.calendar3-event.calendar3-fill.calendar3-range-fill.calendar3-range.calendar3-week-fill.calendar3-week.calendar3.calendar4-event.calendar4-range.calendar4-week.calendar4.camera-fill.camera-reels-fill.camera-reels.camera-video-fill.camera-video-off-fill.camera-video-off.camera-video.camera.camera2.capslock-fill.capslock.capsule-pill.capsule.car-front-fill.car-front.card-checklist.card-heading.card-image.card-list.card-text.caret-down-fill.caret-down-square-fill.caret-down-square.caret-down.caret-left-fill.caret-left-square-fill.caret-left-square.caret-left.caret-right-fill.caret-right-square-fill.caret-right-square.caret-right.caret-up-fill.caret-up-square-fill.caret-up-square.caret-up.cart-check-fill.cart-check.cart-dash-fill.cart-dash.cart-fill.cart-plus-fill.cart-plus.cart-x-fill.cart-x.cart.cart2.cart3.cart4.cash-coin.cash-stack.cash.cassette-fill.cassette.cast.cc-circle-fill.cc-circle.cc-square-fill.cc-square.chat-dots-fill.chat-dots.chat-fill.chat-heart-fill.chat-heart.chat-left-dots-fill.chat-left-dots.chat-left-fill.chat-left-heart-fill.chat-left-heart.chat-left-quote-fill.chat-left-quote.chat-left-text-fill.chat-left-text.chat-left.chat-quote-fill.chat-quote.chat-right-dots-fill.chat-right-dots.chat-right-fill.chat-right-heart-fill.chat-right-heart.chat-right-quote-fill.chat-right-quote.chat-right-text-fill.chat-right-text.chat-right.chat-square-dots-fill.chat-square-dots.chat-square-fill.chat-square-heart-fill.chat-square-heart.chat-square-quote-fill.chat-square-quote.chat-square-text-fill.chat-square-text.chat-square.chat-text-fill.chat-text.chat.check-all.check-circle-fill.check-circle.check-lg.check-square-fill.check-square.check.check2-all.check2-circle.check2-square.check2.chevron-bar-contract.chevron-bar-down.chevron-bar-expand.chevron-bar-left.chevron-bar-right.chevron-bar-up.chevron-compact-down.chevron-compact-left.chevron-compact-right.chevron-compact-up.chevron-contract.chevron-double-down.chevron-double-left.chevron-double-right.chevron-double-up.chevron-down.chevron-expand.chevron-left.chevron-right.chevron-up.circle-fill.circle-half.circle-square.circle.clipboard-check-fill.clipboard-check.clipboard-data-fill.clipboard-data.clipboard-fill.clipboard-heart-fill.clipboard-heart.clipboard-minus-fill.clipboard-minus.clipboard-plus-fill.clipboard-plus.clipboard-pulse.clipboard-x-fill.clipboard-x.clipboard.clipboard2-check-fill.clipboard2-check.clipboard2-data-fill.clipboard2-data.clipboard2-fill.clipboard2-heart-fill.clipboard2-heart.clipboard2-minus-fill.clipboard2-minus.clipboard2-plus-fill.clipboard2-plus.clipboard2-pulse-fill.clipboard2-pulse.clipboard2-x-fill.clipboard2-x.clipboard2.clock-fill.clock-history.clock.cloud-arrow-down-fill.cloud-arrow-down.cloud-arrow-up-fill.cloud-arrow-up.cloud-check-fill.cloud-check.cloud-download-fill.cloud-download.cloud-drizzle-fill.cloud-drizzle.cloud-fill.cloud-fog-fill.cloud-fog.cloud-fog2-fill.cloud-fog2.cloud-hail-fill.cloud-hail.cloud-haze-fill.cloud-haze.cloud-haze2-fill.cloud-haze2.cloud-lightning-fill.cloud-lightning-rain-fill.cloud-lightning-rain.cloud-lightning.cloud-minus-fill.cloud-minus.cloud-moon-fill.cloud-moon.cloud-plus-fill.cloud-plus.cloud-rain-fill.cloud-rain-heavy-fill.cloud-rain-heavy.cloud-rain.cloud-slash-fill.cloud-slash.cloud-sleet-fill.cloud-sleet.cloud-snow-fill.cloud-snow.cloud-sun-fill.cloud-sun.cloud-upload-fill.cloud-upload.cloud.clouds-fill.clouds.cloudy-fill.cloudy.code-slash.code-square.code.coin.collection-fill.collection-play-fill.collection-play.collection.columns-gap.columns.command.compass-fill.compass.cone-striped.cone.controller.cookie.copy.cpu-fill.cpu.credit-card-2-back-fill.credit-card-2-back.credit-card-2-front-fill.credit-card-2-front.credit-card-fill.credit-card.crop.crosshair.crosshair2.cup-fill.cup-hot-fill.cup-hot.cup-straw.cup.currency-bitcoin.currency-dollar.currency-euro.currency-exchange.currency-pound.currency-rupee.currency-yen.cursor-fill.cursor-text.cursor.dash-circle-dotted.dash-circle-fill.dash-circle.dash-lg.dash-square-dotted.dash-square-fill.dash-square.dash.database-add.database-check.database-dash.database-down.database-exclamation.database-fill-add.database-fill-check.database-fill-dash.database-fill-down.database-fill-exclamation.database-fill-gear.database-fill-lock.database-fill-slash.database-fill-up.database-fill-x.database-fill.database-gear.database-lock.database-slash.database-up.database-x.database.device-hdd-fill.device-hdd.device-ssd-fill.device-ssd.diagram-2-fill.diagram-2.diagram-3-fill.diagram-3.diamond-fill.diamond-half.diamond.dice-1-fill.dice-1.dice-2-fill.dice-2.dice-3-fill.dice-3.dice-4-fill.dice-4.dice-5-fill.dice-5.dice-6-fill.dice-6.disc-fill.disc.discord.display-fill.display.displayport-fill.displayport.distribute-horizontal.distribute-vertical.door-closed-fill.door-closed.door-open-fill.door-open.dot.download.dpad-fill.dpad.dribbble.dropbox.droplet-fill.droplet-half.droplet.duffle-fill.duffle.ear-fill.ear.earbuds.easel-fill.easel.easel2-fill.easel2.easel3-fill.easel3.egg-fill.egg-fried.egg.eject-fill.eject.emoji-angry-fill.emoji-angry.emoji-astonished-fill.emoji-astonished.emoji-dizzy-fill.emoji-dizzy.emoji-expressionless-fill.emoji-expressionless.emoji-frown-fill.emoji-frown.emoji-grimace-fill.emoji-grimace.emoji-grin-fill.emoji-grin.emoji-heart-eyes-fill.emoji-heart-eyes.emoji-kiss-fill.emoji-kiss.emoji-laughing-fill.emoji-laughing.emoji-neutral-fill.emoji-neutral.emoji-smile-fill.emoji-smile-upside-down-fill.emoji-smile-upside-down.emoji-smile.emoji-sunglasses-fill.emoji-sunglasses.emoji-surprise-fill.emoji-surprise.emoji-tear-fill.emoji-tear.emoji-wink-fill.emoji-wink.envelope-arrow-down-fill.envelope-arrow-down.envelope-arrow-up-fill.envelope-arrow-up.envelope-at-fill.envelope-at.envelope-check-fill.envelope-check.envelope-dash-fill.envelope-dash.envelope-exclamation-fill.envelope-exclamation.envelope-fill.envelope-heart-fill.envelope-heart.envelope-open-fill.envelope-open-heart-fill.envelope-open-heart.envelope-open.envelope-paper-fill.envelope-paper-heart-fill.envelope-paper-heart.envelope-paper.envelope-plus-fill.envelope-plus.envelope-slash-fill.envelope-slash.envelope-x-fill.envelope-x.envelope.eraser-fill.eraser.escape.ethernet.ev-front-fill.ev-front.ev-station-fill.ev-station.exclamation-circle-fill.exclamation-circle.exclamation-diamond-fill.exclamation-diamond.exclamation-lg.exclamation-octagon-fill.exclamation-octagon.exclamation-square-fill.exclamation-square.exclamation-triangle-fill.exclamation-triangle.exclamation.exclude.explicit-fill.explicit.exposure.eye-fill.eye-slash-fill.eye-slash.eye.eyedropper.eyeglasses.facebook.fan.fast-forward-btn-fill.fast-forward-btn.fast-forward-circle-fill.fast-forward-circle.fast-forward-fill.fast-forward.feather.feather2.file-arrow-down-fill.file-arrow-down.file-arrow-up-fill.file-arrow-up.file-bar-graph-fill.file-bar-graph.file-binary-fill.file-binary.file-break-fill.file-break.file-check-fill.file-check.file-code-fill.file-code.file-diff-fill.file-diff.file-earmark-arrow-down-fill.file-earmark-arrow-down.file-earmark-arrow-up-fill.file-earmark-arrow-up.file-earmark-bar-graph-fill.file-earmark-bar-graph.file-earmark-binary-fill.file-earmark-binary.file-earmark-break-fill.file-earmark-break.file-earmark-check-fill.file-earmark-check.file-earmark-code-fill.file-earmark-code.file-earmark-diff-fill.file-earmark-diff.file-earmark-easel-fill.file-earmark-easel.file-earmark-excel-fill.file-earmark-excel.file-earmark-fill.file-earmark-font-fill.file-earmark-font.file-earmark-image-fill.file-earmark-image.file-earmark-lock-fill.file-earmark-lock.file-earmark-lock2-fill.file-earmark-lock2.file-earmark-medical-fill.file-earmark-medical.file-earmark-minus-fill.file-earmark-minus.file-earmark-music-fill.file-earmark-music.file-earmark-pdf-fill.file-earmark-pdf.file-earmark-person-fill.file-earmark-person.file-earmark-play-fill.file-earmark-play.file-earmark-plus-fill.file-earmark-plus.file-earmark-post-fill.file-earmark-post.file-earmark-ppt-fill.file-earmark-ppt.file-earmark-richtext-fill.file-earmark-richtext.file-earmark-ruled-fill.file-earmark-ruled.file-earmark-slides-fill.file-earmark-slides.file-earmark-spreadsheet-fill.file-earmark-spreadsheet.file-earmark-text-fill.file-earmark-text.file-earmark-word-fill.file-earmark-word.file-earmark-x-fill.file-earmark-x.file-earmark-zip-fill.file-earmark-zip.file-earmark.file-easel-fill.file-easel.file-excel-fill.file-excel.file-fill.file-font-fill.file-font.file-image-fill.file-image.file-lock-fill.file-lock.file-lock2-fill.file-lock2.file-medical-fill.file-medical.file-minus-fill.file-minus.file-music-fill.file-music.file-pdf-fill.file-pdf.file-person-fill.file-person.file-play-fill.file-play.file-plus-fill.file-plus.file-post-fill.file-post.file-ppt-fill.file-ppt.file-richtext-fill.file-richtext.file-ruled-fill.file-ruled.file-slides-fill.file-slides.file-spreadsheet-fill.file-spreadsheet.file-text-fill.file-text.file-word-fill.file-word.file-x-fill.file-x.file-zip-fill.file-zip.file.files-alt.files.filetype-aac.filetype-ai.filetype-bmp.filetype-cs.filetype-css.filetype-csv.filetype-doc.filetype-docx.filetype-exe.filetype-gif.filetype-heic.filetype-html.filetype-java.filetype-jpg.filetype-js.filetype-json.filetype-jsx.filetype-key.filetype-m4p.filetype-md.filetype-mdx.filetype-mov.filetype-mp3.filetype-mp4.filetype-otf.filetype-pdf.filetype-php.filetype-png.filetype-ppt.filetype-pptx.filetype-psd.filetype-py.filetype-raw.filetype-rb.filetype-sass.filetype-scss.filetype-sh.filetype-sql.filetype-svg.filetype-tiff.filetype-tsx.filetype-ttf.filetype-txt.filetype-wav.filetype-woff.filetype-xls.filetype-xlsx.filetype-xml.filetype-yml.film.filter-circle-fill.filter-circle.filter-left.filter-right.filter-square-fill.filter-square.filter.fingerprint.fire.flag-fill.flag.floppy-fill.floppy.floppy2-fill.floppy2.flower1.flower2.flower3.folder-check.folder-fill.folder-minus.folder-plus.folder-symlink-fill.folder-symlink.folder-x.folder.folder2-open.folder2.fonts.forward-fill.forward.front.fuel-pump-diesel-fill.fuel-pump-diesel.fuel-pump-fill.fuel-pump.fullscreen-exit.fullscreen.funnel-fill.funnel.gear-fill.gear-wide-connected.gear-wide.gear.gem.gender-ambiguous.gender-female.gender-male.gender-neuter.gender-trans.geo-alt-fill.geo-alt.geo-fill.geo.gift-fill.gift.git.github.gitlab.globe-americas.globe-asia-australia.globe-central-south-asia.globe-europe-africa.globe.globe2.google-play.google.gpu-card.graph-down-arrow.graph-down.graph-up-arrow.graph-up.grid-1x2-fill.grid-1x2.grid-3x2-gap-fill.grid-3x2-gap.grid-3x2.grid-3x3-gap-fill.grid-3x3-gap.grid-3x3.grid-fill.grid.grip-horizontal.grip-vertical.h-circle-fill.h-circle.h-square-fill.h-square.hammer.hand-index-fill.hand-index-thumb-fill.hand-index-thumb.hand-index.hand-thumbs-down-fill.hand-thumbs-down.hand-thumbs-up-fill.hand-thumbs-up.handbag-fill.handbag.hash.hdd-fill.hdd-network-fill.hdd-network.hdd-rack-fill.hdd-rack.hdd-stack-fill.hdd-stack.hdd.hdmi-fill.hdmi.headphones.headset-vr.headset.heart-arrow.heart-fill.heart-half.heart-pulse-fill.heart-pulse.heart.heartbreak-fill.heartbreak.hearts.heptagon-fill.heptagon-half.heptagon.hexagon-fill.hexagon-half.hexagon.highlighter.highlights.hospital-fill.hospital.hourglass-bottom.hourglass-split.hourglass-top.hourglass.house-add-fill.house-add.house-check-fill.house-check.house-dash-fill.house-dash.house-door-fill.house-door.house-down-fill.house-down.house-exclamation-fill.house-exclamation.house-fill.house-gear-fill.house-gear.house-heart-fill.house-heart.house-lock-fill.house-lock.house-slash-fill.house-slash.house-up-fill.house-up.house-x-fill.house-x.house.houses-fill.houses.hr.hurricane.hypnotize.image-alt.image-fill.image.images.inbox-fill.inbox.inboxes-fill.inboxes.incognito.indent.infinity.info-circle-fill.info-circle.info-lg.info-square-fill.info-square.info.input-cursor-text.input-cursor.instagram.intersect.journal-album.journal-arrow-down.journal-arrow-up.journal-bookmark-fill.journal-bookmark.journal-check.journal-code.journal-medical.journal-minus.journal-plus.journal-richtext.journal-text.journal-x.journal.journals.joystick.justify-left.justify-right.justify.kanban-fill.kanban.key-fill.key.keyboard-fill.keyboard.ladder.lamp-fill.lamp.laptop-fill.laptop.layer-backward.layer-forward.layers-fill.layers-half.layers.layout-sidebar-inset-reverse.layout-sidebar-inset.layout-sidebar-reverse.layout-sidebar.layout-split.layout-text-sidebar-reverse.layout-text-sidebar.layout-text-window-reverse.layout-text-window.layout-three-columns.layout-wtf.life-preserver.lightbulb-fill.lightbulb-off-fill.lightbulb-off.lightbulb.lightning-charge-fill.lightning-charge.lightning-fill.lightning.line.link-45deg.link.linkedin.list-check.list-columns-reverse.list-columns.list-nested.list-ol.list-stars.list-task.list-ul.list.lock-fill.lock.luggage-fill.luggage.lungs-fill.lungs.magic.magnet-fill.magnet.mailbox-flag.mailbox.mailbox2-flag.mailbox2.map-fill.map.markdown-fill.markdown.marker-tip.mask.mastodon.medium.megaphone-fill.megaphone.memory.menu-app-fill.menu-app.menu-button-fill.menu-button-wide-fill.menu-button-wide.menu-button.menu-down.menu-up.messenger.meta.mic-fill.mic-mute-fill.mic-mute.mic.microsoft-teams.microsoft.minecart-loaded.minecart.modem-fill.modem.moisture.moon-fill.moon-stars-fill.moon-stars.moon.mortarboard-fill.mortarboard.motherboard-fill.motherboard.mouse-fill.mouse.mouse2-fill.mouse2.mouse3-fill.mouse3.music-note-beamed.music-note-list.music-note.music-player-fill.music-player.newspaper.nintendo-switch.node-minus-fill.node-minus.node-plus-fill.node-plus.noise-reduction.nut-fill.nut.nvidia.nvme-fill.nvme.octagon-fill.octagon-half.octagon.opencollective.optical-audio-fill.optical-audio.option.outlet.p-circle-fill.p-circle.p-square-fill.p-square.paint-bucket.palette-fill.palette.palette2.paperclip.paragraph.pass-fill.pass.passport-fill.passport.patch-check-fill.patch-check.patch-exclamation-fill.patch-exclamation.patch-minus-fill.patch-minus.patch-plus-fill.patch-plus.patch-question-fill.patch-question.pause-btn-fill.pause-btn.pause-circle-fill.pause-circle.pause-fill.pause.paypal.pc-display-horizontal.pc-display.pc-horizontal.pc.pci-card-network.pci-card-sound.pci-card.peace-fill.peace.pen-fill.pen.pencil-fill.pencil-square.pencil.pentagon-fill.pentagon-half.pentagon.people-fill.people.percent.person-add.person-arms-up.person-badge-fill.person-badge.person-bounding-box.person-check-fill.person-check.person-circle.person-dash-fill.person-dash.person-down.person-exclamation.person-fill-add.person-fill-check.person-fill-dash.person-fill-down.person-fill-exclamation.person-fill-gear.person-fill-lock.person-fill-slash.person-fill-up.person-fill-x.person-fill.person-gear.person-heart.person-hearts.person-lines-fill.person-lock.person-plus-fill.person-plus.person-raised-hand.person-rolodex.person-slash.person-square.person-standing-dress.person-standing.person-up.person-vcard-fill.person-vcard.person-video.person-video2.person-video3.person-walking.person-wheelchair.person-workspace.person-x-fill.person-x.person.phone-fill.phone-flip.phone-landscape-fill.phone-landscape.phone-vibrate-fill.phone-vibrate.phone.pie-chart-fill.pie-chart.piggy-bank-fill.piggy-bank.pin-angle-fill.pin-angle.pin-fill.pin-map-fill.pin-map.pin.pinterest.pip-fill.pip.play-btn-fill.play-btn.play-circle-fill.play-circle.play-fill.play.playstation.plug-fill.plug.plugin.plus-circle-dotted.plus-circle-fill.plus-circle.plus-lg.plus-slash-minus.plus-square-dotted.plus-square-fill.plus-square.plus.postage-fill.postage-heart-fill.postage-heart.postage.postcard-fill.postcard-heart-fill.postcard-heart.postcard.power.prescription.prescription2.printer-fill.printer.projector-fill.projector.puzzle-fill.puzzle.qr-code-scan.qr-code.question-circle-fill.question-circle.question-diamond-fill.question-diamond.question-lg.question-octagon-fill.question-octagon.question-square-fill.question-square.question.quora.quote.r-circle-fill.r-circle.r-square-fill.r-square.radar.radioactive.rainbow.receipt-cutoff.receipt.reception-0.reception-1.reception-2.reception-3.reception-4.record-btn-fill.record-btn.record-circle-fill.record-circle.record-fill.record.record2-fill.record2.recycle.reddit.regex.repeat-1.repeat.reply-all-fill.reply-all.reply-fill.reply.rewind-btn-fill.rewind-btn.rewind-circle-fill.rewind-circle.rewind-fill.rewind.robot.rocket-fill.rocket-takeoff-fill.rocket-takeoff.rocket.router-fill.router.rss-fill.rss.rulers.safe-fill.safe.safe2-fill.safe2.save-fill.save.save2-fill.save2.scissors.scooter.screwdriver.sd-card-fill.sd-card.search-heart-fill.search-heart.search.segmented-nav.send-arrow-down-fill.send-arrow-down.send-arrow-up-fill.send-arrow-up.send-check-fill.send-check.send-dash-fill.send-dash.send-exclamation-fill.send-exclamation.send-fill.send-plus-fill.send-plus.send-slash-fill.send-slash.send-x-fill.send-x.send.server.shadows.share-fill.share.shield-check.shield-exclamation.shield-fill-check.shield-fill-exclamation.shield-fill-minus.shield-fill-plus.shield-fill-x.shield-fill.shield-lock-fill.shield-lock.shield-minus.shield-plus.shield-shaded.shield-slash-fill.shield-slash.shield-x.shield.shift-fill.shift.shop-window.shop.shuffle.sign-dead-end-fill.sign-dead-end.sign-do-not-enter-fill.sign-do-not-enter.sign-intersection-fill.sign-intersection-side-fill.sign-intersection-side.sign-intersection-t-fill.sign-intersection-t.sign-intersection-y-fill.sign-intersection-y.sign-intersection.sign-merge-left-fill.sign-merge-left.sign-merge-right-fill.sign-merge-right.sign-no-left-turn-fill.sign-no-left-turn.sign-no-parking-fill.sign-no-parking.sign-no-right-turn-fill.sign-no-right-turn.sign-railroad-fill.sign-railroad.sign-stop-fill.sign-stop-lights-fill.sign-stop-lights.sign-stop.sign-turn-left-fill.sign-turn-left.sign-turn-right-fill.sign-turn-right.sign-turn-slight-left-fill.sign-turn-slight-left.sign-turn-slight-right-fill.sign-turn-slight-right.sign-yield-fill.sign-yield.signal.signpost-2-fill.signpost-2.signpost-fill.signpost-split-fill.signpost-split.signpost.sim-fill.sim-slash-fill.sim-slash.sim.sina-weibo.skip-backward-btn-fill.skip-backward-btn.skip-backward-circle-fill.skip-backward-circle.skip-backward-fill.skip-backward.skip-end-btn-fill.skip-end-btn.skip-end-circle-fill.skip-end-circle.skip-end-fill.skip-end.skip-forward-btn-fill.skip-forward-btn.skip-forward-circle-fill.skip-forward-circle.skip-forward-fill.skip-forward.skip-start-btn-fill.skip-start-btn.skip-start-circle-fill.skip-start-circle.skip-start-fill.skip-start.skype.slack.slash-circle-fill.slash-circle.slash-lg.slash-square-fill.slash-square.slash.sliders.sliders2-vertical.sliders2.smartwatch.snapchat.snow.snow2.snow3.sort-alpha-down-alt.sort-alpha-down.sort-alpha-up-alt.sort-alpha-up.sort-down-alt.sort-down.sort-numeric-down-alt.sort-numeric-down.sort-numeric-up-alt.sort-numeric-up.sort-up-alt.sort-up.soundwave.sourceforge.speaker-fill.speaker.speedometer.speedometer2.spellcheck.spotify.square-fill.square-half.square.stack-overflow.stack.star-fill.star-half.star.stars.steam.stickies-fill.stickies.sticky-fill.sticky.stop-btn-fill.stop-btn.stop-circle-fill.stop-circle.stop-fill.stop.stoplights-fill.stoplights.stopwatch-fill.stopwatch.strava.stripe.subscript.substack.subtract.suit-club-fill.suit-club.suit-diamond-fill.suit-diamond.suit-heart-fill.suit-heart.suit-spade-fill.suit-spade.suitcase-fill.suitcase-lg-fill.suitcase-lg.suitcase.suitcase2-fill.suitcase2.sun-fill.sun.sunglasses.sunrise-fill.sunrise.sunset-fill.sunset.superscript.symmetry-horizontal.symmetry-vertical.table.tablet-fill.tablet-landscape-fill.tablet-landscape.tablet.tag-fill.tag.tags-fill.tags.taxi-front-fill.taxi-front.telegram.telephone-fill.telephone-forward-fill.telephone-forward.telephone-inbound-fill.telephone-inbound.telephone-minus-fill.telephone-minus.telephone-outbound-fill.telephone-outbound.telephone-plus-fill.telephone-plus.telephone-x-fill.telephone-x.telephone.tencent-qq.terminal-dash.terminal-fill.terminal-plus.terminal-split.terminal-x.terminal.text-center.text-indent-left.text-indent-right.text-left.text-paragraph.text-right.text-wrap.textarea-resize.textarea-t.textarea.thermometer-half.thermometer-high.thermometer-low.thermometer-snow.thermometer-sun.thermometer.threads-fill.threads.three-dots-vertical.three-dots.thunderbolt-fill.thunderbolt.ticket-detailed-fill.ticket-detailed.ticket-fill.ticket-perforated-fill.ticket-perforated.ticket.tiktok.toggle-off.toggle-on.toggle2-off.toggle2-on.toggles.toggles2.tools.tornado.train-freight-front-fill.train-freight-front.train-front-fill.train-front.train-lightrail-front-fill.train-lightrail-front.translate.transparency.trash-fill.trash.trash2-fill.trash2.trash3-fill.trash3.tree-fill.tree.trello.triangle-fill.triangle-half.triangle.trophy-fill.trophy.tropical-storm.truck-flatbed.truck-front-fill.truck-front.truck.tsunami.tv-fill.tv.twitch.twitter-x.twitter.type-bold.type-h1.type-h2.type-h3.type-h4.type-h5.type-h6.type-italic.type-strikethrough.type-underline.type.ubuntu.ui-checks-grid.ui-checks.ui-radios-grid.ui-radios.umbrella-fill.umbrella.unindent.union.unity.universal-access-circle.universal-access.unlock-fill.unlock.upc-scan.upc.upload.usb-c-fill.usb-c.usb-drive-fill.usb-drive.usb-fill.usb-micro-fill.usb-micro.usb-mini-fill.usb-mini.usb-plug-fill.usb-plug.usb-symbol.usb.valentine.valentine2.vector-pen.view-list.view-stacked.vignette.vimeo.vinyl-fill.vinyl.virus.virus2.voicemail.volume-down-fill.volume-down.volume-mute-fill.volume-mute.volume-off-fill.volume-off.volume-up-fill.volume-up.vr.wallet-fill.wallet.wallet2.watch.water.webcam-fill.webcam.wechat.whatsapp.wifi-1.wifi-2.wifi-off.wifi.wikipedia.wind.window-dash.window-desktop.window-dock.window-fullscreen.window-plus.window-sidebar.window-split.window-stack.window-x.window.windows.wordpress.wrench-adjustable-circle-fill.wrench-adjustable-circle.wrench-adjustable.wrench.x-circle-fill.x-circle.x-diamond-fill.x-diamond.x-lg.x-octagon-fill.x-octagon.x-square-fill.x-square.x.xbox.yelp.yin-yang.youtube.zoom-in.zoom-out`.split(`.`)},t=Object.keys(e),n=e,r=[`likec4lib {`,` icons {`,...[...Object.entries(e)].flatMap(([e,t])=>t.map(t=>e+`:`+t)).map(e=>` `+e),` }`,`}`].join(`
2
+ `);export{t as n,n as r,r as t};
@@ -1,4 +1,4 @@
1
- import{l as e,oi as t}from"./utils.mjs";import{ifilter as n,invariant as r,isSameHierarchy as i}from"@likec4/core/utils";import{loggable as a}from"@likec4/log";import{invariant as o}from"@likec4/core";import{keys as s}from"remeda";import{URI as c}from"vscode-uri";import{isDeploymentNodeModel as l,modelConnection as u}from"@likec4/core/model";import{McpServer as d}from"@modelcontextprotocol/sdk/server/mcp.js";import*as f from"zod/v3";import{StdioServerTransport as p}from"@modelcontextprotocol/sdk/server/stdio.js";import{MemoryEventStore as m,StreamableHTTPTransport as h}from"@hono/mcp";import{serve as g}from"@hono/node-server";import{Hono as _}from"hono";import{cors as v}from"hono/cors";const y=t.getChild(`mcp`);function likec4Tool(e,t){let{name:n,description:r,...i}=e;return e=>[n,{description:r?.trim()??``,...i},mkcallTool(n,e,t)]}function mkcallTool(e,t,n){let r=n.bind(null,t);return(async function(t,n){y.debug(`Calling tool {name}, args: {args}`,{name:e,args:t});try{let e=await r.call(null,t,n);return typeof e==`string`?{content:[{type:`text`,text:e}]}:{content:[{type:`text`,text:JSON.stringify(e)}],structuredContent:e}}catch(t){return y.error(`Tool ${e} failed`,{err:t}),{content:[{type:`text`,text:a(t)}],isError:!0}}})}var b=`1.53.0`;const x=f.object({name:f.string().describe(`Project identifier`),title:f.string().optional().describe(`Human-readable project title`),contactPerson:f.string().optional().describe(`Maintainer contact information`),metadata:f.record(f.string(),f.unknown()).optional().describe(`Custom project metadata as key-value pairs`),extends:f.union([f.string(),f.array(f.string())]).optional().describe(`Style inheritance paths`),exclude:f.array(f.string()).optional().describe(`File exclusion patterns`),include:f.object({paths:f.array(f.string()).describe(`Include paths`),maxDepth:f.number().describe(`Maximum directory depth`),fileThreshold:f.number().describe(`File threshold`)}).optional().describe(`Include configuration`),manualLayouts:f.object({outDir:f.string().describe(`Output directory for manual layouts`)}).optional().describe(`Manual layouts configuration`),styles:f.object({hasTheme:f.boolean().describe(`Whether theme customization is defined`),hasDefaults:f.boolean().describe(`Whether default style values are defined`),hasCustomCss:f.boolean().describe(`Whether custom CSS is defined`)}).optional().describe(`Simplified styles configuration (boolean flags)`)});function serializeConfig(e){let t={name:e.name};return e.title!=null&&(t.title=e.title),e.contactPerson!=null&&(t.contactPerson=e.contactPerson),e.metadata&&(t.metadata=e.metadata),e.extends&&(t.extends=e.extends),e.exclude&&(t.exclude=e.exclude),e.include&&(t.include={paths:e.include.paths||[],maxDepth:e.include.maxDepth??3,fileThreshold:e.include.fileThreshold??30}),e.manualLayouts&&(t.manualLayouts={outDir:e.manualLayouts.outDir??`.likec4`}),e.styles&&(t.styles={hasTheme:!!e.styles.theme,hasDefaults:!!e.styles.defaults,hasCustomCss:!!e.styles.customCss}),t}const S=f.object({id:f.string().describe(`Element id (FQN)`),name:f.string().describe(`Element name`),kind:f.string().describe(`Element kind`),title:f.string(),tags:f.array(f.string()),metadata:f.record(f.union([f.string(),f.array(f.string())])),includedInViews:f.array(f.object({id:f.string().describe(`View id`),title:f.string().describe(`View title`),type:f.enum([`element`,`deployment`,`dynamic`]).describe(`View type`)})).describe(`Views that include this element`)});function serializeElement(e){return{id:e.id,name:e.name,kind:e.kind,title:e.title,tags:[...e.tags],metadata:e.getMetadata(),includedInViews:includedInViews(e.views())}}function traverseGraph(e,t,n,r,i,a){o(e.findElement(t),`Element "${t}" not found`);let s=new Set,c={},l=0,u=!1,d=[{elementId:t,depth:0}];for(;d.length>0;){let{elementId:t,depth:o}=d.shift();if(o>i||s.has(t))continue;if(s.size>=a){u=!0;break}let f=e.findElement(t);if(!f)continue;s.add(t),l=Math.max(l,o);let p=(n===`incoming`?[...f.incoming(r)]:[...f.outgoing(r)]).map(e=>{let t={elementId:n===`incoming`?e.source.id:e.target.id};return e.title&&(t.relationshipLabel=e.title),e.technology&&(t.technology=e.technology),t});c[t]={...serializeElement(f),neighbors:p,depth:o};for(let e of p)s.has(e.elementId)||d.push({elementId:e.elementId,depth:o+1})}for(let e of Object.values(c))e.neighbors=e.neighbors.filter(e=>e.elementId in c);return{target:t,totalNodes:s.size,maxDepth:l,truncated:u,nodes:c}}const C=f.object({path:f.string().describe(`Path to the file`),range:f.object({start:f.object({line:f.number(),character:f.number()}),end:f.object({line:f.number(),character:f.number()})}).describe(`Range in the file`)}).nullable(),w=f.string().refine(e=>!0).optional().default(e.DefaultProjectId).describe(`Project id (optional, will use "default" if not specified)`),T=f.array(f.object({id:f.string().describe(`View id`),title:f.string().describe(`View title`),type:f.enum([`element`,`deployment`,`dynamic`]).describe(`View type`)})),includedInViews=e=>[...e].map(e=>({id:e.id,title:e.titleOrId,type:e.$view._type})),mkLocate=(e,t)=>n=>{try{let r=e.locate({projectId:t,...n});return r?{path:c.parse(r.uri).fsPath,range:r.range}:null}catch(e){return y.debug(`Failed to locate {params}`,{error:e,params:n}),null}},E=S.extend({description:f.string().nullable().describe(`Element description`),technology:f.string().nullable().describe(`Element technology`),shape:f.string().describe(`Rendered shape`),color:f.string().describe(`Rendered color`),children:f.array(f.string()).describe(`Direct child element ids`),incomingCount:f.number().describe(`Number of incoming relationships`),outgoingCount:f.number().describe(`Number of outgoing relationships`)}),D=likec4Tool({name:`batch-read-elements`,description:`
1
+ import{l as e,oi as t}from"./utils.mjs";import{ifilter as n,invariant as r,isSameHierarchy as i}from"@likec4/core/utils";import{loggable as a}from"@likec4/log";import{invariant as o}from"@likec4/core";import{keys as s}from"remeda";import{URI as c}from"vscode-uri";import{isDeploymentNodeModel as l,modelConnection as u}from"@likec4/core/model";import{McpServer as d}from"@modelcontextprotocol/sdk/server/mcp.js";import*as f from"zod/v3";import{StdioServerTransport as p}from"@modelcontextprotocol/sdk/server/stdio.js";import{MemoryEventStore as m,StreamableHTTPTransport as h}from"@hono/mcp";import{serve as g}from"@hono/node-server";import{Hono as _}from"hono";import{cors as v}from"hono/cors";const y=t.getChild(`mcp`);function likec4Tool(e,t){let{name:n,description:r,...i}=e;return e=>[n,{description:r?.trim()??``,...i},mkcallTool(n,e,t)]}function mkcallTool(e,t,n){let r=n.bind(null,t);return(async function(t,n){y.debug(`Calling tool {name}, args: {args}`,{name:e,args:t});try{let e=await r.call(null,t,n);return typeof e==`string`?{content:[{type:`text`,text:e}]}:{content:[{type:`text`,text:JSON.stringify(e)}],structuredContent:e}}catch(t){return y.error(`Tool ${e} failed`,{err:t}),{content:[{type:`text`,text:a(t)}],isError:!0}}})}var b=`1.54.0`;const x=f.object({name:f.string().describe(`Project identifier`),title:f.string().optional().describe(`Human-readable project title`),contactPerson:f.string().optional().describe(`Maintainer contact information`),metadata:f.record(f.string(),f.unknown()).optional().describe(`Custom project metadata as key-value pairs`),extends:f.union([f.string(),f.array(f.string())]).optional().describe(`Style inheritance paths`),exclude:f.array(f.string()).optional().describe(`File exclusion patterns`),include:f.object({paths:f.array(f.string()).describe(`Include paths`),maxDepth:f.number().describe(`Maximum directory depth`),fileThreshold:f.number().describe(`File threshold`)}).optional().describe(`Include configuration`),manualLayouts:f.object({outDir:f.string().describe(`Output directory for manual layouts`)}).optional().describe(`Manual layouts configuration`),styles:f.object({hasTheme:f.boolean().describe(`Whether theme customization is defined`),hasDefaults:f.boolean().describe(`Whether default style values are defined`),hasCustomCss:f.boolean().describe(`Whether custom CSS is defined`)}).optional().describe(`Simplified styles configuration (boolean flags)`)});function serializeConfig(e){let t={name:e.name};return e.title!=null&&(t.title=e.title),e.contactPerson!=null&&(t.contactPerson=e.contactPerson),e.metadata&&(t.metadata=e.metadata),e.extends&&(t.extends=e.extends),e.exclude&&(t.exclude=e.exclude),e.include&&(t.include={paths:e.include.paths||[],maxDepth:e.include.maxDepth??3,fileThreshold:e.include.fileThreshold??30}),e.manualLayouts&&(t.manualLayouts={outDir:e.manualLayouts.outDir??`.likec4`}),e.styles&&(t.styles={hasTheme:!!e.styles.theme,hasDefaults:!!e.styles.defaults,hasCustomCss:!!e.styles.customCss}),t}const S=f.object({id:f.string().describe(`Element id (FQN)`),name:f.string().describe(`Element name`),kind:f.string().describe(`Element kind`),title:f.string(),tags:f.array(f.string()),metadata:f.record(f.union([f.string(),f.array(f.string())])),includedInViews:f.array(f.object({id:f.string().describe(`View id`),title:f.string().describe(`View title`),type:f.enum([`element`,`deployment`,`dynamic`]).describe(`View type`)})).describe(`Views that include this element`)});function serializeElement(e){return{id:e.id,name:e.name,kind:e.kind,title:e.title,tags:[...e.tags],metadata:e.getMetadata(),includedInViews:includedInViews(e.views())}}function traverseGraph(e,t,n,r,i,a){o(e.findElement(t),`Element "${t}" not found`);let s=new Set,c={},l=0,u=!1,d=[{elementId:t,depth:0}];for(;d.length>0;){let{elementId:t,depth:o}=d.shift();if(o>i||s.has(t))continue;if(s.size>=a){u=!0;break}let f=e.findElement(t);if(!f)continue;s.add(t),l=Math.max(l,o);let p=(n===`incoming`?[...f.incoming(r)]:[...f.outgoing(r)]).map(e=>{let t={elementId:n===`incoming`?e.source.id:e.target.id};return e.title&&(t.relationshipLabel=e.title),e.technology&&(t.technology=e.technology),t});c[t]={...serializeElement(f),neighbors:p,depth:o};for(let e of p)s.has(e.elementId)||d.push({elementId:e.elementId,depth:o+1})}for(let e of Object.values(c))e.neighbors=e.neighbors.filter(e=>e.elementId in c);return{target:t,totalNodes:s.size,maxDepth:l,truncated:u,nodes:c}}const C=f.object({path:f.string().describe(`Path to the file`),range:f.object({start:f.object({line:f.number(),character:f.number()}),end:f.object({line:f.number(),character:f.number()})}).describe(`Range in the file`)}).nullable(),w=f.string().refine(e=>!0).optional().default(e.DefaultProjectId).describe(`Project id (optional, will use "default" if not specified)`),T=f.array(f.object({id:f.string().describe(`View id`),title:f.string().describe(`View title`),type:f.enum([`element`,`deployment`,`dynamic`]).describe(`View type`)})),includedInViews=e=>[...e].map(e=>({id:e.id,title:e.titleOrId,type:e.$view._type})),mkLocate=(e,t)=>n=>{try{let r=e.locate({projectId:t,...n});return r?{path:c.parse(r.uri).fsPath,range:r.range}:null}catch(e){return y.debug(`Failed to locate {params}`,{error:e,params:n}),null}},E=S.extend({description:f.string().nullable().describe(`Element description`),technology:f.string().nullable().describe(`Element technology`),shape:f.string().describe(`Rendered shape`),color:f.string().describe(`Rendered color`),children:f.array(f.string()).describe(`Direct child element ids`),incomingCount:f.number().describe(`Number of incoming relationships`),outgoingCount:f.number().describe(`Number of outgoing relationships`)}),D=likec4Tool({name:`batch-read-elements`,description:`
2
2
  Read details of multiple elements in a single call, reducing round-trips.
3
3
  Returns a compact summary for each element including metadata, description, technology, shape, children, and relationship counts.
4
4
 
@@ -279,7 +279,7 @@ declare const NoFileSystem: FileSystemModuleContext;
279
279
  declare const NoLikeC4ManualLayouts: LikeC4ManualLayoutsModuleContext;
280
280
  //#endregion
281
281
  //#region src/filesystem/LikeC4FileSystem.d.ts
282
- declare const WithFileSystem: (ehableWatcher?: boolean) => FileSystemModuleContext;
282
+ declare const WithFileSystem: (enableWatcher?: boolean) => FileSystemModuleContext;
283
283
  //#endregion
284
284
  //#region src/filesystem/ChokidarWatcher.d.ts
285
285
  declare const WithChokidarWatcher: FileSystemWatcherModuleContext;