@doccov/ui 0.2.2 → 0.2.3

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.
@@ -0,0 +1,4415 @@
1
+ "use client";
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
18
+ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
19
+
20
+ // ../../node_modules/seti-icons/lib/definitions.json
21
+ var require_definitions = __commonJS((exports, module) => {
22
+ module.exports = { files: { "karma.conf.js": ["karma", "green"], "karma.conf.coffee": ["karma", "green"], "README.md": ["info", "blue"], "CHANGELOG.md": ["clock", "blue"], CHANGELOG: ["clock", "blue"], "CHANGES.md": ["clock", "blue"], "VERSION.md": ["clock", "blue"], VERSION: ["clock", "blue"], mvnw: ["maven", "red"], "tsconfig.json": ["tsconfig", "blue"], "swagger.json": ["json", "green"], "swagger.yml": ["json", "green"], "swagger.yaml": ["json", "green"], "mime.types": ["config", "grey-light"], Jenkinsfile: ["jenkins", "red"], "babel.config.js": ["babel", "yellow"], "babel.config.json": ["babel", "yellow"], "babel.config.cjs": ["babel", "yellow"], "bower.json": ["bower", "orange"], "Bower.json": ["bower", "orange"], "firebase.json": ["firebase", "orange"], geckodriver: ["firefox", "orange"], "Gruntfile.js": ["grunt", "orange"], "gruntfile.babel.js": ["grunt", "orange"], "Gruntfile.babel.js": ["grunt", "orange"], "gruntfile.js": ["grunt", "orange"], "Gruntfile.coffee": ["grunt", "orange"], "gruntfile.coffee": ["grunt", "orange"], "ionic.config.json": ["ionic", "blue"], "Ionic.config.json": ["ionic", "blue"], "ionic.project": ["ionic", "blue"], "Ionic.project": ["ionic", "blue"], "platformio.ini": ["platformio", "orange"], "rollup.config.js": ["rollup", "red"], "sass-lint.yml": ["sass", "pink"], "stylelint.config.js": ["stylelint", "white"], "yarn.clean": ["yarn", "blue"], "yarn.lock": ["yarn", "blue"], "webpack.config.js": ["webpack", "blue"], "webpack.config.build.js": ["webpack", "blue"], "webpack.common.js": ["webpack", "blue"], "webpack.dev.js": ["webpack", "blue"], "webpack.prod.js": ["webpack", "blue"], "npm-debug.log": ["npm_ignored", "ignore"] }, extensions: { ".bsl": ["bsl", "red"], ".mdo": ["mdo", "red"], ".asm": ["asm", "red"], ".s": ["asm", "red"], ".c": ["c", "blue"], ".h": ["c", "purple"], ".m": ["c", "yellow"], ".cs": ["c-sharp", "blue"], ".cshtml": ["html", "blue"], ".aspx": ["html", "blue"], ".ascx": ["html", "green"], ".asax": ["html", "yellow"], ".master": ["html", "yellow"], ".cc": ["cpp", "blue"], ".cpp": ["cpp", "blue"], ".cxx": ["cpp", "blue"], ".c++": ["cpp", "blue"], ".hh": ["cpp", "purple"], ".hpp": ["cpp", "purple"], ".hxx": ["cpp", "purple"], ".h++": ["cpp", "purple"], ".mm": ["cpp", "yellow"], ".clj": ["clojure", "green"], ".cljs": ["clojure", "green"], ".cljc": ["clojure", "green"], ".edn": ["clojure", "blue"], ".cfc": ["coldfusion", "blue"], ".cfm": ["coldfusion", "blue"], ".coffee": ["coffee", "yellow"], ".litcoffee": ["coffee", "yellow"], ".config": ["config", "grey-light"], ".cfg": ["config", "grey-light"], ".conf": ["config", "grey-light"], ".cr": ["crystal", "white"], ".ecr": ["crystal_embedded", "white"], ".slang": ["crystal_embedded", "white"], ".cson": ["json", "yellow"], ".css": ["css", "blue"], ".css.map": ["css", "blue"], ".sss": ["css", "blue"], ".csv": ["csv", "green"], ".xls": ["xls", "green"], ".xlsx": ["xls", "green"], ".cake": ["cake", "red"], ".ctp": ["cake_php", "red"], ".d": ["d", "red"], ".doc": ["word", "blue"], ".docx": ["word", "blue"], ".ejs": ["ejs", "yellow"], ".ex": ["elixir", "purple"], ".exs": ["elixir_script", "purple"], ".elm": ["elm", "blue"], ".ico": ["favicon", "yellow"], ".fs": ["f-sharp", "blue"], ".fsx": ["f-sharp", "blue"], ".gitignore": ["git", "ignore"], ".gitconfig": ["git", "ignore"], ".gitkeep": ["git", "ignore"], ".gitattributes": ["git", "ignore"], ".gitmodules": ["git", "ignore"], ".go": ["go2", "blue"], ".slide": ["go", "blue"], ".article": ["go", "blue"], ".gradle": ["gradle", "green"], ".groovy": ["grails", "green"], ".gsp": ["grails", "green"], ".gql": ["graphql", "pink"], ".graphql": ["graphql", "pink"], ".haml": ["haml", "red"], ".handlebars": ["mustache", "orange"], ".hbs": ["mustache", "orange"], ".hjs": ["mustache", "orange"], ".hs": ["haskell", "purple"], ".lhs": ["haskell", "purple"], ".hx": ["haxe", "orange"], ".hxs": ["haxe", "yellow"], ".hxp": ["haxe", "blue"], ".hxml": ["haxe", "purple"], ".html": ["html", "orange"], ".jade": ["jade", "red"], ".java": ["java", "red"], ".class": ["java", "red"], ".classpath": ["java", "red"], ".properties": ["java", "red"], ".js": ["javascript", "yellow"], ".js.map": ["javascript", "yellow"], ".spec.js": ["javascript", "orange"], ".test.js": ["javascript", "orange"], ".es": ["javascript", "yellow"], ".es5": ["javascript", "yellow"], ".es6": ["javascript", "yellow"], ".es7": ["javascript", "yellow"], ".jinja": ["jinja", "red"], ".jinja2": ["jinja", "red"], ".json": ["json", "yellow"], ".jl": ["julia", "purple"], ".kt": ["kotlin", "orange"], ".kts": ["kotlin", "orange"], ".dart": ["dart", "blue"], ".less": ["less", "blue"], ".liquid": ["liquid", "green"], ".ls": ["livescript", "blue"], ".lua": ["lua", "blue"], ".markdown": ["markdown", "blue"], ".md": ["markdown", "blue"], ".argdown": ["argdown", "blue"], ".ad": ["argdown", "blue"], ".mustache": ["mustache", "orange"], ".stache": ["mustache", "orange"], ".njk": ["nunjucks", "green"], ".nunjucks": ["nunjucks", "green"], ".nunjs": ["nunjucks", "green"], ".nunj": ["nunjucks", "green"], ".njs": ["nunjucks", "green"], ".nj": ["nunjucks", "green"], ".npm-debug.log": ["npm", "ignore"], ".npmignore": ["npm", "red"], ".npmrc": ["npm", "red"], ".ml": ["ocaml", "orange"], ".mli": ["ocaml", "orange"], ".cmx": ["ocaml", "orange"], ".cmxa": ["ocaml", "orange"], ".odata": ["odata", "orange"], ".pl": ["perl", "blue"], ".php": ["php", "purple"], ".php.inc": ["php", "purple"], ".pddl": ["pddl", "purple"], ".plan": ["plan", "green"], ".happenings": ["happenings", "blue"], ".ps1": ["powershell", "blue"], ".psd1": ["powershell", "blue"], ".psm1": ["powershell", "blue"], ".pug": ["pug", "red"], ".pp": ["puppet", "yellow"], ".epp": ["puppet", "yellow"], ".py": ["python", "blue"], ".jsx": ["react", "blue"], ".spec.jsx": ["react", "orange"], ".test.jsx": ["react", "orange"], ".cjsx": ["react", "blue"], ".tsx": ["react", "blue"], ".spec.tsx": ["react", "yellow"], ".test.tsx": ["react", "yellow"], ".re": ["reasonml", "red"], ".R": ["R", "blue"], ".rmd": ["rmd", "blue"], ".rb": ["ruby", "red"], ".erb": ["html_erb", "red"], ".erb.html": ["html_erb", "red"], ".html.erb": ["html_erb", "red"], ".rs": ["rust", "grey-light"], ".sass": ["sass", "pink"], ".scss": ["sass", "pink"], ".springBeans": ["spring", "green"], ".slim": ["slim", "orange"], ".smarty.tpl": ["smarty", "yellow"], ".sbt": ["sbt", "blue"], ".scala": ["scala", "red"], ".sol": ["ethereum", "blue"], ".styl": ["stylus", "green"], ".swift": ["swift", "orange"], ".sql": ["db", "pink"], ".tf": ["terraform", "purple"], ".tf.json": ["terraform", "purple"], ".tfvars": ["terraform", "purple"], ".tex": ["tex", "blue"], ".sty": ["tex", "yellow"], ".dtx": ["tex", "orange"], ".ins": ["tex", "white"], ".txt": ["default", "white"], ".toml": ["config", "grey-light"], ".twig": ["twig", "green"], ".ts": ["typescript", "blue"], ".spec.ts": ["typescript", "yellow"], ".test.ts": ["typescript", "yellow"], ".vala": ["vala", "grey-light"], ".vapi": ["vala", "grey-light"], ".vue": ["vue", "green"], ".wasm": ["wasm", "purple"], ".wat": ["wat", "purple"], ".xml": ["xml", "orange"], ".yml": ["yml", "purple"], ".yaml": ["yml", "purple"], ".pro": ["prolog", "orange"], ".jar": ["zip", "red"], ".zip": ["zip", "grey-light"], ".wgt": ["wgt", "blue"], ".ai": ["illustrator", "yellow"], ".psd": ["photoshop", "blue"], ".pdf": ["pdf", "red"], ".eot": ["font", "red"], ".ttf": ["font", "red"], ".woff": ["font", "red"], ".woff2": ["font", "red"], ".gif": ["image", "purple"], ".jpg": ["image", "purple"], ".jpeg": ["image", "purple"], ".png": ["image", "purple"], ".pxm": ["image", "purple"], ".svg": ["svg", "purple"], ".svgx": ["image", "purple"], ".sublime-project": ["sublime", "orange"], ".sublime-workspace": ["sublime", "orange"], ".code-search": ["code-search", "purple"], ".component": ["salesforce", "blue"], ".cls": ["salesforce", "blue"], ".sh": ["shell", "grey"], ".zsh": ["shell", "grey"], ".fish": ["shell", "grey"], ".zshrc": ["shell", "grey"], ".bashrc": ["shell", "grey"], ".mov": ["video", "pink"], ".ogv": ["video", "pink"], ".webm": ["video", "pink"], ".avi": ["video", "pink"], ".mpg": ["video", "pink"], ".mp4": ["video", "pink"], ".mp3": ["audio", "purple"], ".ogg": ["audio", "purple"], ".wav": ["audio", "purple"], ".flac": ["audio", "purple"], ".3ds": ["svg", "blue"], ".3dm": ["svg", "blue"], ".stl": ["svg", "blue"], ".obj": ["svg", "blue"], ".dae": ["svg", "blue"], ".bat": ["windows", "blue"], ".cmd": ["windows", "blue"], ".babelrc": ["babel", "yellow"], ".babelrc.js": ["babel", "yellow"], ".babelrc.cjs": ["babel", "yellow"], ".bowerrc": ["bower", "orange"], ".codeclimate.yml": ["code-climate", "green"], ".eslintrc": ["eslint", "purple"], ".eslintrc.js": ["eslint", "purple"], ".eslintrc.yaml": ["eslint", "purple"], ".eslintrc.yml": ["eslint", "purple"], ".eslintrc.json": ["eslint", "purple"], ".eslintignore": ["eslint", "grey"], ".firebaserc": ["firebase", "orange"], ".jshintrc": ["javascript", "blue"], ".jscsrc": ["javascript", "blue"], ".stylelintrc": ["stylelint", "white"], ".stylelintrc.json": ["stylelint", "white"], ".stylelintrc.yaml": ["stylelint", "white"], ".stylelintrc.yml": ["stylelint", "white"], ".stylelintrc.js": ["stylelint", "white"], ".stylelintignore": ["stylelint", "grey"], ".direnv": ["config", "grey-light"], ".env": ["config", "grey-light"], ".static": ["config", "grey-light"], ".editorconfig": ["config", "grey-light"], ".slugignore": ["config", "grey-light"], ".tmp": ["clock", "grey-light"], ".htaccess": ["config", "grey-light"], ".key": ["lock", "green"], ".cert": ["lock", "green"], ".DS_Store": ["ignored", "ignore"] }, partials: [["TODO", ["todo", "blue"]], ["Procfile", ["heroku", "purple"]], ["cmakelists.txt", ["makefile", "blue"]], ["CMakeLists.txt", ["makefile", "blue"]], ["CMAKELISTS.txt", ["makefile", "blue"]], ["CMAKELISTS.TXT", ["makefile", "blue"]], ["omakefile", ["makefile", "grey-light"]], ["OMakefile", ["makefile", "grey-light"]], ["OMAKEFILE", ["makefile", "grey-light"]], ["qmakefile", ["makefile", "purple"]], ["QMakefile", ["makefile", "purple"]], ["QMAKEFILE", ["makefile", "purple"]], ["makefile", ["makefile", "orange"]], ["Makefile", ["makefile", "orange"]], ["MAKEFILE", ["makefile", "orange"]], ["CONTRIBUTING", ["license", "red"]], ["COMPILING", ["license", "orange"]], ["COPYING", ["license", "yellow"]], ["LICENCE", ["license", "yellow"]], ["LICENSE", ["license", "yellow"]], ["gulpfile.js", ["gulp", "red"]], ["gulpfile", ["gulp", "red"]], ["Gulpfile", ["gulp", "red"]], ["GULPFILE", ["gulp", "red"]], ["docker-compose.override.yaml", ["docker", "pink"]], ["docker-compose.override.yml", ["docker", "pink"]], ["docker-compose.yaml", ["docker", "pink"]], ["docker-compose.yml", ["docker", "pink"]], ["docker-healthcheck", ["docker", "green"]], [".dockerignore", ["docker", "grey"]], ["DOCKERFILE", ["docker", "blue"]], ["Dockerfile", ["docker", "blue"]], ["dockerfile", ["docker", "blue"]], ["mix", ["hex", "red"]]], default: ["default", "white"] };
23
+ });
24
+
25
+ // ../../node_modules/seti-icons/lib/icons.json
26
+ var require_icons = __commonJS((exports, module) => {
27
+ module.exports = { bsl: '<svg viewBox="0 0 32 32"><path d="M16.8 19v3H27v-3H16.8zM7 10h3v12H7V10zm-2 1h2v3H5v-3z"/><path d="M14 16c0-1.7 1.3-3 3-3 1.3 0 2.4.8 2.8 2h3.1c-.5-2.8-2.9-5-5.9-5-3.3 0-6 2.7-6 6s2.7 6 6 6c2.2 0 4.2-1.2 5.2-3H17c-1.7 0-3-1.3-3-3z"/></svg>', mdo: '<svg viewBox="0 0 32 32"><path d="M18 17.7c-1 0-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8c.7 0 1.4.4 1.7 1.1h1.5c-.4-1.5-1.7-2.5-3.2-2.5-1.8 0-3.3 1.5-3.3 3.3s1.5 3.3 3.3 3.3h4.7v-1.5H18zm-5.5-5H14v6.5h-1.5v-6.5zm-1.4 1.1h1.5v1.5h-1.5v-1.5z"/><path d="M22.9 9.1H9.4L6 16s3.4 6.8 3.4 6.9h13.5c1.7 0 3.1-1.4 3.1-3.1v-7.7c0-1.6-1.3-3-3.1-3zm1.6 10.8c0 .9-.7 1.5-1.5 1.5H10.6s-3.1-4.9-3.1-5.2l3.1-5.5H23c.9 0 1.5.7 1.5 1.5v7.7z"/></svg>', asm: '<svg viewBox="0 0 32 32"><path d="M5.998 19.625l2.623-7.28h1.37l2.623 7.28h-1.43l-.716-1.95H7.727l-.715 1.95H5.998zm2.027-2.86h2.086L9.098 13.84l-1.073 2.925zm4.947 2.795v-1.235c.953.325 1.728.52 2.384.52.536 0 .894-.13 1.132-.26.298-.195.417-.39.417-.715 0-.26-.06-.455-.238-.585-.179-.195-.477-.39-.954-.585l-.596-.26c-.775-.39-1.311-.78-1.669-1.105-.298-.325-.476-.715-.476-1.17 0-.585.238-1.105.774-1.43.537-.39 1.252-.585 2.146-.585.715 0 1.49.065 2.324.26v1.17c-.894-.26-1.609-.39-2.145-.39-.417 0-.715.065-.954.195-.238.195-.357.39-.357.585 0 .195.06.39.238.52.179.13.477.325.954.585l.596.26c.834.39 1.43.78 1.728 1.105.298.325.477.715.477 1.235 0 .65-.298 1.235-.894 1.56-.537.39-1.371.585-2.444.585-.655 0-1.49-.065-2.443-.26zm6.318.065V12.41h1.847l1.609 5.135 1.669-5.135h1.609v7.215h-1.311V14.1l-1.61 5.005h-1.132l-1.609-5.07v5.59h-1.073z"/></svg>', c: '<svg viewBox="0 0 32 32"><path d="M22.3 22.9q-1.07.572-2.22.863-1.14.292-2.39.292-3.73 0-5.91-2.16-2.18-2.17-2.18-5.89 0-3.72 2.18-5.89 2.18-2.18 5.91-2.18 1.24 0 2.39.292 1.16.291 2.22.863v3.22q-1.08-.76-2.12-1.11-1.03-.353-2.18-.353-2.07 0-3.24 1.37-1.18 1.37-1.18 3.79 0 2.4 1.18 3.78 1.18 1.37 3.24 1.37 1.14 0 2.18-.354 1.04-.354 2.12-1.11z" font-size="22" font-stretch="semi-condensed" font-weight="700" letter-spacing="0" word-spacing="0"/></svg>', "c-sharp": '<svg viewBox="0 0 32 32"><g><path d="M7.1 15.9c0-1.3.2-2.4.6-3.4.4-1 .9-1.8 1.6-2.5.7-.7 1.5-1.2 2.4-1.6s1.9-.5 2.9-.5 1.9.2 2.7.6c.8.4 1.5.9 2 1.4l-2.2 2.5c-.4-.3-.7-.6-1.1-.7-.4-.1-.8-.3-1.4-.3-.5 0-.9.1-1.3.3-.4.2-.8.5-1.1.9s-.5.8-.7 1.4c-.2.6-.3 1.2-.3 1.9 0 1.5.3 2.6 1 3.3.7.8 1.5 1.2 2.6 1.2.5 0 1-.1 1.4-.3.4-.2.8-.5 1.1-.9l2.2 2.5c-.7.8-1.4 1.3-2.2 1.7-.8.4-1.7.6-2.7.6s-2-.2-2.9-.5-1.7-.8-2.4-1.5-1.1-1.7-1.5-2.7c-.5-.9-.7-2.1-.7-3.4z"/><path d="M21.8 17.1h-1l-.4 2.4h-1.2l.4-2.4h-1.2V16h1.5l.2-1.6h-1.3v-1.1h1.5l.4-2.4h1.2l-.4 2.4h1l.4-2.4h1.2l-.4 2.4H25v1.1h-1.6l-.2 1.6h1.3v1.1h-1.6l-.4 2.4h-1.2c0 .1.5-2.4.5-2.4zm-.8-1h1l.2-1.6h-1l-.2 1.6z"/></g></svg>', html: '<svg viewBox="0 0 32 32"><path d="M8 15l6-5.6V12l-4.5 4 4.5 4v2.6L8 17v-2zm16 2.1l-6 5.6V20l4.6-4-4.6-4V9.3l6 5.6v2.2z"/></svg>', cpp: '<svg viewBox="0 0 32 32"><path d="M8.3 15.5c0-1.3.2-2.4.6-3.4.4-1 .9-1.8 1.6-2.5.7-.7 1.5-1.2 2.4-1.6s1.9-.5 2.9-.5 1.9.2 2.7.6c.8.4 1.5.9 2 1.4L18.3 12c-.4-.3-.7-.6-1.1-.7s-.8-.3-1.4-.3c-.5 0-.9.1-1.3.3-.4.2-.8.5-1.1.9s-.5.8-.7 1.4c-.2.6-.3 1.2-.3 1.9 0 1.5.3 2.6 1 3.3.7.8 1.5 1.2 2.6 1.2.5 0 1-.1 1.4-.3.4-.2.8-.5 1.1-.9l2.2 2.5c-.7.8-1.4 1.3-2.2 1.7-.8.4-1.7.6-2.7.6s-2-.2-2.9-.5-1.7-.8-2.4-1.5-1.1-1.7-1.5-2.7c-.5-1-.7-2.1-.7-3.4z"/><path d="M18.2 12.9h-1.4v1.7h-1.6V16h1.6v1.8h1.4V16h1.6v-1.4h-1.6v-1.7zm6 1.6v-2h-1.7v2h-1.9v1.7h1.9v2.1h1.7v-2.1h1.9v-1.7h-1.9z"/></svg>', clojure: '<svg id="svg2" viewBox="0 0 32 32"><style>.st0{fill:#231f20}</style><path id="path10" d="M15.7 16.4l-.3.6c-.4.8-.8 1.8-.9 2.5-.1.2-.1.5-.1.8v.4c.5.2 1.1.3 1.6.3s1-.1 1.5-.2l-.3-.3c-.5-.9-.9-2.1-1.5-4.1" class="st0"/><path id="path12" d="M13.4 12.3c-1.2.9-2 2.3-2 3.9s.8 3 2 3.9c.3-1.2 1-2.3 2.1-4.6-.1-.2-.1-.4-.2-.6-.3-.8-.7-1.6-1.1-2.1-.3-.1-.6-.3-.8-.5" class="st0"/><path id="path14" d="M20.3 21.7c-.6-.1-1.2-.2-1.6-.3-.8.4-1.6.6-2.5.6-3.2 0-5.7-2.6-5.7-5.7 0-1.7.8-3.2 1.9-4.3-.3-.1-.7-.1-1-.1-1.7 0-3.4.9-4.2 3.5-.1.4-.1.6-.1 1 0 5 4 9 9 9 3 0 5.7-1.5 7.4-3.8-.9.2-1.7.3-2.5.3-.3-.2-.5-.2-.7-.2" class="st0"/><path id="path18" d="M16.1 7.2c-3 0-5.7 1.5-7.3 3.8.8-.5 1.7-.7 2.5-.7 1 0 1.9.3 2.3.5.1.1.2.1.3.2.7-.3 1.5-.5 2.3-.5 3.2 0 5.7 2.6 5.7 5.7 0 1.6-.7 3-1.7 4.1h.8c1 0 2.1-.2 2.9-.9.5-.4 1-1.1 1.2-2.1 0-.4.1-.8.1-1.1-.1-5-4.1-9-9.1-9" class="st0"/></svg>', coldfusion: '<svg viewBox="0 0 32 32"><path d="M10.8 14.5c-.4 0-.9-.1-1.3 0-1.6.2-3.2.3-4.2 1.7C3.9 18 3.6 20 4.6 22s2.7 2.9 4.9 3h4c2.5-.1 4.5-1.2 6-3.2.8-1 1.4-2.1 1.8-3.3.3-.8.7-1.1 1.5-1.1.8.1 1.5 0 2.3 0 .3 0 .7 0 .7-.4.1-.8.3-1.6-.1-2.3-.3-.6-1-.2-1.5-.3h-.5c-.5 0-.7-.1-.5-.7.6-1.4 1.6-2.5 3.1-3 .5-.2 1.3 0 1.5-.6.3-.4.2-1.1.2-1.7v-.9c0-.3-.2-.5-.6-.5-1.9.2-3.7.7-4.9 2.2-1.3 1.7-2.2 3.6-3 5.6-.7 1.9-1.3 3.8-2.6 5.3-.6.7-1.4 1.2-2.3 1.4-1.9.3-3.8.2-5.7-.2-1-.2-1.5-.9-1.5-1.8 0-1 .6-1.7 1.7-2 1-.2 2-.1 3-.2.6 0 .8-.2.8-.8 0-2.5.2-2.1-2-2.1.1.1 0 .1-.1.1z"/></svg>', coffee: '<svg viewBox="0 0 32 32"><path d="M16.8 9.1c-.5.1-.8.3-2.3 1-.8.4-1.9.5-2.2.2-.3-.4.1-.6 1-.6.8 0 1-.1.7-.3-.6-.4-2-.1-2.3.4-.1.3-.1.4.1.7.5.5.9.7 2 .6.8 0 1.2-.1 2-.6 1.2-.6 2.5-.9 3.3-.8.8.1 1 .4.5.7-.4.3-1.4.4-1.8 0-.4-.2-.9-.2-.9.2 0 .5 1.5.9 2.8.6 1.5-.3 1.5-1.6 0-2.1-.6-.1-2.1-.2-2.9 0zm-8.5 1.3c-.3.2-.5.5-.5.6-.1.4.7 1 1.9 1.4 1.1.3 1.5.4 3.2.6 1.1.1 6.1.1 7.1 0 .4-.1 1-.1 1.2-.2.7-.1 2.6-.6 3-.9.6-.3.9-.8.7-1.1-.3-.6-1-1-.8-.4.2.8-2.1 1.6-5.1 1.8-1.1.1-4.4.1-5 0-.2 0-.9-.1-1.4-.1-1.7-.1-3.6-.8-3.7-1.3 0-.1 0-.4.1-.5.1-.3-.1-.3-.7.1zM8 13.1c0 .4.2 1 .3 1.5l.3.8-.4.3c-.2.2-.6.6-.8.9-.3.6-.4.8-.4 1.7 0 1.2.2 1.7 1.2 2.4.5.4.7.4 1.5.4 1.2 0 1.6-.3.7-.4-.7-.1-1.7-1-2-1.8-.3-.7-.2-1.8.1-2.3.1-.2.3-.4.3-.4l.4.6c.2.3.8 1.2 1.3 2 .6.8 1.1 1.7 1.2 2.1.6 1.6 1.7 2.1 4.7 2.1s4.2-.6 4.8-2.2c.1-.4.7-1.3 1.2-2s1.2-1.7 1.4-2.3c.5-1.1 1.2-3.3 1.2-3.8 0-.3 0-.3-.3 0-.5.5-2.2 1-4.4 1.2-1.8.2-7.5.1-8.9-.2-.2 0-.5-.1-.8-.1-.7-.1-2.2-.8-2.5-1-.1-.1-.2-.1-.1.5z"/></svg>', config: '<svg viewBox="0 0 32 32"><path d="M24.5 17.3c-.4-.1-.8-.3-1.1-.4 0-.7-.1-1.3-.1-2 0-.1.1-.1.1-.2.4-.2.7-.3 1.1-.5.4-.2.5-.6.4-1-.3-.7-.6-1.3-.9-2-.2-.4-.6-.6-1-.4-.4.2-.7.3-1.1.5-.1 0-.2 0-.2-.1-.2-.3-.5-.5-.7-.7-.2-.2-.5-.4-.7-.6.2-.4.3-.8.5-1.2.2-.5 0-.9-.5-1.1-.6-.1-1.3-.4-1.9-.6-.5-.2-.9 0-1.1.5-.1.4-.3.8-.4 1.1-.7 0-1.3.1-2 .1-.1 0-.1-.1-.2-.1-.2-.4-.3-.7-.5-1.1-.2-.4-.6-.5-1-.4-.7.3-1.3.6-2 .9-.4.2-.6.6-.4 1 .2.4.3.7.5 1.1 0 .1 0 .2-.1.2-.2.2-.4.3-.5.5-.3.3-.5.6-.8.9-.4-.1-.8-.3-1.1-.4-.5-.2-.9 0-1.1.5-.2.5-.5 1.2-.7 1.8-.2.6-.1.9.5 1.1.4.1.8.3 1.1.4 0 .7.1 1.3.1 2 0 .1-.1.1-.1.2-.4.2-.7.3-1.1.5-.4.2-.5.6-.4 1 .3.7.6 1.3.9 2 .2.4.6.6 1 .4.4-.2.7-.3 1.1-.5.1 0 .2 0 .2.1.2.3.5.5.7.7.2.2.5.4.7.6-.2.4-.3.8-.5 1.2-.2.5 0 .9.5 1.1.6.2 1.2.5 1.9.7.6.2.9.1 1.1-.5.1-.4.3-.8.4-1.1.7 0 1.3-.1 2-.1.1 0 .1.1.2.1.2.4.3.7.5 1.1.2.4.6.5 1 .4.7-.3 1.3-.6 2-.9.4-.2.6-.6.4-1-.2-.4-.3-.7-.5-1.1 0-.1 0-.2.1-.2.3-.2.5-.5.7-.7.2-.2.4-.5.6-.7.4.1.8.3 1.1.4.5.2.9 0 1.1-.5.2-.6.5-1.2.7-1.9.2-.5.1-.9-.5-1.1zm-7 2.1c-1.9.8-4 0-4.9-1.9-.8-1.9 0-4 1.9-4.9 1.9-.8 4 0 4.9 1.9.8 1.9 0 4-1.9 4.9z"/></svg>', crystal: '<svg viewBox="0 0 32 32"><path d="M16 3.851l-5.26 3.037-5.261 3.038v12.148l5.26 3.037L16 28.15l5.26-3.038 5.261-3.037V9.926l-5.26-3.038z"/><path d="M13.244 20.697l-2.748-4.76-2.749-4.76h10.994l-2.749 4.76z"/></svg>', crystal_embedded: '<svg viewBox="0 0 32 32"><path d="M16 3.851l-5.26 3.037-5.261 3.038v12.148l5.26 3.037L16 28.15l5.26-3.038 5.261-3.037V9.926l-5.26-3.038z"/><path d="M14.077 21.025l-5.646-4.758 5.646-4.75 1.307 1.324-4.155 3.41 4.155 3.45zm3.846-9.508l5.646 4.75-5.646 4.757-1.298-1.323 4.146-3.418-4.146-3.443z"/></svg>', json: '<svg viewBox="0 0 32 32"><path d="M7.5 15.1c1.5 0 1.7-.8 1.7-1.5 0-.6-.1-1.1-.1-1.7S9 10.7 9 10.2c0-2.1 1.3-3 3.4-3h.8v1.9h-.4c-1 0-1.3.6-1.3 1.6 0 .4.1.8.1 1.3 0 .4.1.9.1 1.5 0 1.7-.7 2.3-1.9 2.6 1.2.3 1.9.9 1.9 2.6 0 .6-.1 1.1-.1 1.5 0 .4-.1.9-.1 1.2 0 1 .3 1.6 1.3 1.6h.4v1.9h-.8c-2 0-3.3-.8-3.3-3 0-.6 0-1.1.1-1.7.1-.6.1-1.2.1-1.7 0-.6-.2-1.5-1.7-1.5l-.1-1.9zm17 1.7c-1.5 0-1.7.9-1.7 1.5s.1 1.1.1 1.7c.1.6.1 1.2.1 1.7 0 2.2-1.4 3-3.4 3h-.8V23h.4c1 0 1.3-.6 1.3-1.6 0-.4 0-.8-.1-1.2 0-.5-.1-1-.1-1.5 0-1.7.7-2.3 1.9-2.6-1.2-.3-1.9-.9-1.9-2.6 0-.6.1-1.1.1-1.5.1-.5.1-.9.1-1.3 0-1-.4-1.5-1.3-1.6h-.4V7.2h.8c2.1 0 3.4.9 3.4 3 0 .6-.1 1.1-.1 1.7-.1.6-.1 1.2-.1 1.7 0 .7.2 1.5 1.7 1.5v1.7z"/></svg>', css: '<svg viewBox="0 0 32 32"><path d="M10.3 23.3l.8-4H8.6v-2.1h3l.5-2.5H9.5v-2.1h3.1l.8-3.9h2.8l-.8 3.9h2.8l.8-3.9h2.8l-.8 3.9h2.5v2.1h-2.9l-.6 2.5h2.6v2.1h-3l-.8 4H16l.8-4H14l-.8 4h-2.9zm6.9-6.1l.5-2.5h-2.8l-.5 2.5h2.8z"/></svg>', csv: '<svg viewBox="0 0 32 32"><path d="M7 7.1v17.8h18V7.1H7zm2.9 3.7H15v1.3H9.9v-1.3zm7 0H22v1.3h-5.1v-1.3zm-7 3H15v1.3H9.9v-1.3zm7 0H22v1.3h-5.1v-1.3zm-7 3H15v1.3H9.9v-1.3zm7 0H22v1.3h-5.1v-1.3zm-7 3H15v1.3H9.9v-1.3zm7 0H22v1.3h-5.1v-1.3z"/></svg>', xls: '<svg viewBox="0 0 32 32"><path d="M26 9.3v13.6c0 .1-.1.2-.1.3-.2.3-.5.5-.8.5h-7.7v2c-.3-.1-.7-.1-1-.2-.7-.1-1.5-.3-2.2-.4-.8-.1-1.6-.3-2.4-.4-.8-.1-1.6-.3-2.4-.4-.7-.1-1.5-.3-2.2-.4-.4-.1-.7-.1-1.1-.2V9c.1 0 .3-.1.4-.1.7-.5 1.5-.7 2.3-.8.7-.1 1.4-.3 2-.4.6-.1 1.3-.2 1.9-.4.7-.1 1.5-.3 2.2-.4.8-.1 1.5-.3 2.3-.4h.1v1.9h7.8c.4 0 .8.3.9.7v.2zm-.8-.1h-7.9v1.2H20v1.7h-2.7v.6H20v1.7h-2.7v.6H20v1.7h-2.7v.7h2.8v1.7h-2.8v.6H20v1.7h-2.7v1.2h7.9V9.2zM14.7 20.7s0-.1-.1-.1c-.7-1.4-1.5-2.8-2.2-4.2v-.2c.7-1.4 1.4-2.7 2.2-4.1V12h-.1c-.2 0-.5 0-.7.1-.3 0-.6 0-1 .1-.1 0-.1 0-.1.1-.3.6-.5 1.1-.8 1.7-.2.5-.4.9-.6 1.4-.1-.2-.1-.5-.2-.7-.3-.7-.6-1.5-.9-2.2-.1-.2-.1-.2-.3-.2-.4 0-.8.1-1.2.1h-.4v.1c.1.2.2.5.3.7l1.5 3v.1c-.6 1.2-1.3 2.4-1.9 3.6 0 .1-.1.1-.1.2h.6c.4 0 .7.1 1.1.1.1 0 .1 0 .1-.1.3-.6.6-1.2.9-1.9.1-.3.3-.6.4-.9 0-.1 0-.2.1-.3v.1c.1.2.1.4.2.5.4.8.7 1.6 1.1 2.5.1.1.1.2.3.2.5 0 1 .1 1.5.1.1.3.2.3.3.3z"/><path d="M23.9 10.4v1.7h-3.1v-1.7h3.1zm-3.1 11.2v-1.7h3.1v1.7h-3.1zm0-4.7v-1.7h3.1v1.7h-3.1zm3.1-4.1v1.7h-3.1v-1.7h3.1zm0 4.8v1.7h-3.1v-1.7h3.1z"/></svg>', cake: '<svg id="Layer_1" viewBox="0 0 32 32"><style></style><path d="M21.1 17c.5 1.7 1.7 6.3 1.7 6.3l4.1-.5v-6.5l-5.8.7zm-7 .7l-7.4.8v6.8l8.7-1.1zm6.2-6.6c-.2.4-.4.8-.7 1.1.2.7.4 1.3.6 2l6.6-.8s-1.6-2.7-3.8-4.1c-.8-.5-1.7-.9-2.4-1.1.2.7.2 1.7-.3 2.9zm-7.2 3.2c-1.2-.1-2.1-.6-2.8-1.4l-3.6 2.8 6.6-.8c-.1-.2-.1-.4-.2-.6zm4.7-2c-.1-.3-.1-.5.1-.7.2-.3.4-.6.6-1 .4-.9.5-1.9-.1-2.8-.6-1-1.5-1.3-2.6-1.1-.3 0-.4.3-.2.6l.9 1.8c0 .1.1.2-.1.2-.6.4-1.2.8-1.7 1.1-.1.1-.2.1-.3 0-.4-.4-.7-.8-1-1.2-.2-.2-.5-.4-.5-.4s-.3-.1-.4.1c-.5.8-.8 2.2-.2 3.1.5.8 1.2 1.2 2.1 1.2.2 0 .4 0 .5.3.2.9 2.3 9.6 2.5 10.9.1.6.5 1.1 1 1 .7-.1 1.5-.1 2.1-.7.4-.4.5-.8.4-1.3-.3-.6-2.7-9.7-3.1-11.1z"/></svg>', cake_php: '<svg viewBox="0 0 32 32"><path d="M16 14.5v3.1h-1.2c-1.7-.1-3.3-.2-4.9-.7-.8-.2-1.5-.5-2.2-.8-.4-.1-.7-.3-1-.5-.5-.4-.7-.8-.7-1.4v-2.6c0-.4.2-.8.5-1.1.5-.5 1.2-.8 1.9-1 1.4-.5 2.9-.8 4.3-.9 1.4-.1 2.7-.2 4.1-.2 2.3 0 4.5.3 6.7 1 .6.2 1.2.6 1.8.9.5.3.8.8.8 1.5v2.5c0 .6-.2 1.1-.7 1.4-.4.3-.9.5-1.3.7-.1.1-.3 0-.4 0-2.4-.6-4.8-1.2-7.3-1.8-.2-.1-.3-.1-.4-.1zm0 9.2h-2c-1.7-.1-3.4-.3-5-.8-.7-.2-1.4-.6-2.1-.9-.6-.4-.9-1-.9-1.7V18c.9 1.2 2.2 1.6 3.5 2 2 .5 4 .7 6.1.7.3 0 .4.1.4.4v2.6zm10-5.8v2.8c0 .4-.2.7-.6 1-.5.3-1 .6-1.5.8-.1.1-.3 0-.5 0l-6-1.5-1.2-.3c-.1 0-.2-.2-.2-.2v-2.8c.7.2 1.3.3 2 .5 1.9.5 3.7.9 5.6 1.4h.4c.8-.5 1.5-.8 2-1.7z"/></svg>', d: '<svg viewBox="0 0 32 32"><path d="M23.5 15.8c0 2.6-.8 4.7-2.5 6.1-1.7 1.4-4.1 2.1-7.4 2.1H8.5V8h5.7c3 0 5.3.7 6.9 2.1 1.6 1.3 2.4 3.3 2.4 5.7zm-4 .1c0-3.4-1.7-5.2-5.2-5.2h-2v10.5H14c3.7 0 5.5-1.7 5.5-5.3z"/></svg>', word: '<svg viewBox="0 0 32 32"><path d="M26 11.4V8.8c0-.4-.3-.8-.8-.8h-7.3V6.2h-1.4c-.2 0-.3.1-.5.1-.7.1-1.4.3-2.1.4-.7.1-1.4.2-2 .4-.7.1-1.4.2-2.2.4-.8.1-1.5.2-2.2.3-.5.1-1 .2-1.4.2H6v15.9c.8.1 1.6.3 2.4.4.8.1 1.7.3 2.5.4.8.1 1.6.3 2.4.4.8.1 1.7.3 2.5.5.3.1.7.1 1 .1h.9V24c0-.1 0-.1.1-.1h7.3c.1 0 .3 0 .4-.1.2 0 .3-.1.3-.3 0-.2.1-.3.1-.5V11.4c.1.1.1.1.1 0zm-11 1.5l-.9 3.9c-.2.7-.3 1.4-.5 2.2 0 .1-.1.1-.1.1-.2.1-.4 0-.6 0h-.6c-.1 0-.1 0-.1-.1-.1-.6-.3-1.3-.4-1.9-.2-.8-.3-1.6-.5-2.4 0 .2-.1.4-.1.6l-.6 3c0 .2-.1.5-.1.7 0 .1 0 .1-.1.1-.4 0-.8-.1-1.2-.1-.1 0-.1 0-.1-.1-.3-1.6-.6-3.2-1-4.9-.1-.3-.1-.7-.2-1v-.1h1.2c.2 1.4.5 2.8.7 4.3 0-.2.1-.4.1-.6.3-1.2.5-2.5.8-3.7 0-.1 0-.1.1-.1h1c.2 0 .2 0 .3.2.3 1.4.6 2.8.9 4.3v.1c.1-.8.3-1.6.4-2.4.1-.7.3-1.5.4-2.2 0 0 0-.1.1-.1.4 0 .8 0 1.3-.1h.1c-.2 0-.3.2-.3.3zm10.3-4.1s0 .1 0 0v14.5h-7.5v-1.8h5.9v-.9H18c-.1 0-.1 0-.1-.1v-.9c0-.1 0-.1.1-.1h5.8v-.9h-5.9v-1.1h5.8c.1 0 .1 0 .1-.1v-.7c0-.1 0-.1-.1-.1H18c-.1 0-.1 0-.1-.1v-1h5.9v-.9h-5.7c-.1 0-.1 0-.1-.1v-.9c0-.1 0-.1.1-.1h5.7v-.9h-5.9v-1.2h5.8c.1 0 .1 0 .1-.1v-.7c0-.1 0-.1-.1-.1h-5.9V9c0-.1 0-.1.1-.1h7.3c.1-.2.1-.2.1-.1z"/></svg>', ejs: '<svg viewBox="0 0 32 32"><path d="M7.5 14.9L13.9 9v2.8L9.1 16l4.8 4.2V23l-6.4-5.9v-2.2zm17 2.3l-6.4 5.9v-2.8l4.9-4.2V16l-4.9-4.2V8.9l6.4 5.9v2.4z"/></svg>', elixir: '<svg viewBox="0 0 32 32"><path d="M17.314 10.006c1.644 3.531 5.925 5.006 5.538 9.601-.456 5.412-4.305 6.772-6.433 6.868-2.128.097-6.191-.653-7.304-5.755-1.249-5.731 4.208-14.534 7.352-15.792-.121 1.427.184 3.656.847 5.078zm-2.799 14.61c1.439.299 2.542.507 2.673-.072.197-.873-3.159-1.365-5.402-1.608.673.71 2.032 1.535 2.729 1.68z"/></svg>', elixir_script: '<svg viewBox="0 0 32 32"><path d="M19.182 12.632c1.828 1.993 3.947 3.683 3.67 6.975-.456 5.412-4.305 6.772-6.433 6.868-2.128.097-6.191-.653-7.304-5.755-1.249-5.731 4.208-14.534 7.352-15.792-.116 1.373.162 3.491.774 4.916a7.65 7.65 0 00-.663-.028c-1.339 0-2.428.364-3.27 1.094-.841.729-1.261 1.666-1.261 2.812 0 .656.161 1.18.484 1.57.323.391.984.795 1.984 1.211l.93.391c.359.151.63.345.813.582.182.237.273.517.273.84 0 .521-.198.934-.594 1.238-.396.305-.94.457-1.633.457-.557 0-1.112-.11-1.664-.332a5.906 5.906 0 01-1.586-.965l-.46 2.383a10.82 10.82 0 001.863.617 7.869 7.869 0 001.754.203c1.427 0 2.56-.356 3.398-1.07.839-.713 1.258-1.669 1.258-2.867 0-.693-.176-1.277-.527-1.754-.352-.476-.908-.884-1.668-1.223l-.907-.398-.054-.023c-.959-.433-1.438-.868-1.438-1.305 0-.458.193-.835.578-1.129.386-.294.886-.441 1.5-.441.578 0 1.105.082 1.578.246.474.164.888.407 1.243.73l.01-.051zm-4.667 11.984c1.439.299 2.542.507 2.673-.072.197-.873-3.159-1.365-5.402-1.608.673.71 2.032 1.535 2.729 1.68z"/></svg>', hex: '<svg viewBox="0 0 32 32"><path d="M20.994 24.65h-9.988L6.012 16l4.994-8.65h9.988L25.988 16l-4.994 8.65zm-2.467-4.272L21.055 16l-2.528-4.378h-5.054L10.945 16l2.528 4.378h5.054z"/></svg>', elm: '<svg preserveAspectRatio="xMidYMid" viewBox="0 0 32 32"><rect width="100%" height="100%"/><g class="currentLayer"><path d="M16 16.533l-9.181 9.181H25.18z"/><path d="M21.641 21.108l4.073 4.073v-8.146z"/><path d="M15.467 16L6.286 6.819V25.18z"/><path d="M25.714 14.923V6.286h-8.637z"/><path d="M21.13 11.403l4.575 4.576-4.597 4.596L16.533 16zM6.819 6.286l4.229 4.229h9.193l-4.23-4.23z"/><path d="M16 15.467l4.199-4.198H11.8z"/></g></svg>', favicon: '<svg viewBox="0 0 32 32"><path d="M16 5.5l3.1 6.3 6.9 1-5 4.8 1.2 6.9-6.2-3.2-6.2 3.2 1.2-6.9-5-4.8 6.9-1z"/></svg>', "f-sharp": '<svg id="Layer_1" viewBox="0 0 32 32"><style>.st0{fill:#231f20}</style><path d="M7 15l8.5-8.5v4.3L11.3 15l4.3 4.3v4.3L7 15z" class="st0"/><path d="M12.5 15l3.1-3.1V18l-3.1-3zM25 15l-8.8-8.5v4.3l4.3 4.3-4.3 4.3v4.3L25 15z" class="st0"/></svg>', git: '<svg viewBox="0 0 32 32"><path d="M7 16.2v-.3c.1-.5.4-.7.7-1.1l4.8-4.8.2-.2s.1 0 .1.1l1.8 1.8c.1.1.1.2 0 .3-.1.6.1 1.2.6 1.5.2.1.2.2.2.4v4.4c0 .2-.1.3-.2.4-.5.3-.8.9-.6 1.5.2.6.7 1 1.3 1 .6 0 1.1-.4 1.3-.9.2-.6 0-1.2-.5-1.6-.2-.1-.2-.2-.2-.4v-4.5h.1l1.6 1.6c.1.1.1.2.1.2v.6c.1.8.8 1.3 1.6 1.2.8-.1 1.4-.9 1.2-1.7-.1-.7-.9-1.2-1.6-1.1-.1 0-.2 0-.4-.1l-1.7-1.7c-.1-.1-.1-.2-.1-.3.2-.9-.7-1.8-1.6-1.6-.1 0-.3 0-.3-.1-.6-.6-1.2-1.2-1.8-1.7-.1-.1-.1-.2 0-.3.5-.4.9-.9 1.3-1.3.6-.6 1.2-.6 1.8 0l7.6 7.6c.6.6.6 1.2 0 1.8L17 24.2c-.3.3-.6.7-1.1.8h-.2c-.2-.1-.5-.2-.7-.4-.6-.6-1.3-1.2-1.9-1.9l-5.5-5.5c-.1-.3-.5-.6-.6-1z"/></svg>', go2: '<svg viewBox="0 0 32 32"><path d="M11.3 25c.5-.1.8.4 1.3.4-.2.5-1.3.7-1.6.3-.2-.3.1-.5.3-.7zm8.1.5c.4-.2.8-.6 1.3-.6.2.2.5.4.4.7-.1.3-.4.3-.7.3-.4 0-.8 0-1-.4zM9.3 17.9c.6.3.5.8.5 1.3 0 .3-.3.4-.6.4-.6-.6-.5-1.1.1-1.7zm13.5 1.7c-.3 0-.6-.1-.6-.4 0-.5-.1-1 .5-1.3.6.6.7 1.1.1 1.7z"/><path d="M23.6 8.5c-.3-.4-.7-.5-1.2-.3-.5.1-.8 0-1.2-.3-2.8-2.4-7.3-2.5-10.2-.2-.5.4-1 .6-1.7.5-.7-.2-1.3.5-1.1 1.1.1.4.5.6.8.8.2.1.4.3.4.6-.1 2.5.3 5-.1 7.5.2.5.4 1-.1 1.5 0 .5.1 1.1.1 1.6.2 1.3.6 2.4 1.6 3.3.2.1.4.3.4.5.4.1.8.6 1.3.4 2.2.5 4.5.6 6.7 0 .5 0 .9-.3 1.3-.6 1.6-1.4 2-3.3 2.1-5.3-.5-.5-.3-1-.1-1.5 0-1.2-.2-2.3-.2-3.5.1-1.1.3-2.2.1-3.4-.1-.6.1-1 .6-1.4.8-.3.9-.8.5-1.3zM12.9 14c-1 .1-2-1-2-2.1 0-1.4 1-2.5 2.3-2.5 1.3 0 2 .8 2 2.1.1 1.6-1.1 2.4-2.3 2.5zm6.2 0c-1.1-.1-2.4-.8-2.3-2.5 0-1.3.8-2.1 2-2.1s2.3 1.1 2.3 2.5c0 1-1 2.1-2 2.1z"/><g><path d="M16.8 14.1c.1 0 .2.1.3.1.2.2.6.4.5.8-.1.4-.5.5-.9.6-.5.1-1 0-1.4 0-.4-.1-.8-.2-.8-.8 0-.4.3-.6.8-.7.3.7 1.1.6 1.5 0z"/><path d="M16.8 14.1c.1.6-.3.7-.7.7-.5 0-1 0-.9-.7.5-.5 1.1-.5 1.6 0z"/></g></svg>', go: '<svg viewBox="0 0 32 32"><path d="M18.3 10c-1.1 0-1.9-.6-2.1-1.6-.1-.6.1-1.1.5-1.5.6-.7 1.6-.9 2.5-.6.8.3 1.3 1 1.2 1.9 0 .8-.5 1.4-1.4 1.7-.3.1-.5.1-.7.1zm-1.7-1.8c0 .4.3.7.6.7s.6-.3.6-.7c0-.4-.3-.7-.6-.7-.3.1-.6.4-.6.7zm-3.5-1.8C15 6.4 15.5 8 15 9.1c-.3.7-.9 1-1.7 1.1-1 .2-1.9-.4-2.2-1.3-.4-1.1.3-2.2 1.5-2.5h.5zm-.4 2c0-.4-.3-.7-.6-.7s-.6.3-.6.7c0 .4.3.7.6.7s.6-.3.6-.7zm3.2 1c.2 0 .4 0 .6.1.3.1.4.4.3.6 0 .1 0 .1.1.2.2.1.3.2.5.4s.2.4.1.6c-.1.2-.4.3-.6.2-.1 0-.3-.1-.4-.2-.3-.1-.6-.1-.9 0-.2.1-.4.2-.6.2-.4 0-.6-.2-.5-.6 0-.3.2-.5.4-.6 0 0 .1 0 .1-.1-.1-.4.2-.5.4-.7.1-.1.3-.1.5-.1zm-.1 1.1c.3 0 .6-.1.8-.2.3-.2.3-.4.1-.6-.1-.1-.3-.2-.4-.2-.3-.1-.7 0-.9.2-.3.3-.2.6.2.7-.1.1 0 .1.2.1z"/><path d="M16.7 12.1v.2c0 .2-.1.4-.3.4-.2 0-.4-.2-.4-.3-.1-.3 0-.6 0-1 0-.1 0-.1.1-.1.2 0 .4.1.5.2.1 0 .1.1.1.1v.5zm-.9-.2v.3c0 .2-.1.3-.2.4-.2.2-.4.1-.5-.1-.1-.2-.1-.5-.1-.8 0-.1 0-.1.1-.1.2-.1.4-.1.6-.2.1 0 .1 0 .1.1v.4z"/><g><path d="M10.5 27h-.2c-.1-.1-.3-.2-.4-.4-.2-.2-.2-.5.1-.8.2-.3.6-.5.9-.7-.8-.7-1.2-1.5-1.4-2.5-.2-.7-.2-1.5-.2-2.3 0-1.2.2-2.3.2-3.5-.3.2-.6.4-1 .5h-.2c-.2-.2-.3-.4-.3-.6 0-.2.2-.4.3-.5.3-.2.6-.3 1-.3.2 0 .2-.1.2-.2-.1-1-.2-2-.2-3-.1-1-.1-2.1.1-3.1.1-.5.1-.5-.3-.6-.5-.3-.8-.9-.7-1.4.2-1.1 1.4-1.6 2.4-1.1.1.1.2.1.3 0 .5-.4 1-.7 1.6-.9 1.7-.6 3.5-.7 5.2-.4.9.1 1.8.4 2.5 1 .2.2.4.2.6.1.8-.4 1.7-.1 2.1.7.4.8.1 1.5-.8 1.9-.1.1-.1.1-.1.2.3 1 .4 2 .4 3.1 0 1.2 0 2.3.1 3.5 0 .2 0 .2.2.3.4 0 .7.2 1 .5.2.2.2.3 0 .6v.1c0 .2-.2.3-.4.3s-.4-.1-.5-.2c-.1 0-.2-.1-.3-.1v.1c0 .6.1 1.2.1 1.9 0 1.1 0 2.1-.2 3.2-.2 1-.6 2-1.3 2.8-.1.1-.1.2 0 .3.3.2.6.5.8.9.1.3 0 .5-.3.7-.2.2-.4.1-.6 0l-.4-.4c-.2-.2-.3-.4-.5-.5-.1-.1-.2-.1-.3 0-1.1.6-2.3.8-3.5.8-1.4.1-2.9-.1-4.2-.7h-.1c-.2.2-.6.3-.8.5-.3-.2-.6 0-.9.2zm7.8-17c.2 0 .5 0 .7-.1.8-.3 1.3-.9 1.4-1.7 0-.9-.5-1.6-1.2-1.9-.8-.3-1.9 0-2.5.6-.4.4-.6.9-.5 1.5.2 1 1 1.6 2.1 1.6zm-5.2-3.6h-.5c-1.2.2-1.9 1.3-1.5 2.5.3.9 1.2 1.4 2.2 1.3.7-.1 1.3-.4 1.7-1.1.5-1.1 0-2.7-1.9-2.7zm2.8 3c-.2 0-.4 0-.6.1-.3.2-.5.3-.4.7 0 .1-.1.1-.1.1-.2.1-.4.3-.4.6-.1.4.2.6.5.6.2 0 .4-.1.6-.2.3-.1.6-.1.9 0 .1.1.3.1.4.2.3.1.5 0 .6-.2.1-.2.1-.4-.1-.6-.1-.2-.3-.3-.5-.4-.1 0-.1-.1-.1-.2.1-.3 0-.5-.3-.6-.1-.1-.3-.1-.5-.1zm.8 2.7v-.5c0-.1 0-.1-.1-.1-.2-.1-.4-.1-.5-.2-.1 0-.1 0-.1.1 0 .3-.1.6 0 1 0 .2.2.4.4.3.2 0 .3-.2.3-.4v-.2zm-.9-.2v-.4c0-.1 0-.1-.1-.1-.2.1-.4.1-.6.2-.1 0-.1.1-.1.1 0 .3 0 .5.1.8.1.2.3.3.5.1.1-.1.2-.2.2-.4-.1-.1 0-.2 0-.3z"/><path d="M16.6 8.2c0-.4.3-.7.6-.7s.6.3.6.7c0 .4-.3.7-.6.7s-.6-.3-.6-.7zm1.1.2c0-.1 0-.2-.1-.2s-.1.1-.1.2 0 .2.1.2c0 0 0-.1.1-.2zm-5 0c0 .4-.3.7-.6.7s-.6-.3-.6-.7c0-.4.3-.7.6-.7s.6.3.6.7zm-.3.3c.1 0 .1-.1.1-.1 0-.1 0-.2-.1-.2s-.1.1-.1.1c-.1.1 0 .2.1.2zm3.4 1.8c-.1 0-.3 0-.4-.1-.4-.1-.4-.4-.2-.7.3-.2.6-.3.9-.2.2 0 .3.1.4.2.2.2.2.5-.1.6-.1.1-.3.2-.6.2z"/></g><path d="M17.7 8.4c0 .1 0 .2-.1.2s-.1-.1-.1-.2 0-.2.1-.2c0 0 0 .1.1.2zm-5.3.3c-.1 0-.1-.1-.1-.2s0-.2.1-.1c.1 0 .1.1.1.2s0 .1-.1.1z"/></svg>', gradle: '<svg viewBox="0 0 32 32"><path d="M14.2 9.5h5.7l2.9 4.9H26c-.7-4.8-4.9-8.5-9.9-8.5-1.3 0-2.5.2-3.6.7l1.7 2.9"/><path d="M22.9 17.4l-3 5.2h-7.6L8.5 16l3-5.2-1.6-2.7C7.5 9.9 6 12.8 6 16c0 5.6 4.5 10.1 10.1 10.1 5.1 0 9.3-3.7 9.9-8.6l-3.1-.1"/><path d="M19.6 16c0 2-1.6 3.6-3.6 3.6S12.4 18 12.4 16s1.6-3.6 3.6-3.6 3.6 1.6 3.6 3.6"/></svg>', grails: '<svg viewBox="0 0 32 32"><path d="M15.5 22.8h-.3c-.1-.1-.3-.1-.4-.1-.3-.1-.7-.2-1-.3-.3-.2-.4-.4-.2-.7.2-.3.3-.6.4-.9.5-1.1.9-2.2.7-3.5-.1-1-.6-1.8-1.6-2.2-.8-.3-1.6-.7-2.2-1.3-1.4-1.3-2.4-2.7-2.3-4.7h14.8c0 1-.2 1.9-.7 2.7-.9 1.6-2.2 2.6-3.8 3.3-1 .5-1.6 1.3-1.7 2.4-.1 1.4.5 2.7 1.1 3.9.3.6.2.7-.4 1-.2.1-.3.1-.5.2-.3.1-.7.1-1 .2H16c-.1-.1-.3-.1-.5 0zM28 13.9c-.2.2-.2.5-.3.7-.5 1.1-1.3 1.9-2.4 2.2-.8.2-1 .8-1 1.5-.1.8.2 1.5.5 2.2.3.6.2.8-.5.9-.7.1-1.3.1-2-.1-.3-.1-.4-.3-.2-.6.4-.7.7-1.4.6-2.3-.1-1-.3-1.3-1-1.4-.2 0-.4-.1-.5-.3.1 0 .1-.1.2-.1 1.6-.6 2.7-1.7 3.5-3.1.1-.2.3-.2.5-.2H28v.6zm-24-.7h2.5c.2 0 .3 0 .4.2.9 1.5 2.2 2.5 3.8 3.2-.1.1-.2.1-.3.2-.8.3-1.1.8-1.1 1.7 0 .6.2 1.2.5 1.8.1.2.2.4.3.5.1.2.1.4-.1.4-.9.4-1.8.4-2.7 0-.3 0-.3-.2-.2-.5.4-.8.8-1.6.7-2.5-.1-.8-.3-1-1-1.2-1.3-.4-2.1-1.4-2.6-2.6-.1-.1 0-.3-.2-.3v-.9z"/></svg>', graphql: '<svg viewBox="0 0 32 32"><path d="M24.8 18.8c-.2-.1-.3-.2-.5-.2v-5.2c.2 0 .4-.1.5-.2.9-.5 1.3-1.7.7-2.7-.5-.9-1.7-1.3-2.7-.7-.2.1-.3.2-.4.4l-4.5-2.6c0-.3.1-.4.1-.6 0-1.1-.9-2-2-2s-2 .9-2 2c0 .2 0 .4.1.6l-4.5 2.6c-.1-.2-.3-.3-.4-.4-1-.6-2.2-.2-2.7.7-.5.9-.2 2.1.7 2.7.2.1.3.2.5.2v5.2c-.2 0-.4.1-.5.2-.9.5-1.3 1.7-.7 2.7.5.9 1.7 1.3 2.7.7.2-.1.3-.2.4-.4l4.5 2.6c0 .3-.1.4-.1.6 0 1.1.9 2 2 2s2-.9 2-2c0-.2 0-.4-.1-.6l4.5-2.6c.1.2.3.3.5.4.9.5 2.1.2 2.7-.7.5-.9.1-2.1-.8-2.7zm-14.7 1.3c0-.2-.1-.4-.2-.5-.1-.2-.2-.3-.3-.4l5.9-10.3c.2 0 .4.1.5.1.2 0 .4 0 .5-.1l5.9 10.3c-.1.1-.3.3-.3.4-.1.2-.2.3-.2.5H10.1zm11.8-9.2c-.1.5-.1 1 .2 1.5.3.5.7.8 1.2.9v5.2h-.1L17.4 8.4l.1-.1 4.4 2.6zm-7.3-2.6s0 .1 0 0L8.7 18.6h-.1v-5.2c.5-.1.9-.4 1.2-.9.3-.5.3-1 .2-1.5l4.6-2.7zm2.8 15.4c-.4-.4-.9-.6-1.4-.6-.6 0-1.1.2-1.4.6l-4.5-2.6V21h11.8v.1l-4.5 2.6z"/></svg>', haml: '<svg viewBox="0 0 32 32"><path d="M20 15c-1-.4-.3-2-.3-2l1.1-1s.3.1.6-.1c.4-.2.3-.7.3-.7l.8-.9s.3-.1-.9-1-1.6-.4-1.6-.4l-.9.7s-.3 0-.5.1 0 .5 0 .5l-4.1 3.4-2.1-4.8s.2-.2.1-.5c0-.3-.3-.3-.3-.3-.5-.9-.7-.9-.7-.9-1.7-.4-2.4.7-2.4.7-.1.1.1.7.1.7s-.2.1-.1.6c.2.7.6.4.6.4l2.7 6c0 .5-2.1 8.4-2.1 8.4 1.6 1.7 4 .9 4 .9 0-1 1.2-6.8 1.2-6.8 1.3 1.2 2.7 1.4 3.2 1.4 0 .4.1.7.1.7s1.9.7 2.9-.8c.1-.1.1-.2.1-.3 0 0 1.1-.4 1.1-1.4 0-1.4-1.9-2.2-2.9-2.6zm2 3.6c.2-.7-.2-1.1-.2-1.1s-.1.6-1.2.9c-1.1.3-1.4-.2-1.4-.2s-.2.3-.4.7c-2.3-.4-3-1.6-3.2-1.9-.1-.3.1-1 .1-1l3-2.2c-.2 1.4 1.4 1.9 1.4 1.9s2.3.8 2.3 2c.1.5-.2.8-.4.9z"/></svg>', mustache: '<svg viewBox="0 0 32 32"><path d="M7.4 15.7c0-.2 0-.4-.1-.5-.2-.2-.6-.2-.7.1-.3.5 0 1 .6 1.2.4.1.7.1 1-.2.5-.4 1-.8 1.5-1.3.7-.6 1.3-1.2 2.2-1.5 1.2-.4 2.4-.4 3.4.5l.6.6.2.2c.1-.2.2-.3.3-.4.6-.7 1.4-1.1 2.4-1.1 1.1 0 2.1.4 2.9 1.1.6.5 1.1 1 1.7 1.5.3.3.6.5 1 .6.5.1 1-.2 1.2-.6.1-.3 0-.5-.2-.7-.2-.2-.4-.2-.6-.1-.2.1-.3.3-.2.5v.1c-.3-.2-.4-.5-.4-.8 0-.4.3-.6.6-.7.9-.3 1.8.2 2 1.2.1.6.1 1.3-.2 1.9-.3.7-.9 1-1.6 1.2-1.4.4-2.7.1-4-.4l-2.7-1.2c-1.1-.5-2.3-.7-3.5-.4-.7.2-1.5.5-2.2.8-.9.4-1.7.8-2.6 1.1-1.1.4-2.2.5-3.3.1-1.1-.4-1.9-1.2-1.8-2.7.1-.7.3-1.3 1-1.5.4-.2.9-.2 1.3 0 .7.3.7 1 .2 1.4z"/></svg>', haskell: '<svg viewBox="0 0 32 32"><path d="M14.2 8.9c1.2 1.7 2.3 3.5 3.5 5.2 2 3 4 5.9 5.9 8.9h-3.5l-.1-.1c-.9-1.4-1.9-2.8-2.8-4.2-.1-.1 0-.1-.1 0-.9 1.4-1.9 2.8-2.8 4.2l-.1.1h-3.5v-.1c1.5-2.3 3.1-4.6 4.6-6.9v-.1c-1.5-2.3-3.1-4.6-4.6-6.9v-.1h3.5z"/><path d="M9.5 23.1H6V23c.4-.6.8-1.3 1.3-1.9 1.1-1.7 2.2-3.3 3.3-5V16c-1.5-2.4-3-4.7-4.6-7h3.5l.1.1c.8 1.1 1.5 2.3 2.3 3.4.8 1.2 1.6 2.3 2.3 3.5v.1c-1.5 2.3-3.1 4.6-4.7 7 .1-.1.1-.1 0 0zM26 15.4h-6.3c-.5-.8-1-1.5-1.5-2.3V13H26v2.4zm0 3.6s0-.1 0 0h-4c-.5-.8-1-1.5-1.5-2.3v-.1H26V19z"/></svg>', haxe: '<svg viewBox="0 0 32 32"><path d="M24.9 20l-2-4 2-4 .1-.1V7h-4.9l-.1.1-4 2-4-2-.1-.1H7v4.9l.1.1 2 4-2 4-.1.1V25h4.9l.1-.1 4-2 4 2 .1.1H25v-4.9l-.1-.1zM22 15.6L16.4 10l7.5-1.9-1.9 7.5zm-12 0L8.1 8.1l7.5 1.9-5.6 5.6zm0 .8l5.6 5.6-7.5 1.9 1.9-7.5zm12 0l1.9 7.5-7.5-1.9 5.6-5.6z"/></svg>', jade: '<svg viewBox="0 0 32 32"><path d="M26 19.9c-.2-1.1-.2-2.3-.1-3.4.1-.6.2-1.2 0-1.9-.2-.6-.3-1.2-.4-1.8-.2-1.3-.4-2.7-.9-4-.2-.4-.4-.7-.9-.7-.4 0-.6.2-.6.6.1.9.3 1.9.4 2.8.1.7.3 1.3.4 2v.4c-.1 0-.3 0-.4-.1-.4-.3-.8-.5-1.1-.9-.5-.7-.9-1.4-1.2-2.1-.6-1.4-1.1-2.8-1.8-4-.6-1-1.4-1.2-2.4-1.2-.3 0-.4.2-.4.4.1.3.1.6.3.9.9 1.6 1.7 3.3 2.6 4.9.3.5.7 1 1 1.4.4.6.3.8-.3 1.1-.1 0-.1 0-.2.1-.8.2-1.4-.1-1.9-.6-.5-.4-1.1-.7-1.8-.8-.3 0-.7-.1-1-.1-1.4-.1-2.7-.1-4.1.4-2 .7-3.1 2.3-3.8 4.2-.2.6-.4 1.3-.6 2-.1-.2-.1-.2-.2-.3-.1-.1-.2-.2-.2-.4-.1.1-.3.2-.4.4v.5c0 .3.1.6.2.8.7 1.7 1.4 3.5 2 5.2.2.4.5.6.9.6 1 .1 2 .1 2.9-.1l1.8-.3c-.2-.2-.4-.4-.6-.5 0-.1.1-.1.1-.2.5.1.9.2 1.4.3 1.6.6 3.2.9 4.9.8.3 0 .6-.1.7-.4l.3-.6c.2-.8.6-1.5 1-2.1.7-1 .6-.9 1.7-.6 1.2.4 2.3-.2 2.6-1.4.1-.4.1-.9.1-1.3zm-1.1-1.2c-.1.1-.3.3-.4.3-.9.1-1.8.1-2.6-.3-.3-.1-.5-.4-.8-.7.3-.1.6-.2.8-.3.9-.1 1.7.1 2.5.5.1 0 .2.1.2.1.1.1.3.3.3.4z"/></svg>', java: '<svg viewBox="-4 -4 20 20"><path d="M6 0a6 6 0 106 6 6 6 0 00-6-6zm2.14 6.8a2.16 2.16 0 01-2.29 2.41 2.5 2.5 0 01-2-.87l.73-.92a1.52 1.52 0 001.23.59c.66 0 1.06-.42 1.06-1.32V2.8h1.26z" class="cls-1"/></svg>', javascript: '<svg viewBox="0 0 32 32"><path d="M11.4 10h2.7v7.6c0 3.4-1.6 4.6-4.3 4.6-.6 0-1.5-.1-2-.3l.3-2.2c.4.2.9.3 1.4.3 1.1 0 1.9-.5 1.9-2.4V10zm5.1 9.2c.7.4 1.9.8 3 .8 1.3 0 1.9-.5 1.9-1.3s-.6-1.2-2-1.7c-2-.7-3.3-1.8-3.3-3.6 0-2.1 1.7-3.6 4.6-3.6 1.4 0 2.4.3 3.1.6l-.6 2.2c-.5-.2-1.3-.6-2.5-.6s-1.8.5-1.8 1.2c0 .8.7 1.1 2.2 1.7 2.1.8 3.1 1.9 3.1 3.6 0 2-1.6 3.7-4.9 3.7-1.4 0-2.7-.4-3.4-.7l.6-2.3z"/></svg>', jinja: '<svg viewBox="0 0 1200 1000"><path d="M843.3 275.4c0-1.8-3.4-3.6-5.2-5.4h-2.7c-14.2 6.5-28.3 13.3-42.6 19.4-62 26.5-127.2 38.7-194.2 43-27.9 1.8-55.7 3.9-83.6 5.5-48.6 2.8-97.3 6.7-145-16.2 8.6 18.7 3.1 30.5-13.6 37.6v2.7c5.2 2.6 10.2 6 15.8 7.7 8.4 2.6 15.9 4 24.1 10 9.4 6.8 14.8 12.9 18.1 23 .6 1.8 5.2 3.1 8.1 3.3 11.7.9 23.5 2.3 35.1 1.5 11.2-.8 22.8 3.1 21.4 12.5-1.1 7.3-13.8 15.4-22.9 18.3-9.3 3-20.5.2-30.8-.4-8.6-.5-13.1 1.1-9.6 11.3 2.2 6.2 2.3 13.1 3.4 19.9h58.4c-1.5 27.2-3 53.9-4.6 81.6-15.8-.9-30-1.7-45.3-2.5-.5-4.7-1-9-1.4-12.6 8.3-6.1 15.9-11.7 23.6-17.3-16.4-12.6-44.2-13.6-73.8-1.3 5.6 4.6 10 8.7 14.9 12 12.4 8.7 12 14.2-3.6 21.9 13.6 25 13.5 52.5 12 79.9-.2 4.5-5.6 8.5-6.7 13.2-1.7 7.3-5.4 18.3-2 21.7 9 9.2 5 19.1 5.8 28.7.3 4 .2 8.2-.3 12.2-1.2 8.9 2.6 12.3 11.4 11.7 7.5-.5 15.1-.1 23.3-.1-1.9-15.5-3.6-29.7-5.5-45.8h40.2c-1.9 13-3.9 26.5-5.9 40.7h50.6v-44.8c9.7-.9 17.6-1.6 26.7-2.4v44.5h30.4c0-3.9-.2-8.2 0-12.4.9-12.9 2.7-25.7 2.7-38.6 0-8.8-3.1-17.5-3.8-26.4-1.5-19.6-7.6-39.2 2.3-58.9 2.6-5.2 5.8-15.1-3.8-21.4-2.1-1.4-1-11.1 1.7-15 4-5.8 10.6-9.9 16.9-15.4-22.6-9.3-44.1-9.3-66.2 0 7.2 8.8 14.2 17.3 21.1 25.7-1 1.2-2.1 2.3-3.1 3.5h-28.6v-84.4c52.7-2.9 103.7-5.8 157.9-8.8-1.7 29.8-3.3 58.1-5 87.3h-26.6V528c8.3-6.2 16-12 25-18.8-26.8-12.4-51.8-12.2-78.6-1.6 5.1 5.6 10.1 10.9 14.9 16.5 2.9 3.4 7.5 7.3 7.4 10.9-.1 3.8-4.9 7.5-9 13.1 5.4 6.3-3.8 20 8.9 27.7 1.5.9.8 6 .8 9.1-.1 16.2.3 32.5-.8 48.7-.4 6.3-4.2 12.5-8.3 18.3 3.2 21.3 9.9 42.8 4.7 65.7-.8 3.6 2.9 8.2 4.4 12.4h37.9c-1.6-17.3-3.3-34.6-5-53h26.6v45.5h54.5c-2-17.2-3.7-32.3-5.6-48.6h24.2v42.7c2.3.9 3.8 1.9 5.5 2.1 29.1 3.1 28.8 2.7 27.3-25.6-.7-12.9 2.2-26.1 3.5-39.1.3-2.6 1.7-5.9.7-7.8-13.1-23.9-8-48.2-3.4-72.9 1.5-7.8-2-16.5-3.1-24.8-.6-4.4-.9-8.9-1.2-12.2 8-7 15.2-13.3 23.1-20.2-24.9-9.1-48.7-9.8-73.1.2 5.2 12.6 27.8 12 22.9 32.8-8.8 0-18.1.3-27.4-.2-2.4-.1-6.3-2.8-6.6-4.8-4.2-28.3-7.9-56.7-11.9-86.4 29.1-2.5 54.5-4.6 79.6-6.7 1.7-10.3 4-19.8 4.4-29.3.1-2.3-6-7.2-9.1-7-12.5.8-25.4 1.6-37.4 5.2-15.2 4.6-24-4.4-34.3-11.2 2-4.6 3.2-8.8 5.6-12.1 2.2-3 5.4-6.7 8.7-7.2 18.6-3.3 37.4-5.6 56-8.7 3.7-.6 9.7-2.4 10.3-4.7 7-27.2 31.4-28.3 51.8-35.3 5.5-1.9 10.9-3.7 16.4-5.5v-5.4c.4-18.3.6-36.4.2-54.4zM468.4 640.2c-13.8.9-26.6 1.7-41.4 2.6v-66.5c14.2.8 28.2 1.6 41.4 2.4v61.5zm68.7-61.5c0 18.5.5 36.4-.2 54.3-.4 11.1-9.9 6.6-15.7 7.1-6.2.6-14.6 2.9-14.7-8-.2-17.4-.1-34.9-.1-53.4h30.7zm-16.5-146.5c-16.7-4-11.6-15.9-4.6-27.5 10.5-.9 22-1.8 36.4-3 1.6 10.6 3.1 20.5 4.6 30.5-12.2.1-25 2.7-36.4 0zm138.9 214.1h-24.7v-70.4h24.7v70.4zm77.9-70.1v67c-8.2.6-16.1 1.2-25.4 1.8-1.4-23.4-2.6-44.7-3.9-67.5 9.8-.4 19-.8 29.3-1.3zM611.7 427.4c-1.7-29 .5-30.8 42.4-33.9 3.6 4.5 7.1 8.9 11.3 14.2-13.2 20.1-32.8 21.9-53.7 19.7z"/></svg>', julia: '<svg viewBox="0 0 32 32"><g><circle cx="11.3" cy="20.3" r="3.9"/><circle cx="20.7" cy="20.3" r="3.9"/><circle cx="16" cy="11.7" r="3.9"/></g></svg>', karma: '<svg viewBox="0 0 32 32"><path d="M9 7.4v4.8l3.3 12.5h1.5v-5h.8l3.4 5h5l-5.9-8.9v-.5l5.5-8h-5.3l-2.7 4.4h-.8V7.4z"/></svg>', kotlin: '<svg viewBox="-25 -25 110 110"><linearGradient id="a" x1="15.959" x2="44.307" y1="-13.014" y2="15.333" gradientTransform="matrix(1 0 0 -1 0 61)" gradientUnits="userSpaceOnUse"><stop offset=".097" stop-color="#0095d5"/><stop offset=".301" stop-color="#238ad9"/><stop offset=".621" stop-color="#557bde"/><stop offset=".864" stop-color="#7472e2"/><stop offset="1" stop-color="#806ee3"/></linearGradient><path d="M0 60l30.1-30.1L60 60z"/><linearGradient id="b" x1="4.209" x2="20.673" y1="48.941" y2="65.405" gradientTransform="matrix(1 0 0 -1 0 61)" gradientUnits="userSpaceOnUse"><stop offset=".118" stop-color="#0095d5"/><stop offset=".418" stop-color="#3c83dc"/><stop offset=".696" stop-color="#6d74e1"/><stop offset=".833" stop-color="#806ee3"/></linearGradient><path d="M0 0h30.1L0 32.5z"/><linearGradient id="c" x1="-10.102" x2="45.731" y1="5.836" y2="61.669" gradientTransform="matrix(1 0 0 -1 0 61)" gradientUnits="userSpaceOnUse"><stop offset=".107" stop-color="#c757bc"/><stop offset=".214" stop-color="#d0609a"/><stop offset=".425" stop-color="#e1725c"/><stop offset=".605" stop-color="#ee7e2f"/><stop offset=".743" stop-color="#f58613"/><stop offset=".823" stop-color="#f88909"/></linearGradient><path d="M30.1 0L0 31.7V60l30.1-30.1L60 0z"/></svg>', dart: '<svg data-name="Layer 1" viewBox="-60 -60 320 320"><path d="M194.42 83.82L154.8 44.2l-.08-.09-31.63-31.62c-3.25-3.25-9.56-6.71-14.87-6.71-4.75 0-9.13 1-11.91 2.66L40.77 36.22l-3.68 2-1.65 3.41-27.86 58c-.27.57-2.64 5.7-2.64 9.41a23.64 23.64 0 006.7 16.09l31.71 31.71 38.4 38.41h79.75v-32.91h32.92zM98.29 12.06c2.26-1.35 6-2.15 9.93-2.15s9.32 2.85 12 5.49l22.44 22.44h-.76a48.2 48.2 0 00-5.59-.31H47.43zm59.08 179.08H83.46l-37.2-37.2c-4.52-4.53-5.49-6.38-5.49-15.61v-93.8l116.6 116.6z"/></svg>', less: '<svg viewBox="0 0 32 32"><path d="M7.5 15.1c1.5 0 1.7-.8 1.7-1.5 0-.6-.1-1.1-.1-1.7S9 10.7 9 10.2c0-2.1 1.3-3 3.4-3h.8v1.9h-.4c-1 0-1.3.6-1.3 1.6 0 .4.1.8.1 1.3 0 .4.1.9.1 1.5 0 1.7-.7 2.3-1.9 2.6 1.2.3 1.9.9 1.9 2.6 0 .6-.1 1.1-.1 1.5 0 .4-.1.9-.1 1.2 0 1 .3 1.6 1.3 1.6h.4v1.9h-.8c-2 0-3.3-.8-3.3-3 0-.6 0-1.1.1-1.7.1-.6.1-1.2.1-1.7 0-.6-.2-1.5-1.7-1.5l-.1-1.9zm17 1.7c-1.5 0-1.7.9-1.7 1.5s.1 1.1.1 1.7c.1.6.1 1.2.1 1.7 0 2.2-1.4 3-3.4 3h-.8V23h.4c1 0 1.3-.6 1.3-1.6 0-.4 0-.8-.1-1.2 0-.5-.1-1-.1-1.5 0-1.7.7-2.3 1.9-2.6-1.2-.3-1.9-.9-1.9-2.6 0-.6.1-1.1.1-1.5.1-.5.1-.9.1-1.3 0-1-.4-1.5-1.3-1.6h-.4V7.2h.8c2.1 0 3.4.9 3.4 3 0 .6-.1 1.1-.1 1.7-.1.6-.1 1.2-.1 1.7 0 .7.2 1.5 1.7 1.5v1.7z"/></svg>', liquid: '<svg viewBox="0 0 32 32"><path d="M18.1 18.8c0 .5-.1 1.1-.1 1.6-.1 1.6-.2 3.2-.2 4.8v.7c0 .1 0 .1-.1.1l-3-.6c-.5-.1-.9-.1-1.4-.2-.5-.1-.9-.2-1.3-.2-1.3-.2-2.6-.5-3.9-.7-.5-.2-1.1-.3-1.6-.4-.1 0-.1-.1-.1-.2.2-1.1.3-2.3.4-3.4 0-.2.1-.5.1-.7.1-.1 0-.2.1-.4.1-.5.1-1 .2-1.6.1-.5.2-1 .2-1.6.2-1.3.4-2.7.5-4 0-.3.2-.5.4-.6l1.8-.6c.1 0 .2-.1.2-.3.2-1.1.7-2.1 1.3-3 .4-.6.9-1.1 1.5-1.4.4 0 .7-.1 1.1-.1.5 0 .9.1 1.2.5.1.1.1.1.2.1.5 0 1 .2 1.3.6.3.4.5.8.7 1.2 0 .1.1.1.2.1.2-.1.3-.1.5-.2.2 0 .2 0 .2.2 0 .9-.1 1.7-.1 2.6-.1 1.1-.1 2.3-.2 3.4-.1 1.4-.1 2.7-.2 4.1.1.1.1.1.1.2zm-7.4-.5c.2.2.4.4.7.6.3.2.6.5.7.9.1.5-.1.9-.6 1H11c-.6-.1-1.1-.4-1.5-.7-.1-.1-.1-.1-.2.1-.1.4-.2.8-.4 1.2-.1.3 0 .5.2.6.9.7 1.9 1 2.9.9 1.1-.1 1.9-.7 2.3-1.7.2-.5.3-1 .3-1.5s-.2-1-.5-1.4c0-.1-.1-.1-.1-.2-.3-.5-.8-.8-1.3-1.1-.2-.1-.4-.3-.6-.5-.3-.5-.1-1.3.6-1.5.7-.1 1.3 0 1.9.2.1.1.2 0 .2-.1l.6-1.8c.1-.3.1-.3-.2-.4-.7-.2-1.4-.2-2.1-.1-1.6.3-3 1.4-3.1 3.2-.2.9.1 1.7.7 2.3zm4-11.5c-.1-.1-.1-.1-.2-.1-.2-.1-.4 0-.7 0-.6.2-1 .5-1.4 1-.7.8-1.1 1.8-1.4 2.8 0 .1 0 .1.1.1.5-.1.9-.3 1.4-.4.1 0 .1-.1.1-.1 0-.2.1-.4.1-.6.4-1.1.9-2.1 2-2.7zm.7 2.1c0-.4-.1-.9-.2-1.3-.1-.2-.1-.2-.2-.1-.2.1-.5.3-.6.5-.4.5-.7 1.1-.9 1.7v.1h.1c.5-.1 1-.3 1.4-.4.4-.1.4-.1.4-.5zm.8.2c.2-.1.5-.2.8-.3v-.1c-.1-.4-.3-.8-.6-1.1-.1-.1-.2-.2-.4-.3h-.1v.1c0 .1.1.3.1.4.1.3.1.7.1 1.1 0 .1 0 .2.1.2zm9.2 13.3l.3 2.1c0 .1 0 .1-.1.2-1.2.2-2.3.5-3.5.7-.8.2-1.7.4-2.5.5-.1 0-.2.1-.1-.1 0-.3 0-.7.1-1 .1-1.4.1-2.7.2-4.1v-1c0-.3 0-.7.1-1V18c.1-1.8.2-3.5.3-5.3v-1c.1-.8.1-1.5.1-2.3v-1c.1 0 .1 0 .1.1l.4.4c.2.2.4.3.5.5.1.2.3.2.5.2.4 0 .9.1 1.3.1.1 0 .2.1.2.2.1.4.1.8.2 1.2.1.7.2 1.3.3 2 .2 1 .3 2.1.5 3.1.3 1.7.5 3.4.8 5.1.1.4.2.7.3 1.1z"/></svg>', livescript: '<svg viewBox="0 0 32 32"><path d="M16 7.5V15c.1 0 .1 0 .1-.1 0 0 .1 0 .1-.1 0 0 .1 0 .1-.1.1 0 .1 0 .1-.1.1 0 .1 0 .1-.1.1 0 .1-.1.1-.2V8.2c0-.2.1-.3.3-.3h.6c.3 0 .3 0 .3.3v5h.1c.1 0 .1 0 .1-.1V13l.2-.2c.1-.1 0-.2 0-.2V8.8h1.1v2.8c.1 0 .1-.1.2-.1l1.1-1.1c.1 0 .1-.1.1-.2V8.7c.2-.1.4 0 .6 0 .2 0 .5-.1.6 0 .1.1 0 .4 0 .6v.5c0 .1 0 .1.1.2 0 0-.1 0 0 0h.9c.1 0 .2 0 .2.2v1h-.3c.1-.1.2 0 .3-.1h-1.4c-.1 0-.1 0-.1.1-.4.4-.9.8-1.3 1.3 0 .1.1.1.2.1h2.4c.2 0 .2 0 .2.2v.7c0 .2 0 .3-.3.3h-3.6c-.1 0-.2-.1-.2.1l-1.2 1.2h5.3v.9c0 .2-.1.2-.3.2h-6.3c-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1.1.1.2 0 .2 0h7.5c.1 0 .1 0 .1.1v.7c0 .3 0 .3-.3.3h-8.9l-.1.1c-.1.2-.3.3-.4.5.1.1.2 0 .3 0h9.9c.1 0 .2 0 .2.2v1H12.9c-.1 0-.2 0-.3.1L11.5 21c0 .1.2.1.2.1h13.6c.2 0 .2 0 .2.2v1.9c0 .3 0 .3-.3.3H10.5c-.1.1 0 .2 0 .2V26H8.2c-.2 0-.2-.1-.2-.2v-2.3c-.1-.1-.1 0-.2 0h-2c-.2 0-.2 0-.2-.2v-2c0-.2.1-.2.2-.2H8 5.6c.1-.1.1 0 .2 0h2.3c.1-.1 0-.2 0-.2V6.4c0-.2 0-.2.2-.2h1.9c.3 0 .3 0 .3.3v13.8c.2-.1.3-.3.4-.4.3-.3.5-.6.8-.8.1 0 .1-.1.1-.2V7.5c.2-.1.5 0 .7 0 .2 0 .4-.1.5 0 .1.1 0 .3 0 .5v9.7c.4-.4.8-.8 1.3-1.2.1-.1.1-.2.1-.2V7.5h1.1c.1 0 .1 0 .1.1.3-.2.3-.1.4-.1-.1 2.5-.1 4.9-.1 7.3v.2c.1-.1 0-.2 0-.3v-7c.1 0 0-.1.1-.2z"/><path d="M11 23.5c.1-.1.2 0 .3 0h14.4c.3 0 .3 0 .3-.3v-1.9c0-.2 0-.2-.2-.2H12.2c-.1 0-.2.1-.2-.1h13.9c.1 0 .1 0 .1.2v2.1c0 .2 0 .2-.2.2H11zm0-3.4c-.1-.1 0-.2 0-.3V6.3c0-.3 0-.3-.3-.3H8.8c-.2 0-.2 0-.2.2v-.1c-.1-.1-.1-.1.1-.1h2.1c.1 0 .2 0 .2.2v13.9zm7.5-7.6c-.1-.1 0-.2 0-.2V7.5c0-.3 0-.3-.3-.3h-.6c-.2 0-.3.1-.3.3v6.1c0 .1 0 .2-.1.2.1-.1.1-.2.1-.3V7.3c0-.2 0-.2.2-.2h.9c.1 0 .2 0 .2.2v4.8c-.1.2-.1.3-.1.4zm-2.9 4.7c.1-.1.2 0 .3 0h8.6c.3 0 .3 0 .3-.3v-.7c0-.1 0-.2-.1-.1H17h7.7c.2 0 .2 0 .2.2v.8c0 .1 0 .2-.2.2h-8.8c-.2-.1-.2-.1-.3-.1zm-3.3-9.9c.1.1 0 .1 0 .2v11.2c0 .1 0 .2-.1.2V7.5c.1-.1.1-.2.1-.2zm12.4 12.4v-1c0-.1 0-.2-.2-.2H14.3h10c.3 0 .3 0 .3.3v.8c.1 0 .2.1.1.1zM14.8 7.3v8.8c0 .1 0 .2-.1.2V7.4c.1 0 0-.1.1-.1zm5.8 5c0-.1.1-.1.2-.1h3.6c.2 0 .3-.1.3-.3v-.7c0-.2 0-.2-.2-.2h-2.4c-.1 0-.2 0-.2-.1h2.9c.1 0 .1.1.1.1v1.2h-3.8c-.3 0-.4 0-.5.1 0-.1 0-.1 0 0zM16 7.5c-.1.1 0 .2 0 .2v7.1c-.1-2.4-.1-4.8 0-7.3-.1 0-.1-.1 0-.2v.2zm2.1 7.2c.1-.1.2 0 .2 0h6.1c.2 0 .3 0 .3-.2v-.9c.1 0 .1.1.1.2v.9c0 .1 0 .2-.2.2-2.2-.2-4.3-.2-6.5-.2zM6 21h2.4-2.2c-.2 0-.2 0-.2.2v2c0 .2 0 .2.2.2h2.2-2.3c-.1 0-.1 0-.1-.1V21zM19.8 7.3v.1c0-.1-.1-.2 0-.1zm.9 4.9h4-4zM21 10c-.1 0 0-.1 0-.2V7.2c.1 0 0 .1 0 .1V10zm2.1-.3c0-.1.1-.1.1-.1h1.4c-.1.1-.2 0-.3.1h-1.2zm1.6 1.3h-2.8 2.8zM10.9 26v-2.5 2.3c.1.1.1.1 0 .2zM24.7 9.7v-1c0-.1 0-.2-.2-.2h-.9c-.1 0 0 0 0 0h1.1c.1.4 0 .8 0 1.2zm-2.4-2.4c.1 0 0 .1 0 .2v1.3c0 .1 0 .1-.1.2 0-.7.1-1.2.1-1.7zm-4.5 7.8c0-.1 0-.1.1-.1 0 0-.1 0-.1.1zm-.7.6c0-.1 0-.1.1-.1 0 0 0 .1-.1.1zm.6-.5c0-.1 0-.1 0 0 0-.1 0 0 0 0zm-1.6-.2c0 .1 0 .1 0 0-.1.1 0 0 0 0zm1.8-.1c0-.1.1-.1 0 0 .1-.1.1 0 0 0zm-.5.5c0-.1.1-.1 0 0 .1-.1.1 0 0 0zm-.7-1c0 .1-.1.1 0 0-.1.1-.1.1 0 0zm.2-.2c0 .1-.1.1 0 0-.1.1-.1.1 0 0zm.1 1.6zm-.1.2c0-.1 0-.1 0 0 0-.1 0-.1 0 0zm2.1-3.9c0 .1-.1.1 0 0-.1.1-.1.1 0 0zm-2.8 2.8zm.1-.1s0 .1 0 0c-.1 0 0 0 0 0zm-1.5-7.3c-.1 0-.1 0 0 0zm9.9 1zM14.8 18zm2.8-2.8zm0 .1s0-.1 0 0c0-.1 0 0 0 0zM14.9 18zm2.6-2.7s.1 0 0 0c.1 0 0 0 0 0zm-2.6 2.6zm2.5-2.5zm0 .1s0-.1 0 0c0-.1 0 0 0 0zm-.1 0s.1 0 0 0c.1 0 0 0 0 0zm-2.4 2.4c.1 0 .1 0 0 0 .1 0 .1 0 0 0zm2.4-2.3c0-.1 0-.1 0 0 0-.1 0-.1 0 0zm-.1 0c.1 0 .1 0 0 0 .1 0 .1 0 0 0zM15 17.9c0-.1 0-.1 0 0 0-.1 0-.1 0 0zm0-.1s.1 0 0 0c.1 0 0 0 0 0zm2.1-2c0-.1 0-.1 0 0 0-.1 0-.1 0 0zm-2 1.9c.1 0 .1 0 0 0 .1 0 .1 0 0 0zm4.6-6.4c0 .1 0 .1 0 0 0 .1 0 .1 0 0zm-4.1 6zm-.1 0zm0 .1s0-.1 0 0c0-.1 0 0 0 0zm-.1 0zm-.1.1c.1 0 .1 0 0 0 .1 0 .1 0 0 0zm0 0zm0 .1s0-.1 0 0c0-.1 0 0 0 0zm-.1 0s.1 0 0 0c.1 0 0 0 0 0zm3.4-5.1zm.1-.1s-.1.1 0 0c-.1.1 0 0 0 0zm.1-.1c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zm0 0zm0 0zm.7-.7zm-.6.6zm.1-.1zm0-.1c0 .1 0 .1 0 0 0 .1 0 .1 0 0zm.1 0zm.1-.1s-.1.1 0 0c-.1.1 0 0 0 0zm0 0zm.1-.1c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zm0 0zm.1-.1s-.1.1 0 0c-.1.1 0 0 0 0zm0 0zm.1-.1c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zm-1.8 3.5s.1 0 0 0c.1 0 0 0 0 0zm-1.5-.2s-.1.1 0 0c-.1.1 0 0 0 0zm1.7 0zm.1-.1zm-1.6-.1s-.1.1 0 0c-.1.1 0 0 0 0zm0 0zm.1-.1zm.1-.1s0 .1 0 0c0 .1 0 0 0 0zm.1-.1zm0 0zm.2-.2zm.1-.1c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zm0 0zm.1-.1s-.1.1 0 0c-.1.1 0 0 0 0zm0 0zm.1-.1zm2.5-2.5z"/></svg>', lua: '<svg viewBox="0 0 32 32"><path d="M14.7 26C9.9 26 6 22.1 6 17.3c0-4.8 3.9-8.8 8.9-8.7 4.7.1 8.5 3.9 8.5 8.7 0 4.8-3.9 8.7-8.7 8.7zm3.6-14.9c-1.4 0-2.6 1.2-2.6 2.6 0 1.4 1.1 2.6 2.6 2.6 1.4 0 2.6-1.1 2.6-2.6 0-1.4-1.1-2.6-2.6-2.6zm5.1 0c-1.4 0-2.6-1.1-2.5-2.6C20.9 7.1 22 6 23.5 6 24.9 6 26 7.2 26 8.6c0 1.4-1.2 2.5-2.6 2.5z"/></svg>', markdown: '<svg viewBox="0 0 32 32"><path d="M20.7 6.7v9.9h3.8c-2.9 3-5.8 5.9-8.7 8.8-2.7-2.8-5.6-5.8-8.4-8.7h3.5V6.6c1.3.9 4.4 3.1 5 3.1.6 0 3.6-2.2 4.8-3z"/></svg>', argdown: '<svg fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" clip-rule="evenodd" viewBox="0 0 32 32"><path d="M20.451 16.65h3.55l-8 8.975-8-8.975h3.56V6.375l3 1.875v11.765l1.44 1.615 1.45-1.628V8.25l3-1.875V16.65z"/></svg>', info: '<svg viewBox="0 0 32 32"><path d="M26 15.1c-.1-1.7-.7-3.2-1.6-4.6C23 8.4 21 7 18.6 6.4c-.7-.2-1.4-.3-2-.3H15c-2 .2-3.7.9-5.3 2.1-1.8 1.5-3 3.3-3.5 5.6-.1.5-.2 1.1-.2 1.6V17c.2 1.7.7 3.3 1.7 4.7 1.1 1.6 2.6 2.9 4.4 3.6 1.1.4 2.2.7 3.3.8H17c2.4-.2 4.5-1.2 6.2-3 1.4-1.4 2.3-3.1 2.7-5 .1-.5.1-.9.2-1.4v-1.1c-.1-.2-.1-.3-.1-.5zm-10 9.4c-4.7 0-8.4-3.8-8.4-8.5s3.8-8.5 8.6-8.5c4.6.1 8.4 3.8 8.4 8.5-.1 4.7-3.9 8.5-8.6 8.5z"/><path d="M18.4 21.4c-.2 0-.3 0-.5-.1-.2 0-.2-.2-.3-.3v-6.5c-1.6.1-3.1.1-4.7.2v.8h1c.4 0 .6.3.6.7v4.6c0 .4-.2.6-.6.6H13v.8h6v-.8h-.6zm-2.6-8.1c1 0 1.7-.8 1.7-1.7 0-.9-.8-1.7-1.7-1.7-1 0-1.7.8-1.7 1.7 0 .9.8 1.7 1.7 1.7z"/></svg>', clock: '<svg viewBox="0 0 32 32"><path d="M15.5 7h1.2c.5.1.9.1 1.4.2 1.2.3 2.3.8 3.3 1.5.8.6 1.4 1.2 1.9 2 .9 1.2 1.4 2.5 1.6 4 0 .2.1.4.1.7v1.3c-.1.4-.1.8-.2 1.1-.3 1.2-.8 2.4-1.5 3.4s-1.6 1.8-2.7 2.5c-1.1.6-2.2 1.1-3.5 1.2-.2 0-.4.1-.6.1h-1.3c-.4-.1-.8-.1-1.1-.2-1.2-.3-2.4-.8-3.4-1.5s-1.8-1.6-2.5-2.7c-.6-1.1-1.1-2.2-1.2-3.5.1-.1 0-.3 0-.6v-1.2c.1-.5.1-.9.2-1.4.3-1.2.8-2.3 1.5-3.3s1.7-1.8 2.7-2.4c1-.6 2.1-1 3.3-1.1.3 0 .5-.1.8-.1zm-7 9.2c.1 4.1 3.5 7.4 7.6 7.4 4.2 0 7.6-3.5 7.5-7.8-.1-4-3.5-7.4-7.8-7.3-4 .1-7.4 3.4-7.3 7.7z"/><path d="M16.4 16c.2-.2.5-.3.7-.5.9-.6 1.8-1.2 2.6-1.8.1-.1.2-.1.2-.2.2-.2.5-.1.7.1.2.2.1.5-.1.7-.3.2-.7.5-1 .7-.7.5-1.5 1-2.2 1.6-.4.3-.7.5-1.1.8-.3.2-.7 0-.7-.3v-6.5c0-.3.1-.5.4-.5.2-.1.5.1.5.4V16c0-.1 0 0 0 0z"/></svg>', maven: '<svg viewBox="0 0 32 32"><path d="M16.2 5.6c-2 1.6-2.7 2-3.7 3.4s-1 5.4 1 6.9c-.5 0-2.5-1.2-2.5-1.2s2.7 3.8 3.8 4.9c1.6 2.3 2.6 4.8 3 7.4.3-2.2-.1-4.3-1.2-6.3v-.1c-.1-.5 0-.9.5-1.3.5-.3 2.6-2.3 2.6-2.3s-2.2 1.3-2.8 1.4c.9-.9 1.5-1.7 2.4-2.3 1.5-1.2 1.8-2.7 1.6-4.2 0-.4-.1-.7-.2-1.1-.5-2.2-1.7-4.1-3.6-5.9-.3.4-.6.5-.9.7z"/></svg>', nunjucks: '<svg viewBox="0 0 32 32"><path d="M20.7 12.6l-1.2.4c-.3-1-1.4-4.1-3.4-4.1s-3.2 3.2-3.5 4.1l-1.4-.4L8.3 22l3.6 1.1 2.9-9.4-1.3-.4c.3-1.1 1.4-3.4 2.5-3.4s2.1 2.3 2.4 3.4l-1.5.5 2.9 9.4 3.6-1.1-2.7-9.5z"/></svg>', npm: '<svg viewBox="0 0 32 32"><path d="M4 11.3v8h6.8v1.4h5.3v-1.3H28v-8.1H4zm6.6 6.7H9.3v-3.9H8V18H5.3v-5.3h5.3V18zm6.6 0h-2.7v1.4h-2.7v-6.6h5.3c.1 1.6.1 3.4.1 5.2zm9.4 0h-1.3v-3.9H24V18h-1.4v-3.9h-1.3V18h-2.7v-5.3h8V18zm-10.7-3.9h-1.3v2.6h1.3v-2.6z"/></svg>', ocaml: '<svg viewBox="0 0 32 32"><path d="M26 23.9V10.4c0-.4 0-.8-.1-1.2-.1-.6-.5-1.1-1-1.5-.3-.2-.6-.4-1-.4-.1 0-.1 0-.1-.1H8.1c0 .2-.3.2-.4.2-.8.3-1.3.9-1.6 1.7-.1.2-.1.4-.1.6v4.6c0 .3 0 .3.3.2.2-.1.3-.1.5-.2.4-.1.5-.5.7-.7.2-.3.3-.5.6-.7.2-.2.4-.2.7 0 .2.1.4.3.7.4.3.1.7.2 1 .1.3 0 .4-.3.5-.5.1-.2.2-.4.3-.5.2-.1.3-.1.6-.1.6.1 1 .6 1.4 1.1.1.2.2.3.4.4.2.1.4.3.6.5.5.6 1.2 1 1.7 1.5.3.3.7.6 1.2.8.6.2 1.1.3 1.6-.4.4-.5.7-1.1.8-1.7.1-.3.3-.5.5-.8h.1c.5-.1 1 0 1.4.1.2 0 .3 0 .5.1.4.1.8.1 1.2.3.4.2.5.6.4 1-.1.4-.2.2-.4.2H23c-.4.1-.8.3-1.2.5-.2.1-.4.3-.4.5-.1.4-.3.7-.6.9-.1.1-.2.1-.2.3-.2.1-.2.3-.4.4-.7.7-1.6 1-2.6 1.1H16c-.2 0-.2.1-.2.2.1.4 0 .8.1 1.2.1.2.1.4.1.6 0 .4.2.8.5 1.1.1.1.1.2.1.3 0 .3 0 .7.1 1 .1.4.2.9.4 1.3.1.1.2.2.3.1.2-.1.4-.1.6-.2.5-.2 1.1-.2 1.7-.2 1.2 0 2.3-.2 3.5.1.4.1.7.1 1.1.2.6.2 1.1.2 1.7.2.2 0 .4-.1.4-.4-.5-.4-.4-.5-.4-.7z"/><path d="M10.7 21.1l.1-.1c.1-.5.3-1 .7-1.4h-.1c-.7 0-1.3-.1-2-.3-.5-.1-1.1-.3-1.5-.7-.3-.3-.7-.2-.9.2 0 .1-.1.3-.1.4-.2.4-.4.7-.7 1-.1.2-.2.4-.2.7v1.9c0 .2.1.3.3.3.5.1.9.3 1.3.4.6.2 1.2.5 1.8.5.4 0 .4 0 .5-.4 0-.1.1-.1.1-.2h-.1.1v-.2.1c0-.1.1-.1.1-.2V23c.1-.2.1-.4.1-.5 0-.2 0-.4.1-.5v-.1c.2-.1.3-.4.4-.6v-.2zm5 1.9c-.2-.2-.3-.4-.4-.7 0-.1 0-.3-.1-.3 0-.3-.1-.5-.2-.8-.2-.7-.6-1.3-1.2-1.8-.5-.3-.7-.3-1.1.1-.1.1-.1.2-.2.3-.3.5-.6 1-.9 1.6-.1.2-.2.3-.2.6-.1.1-.1.3-.2.5-.3.3-.5.8-.7 1.2 0 .1-.1.1 0 .2h.2c.4-.1.8-.2 1.2-.4.6-.3 1.3-.3 1.9-.1.6.2 1 .5 1.5.9.3.2.6.3.9.4h.2v-.1c-.3-.6-.4-1.1-.7-1.6z"/></svg>', odata: '<svg viewBox="0 0 32 32"><path d="M22.5 7.1h-13C8.1 7.1 7 8.2 7 9.6v12.8c0 1.4 1.1 2.5 2.5 2.5h12.9c1.4 0 2.5-1.1 2.5-2.5V9.6c.1-1.4-1-2.5-2.4-2.5zM11.9 22.9c-1.4 0-2.6-1.2-2.6-2.6s1.2-2.6 2.6-2.6 2.6 1.2 2.6 2.6-1.1 2.6-2.6 2.6zm3.9-6.5H9.4v-1.7h6.3v1.7zm0-2.5H9.4v-1.7h6.3v1.7zm0-2.5H9.4V9.8h6.3v1.6zm6.8 7.3h-6.3V17h6.3v1.7zm0-2.4h-6.3v-1.7h6.3v1.7zm0-2.5h-6.3v-1.7h6.3v1.7zm0-2.4h-6.3V9.7h6.3v1.7z"/></svg>', perl: '<svg viewBox="0 0 32 32"><path d="M13.4 26h-1.5c.1-.3.1-.7.2-.8 1-.4.7-1.2.7-2V17c-1-.2-2-.1-2.7-.5-2.2-1.4-2.8-3.7-1.8-6.1.3-.7.2-1.2-.7-1.3-.2 0-.5-.1-.8-.2v-.2c.6-.3 1.1-.7 1.7-1 .2-.1.6 0 .8-.2 1.6-.8 1.9-.7 2.8.9.5 1 .4 1.9-.1 2.9-.3.5-.7 1.2.1 1.5 2-2.8 3.7-5.7 7.2-6.8h.7c.5.7 1.2 1.2 1.6 2 1.1 1.8 1.9 3.7 3 5.4.8 1.2.7 3.6-.3 4.4v-3.5h-.4c-.9 1.3-.4 2.8-.4 4.3 0 2.5-.1 5-.1 7.4h-.7c0-.3-.1-.5 0-.8.4-3.1 0-6.2-1.1-9.2-.9.8-1.3 1.8-1.4 3-.1.9-.4 1.8-.7 2.7-.3.8-1.1 1.5-.1 2.3.1.1-.1.6-.1 1.1-.4-.5-.6-.8-.8-1v.3c-.7.2-1.5.3-2.2.5 0-.1-.1-.3-.1-.4.2-.1.4-.2.6-.4 1-.6 1.1-1.2.3-1.9-1.3-1-1.7-2.2-1.1-3.7.2-.4.1-.9.2-1.7-.7.4-1.3.6-1.4.9-.4 1.5-.6 3.1-.8 4.6-.3 1.4-.4 2.5-.6 3.7zm4.6-3.8c1.4-1.8 1.6-3.8.6-5.2-.6 1.2-1.2 2.4-1.8 3.7l1.2 1.5z"/></svg>', php: '<svg viewBox="0 0 32 32"><path d="M12.7 19.7c-.1-.6-.4-1.1-1-1.3-.2-.1-.5-.3-.7-.4-.3-.1-.6-.2-.8-.3-.2-.1-.4 0-.6.2-.1.2 0 .4.1.5.1.2.2.3.4.5.2.3.4.5.7.8.2.3.4.5.3.9-.1.7-.4 1.4-.9 1.9-.1.1-.2.1-.2.1-.3 0-.7-.2-.9-.4-.3-.3-.2-.6.1-.8.1 0 .2-.1.2-.2.2-.2.3-.4.2-.7-.1-.1-.1-.2-.2-.3-.4-.4-.9-.8-1.4-1.2-1.3-1-1.9-2.2-2-3.6-.1-1.6.3-3.1 1.1-4.5.3-.5.7-1 1.3-1.3.4-.2.8-.3 1.2-.4 1.1-.3 2.3-.5 3.5-.3 1 .2 1.8.7 2.1 1.7.2.7.3 1.3.2 2-.1 1.4-1.2 2.6-2.5 3-.6.2-.9.1-1.2-.4-.2-.3-.5-.7-.7-1.1V14c0-.1-.1-.1-.1-.2.1.6.2 1.2.5 1.7.2.3.4.5.8.5 1.3.1 2.3-.3 3.1-1.3.8-1.1 1-2.4.8-3.8 0-.3-.1-.5-.2-.8 0-.2 0-.3.2-.4.1 0 .2 0 .2-.1 1-.2 2.1-.3 3.1-.2 1.2.1 2.3.4 3.3 1.1 1.6 1 2.6 2.5 3.1 4.3.1.3.1.5.1.8 0 .2-.1.2-.3.1-.2-.1-.3-.3-.4-.4-.1-.1-.2-.3-.3-.4-.1-.1-.2-.1-.2 0s-.1.2-.1.3c-.3 1-.7 1.9-1.4 2.6-.1.1-.2.3-.2.4 0 .4-.1.8 0 1.2.1.8.2 1.7.3 2.5.1.5-.1.7-.5.9-.3.1-.6.2-1 .2h-1.6c0-.6 0-1.2-.5-1.5.1-.4.2-.8.3-1.3.1-.4 0-.7-.2-1-.2-.3-.5-.3-.8-.2-.8.5-1.6.5-2.5.2-.4-.1-.7-.1-.9.3-.2.4-.3.8-.3 1.2 0 .5.1 1.1.2 1.6 0 .3 0 .4-.3.5-.7.2-1.4.2-2 .1h-.1c0-.6 0-1.2-.7-1.5.4-.4.4-1.1.3-1.7zm-4.1-2.3c.1-.1.2-.2.2-.4.1-.3-.2-.8-.5-.9-.2-.1-.3 0-.4.1-.3.3-.5.6-.8.9 0 .1-.1.1-.1.2-.1.2 0 .4.2.4.1 0 .3 0 .4.1.4 0 .7-.1 1-.4zm0-3.3c0-.2-.2-.4-.4-.4s-.5.2-.4.5c0 .2.2.4.5.4.1-.1.3-.3.3-.5z"/></svg>', pddl: '<svg viewBox="0 0 32 32"><g><path d="M7.39 27.464H4.968q-.56-1.15-1.016-2.368-.455-1.218-.785-2.618-.31-1.309-.488-2.902-.172-1.593-.172-3.312 0-1.878.178-3.403.185-1.525.475-2.789.317-1.377.772-2.595.462-1.23 1.036-2.413H7.39v.33q-.535.831-1.023 1.89-.482 1.047-.897 2.458-.396 1.355-.647 3.005-.244 1.65-.244 3.517 0 1.946.237 3.528.244 1.582.654 2.994.395 1.343.89 2.435.502 1.104 1.03 1.913zm21.78-11.2q0 1.719-.179 3.312-.171 1.582-.482 2.902-.33 1.4-.785 2.618t-1.016 2.368h-2.421v-.33q.528-.809 1.03-1.901.5-1.093.89-2.447.409-1.412.646-2.994.245-1.582.245-3.528 0-1.867-.251-3.517-.244-1.65-.64-3.005-.416-1.411-.904-2.458-.482-1.059-1.016-1.89v-.33h2.421q.574 1.184 1.03 2.413.461 1.218.778 2.595.29 1.264.469 2.789.184 1.525.184 3.403z"/><path d="M9.29 14.05q-.894 0-1.49-.622-.595-.636-.595-1.562 0-.953.607-1.561.618-.61 1.534-.61.928 0 1.512.623.596.609.596 1.548 0 .966-.607 1.575-.596.609-1.558.609zm0 9.686q-.894 0-1.49-.635-.595-.635-.595-1.561 0-.953.607-1.562.618-.609 1.534-.609.928 0 1.512.622.596.609.596 1.549 0 .966-.607 1.588-.596.608-1.558.608zm14.51-.331h-3.424V21.46h-.046q-1.18 2.276-3.493 2.276-1.707 0-2.692-1.111-.973-1.125-.973-2.991 0-3.943 4.043-4.552l3.184-.49q0-2.223-2.085-2.223-2.096 0-3.985 1.442v-3.15q.756-.449 2.061-.793 1.317-.344 2.394-.344 5.017 0 5.017 5.783zM20.4 17.9v-.913l-2.13.318q-1.764.265-1.764 1.84 0 .714.424 1.177.435.45 1.168.45 1.02 0 1.66-.807.642-.82.642-2.065z"/></g></svg>', plan: '<svg viewBox="0 0 32 32"><path d="M4.178 4.956h17.37v6.45H4.178zm7.145 8.538h17.37v6.45h-17.37zm10.334 8.539h7.036v6.45h-7.036z"/></svg>', happenings: '<svg viewBox="0 0 32 32"><g><g transform="translate(.147 -44.7)"><path d="M11.213 48.85h17.37v6.45h-17.37z"/><ellipse cx="5.717" cy="52.075" rx="2.638" ry="2.785"/></g><g transform="translate(.22 -35.905)"><path d="M11.213 48.85h17.37v6.45h-17.37z"/><ellipse cx="5.717" cy="52.075" rx="2.638" ry="2.785"/></g><g transform="translate(.22 -27.11)"><path d="M11.213 48.85h17.37v6.45h-17.37z"/><ellipse cx="5.717" cy="52.075" rx="2.638" ry="2.785"/></g></g></svg>', powershell: '<svg viewBox="0 0 32 32"><path d="M7.205 19.83l7.286-3.933-7.27-4.419.008-4.668 12.29 7.931-.005 2.685-12.317 7.041.008-4.636zm18.594 5.205H15.137v-2.662h10.662v2.662z"/></svg>', pug: '<svg viewBox="0 0 1200 1000"><path d="M715.8 310.8h-.1c0 .1-.1.1-.1.2h.2v-.2zm-75 196.8c-5.8-2.7-10.9-5.6-14.9-11.6-5.3-8-18.2-11.9-30.5-11.1-12.3-.7-25.2 3.2-30.5 11.1-4 6-9.1 8.9-14.9 11.6-41.5 19.2-67.1 61.6-65.3 107.4-.7.6 6.3 61.6 17.2 69.9 4.3 2.2 55.2 14.9 93.5 14.9s91.6-12.8 95.9-14.9c10.9-8.3 15.6-69.4 14.9-69.9 1.7-45.8-23.8-88.2-65.4-107.4zm257-122.2c-18.7-17.9-36-37.8-57.6-51.8-26.7-17.3-58.2-20.5-89.4-22.4-3.3 5.2.7 8.4 3.5 11.6 4.7 5.4 10 10.2 14.9 15.4 27.9 28.6 48.4 61.3 55.4 101.3.8 4.5 12 91.8 14.7 94.1 5 15 9.1 15.9 19.9 4.6 2.9-3 19.2-45 31.1-60.2 11.9-15.2 45.2-37 47.1-42.1 1.6-5-25.6-37.1-39.6-50.5zm-472-62.6c2.8-3.2 6.8-6.4 3.5-11.6-31.2 2-62.7 5.1-89.4 22.4-21.7 14-38.9 33.9-57.6 51.8-14 13.4-41.3 45.4-39.4 50.5 1.9 5.1 35.2 26.9 47.1 42.1 11.9 15.2 28.2 57.2 31.1 60.2 10.7 11.3 14.9 10.3 19.9-4.6 2.7-2.3 13.9-89.6 14.7-94.1 7-40 27.5-72.7 55.4-101.3 4.7-5.2 10-10 14.7-15.4zm378.4 211.1v-.3c0 .1-.1.1-.1.2s.1.1.1.1z"/><path d="M734.1 338.3c-4.9-5.2-10.2-10.3-14.9-15.7-2.8-3.2-6.7-6.2-3.6-11.6-27.7-2.8-55.2-7.7-83.2-9.6-51.3-3.5-101.9-.2-152.2 9.7-5 1-9.7 2.7-14.6.2 0 .7-.1 1.3-.2 1.9 1.2 4-2.1 6.7-4.5 9.5-4.7 5.4-10 10.2-14.9 15.4-27.9 28.6-48.4 61.3-55.4 101.3-.3 1.6-2 14.6-4.2 30.4 0 1.5-.1 3-.2 4.3l-.3-.6c-2.5 18.3-5 52.1-3.7 60.3 1.8 11.6 3.1 23.4 10.9 33.1 6.9 13.4 20.4 23 23.2 38.8 5.3 30.6 23.8 48.1 50.2 57.7-10.3-18.8-14.8-69-14-69.5-2.3-49.5 30.2-95.3 83.1-116 7.4-2.9 13.9-6.1 19-12.6 6.8-8.6 23.1-12.8 38.8-12 15.7-.8 32 3.4 38.8 12 5.1 6.5 11.6 9.7 19 12.6 52.9 20.7 85.4 66.5 83.1 116 .7.5-3.5 48.4-13.3 68.1 23.2-9.9 39.9-26 44.9-51.8 1.9-9.8 5.5-18.5 11.7-26.3 3.4-4.3 7.7-8.2 8-14.2 4.9-2.5 6.5-7.3 8.2-11.9 3.1-8.2 4.5-17.3 10.4-24.2-2.8-4.7-13.8-89.7-14.6-94.1-7.1-39.8-27.6-72.6-55.5-101.2zm-297.7 46.1c-.5-.5-1-1-1.5-1.3 1.1.1 1.5.6 1.5 1.3zm27.9 105c-24.1 0-43.6-19.5-43.6-43.6s19.5-43.6 43.6-43.6 43.6 19.5 43.6 43.6-19.5 43.6-43.6 43.6zm223.2-17.2s.1 0 .2-.1c0 .1 0 .1.1.2-.1 0-.2-.1-.3-.1zm38.3 17.2c-24.1 0-43.6-19.5-43.6-43.6s19.5-43.6 43.6-43.6 43.6 19.5 43.6 43.6-19.5 43.6-43.6 43.6zm46.3-26.6c0-.6-.1-1-.2-1.4.1-1 .1-1.9.2-2.9.2 1.5.4 2.9 0 4.3zm.3-10.2c-.2.4-.3.7-.4 1.1v-.9c.3-.3.5-.4.4-.2z"/></svg>', puppet: '<svg viewBox="0 0 32 32"><path d="M7.239 2.865h7.972c.004 2.03-.007 4.06.005 6.09 1.088 1.071 2.16 2.16 3.244 3.235l.034.015c2.02.006 4.04 0 6.06.003l-.001 7.971h-6.014c-.103-.008-.154.103-.224.16-1.034 1.03-2.06 2.068-3.099 3.094-.012 2.029-.001 4.06-.005 6.089H7.239V21.55c2.033-.002 4.066.003 6.099-.002 1.083-1.09 2.172-2.174 3.258-3.26v-4.186c-1.086-1.09-2.176-2.176-3.262-3.265H7.239V2.866z"/><path d="M9.91 5.536h2.643v2.642H9.91V5.536zm0 18.686h2.643v2.642H9.91v-2.642z"/></svg>', python: '<svg viewBox="0 0 32 32"><path d="M15.6 15.5h-2c-1.4 0-2.3.9-2.3 2.3v1.8c0 .2-.1.3-.3.3h-.9c-.9 0-1.6-.4-2-1.2-.3-.6-.5-1.2-.5-1.8-.1-1.1-.1-2.2.3-3.3.3-.9.9-1.6 1.9-1.8h5.8c.1 0 .3 0 .3-.1v-.5s-.2-.1-.3-.1h-3.4c-.3 0-.4-.1-.4-.4V9.4c0-.7.3-1.2.9-1.4.5-.2 1-.4 1.5-.5 1.2-.2 2.4-.2 3.6.1.5.1 1 .3 1.4.6.4.4.7.8.6 1.4v3.6c0 1.4-.8 2.2-2.2 2.2-.7.1-1.4.1-2 .1zm-2.8-6c0 .4.3.8.8.8.4 0 .8-.4.8-.8s-.4-.7-.8-.8c-.5 0-.8.4-.8.8zm3.6 7h2c1.4 0 2.3-.9 2.3-2.3v-1.8c0-.2.1-.3.3-.3h.9c.9 0 1.6.4 2 1.2.3.6.5 1.2.5 1.8.1 1.1.1 2.2-.3 3.3-.3.9-.9 1.6-1.9 1.8h-5.8c-.1 0-.3 0-.3.1v.5s.2.1.3.1h3.4c.3 0 .4.1.4.4v1.3c0 .7-.3 1.2-.9 1.4-.5.2-1 .4-1.5.5-1.2.2-2.4.2-3.6-.1-.5-.1-1-.3-1.4-.6-.4-.4-.7-.8-.6-1.4v-3.6c0-1.4.8-2.2 2.2-2.2.7-.1 1.4-.1 2-.1zm2.8 6c0-.4-.3-.8-.8-.8-.4 0-.8.4-.8.8s.4.7.8.8c.5 0 .8-.4.8-.8z"/></svg>', react: '<svg viewBox="0 0 32 32"><path d="M22 19.4c.1 1.1.2 2.1.2 3.2 0 1.3-.7 2.2-1.7 2.3-.5.1-1.1 0-1.6-.2-1-.5-1.9-1.2-2.9-1.8-.5.4-1 .8-1.6 1.2-.3.2-.7.4-1 .5-1.8.8-3.3-.1-3.4-2.1 0-1 .1-2.1.2-3.2-.6-.2-1.2-.4-1.8-.8-.6-.3-1.1-.7-1.6-1.2-.9-.9-.8-2 .1-2.9.8-.9 1.9-1.3 3-1.7.1 0 .3-.1.4-.1-.1-.7-.2-1.5-.3-2.2 0-.6.1-1.3.2-1.9.3-1.1 1.3-1.6 2.5-1.3 1.2.3 2.1 1 2.9 1.7.2.1.3.3.4.4.8-.6 1.6-1.2 2.5-1.7.6-.4 1.3-.6 2-.4 1 .2 1.6 1.1 1.7 2.4v1.6c0 .5-.2 1-.3 1.6.6.2 1.1.4 1.7.7.8.4 1.6.8 2.1 1.6.5.7.5 1.5 0 2.2-.5.8-1.3 1.2-2.1 1.6-.6.1-1.1.3-1.6.5zm-5.8-.1c.3 0 .8-.1 1.2-.1.3 0 .5-.1.7-.4.5-.8 1-1.6 1.4-2.5.1-.2.1-.5 0-.6-.5-.9-1-1.7-1.5-2.5-.1-.2-.3-.3-.5-.3-.9 0-1.7 0-2.6-.1-.5 0-.9.2-1.2.7-.2.3-.4.6-.6 1-1.1 2-1.1 1.2 0 3.2 1.2 1.9.6 1.5 3.1 1.6zm-5.8-.8c.3-.8.6-1.6.9-2.3v-.4c-.3-.8-.6-1.5-.9-2.3-1 .3-2 .7-2.8 1.3-.9.7-.9 1.6 0 2.3.8.8 1.8 1.1 2.8 1.4zm11.3-5.1c-.4.9-.7 1.7-1 2.5 0 .1-.1.2 0 .2.3.8.6 1.6 1 2.6.9-.5 1.9-.9 2.7-1.4 1.1-.7 1.1-1.7 0-2.4-.8-.7-1.8-1-2.7-1.5zm-10.7-1c.9-.1 1.7-.2 2.5-.4.1 0 .2-.1.2-.1.5-.7 1-1.3 1.6-2-.8-.7-1.6-1.4-2.6-1.8-1.1-.4-1.8 0-2 1.2-.1 1 .1 2 .3 3.1zm10 0c0-.1.1-.3.1-.4.2-1 .4-2.1 0-3.1-.2-.7-.7-1-1.3-.9-1.3.2-2.2 1.1-3.1 1.9.5.7 1 1.3 1.5 1.9l.3.3c.8.1 1.6.2 2.5.3zm-10 7.2c-.2 1.1-.5 2.1-.2 3.2.2 1 .9 1.4 1.9 1.1 1.1-.3 1.9-1.1 2.7-1.8-.5-.7-1-1.3-1.6-2-.1-.1-.2-.2-.3-.2-.8 0-1.6-.1-2.5-.3zm5.6 2.5c.6.8 1.8 1.6 2.6 1.9 1 .3 1.7 0 1.9-1.1.2-1.1 0-2.1-.2-3.2-.9.1-1.8.1-2.6.4-.6.3-.9 1-1.3 1.5-.1.2-.2.3-.4.5zm.6-10.2c-.4-.5-.8-.9-1.2-1.4-.4.5-.7.9-1.2 1.4h2.4zm0 8.2h-2.3c.4.5.8.9 1.2 1.4.3-.5.7-.9 1.1-1.4zm-4.1-1c-.4-.7-.8-1.3-1.2-2.1-.2.6-.4 1.1-.6 1.7.5.2 1.1.3 1.8.4zm7-2.1l-1.2 2.1c.7-.1 1.2-.2 1.8-.3-.1-.6-.3-1.1-.6-1.8zm-8.2-2l1.2-2.1c-.7.1-1.2.2-1.8.3.2.7.3 1.2.6 1.8zm7-2.1c.2.4.4.7.6 1 .2.3.4.6.6 1 .2-.6.4-1.2.6-1.7-.6 0-1.1-.1-1.8-.3z"/></svg>', reasonml: '<svg viewBox="0 0 32 32"><path fill-rule="evenodd" d="M6 6h20v20H6zm7.002 12.177v2.349h1.453c.808 0 1.278-.415 1.278-1.191 0-.754-.47-1.158-1.278-1.158zm5.911-1.595h6.042v1.595h-4.043v1.431h3.649v1.584l-3.649.011v1.443h4.152v1.595h-6.151zm-1.049 7.659h-2.262l-1.114-2.12h-1.486v2.12h-2v-7.659h3.442c2.032 0 3.19.983 3.19 2.687 0 1.159-.48 2.011-1.365 2.47z"/></svg>', R: '<svg preserveAspectRatio="xMidYMid" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="7.1" x2="25" y1="10.197" y2="22.185" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#CBCED0"/><stop offset="1" stop-color="#84838B"/></linearGradient><linearGradient id="b" x1="14.475" x2="24.355" y1="13.919" y2="24" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#276DC3"/><stop offset="1" stop-color="#165CAA"/></linearGradient></defs><g fill-rule="evenodd"><path d="M16.05 22.185c-4.943 0-8.95-2.684-8.95-5.994s4.007-5.994 8.95-5.994S25 12.88 25 16.19s-4.007 5.994-8.95 5.994zm1.37-9.645c-3.757 0-6.803 1.835-6.803 4.098s3.046 4.098 6.803 4.098 6.53-1.254 6.53-4.098-2.773-4.098-6.53-4.098z" transform="translate(-.05 -1.098)"/><path d="M20.73 19.48s.542.163.856.323c.109.055.298.166.434.3s.199.285.199.285l2.135 3.599-3.45.002-1.614-3.03s-.33-.568-.534-.732c-.17-.137-.242-.186-.4-.186h-.82v3.957l-3.053.001v-10.08h6.13s2.793.05 2.793 2.707-2.67 2.855-2.67 2.855zm-1.328-3.375l-1.848-.001-.001 1.714 1.849-.001s.856-.003.856-.872c0-.887-.856-.84-.856-.84z" transform="translate(-.05 -1.098)"/></g></svg>', ruby: '<svg viewBox="0 0 32 32"><path d="M17.8 7.5h4.1c.1 0 .2.1.3.1 1.2.3 2 1 2.2 2.2 0 .2.1.4.1.6v.8c0 .2-.1.4-.1.6-.1 1.4-.2 2.9-.3 4.3-.2 2.4-.4 4.7-.5 7.1 0 .4-.1.5-.5.5-1.1.1-2.1.1-3.2.2-2.2.1-4.4.3-6.6.4-.6 0-1.2.1-1.8.2h-1c-.1 0-.2-.1-.3-.1-1.2-.2-2.1-.9-2.4-2.1-.1-.3-.1-.6-.2-.9v-.5c0-.1.1-.2.1-.4 0-.8.1-1.7.1-2.5 0-.5 0-.9.1-1.3.7-1.8 1.5-3.5 2.9-4.9 1.7-1.8 3.6-3.2 6-3.8.3-.2.6-.3 1-.5z"/></svg>', html_erb: '<svg viewBox="0 0 32 32"><path d="M7.5 14.9L13.9 9v2.8L9.1 16l4.8 4.2V23l-6.4-5.9v-2.2zm17 2.3l-6.4 5.9v-2.8l4.9-4.2V16l-4.9-4.2V8.9l6.4 5.9v2.4z"/></svg>', rust: '<svg viewBox="0 0 32 32"><path d="M21.7 8.4V9l.1.1h.1c.3-.1.6-.1.9-.2.2-.1.4.1.3.3-.1.3-.1.6-.2.9v.1l.1.1c0 .1.1.1.2.1h.9c.2 0 .3.1.3.3v.2c-.1.3-.3.6-.4.8v.1s.1.1.1.2h.1c.3.1.6.1.9.2.2 0 .3.3.2.5-.2.3-.4.5-.5.7v.2c0 .1.1.1.2.2.3.1.5.2.8.3.2.1.3.3.1.5-.2.2-.4.4-.7.6v.3s.1.1.2.1c.2.1.4.3.7.4.2.1.2.4 0 .5-.3.2-.5.3-.8.5v.1c0 .2 0 .2.1.3.2.2.4.4.6.5.2.2.1.4-.1.5-.3.1-.6.2-.8.3 0 0-.1 0-.1.1-.1.1 0 .2 0 .3.2.2.3.4.5.7.1.1.1.3-.1.4-.1 0-.1 0-.2.1-.3 0-.5.1-.8.1h-.1c0 .1-.1.1-.1.2s0 .1.1.2c.1.2.2.5.3.7.1.1 0 .3-.1.4h-1.2c-.1.1-.1.2-.1.3.1.3.1.5.2.8.1.2-.1.4-.4.4-.3-.1-.6-.1-.9-.2H22l-.1.1s-.1.1 0 .1v.9c0 .2-.1.3-.3.3h-.2c-.3-.1-.5-.2-.8-.4h-.1c-.1 0-.2.1-.2.2 0 .3-.1.5-.1.8 0 .2-.3.3-.5.2-.2-.2-.5-.4-.7-.5h-.1c-.1 0-.2.1-.2.2-.1.3-.2.5-.3.8-.1.2-.2.2-.3.2-.1 0-.1-.1-.1-.1-.2-.2-.4-.4-.6-.7h-.2c-.1 0-.2.1-.2.2-.1.2-.3.5-.4.7-.1.2-.4.2-.5 0-.2-.3-.3-.5-.5-.8h-.2c-.1 0-.1 0-.2.1l-.6.6c-.1.1-.2.1-.4.1-.1 0-.1-.1-.1-.2l-.3-.9s0-.1-.1-.1h-.3c-.2.2-.4.3-.7.5-.4-.2-.7-.3-.7-.5-.1-.3-.1-.6-.1-.9 0 0 0-.1-.1-.1s-.1-.1-.2-.1-.1 0-.2.1c-.2.1-.5.2-.7.3-.2.1-.4 0-.4-.2V23l-.1-.1h-.1c-.3.1-.6.1-.9.2-.2.1-.4-.1-.3-.3.1-.3.1-.6.2-.9v-.1l-.1-.1H8c-.2 0-.3-.1-.3-.3v-.2c.1-.3.3-.6.4-.8v-.1s0-.1-.1-.1c0-.1-.1-.1-.1-.1-.3 0-.6-.1-.9-.1-.2 0-.3-.3-.2-.5.2-.2.4-.5.5-.7v-.1c0-.1 0-.1-.1-.2 0 0-.1-.1-.2-.1-.2-.1-.5-.2-.7-.3-.2-.1-.3-.3-.1-.5.3-.1.5-.4.8-.6v-.2c0-.1 0-.2-.1-.2-.2-.1-.5-.3-.7-.4-.2-.1-.2-.4 0-.5.3-.2.5-.3.8-.5V15l-.1-.1-.6-.6c-.1-.1-.1-.3 0-.4 0 0 .1 0 .1-.1l.9-.3v-.1c.1-.1 0-.2 0-.3-.2-.2-.3-.4-.5-.6-.1-.2 0-.5.2-.5.3-.1.6-.1.9-.2H8c0-.1.1-.1.1-.2s0-.1-.1-.2c-.1-.2-.2-.5-.3-.7-.1-.2 0-.4.2-.4H9s0-.1.1-.1v-.1c-.1-.3-.2-.6-.2-.9-.1-.2.1-.4.3-.3.3 0 .6.1.9.2h.1l.1-.1s.1-.1 0-.1V8c0-.2.1-.3.3-.3h.2c.3.1.6.3.8.4h.1s.1 0 .1-.1c.1 0 .1-.1.1-.1 0-.3.1-.6.1-.9 0-.2.3-.3.5-.2.2.2.5.4.7.5h.1c.1 0 .1 0 .2-.1 0 0 0-.1.1-.2.1-.2.2-.5.3-.7.1-.2.2-.2.4-.2l.1.1c.1.3.4.5.6.8h.1c.1 0 .2-.1.2-.1.1-.2.3-.5.4-.7.2-.2.4-.2.5-.1l.1.1c.2.3.3.5.5.8h.3c.1 0 .1-.1.1-.1.2-.2.4-.4.5-.6.1-.1.3-.1.4 0v.1c.1.3.2.6.3.8l.1.1h.2c.3-.1.6-.3.8-.5.2-.1.5 0 .5.2 0 .3.1.6.1.9 0 0 0 .1.1.1h.1c.1.1.2.1.2 0 .2-.1.5-.2.8-.3.2-.1.4 0 .4.3v.4zm-11.1 2.7h7.6c.3 0 .6 0 .9.1.6.2 1.1.5 1.4.9.3.3.5.7.5 1.2 0 .4-.1.8-.3 1.2-.2.3-.5.6-.8.8-.1.1-.2.2-.3.2.1.1.2.1.3.2.2.2.5.4.6.7.2.3.3.7.3 1 0 .1.1.2.2.3.2.2.5.2.8.2.2 0 .4-.1.5-.2.2-.2.2-.4.3-.6v-.5c0-.1 0-.1.1-.1h.7v-1.3c-.3-.1-.6-.3-.9-.4-.1-.1-.3-.1-.4-.2-.3-.1-.4-.4-.3-.8.2-.5.4-1 .7-1.5v-.1c-.4-.6-.8-1.2-1.4-1.7-1-.9-2.2-1.5-3.6-1.8h-.1c-.3.3-.6.6-1 .9-.2.2-.6.2-.8 0l-.9-.9h-.1c-.4.1-.7.2-1 .3-1.1.4-2 1-2.8 1.8-.1.1-.2.2-.2.3zm11.3 9.2h-3c-.2 0-.3 0-.4-.1-.4-.2-.6-.6-.7-1-.1-.4-.2-.7-.2-1.1 0-.2-.1-.4-.2-.6-.2-.5-.6-.8-1.1-.8h-1.8V18h1.8c.1 0 .1 0 .1.1v2c0 .1 0 .1-.1.1h-6c.2.3.4.5.6.7h.1c.4-.1.8-.2 1.2-.2.3-.1.6.1.7.4.1.4.2.9.3 1.3v.1c.8.3 1.6.6 2.4.6.7.1 1.4 0 2.1-.1.5-.1 1-.3 1.5-.5v-.1c.1-.4.2-.9.3-1.3.1-.3.3-.5.7-.4l1.2.3h.1c0-.2.2-.5.4-.7zm-11.9-7l.3.6c0 .1.1.2 0 .3 0 .2-.2.3-.3.4-.4.2-.8.4-1.2.5 0 0-.1 0-.1.1v.5c0 .7.1 1.4.3 2.2 0 0 0 .1.1.1h2.1v-4.7H10zm4.3 1.4c.1 0 .1 0 0 0h2.3c.2 0 .4 0 .6-.1.1-.1.2-.1.3-.3.1-.2.1-.5-.1-.7-.2-.2-.5-.3-.7-.3h-2.5c.1.5.1.9.1 1.4zm-6-1c0 .3.3.6.6.6s.6-.3.6-.6-.3-.6-.6-.6-.6.3-.6.6zM21 22.1c0-.3-.3-.6-.6-.6s-.6.3-.6.6.3.6.6.6.6-.2.6-.6zm-9.4-.6c-.3 0-.6.3-.6.6s.3.6.6.6.6-.3.6-.6-.3-.6-.6-.6zm5-13.1c0-.3-.2-.6-.6-.6-.3 0-.6.2-.6.6 0 .3.2.6.6.6.3 0 .5-.3.6-.6zm6.5 6c.3 0 .6-.3.6-.6s-.3-.6-.6-.6-.6.3-.6.6.2.6.6.6z"/></svg>', sass: '<svg viewBox="0 0 32 32"><path d="M18 17.3c-1.1.7-2.4 1.5-3.5 2.2.4.9.4 1.8.1 2.7-.5 1.6-1.7 2.5-3.2 2.7-.4.1-.8 0-1.1-.1-.4-.1-.6-.4-.7-.7-.4-.9-.3-1.7.3-2.4.4-.4.8-.9 1.3-1.2.5-.4 1.2-.7 1.8-1.1.1-.1.2-.1.4-.2-.3-.2-.4-.4-.6-.4-.8-.5-1.6-1.1-2.3-1.8-.4-.4-.8-.8-1.1-1.3-.9-.7-1-1.7-.5-2.6.4-1 1.1-1.8 1.8-2.5 1.6-1.4 3.4-2.4 5.4-3.1 1.4-.5 2.8-.7 4.2-.5.4.2 1 .3 1.4.5 1.5.6 2.1 1.8 1.6 3.4-.4 1.3-1.2 2.4-2.4 3.1-1.6 1-3.2 1.4-5.1 1.1-.6-.1-1.1-.4-1.6-.9-.1-.2-.2-.4-.3-.5 0 0 0-.1.1-.2 0 0 .1 0 .2.1.8.8 1.7.9 2.6.7 1.7-.3 3.2-.9 4.3-2.2.4-.5.8-1.1 1-1.8.2-.8-.2-1.4-.9-1.8-.8-.4-1.6-.4-2.4-.3-2 .3-3.8 1.1-5.4 2.1-.9.5-1.7 1.1-2.3 1.9-.3.4-.5.8-.7 1.2-.3.8-.2 1.6.4 2.2.4.4.8.8 1.2 1.1.6.5 1.3 1.1 1.9 1.6.1 0 .2.1.3 0 .3-.2.5-.3.8-.4.9-.5 1.8-.9 2.8-1.1 0 .4.1.4.2.5 0-.1 0-.1 0 0zm-4.3 2.5c-.9.5-1.6 1-2.3 1.7-.4.4-.6.8-.7 1.3-.1.6.3.9.9.8.8-.2 1.4-.7 1.8-1.3.5-.8.5-1.5.3-2.5z"/></svg>', spring: '<svg viewBox="0 0 32 32"><path d="M23.4 8.1c1.1 3 1.9 5.9 1.5 9.1-.3 2.3-1.3 4.2-3.1 5.8-1.8 1.4-3.9 2.2-6.1 2.1C13.2 25 11 24 9.3 22c-1.7-2-2.4-4.2-2.2-6.7.1-1.9.8-3.6 2.1-5C10.6 8.4 12.7 7.4 15 7c2.4-.3 4.6.4 6.5 1.8 1.1.9 1.1.9 1.7-.4.1 0 .1-.1.2-.3zm-.8 5.8c-.5 2.2-1.9 4-3.7 5.5-1.3 1.1-2.9 1.6-4.5 2.2-.4.1-.8.3-1.2.4 0 .1 0 .2.1.3 2.2-.1 4.5 0 6.7-.4 2.7-.4 4-1.9 4.5-4.6.3-1.8.1-3.5-.4-5.3-.3-.9-.5-1.8-.8-2.8-.2.3-.3.4-.4.4-.9 1.4-2.2 2.3-3.7 3-1.3.6-2.9.6-4.3.7-1.3.1-2.5.4-3.5 1.2-1.6 1.2-2.2 3.7-1.3 5.3.5 1 1.1 1.2 2.1 1 .5-.1 1-.3 1.5-.4 3.9-1 7-2.8 8.9-6.5zm-12.1 7.3c-.4 0-.7.4-.7.8s.4.7.8.7.7-.4.7-.8c0-.5-.2-.7-.8-.7z"/></svg>', slim: '<svg viewBox="0 0 32 32"><path d="M7 22.4V9.6c0-.1.1-.1.1-.2.2-.7.6-1.4 1.3-1.8L9.6 7h12.8c.1 0 .1.1.2.1.9.3 1.6.9 2.1 1.7.1.3.2.5.4.7v12.8c0 .1-.1.1-.1.2-.2.7-.6 1.3-1.3 1.8-.4.3-.8.5-1.3.6H9.6c-.1 0-.1-.1-.2-.1-.9-.3-1.6-.9-2.1-1.7-.1-.1-.2-.4-.3-.7zm2.8-10.5c.9 1.1 1.7 2.2 2.6 3.2.1.1.3.2.4.2h6.4c.1 0 .3-.1.4-.1.9-1.1 1.7-2.2 2.6-3.2-3-3.6-9.1-3.9-12.4-.1z"/><path d="M18.3 10.4c-.4 1.3-.6 2.8-1 4.1h-1.9c1.1-1.4 2-2.8 2.9-4.1z"/></svg>', smarty: '<svg viewBox="0 0 32 32"><path d="M16 19.7h-2.1c-.7 0-.8 0-.9-.7-.3-1.5-.8-2.9-1.5-4.2-.4-.7-.7-1.4-1-2.2-.4-1.1-.5-2.2-.3-3.4.2-1.6 1.2-2.8 2.6-3.4 2.2-1 4.5-1 6.7.1 2 .9 2.9 3 2.5 5.3-.2 1.5-.8 2.7-1.5 4-.6 1.2-1.1 2.4-1.3 3.7-.2.9-.2.9-1.1.9-.8-.1-1.5-.1-2.1-.1zm-.1 7.3h-2.4c-.4 0-.6-.1-.6-.6 0-1.3-.2-1.2 1.2-1.2h4.3c.5 0 .6.2.6.6 0 1.1 0 1.1-1.1 1.1-.6.1-1.3.1-2 .1zm.1-3.6h-2.5c-.4 0-.5-.1-.5-.5 0-1.3-.1-1.2 1.1-1.2h4.3c.4 0 .6.2.6.6 0 1.2.1 1.1-1.1 1.1H16z"/></svg>', sbt: '<svg viewBox="0 0 32 32"><path d="M26 17c0 .5-.1.9-.2 1.4H12.6c-.9 0-1.3.5-1.3 1.3 0 .7.5 1.1 1.4 1.1h12.2c-1.6 3-4.2 4.8-7.6 5.2-5.3.6-10.2-3-11.1-8.1-1-5.3 2.3-10.3 7.4-11.6 4.2-1.1 8.8.8 11 4.5-.2.1-.5.1-.8.1h-6.5c-.7 0-1.2.5-1.2 1.2s.4 1.1 1.1 1.1h8.4c.2.5.3 1 .3 1.5H15c-.9 0-1.4.4-1.4 1.2 0 .7.5 1.1 1.4 1.1h10.1c.3-.1.6-.1.9 0z"/></svg>', scala: '<svg viewBox="0 0 32 32"><path d="M21.6 7v4.2c-.1.1-.1.2-.2.2-.3.3-.7.5-1.1.6-.9.3-1.9.5-2.8.7-1.6.3-3.1.5-4.7.7-.8.1-1.6.2-2.4.4V9.6c.1-.1.2-.1.4-.1 1.2-.2 2.5-.4 3.8-.5 1.9-.3 3.8-.5 5.6-1.1.5-.2 1.1-.4 1.4-.9zm0 5.6v4.2l-.2.2c-.5.4-1.1.6-1.6.8-.8.2-1.6.4-2.4.5-1 .2-1.9.3-2.9.5-1.4.2-2.7.3-4.1.6v-4.2c.1-.1.2-.1.3-.1 1.7-.2 3.4-.5 5.1-.7 1.4-.2 2.9-.5 4.3-.9.6-.2 1.1-.4 1.5-.9zM10.5 25h-.1v-4.2c.1-.1.2-.1.3-.1 1.2-.2 2.3-.3 3.5-.5 2-.3 3.9-.5 5.8-1.1.6-.2 1.2-.4 1.6-.9v4.2c-.1.2-.3.3-.5.5-.6.3-1.2.5-1.9.7-1.2.3-2.5.5-3.7.7-1.3.2-2.6.4-3.9.5-.4 0-.7.1-1.1.2z"/></svg>', ethereum: '<svg id="Layer_1" viewBox="0 0 32 32"><style>.st1{fill:#231f20}</style><path d="M12.4 16.8l3.6 2.1h.1c1.8-1.1 3.6-2.2 5.5-3.2v-.1c-.5-.9-1-1.7-1.6-2.6-1.3-2.2-2.6-4.3-3.9-6.5-.1.2-.2.3-.3.5-.6 1-1.2 1.9-1.7 2.9-.5.9-1.1 1.8-1.6 2.7-.6 1-1.2 2-1.8 2.9v.1c.4.5 1.1.8 1.7 1.2z" class="st1"/><path d="M16.7 20.6c-.2.1-.5.3-.7.4-.8-.5-1.6-.9-2.4-1.4-.9-.5-1.8-1.1-2.7-1.6-.1-.1-.2-.1-.4-.2.3.4.5.7.8 1.1.7 1 1.4 2 2.2 3 .8 1.2 1.7 2.3 2.5 3.5 0 0 0 .1.1.1 1.2-1.7 2.5-3.5 3.7-5.2.6-.8 1.2-1.7 1.8-2.5-1.7.9-3.3 1.8-4.9 2.8z" class="st1"/></svg>', stylus: '<svg viewBox="0 0 32 32"><path d="M25.1 3.2c-.2 0-.5.1-.7.2-.9.3-1.5 1-2.1 1.7-1.2 1.3-2.2 2.8-3 4.4-1.1 1.9-1.9 3.9-2.5 6-.2.8-.4 1.7-.4 2.6 0 .5.4.8.8.7.9-.1 1.4-.8 1.9-1.4v-.3c-.3.3-.6.6-.9.8-.3.2-.5.1-.5-.2v-1c0-1.2.3-2.4.7-3.5.4-1.1.8-2.2 1.3-3.2.7-1.5 1.6-3 2.8-4.2.5-.8 1.2-1.3 2.2-1.4.5 0 .8.1.9.5 0 .1.1.1.1.1s.1-.1.2-.1c.1-.3.2-.6.2-.9 0-.4-.5-.9-1-.8zm-10 10.1c-.7 0-1.8.8-2.1 1.4v.2c.1 0 .1 0 .2-.1s.2-.3.4-.4c.2-.2.4-.4.7-.3.3.1.3.5.2.7-.1 1.2-.3 2.2-.5 3.3-.4 1.5-.9 3-1.6 4.3-.8 1.6-1.7 3-3 4.2-.6.5-1.3 1-2.1 1-.5 0-.7-.1-.8-.6 0-.1-.1-.1-.2-.2-.3.4-.4.8-.3 1.3.1.4.3.7.6.7.4 0 .8-.1 1.1-.2.7-.2 1.2-.8 1.7-1.3 1.2-1.2 2.2-2.6 3-4.1 1.3-2.2 2.3-4.5 3-7 .2-.8.4-1.5.3-2.3 0-.3-.3-.6-.6-.6z"/></svg>', swift: '<svg viewBox="0 0 32 32"><path d="M9.6 11c0-.1-.1-.1-.1-.2-.2-.3-.5-.6-.7-.9-.4-.4-.7-.7-.9-1.1.3.3.7.6 1 .8.2.1.3.3.5.4.4.3.7.6 1.1.9.4.4.9.7 1.3 1 .5.4 1 .8 1.5 1.1.8.6 1.6 1.1 2.4 1.7v-.1c-.6-.7-1.2-1.4-1.9-2.1-.4-.5-.8-1-1.2-1.4-.3-.4-.7-.9-1-1.3 0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.2-.3-.4-.4-.7.5.4.9.9 1.4 1.3.5.5 1.1 1 1.6 1.5.4.3.8.7 1.2 1l1.2.9c.3.2.5.4.8.6 1.1.8 2.2 1.6 3.4 2.4.1.1.2.1.2-.1.4-1 .5-2 .5-3.1 0-.9-.2-1.9-.5-2.7 0-.2-.1-.5-.2-.8-.2-.4-.4-.9-.7-1.3-.1-.4-.4-.8-.7-1.1 0-.1-.1-.1-.1-.2.4.2.7.4 1 .6 1.5 1.1 2.7 2.4 3.7 3.9.3.6.7 1.3.9 1.9.4 1 .7 2.1.7 3.2v.1c0 .4 0 .9-.1 1.3s-.1.8-.2 1.2c0 .1 0 .2.1.3.8 1 1.3 2.1 1.5 3.3.1.3.1.6.1 1 0 .3 0 .5-.1.8 0 .1 0 .1-.1.1s-.1-.1-.1-.1c-.4-.8-1-1.4-1.9-1.5-.8-.2-1.5 0-2.2.3-.5.2-.9.5-1.3.6-1.4.6-2.9.8-4.4.6-1-.1-2-.3-3-.7h-.1c-.6-.3-1.2-.5-1.8-.8-2-1.1-3.6-2.6-4.9-4.5l-.1-.1c.1 0 .1 0 .2.1.3.2.6.4 1 .6.4.2.8.5 1.2.6.5.3 1.1.5 1.7.6.1.1.1 0 .2.1 1 .3 2.1.4 3.2.4 1.3-.1 2.5-.4 3.6-1 .2-.1.2-.1 0-.2-.7-.5-1.3-1.1-2-1.7-.5-.4-.9-.9-1.4-1.3-.4-.3-.7-.7-1-1.1-.2-.3-.5-.5-.7-.8-.4-.4-.8-.9-1.2-1.3-.3-.4-.6-.7-.9-1.1 0-.2-.2-.4-.3-.5z"/></svg>', db: '<svg viewBox="0 0 32 32"><path d="M16.4 14c-2.4 0-4.7-.1-7-.6-.6-.1-1.1-.4-1.7-.6-.3-.1-.4-.3-.4-.6V8.7c0-.2.1-.4.3-.4.7-.3 1.3-.6 2-.7C12.1 7 14.5 7 17 7c2 0 4.1.2 6 .7.4.1.9.3 1.3.5.3.1.4.3.4.6v3.5c0 .2-.2.4-.3.5-.4.2-.8.4-1.2.5-1.4.2-2.8.5-4.2.6-.9.1-1.8 0-2.6.1zm8.3.2v3.6c0 .2-.3.5-.5.5-.6.2-1.3.5-1.9.6-2.8.5-5.7.6-8.6.5-1.6-.1-3.3-.2-4.9-.7-.4-.1-.8-.3-1.2-.5-.2-.1-.3-.3-.3-.5v-3.5c2.9 1 5.8 1.1 8.7 1.1 2.9.1 5.8-.1 8.7-1.1zm0 5.6v3.5c0 .2-.3.5-.5.6-.8.3-1.6.6-2.4.7-4 .6-8 .6-12.1-.1-.7-.1-1.4-.4-2-.6-.3-.1-.4-.3-.4-.7v-3.4c2.8 1 5.7 1.1 8.7 1.1 2.9 0 5.8-.1 8.7-1.1z"/></svg>', terraform: '<svg viewBox="0 0 32 32"><path fill-rule="evenodd" d="M12.5 9l6.63 3.338V19l-6.63-3.37M27.13 9l-6.63 3.338V19l6.63-3.37M4.5 5l6.63 3.338V15L4.5 11.63m8 5.37l6.63 3.338V27l-6.63-3.37"/></svg>', tex: '<svg viewBox="0 0 32 32"><path d="M8.7 18.8H6.5 11 8.7zm15.5-1.3l-1.4-2.2-1.5 2.2.4.1v1.1h2.2v-1.2z"/><path d="M7.9 17.5H6.5v1.3h4.4v-1.3H9.6V11h.4c1.2 0 1.4.1 1.6 1h1.2l-.2-2.3H4.8l-.3 3.6h1.2v-.5c.2-1.7.3-1.8 1.8-1.8h.4v6.5z"/><path d="M15.8 21.1h-1.7v-2.8h.6c.7 0 .7 0 .7.9v.5h1.2v-4.1h-1.2v.5c0 .9 0 .9-.7.9h-.6v-2.4h1.6c1.5 0 1.6.4 1.7 1.8h1.2l-.3-3.2h-7v1.3h1v6.4h-1v1.3h7.1l.4-2.6h-1.3c0 1.1-.4 1.5-1.7 1.5z"/><path d="M21.7 17.6h-.5l1.5-2.2 1.5 2.2h-.3v1.1h3.6v-1.2H27c-.6 0-.6 0-.7-.2l-2.4-3.5 1.6-2.3c.2-.2.4-.6 1.1-.6h.5V9.6H24v1.2h.5l-.1.1-1.2 1.7-1.3-1.6h.3V9.6h-3.6V11h.5c.6 0 .6 0 .7.2l2.1 3.1-1.8 2.7-.3.3c-.2.2-.5.3-.8.3h-.5v1.2h3.2v-1.2z"/></svg>', default: '<svg viewBox="0 0 1200 1000"><path d="M394.1 537.8h411.7v54.7H394.1v-54.7zm0-130.3H624v54.7H394.1v-54.7zm0-130.3h411.7v54.7H394.1v-54.7zm0 390.9H700v54.7H394.1v-54.7z"/></svg>', twig: '<svg viewBox="0 0 32 32"><rect width="100%" height="100%"/><g class="currentLayer"><path d="M20.505 6.481c.122 0 .246-.005.368.001l.001.027a22.9 22.9 0 01-.37 0V6.48z"/><path d="M19.48 6.964c.296-.22.644-.43 1.024-.455h.37c.041.014.142-.031.143.028-.095 0-.186 0-.279.005-.379-.022-.71.206-.998.424l-.26-.002z"/><path d="M19.74 6.966c.287-.218.62-.446.998-.424-.256.079-.51.185-.712.367-.175.137-.32.305-.48.459a.32.32 0 00-.271.074c.13-.18.294-.336.465-.476z"/><path d="M20.738 6.542c.093-.005.184-.005.279-.005.415.073.76.372 1.026.683l-.024.065c-.282-.283-.626-.527-1.032-.59-.069-.024-.137-.037-.199-.002-.168.04-.332.1-.483.186-.121.07-.21.18-.319.264-.088-.082-.004-.155.04-.234.201-.182.456-.288.712-.367z"/><path d="M20.788 6.693c.062-.035.13-.022.2.001a.21.21 0 01-.2-.001z"/><path d="M19.546 7.368c.16-.154.305-.322.48-.459-.044.079-.128.152-.04.234-.317.4-.56.864-.797 1.319-.036.068-.044.163-.107.21.008-.048.02-.095.028-.143a9.271 9.271 0 00-.281-.002c0-.014.003-.04.004-.054.125-.207.243-.419.368-.626.105-.167.24-.313.345-.48z"/><path d="M18.777 7.623c.238-.216.438-.476.703-.66.087 0 .172.003.26.003a2.62 2.62 0 00-.465.476c-.075.077-.14.162-.213.242-.084.045-.149-.024-.222-.057-.027.034-.049.077-.098.08l.035-.084z"/><path d="M22.043 7.22c.053.06.104.124.14.197l-.018.032c-.04-.057-.134-.1-.146-.164l.024-.065z"/><path d="M19.275 7.442a.32.32 0 01.271-.074c-.106.166-.24.312-.345.48-.043.03-.083.066-.125.098-.054-.015-.105-.037-.16-.048l.146-.214c.072-.08.138-.165.213-.242z"/><path d="M22.183 7.417a.413.413 0 01.114.203.403.403 0 01-.132-.171l.018-.032z"/><path d="M18.84 7.627c.073.033.138.102.222.057l-.146.214a9.259 9.259 0 00-.552.91c-.106.198-.205.4-.3.603-.135 0-.266-.018-.399-.031-.04.038-.072.083-.118.113a9.299 9.299 0 011.042-1.629c.046-.055.083-.131.153-.158.049-.002.071-.045.098-.079z"/><path d="M19.076 7.946c.042-.032.082-.068.125-.099-.125.207-.243.419-.368.626-.034.023-.065.048-.098.07-.045-.012-.086-.036-.132-.043-.113.066-.104.278-.24.308.167-.313.352-.618.553-.91.055.011.106.033.16.048z"/><path d="M18.735 8.543c.033-.022.064-.047.098-.07l-.004.054c-.225.39-.384.817-.557 1.233-.099.29-.24.568-.297.87l-.03.08c-.127.098-.121.308-.23.431-.163.014-.117-.207-.25-.235.027-.093.06-.185.084-.28.169-.405.33-.815.514-1.215.096-.203.195-.405.3-.603.136-.03.127-.242.24-.308.046.007.087.031.132.043z"/><path d="M18.829 8.527c.094 0 .186 0 .28.002-.007.048-.019.095-.027.142a20.237 20.237 0 00-.772 2.008l-.02-.002c-.105-.011-.212-.017-.315-.046.057-.303.198-.581.297-.871.173-.416.332-.842.557-1.233z"/><path d="M17.547 9.493c.046-.03.079-.075.118-.113.133.013.264.032.398.031-.184.4-.345.81-.514 1.215-.084.032-.051.174-.14.175-.067-.095-.147-.19-.153-.31-.056-.013-.113 0-.127.062-.096.13-.077.317-.2.426.01-.13.078-.246.121-.367.15-.38.296-.767.497-1.119z"/><path d="M17.129 10.553c.014-.062.07-.075.127-.063.006.122.086.216.153.311.089-.001.056-.143.14-.175-.024.095-.057.187-.085.28-.174.487-.344.98-.462 1.484-.145.434-.222.888-.336 1.331-.07.04-.135.09-.216.107-.143.074-.275.2-.315.362a.354.354 0 01.002-.141c.188-1 .422-1.992.738-2.96l.055-.11c.122-.11.103-.297.199-.426z"/><path d="M17.975 10.63c.103.03.21.036.316.047-.074.034-.06.115-.062.182-.062.32-.189.629-.27.946a40.74 40.74 0 00-.312 1.25c-.022.03.01.112-.043.106-.094 0-.186-.008-.278-.023a.875.875 0 00-.149.194c.091-.474.243-.935.37-1.4.116-.413.266-.815.398-1.223l.03-.078z"/><path d="M18.23 10.86c.001-.068-.013-.15.06-.183-.015.057-.004.155-.06.182z"/><path d="M17.714 11.141c.11-.123.104-.333.231-.432-.132.408-.282.81-.399 1.222-.062.064-.104.143-.15.218a.523.523 0 01-.154.013c-.047-.048.027-.148-.084-.106-.036.118-.064.245-.156.334.118-.505.288-.997.462-1.484.134.028.088.249.25.235z"/><path d="M17.396 12.149c.046-.075.088-.154.15-.218-.126.466-.278.927-.369 1.401-.055.144-.066.3-.114.447-.109.171-.118.383-.205.564-.09.02-.2.03-.267.104-.031.103-.05.21-.089.311a.878.878 0 01.02-.211c.02-.28.135-.545.144-.826.114-.443.19-.897.336-1.331.092-.09.12-.216.156-.334.111-.042.037.058.084.106a.523.523 0 00.154-.013z"/><path d="M17.326 13.138c.092.015.184.022.278.023-.104.664-.265 1.318-.343 1.986l-.026.003c-.01-.144.021-.284.048-.423-.131-.072-.249.057-.379.063-.034.027-.044.071-.063.109.039-.379.165-.744.222-1.12.048-.146.06-.303.114-.447a.875.875 0 01.149-.194z"/><path d="M16.45 13.828c.081-.017.146-.067.216-.107-.009.28-.124.546-.144.826a1.312 1.312 0 00-.447 0c-.025-.124.064-.232.06-.357.04-.161.172-.288.315-.362z"/><path d="M16.858 14.343c.087-.18.096-.393.205-.564-.057.376-.183.741-.222 1.12a.97.97 0 01-.02.143l-.012-.093c-.053.01-.011.093-.05.123-.05.093-.165.026-.25.03-.02.047-.04.093-.065.136l-.004-.202c.018-.093.029-.189.062-.278.039-.101.058-.208.09-.311.066-.073.177-.084.266-.104z"/><path d="M16.075 14.548c.147-.022.299-.03.447-.001a.878.878 0 00-.02.211c-.033.09-.044.185-.062.278-.129.044-.265-.014-.39.036-.066.041-.072.124-.092.195a2.395 2.395 0 01.117-.72z"/><path d="M16.904 14.79c.13-.006.248-.135.379-.063-.027.14-.059.279-.048.423-.01.2-.036.397-.062.595l-.032.003a.205.205 0 00-.053-.199h-.303c-.043.069-.051.153-.09.225.005-.097.029-.193.026-.29.038-.147.069-.294.1-.442a.97.97 0 00.02-.143c.02-.038.029-.082.063-.11z"/><path d="M16.76 15.072c.038-.03-.004-.112.05-.123l.011.093a9.378 9.378 0 01-.1.441c-.04.064-.062.135-.09.203-.063-.012-.123-.04-.186-.052-.038.053-.06.115-.085.175-.001-.067.003-.133.006-.2.032-.12.017-.258.078-.37a1.41 1.41 0 00.065-.136c.085-.005.2.062.25-.031z"/><path d="M16.05 15.072c.125-.05.261.008.39-.036l.004.202c-.06.113-.046.25-.078.371-.102.097-.25.008-.374.008-.048.069-.076.148-.11.223a1.56 1.56 0 01.076-.573c.02-.07.026-.154.093-.195z"/><path d="M19.198 15.207c.084-.04.157-.126.258-.115-.953 1.021-1.415 2.395-1.657 3.746l-.024-.006a1.373 1.373 0 00-.286-.051c.227-.943.447-1.916.976-2.744.033-.058.102-.114.062-.186.001-.055.057-.103.094-.141.182-.18.353-.375.577-.503z"/><path d="M16.631 15.686c.028-.068.05-.14.09-.203.003.098-.02.194-.025.291-.057.116-.08.244-.122.366-.064-.011-.126-.032-.189-.046-.042.068-.053.15-.083.223l-.008-.034a4.22 4.22 0 01.066-.474c.025-.06.047-.122.085-.175.063.012.123.04.186.052z"/><path d="M16.785 15.549h.303a.205.205 0 01.053.199.356.356 0 00-.019.192c.015.25-.065.493-.058.743h-.026c-.02-.096.048-.246-.067-.301-.1.027-.315-.126-.326.055l-.03-.008-.012-.121c.027-.179.093-.352.093-.534.038-.072.046-.156.09-.225z"/><path d="M15.992 15.617c.124 0 .272.089.374-.008-.003.067-.007.133-.006.2a4.22 4.22 0 00-.066.474c-.02.057-.037.115-.06.17-.137.05-.33-.138-.406.04a1.12 1.12 0 01-.06.313c-.014-.224.033-.45.058-.672.008-.1.018-.2.055-.294.035-.075.063-.154.11-.223z"/><path d="M17.122 15.94a.356.356 0 01.019-.192c.02.052.046.172-.019.192z"/><path d="M16.574 16.14c.041-.122.065-.25.122-.366 0 .182-.066.355-.093.534-.025.085-.055.168-.085.252-.053-.011-.106-.027-.16-.038-.053.04-.064.108-.083.168.005-.125.016-.249.027-.373.03-.073.041-.155.083-.223.063.014.125.035.19.046z"/><path d="M18.23 16.229c.093-.127.165-.292.297-.378.04.072-.03.128-.062.186-.53.828-.749 1.801-.976 2.744-.11.206-.092.462-.144.688-.113.004-.157-.128-.23-.194-.054-.015-.106.01-.157.024.069-.404.224-.786.353-1.175.247-.658.524-1.31.92-1.895z"/><path d="M16.233 16.454c.024-.056.04-.114.061-.17l.008.033c-.01.124-.022.248-.027.373-.03.236-.041.473-.057.71-.017.423-.058.844-.068 1.267-.042.296-.02.596-.015.894-.014.35-.003.701-.01 1.052l-.044-.02c-.133-.222-.21-.476-.364-.685-.053-.032-.168-.131-.06.09.073.417.268.81.27 1.24a9.059 9.059 0 00-.045-.184 6.103 6.103 0 00-.288-.966 4.114 4.114 0 01-.063-.18c.016-.09.031-.178.029-.268 0-.055.002-.11.006-.165a2.41 2.41 0 00.021-.407 43.3 43.3 0 01-.001-.191c-.012-.18.022-.359.038-.537l.027-.238.006-.027a.45.45 0 00.017-.197l-.003-.195a2.34 2.34 0 01.067-.565 2.12 2.12 0 00.022-.264l.007-.048a1.02 1.02 0 00.06-.312c.078-.179.27.008.406-.04z"/><path d="M16.518 16.56c.03-.084.06-.167.085-.252l.012.12c-.057.226-.079.46-.154.68-.053-.004-.104-.02-.156-.025-.011.11-.051.214-.087.317.016-.237.027-.474.057-.71.019-.06.03-.127.083-.168.054.011.107.027.16.038z"/><path d="M16.645 16.437c.01-.18.227-.028.326-.055.115.055.047.205.067.302a3.39 3.39 0 01-.066.703c-.014.074-.019.152-.027.228a1.686 1.686 0 00-.023.291c0 .076 0 .151.002.227.003.074 0 .147-.007.22-.013.075-.021.153-.03.229a1.98 1.98 0 00-.019.35l-.003.191-.003.025c-.01.185-.042.37-.046.556-.02.11-.064.213-.066.327-.067 0-.05.07-.059.115a.997.997 0 00-.135.15c.032-.332-.032-.664-.035-.997-.083-.693-.018-1.388 0-2.082.024-.262.074-.521.124-.78z"/><path d="M16.615 16.429l.03.008c-.05.259-.1.518-.124.78a10.894 10.894 0 00-.034 2.395c-.06.412-.192.812-.275 1.22-.003.04-.054.047-.08.066-.003-.097-.003-.19-.007-.285.007-.35-.004-.702.01-1.052.04-.296.018-.596.015-.894.01-.423.05-.844.068-1.267.036-.103.076-.207.087-.317.052.005.103.02.156.024.075-.22.097-.453.154-.678z"/><path d="M10.7 16.54c.047.014.041.093.046.137l-.018.177-.028.001v-.315z"/><path d="M10.728 16.854l.018-.177c.065.262.107.53.168.792a.245.245 0 01.004.117c-.075.385.158.804-.022 1.173-.028-.018-.055-.039-.082-.06v-.082c-.002-.09.01-.18-.021-.264a9.89 9.89 0 01-.01-.222l.002-.196a.385.385 0 00-.014-.2.98.98 0 01-.015-.227c-.002-.117.006-.235-.017-.35a1.886 1.886 0 01-.011-.304z"/><path d="M15.738 17.118c.019-.072-.053-.237.022-.264a2.115 2.115 0 01-.022.264z"/><path d="M10.739 17.159c.023.114.015.232.017.35h-.028a1.965 1.965 0 01.01-.35z"/><path d="M16.487 19.612a10.897 10.897 0 01.034-2.395c-.018.694-.083 1.39 0 2.082.003.333.067.665.035.997a.997.997 0 01.135-.15l.013.068c-.059.26-.114.52-.161.783-.012.048-.02.096-.028.144l-.027.184-.021-.007c-.023-.02-.041-.074-.08-.053-.085.039-.2.028-.258.11a8.04 8.04 0 00-.006-.321l.008-.156c.027-.02.078-.025.081-.066.083-.408.214-.808.275-1.22z"/><path d="M16.945 17.615c.008-.076.013-.154.027-.228a.98.98 0 01.004.236l-.031-.008z"/><path d="M12.537 17.637c-.085.08-.322-.197-.02-.072.367-.025.732.036 1.078.15l.01.024c-.076.079-.15.158-.232.23-.275-.118-.533-.29-.836-.332z"/><path d="M10.896 18.759c.18-.369-.053-.788.022-1.173.069.239.101.498.15.745-.077-.071-.13.081-.081.143.044.264.002.527-.008.791-.018.04-.035.082-.057.121-.07-.034-.084-.111-.102-.179l-.007-.078v-.257l.001-.172.082.059z"/><path d="M16.922 17.906a1.686 1.686 0 01.023-.29c.004.095.011.193.005.29h-.028z"/><path d="M15.66 17.878c-.026-.053-.043-.165.011-.195l.003.195h-.015z"/><path d="M10.77 17.736a.385.385 0 01.015.199h-.014a.218.218 0 010-.2z"/><path d="M13.605 17.74a.864.864 0 01.36.162 1.387 1.387 0 00-.08.068c.079.08.19.123.254.22.171.129.069.38.214.522-.025.086.03.164.019.249-.106-.07-.153-.217-.24-.31-.221-.215-.425-.451-.687-.619-.022-.022-.07-.027-.072-.063.082-.072.156-.151.232-.23z"/><path d="M15.66 17.878h.014a.45.45 0 01-.017.197c-.028-.059-.034-.14.002-.197z"/><path d="M13.885 17.97a.87.87 0 01.08-.068c.548.304.946.822 1.247 1.363a.698.698 0 00-.162.125c0 .139.05.27.104.396a1.55 1.55 0 01-.039.905c.005.114.018.226.018.341l-.026-.001c-.08-.734-.373-1.44-.735-2.07.01-.085-.044-.163-.02-.25-.144-.14-.042-.392-.213-.521-.064-.097-.175-.14-.254-.22z"/><path d="M16.922 17.906h.028c-.011.068.037.202-.026.227a8.664 8.664 0 01-.002-.227z"/><path d="M10.771 17.935h.014l-.002.196h-.017a.257.257 0 01.005-.196z"/><path d="M15.624 18.34c.007-.072-.048-.214.027-.238-.008.08-.018.157-.027.238z"/><path d="M10.766 18.13h.017c.002.074.006.148.01.223l-.032.009a.786.786 0 01.005-.231z"/><path d="M10.987 18.474c-.05-.062.004-.214.08-.143.022.16.055.318.08.476-.06.037-.16.056-.079.179-.03.162.07.33.006.487-.016.048-.036.096-.054.145-.012-.118-.032-.235-.041-.353.01-.264.052-.527.008-.791z"/><path d="M10.793 18.353c.03.084.02.174.02.264h-.027a1.413 1.413 0 01.007-.264z"/><path d="M16.887 18.582c.009-.076.017-.154.03-.228.003.086.01.176.005.264l-.032-.006-.003-.03z"/><path d="M16.868 18.933c0-.118 0-.236.02-.351l.002.03c.003.105.016.215-.005.32h-.017z"/><path d="M10.786 18.617h.027l.001.083-.001.172h-.027a2.953 2.953 0 010-.255z"/><path d="M16.135 19.56c-.004-.297-.027-.597.015-.893.003.298.025.598-.015.894z"/><path d="M17.345 19.47c.052-.227.034-.483.144-.69.098.006.192.026.286.052-.049.101-.052.214-.057.325-.005.105-.019.21-.04.313a.4.4 0 00-.015.194c.005.057-.02.111-.037.166a2.48 2.48 0 00-.024.033c-.046.003-.089.016-.115.056-.04.057-.115.072-.157.127-.102.342-.068.72-.24 1.042-.07.012-.122-.042-.18-.068-.096-.02-.339.019-.242-.187.026-.37.1-.737.186-1.098a.192.192 0 00.007-.159l.012-.072a.56.56 0 00.085-.205c.05-.014.103-.04.157-.024.073.066.117.198.23.194z"/><path d="M11.068 18.986c-.081-.123.018-.142.079-.179.033.24.08.477.12.716-.046-.036-.08.001-.107.04-.004.147-.007.296-.008.444-.03.06-.093.102-.091.177a.7.7 0 00-.078-.23c.014-.112.026-.224.037-.336.018-.049.038-.097.054-.145.064-.157-.036-.325-.006-.487z"/><path d="M17.718 19.157c.005-.11.008-.224.057-.325-.04.08.032.285-.057.325z"/><path d="M10.786 18.873h.027v.256l-.027-.001a2.832 2.832 0 010-.255z"/><path d="M15.57 19.068c-.02-.053-.037-.162.016-.191l.001.191h-.017z"/><path d="M16.868 18.933h.017a.277.277 0 01-.002.19h-.018l.003-.19z"/><path d="M15.57 19.068h.017c.002.136 0 .272-.021.407l-.007-.12c0-.096-.01-.192.01-.287z"/><path d="M10.786 19.128h.027l.007.08-.007.204c-.084-.02-.008-.204-.027-.284z"/><path d="M16.865 19.123h.018l.012.206c.002.08.03-.042.063-.03a.56.56 0 01-.085.205 14.099 14.099 0 01-.01-.356l.002-.025z"/><path d="M16.816 19.704c.004-.186.036-.37.046-.556l.01.356a6.316 6.316 0 01-.011.072c-.016.042-.03.085-.045.128z"/><path d="M10.82 19.207c.018.068.033.145.102.18.022-.04.039-.081.057-.122.01.118.029.235.04.353-.01.112-.022.224-.036.336a.492.492 0 01-.14-.027c-.005-.082.003-.161-.02-.239-.017-.092-.01-.184-.01-.276l.007-.205z"/><path d="M15.05 19.39a.698.698 0 01.162-.125c.09.154.162.318.228.484-.035.031-.07.062-.102.097.047.248.176.49.126.75-.097.246-.223.485-.277.746l-.024.004c.009-.108-.037-.207-.03-.314 0-.115-.013-.227-.018-.34a1.55 1.55 0 00.039-.906 1.008 1.008 0 01-.104-.396z"/><path d="M15.532 19.64c.029-.072-.046-.25.027-.285l.007.12c-.004.055-.005.11-.006.165h-.028z"/><path d="M17.663 19.664a.4.4 0 01.014-.194c.024.051.049.17-.014.194z"/><path d="M11.16 19.563c.027-.039.06-.076.107-.04-.004.142.075.283.047.421a.187.187 0 00-.046.179 5.99 5.99 0 00.068 1.006c.03.165.015.34.073.5l.007.019c-.023.028-.044.058-.068.085-.076-.01-.163-.067-.221.01l-.022-.177c-.006-.12-.008-.238-.013-.357.025-.343-.038-.683-.031-1.025-.002-.075.06-.118.09-.177.002-.148.005-.297.01-.444z"/><path d="M16.816 19.704l.045-.128a.192.192 0 01-.007.16 6.67 6.67 0 00-.186 1.097c-.097.206.146.168.242.187.058.026.11.08.18.068.172-.323.138-.7.24-1.042.042-.055.117-.07.157-.127.026-.04.07-.053.115-.056l.004.203c.003.131-.019.26-.036.39-.015.094-.02.19-.028.285-.01.029-.018.057-.026.087-.047.076-.122.103-.212.101-.126.139-.119.334-.187.499-.172-.007-.264-.241-.459-.215-.116-.002-.13-.117-.115-.216.047-.262.102-.523.16-.783.02-.06.038-.12.047-.183.002-.114.046-.217.066-.327z"/><path d="M15.532 19.64h.028c.002.09-.013.178-.029.268-.001-.091-.003-.179.001-.268z"/><path d="M10.824 19.688c.022.078.014.157.018.239v.053l-.028.002c-.003-.1-.008-.197.01-.294z"/><path d="M15.338 19.846c.032-.035.067-.066.102-.097.031.053.04.118.091.159.02.06.04.12.063.18a6.63 6.63 0 00-.003.107c-.108.05-.023.178-.023.258.02.183.06.364.047.549-.106.217-.27.41-.311.655-.06.152.03.31-.023.464l-.03-.008a9.016 9.016 0 01-.004-.231.392.392 0 00-.014-.196c-.049-.108-.043-.229-.046-.344.054-.261.18-.5.277-.747.05-.26-.079-.501-.126-.749z"/><path d="M17.602 19.863a2.48 2.48 0 01.024-.033c-.006.07.044.209-.02.236l-.004-.203z"/><path d="M15.658 19.998c-.109-.221.006-.122.06-.09.154.209.23.463.363.685l.044.02c.004.095.004.188.006.285l-.008.156a.929.929 0 01-.157.187l-.016.193a3.701 3.701 0 00-.11-.009c.054-.05.106-.108.087-.188-.002-.428-.197-.822-.27-1.239z"/><path d="M10.842 19.927a.492.492 0 00.14.027.7.7 0 01.079.23c-.007.342.056.682.03 1.025-.026-.133-.014-.283-.083-.404-.08.001-.1.103-.157.147-.01-.106-.01-.211-.01-.318v-.654l.001-.053z"/><path d="M11.268 20.123a.187.187 0 01.046-.179c.092.445.129.903.193 1.354-.01.125.063.241.04.366a1.21 1.21 0 00-.056-.089c-.028.016-.055.035-.082.054-.058-.16-.043-.335-.073-.5a5.99 5.99 0 01-.068-1.006z"/><path d="M10.814 19.982l.028-.002v.313h-.028a4.958 4.958 0 010-.311z"/><path d="M16.691 20.146c.009-.046-.008-.115.059-.115a1.079 1.079 0 01-.046.183l-.013-.068z"/><path d="M15.594 20.088c.125.313.216.638.288.966l-.03-.006-.036-.013a1.47 1.47 0 00-.023-.101 4.345 4.345 0 00-.202-.739l.003-.107z"/><path d="M15.568 20.453c0-.08-.085-.208.023-.258.086.241.16.486.202.739a.925.925 0 00-.073.072c-.06.048.007.149-.038.206-.085.116-.211.21-.237.36-.13.342.155.657.072 1.001-.01.114-.07.214-.118.316-.058.116-.045.257-.117.367l-.003-.03c-.008-.286-.002-.572-.004-.858 0-.084 0-.165.006-.247.053-.155-.037-.312.023-.464.04-.245.205-.438.31-.655.014-.185-.026-.366-.046-.549z"/><path d="M10.814 20.293h.028v.341h-.029a5.684 5.684 0 01.001-.34z"/><path d="M17.542 20.741c.008-.095.013-.191.028-.285.004.097.013.196.003.293l-.031-.008z"/><path d="M17.516 20.828l.026-.087c.005.124.011.25.006.376h-.027c-.002-.097-.001-.192-.005-.29z"/><path d="M10.85 20.952c.057-.044.078-.146.158-.147.069.121.057.271.084.404.005.119.007.237.013.357.002.09.029.216-.09.175-.077-.037-.085-.164-.14-.232a43.324 43.324 0 01-.004-.192c-.002-.117 0-.233-.018-.348l-.002-.017z"/><path d="M17.304 20.93c.09 0 .165-.026.212-.102.004.097.003.192.005.29l-.003.193c-.135.01-.15.2-.307.156-.076.099-.09.226-.134.34-.003-.228-.161-.46-.39-.506-.097.001-.154-.072-.172-.16.007-.048.016-.096.028-.144-.014.1-.001.214.115.216.195-.026.287.208.459.215.068-.165.061-.36.187-.499z"/><path d="M15.72 21.006a.925.925 0 01.073-.072l.023.101a1.505 1.505 0 01-.096-.029z"/><path d="M10.853 20.969c.018.115.016.231.018.348h-.029a2.403 2.403 0 01.01-.348z"/><path d="M15.682 21.212c.045-.057-.021-.158.038-.206l.096.03.036.012c-.115.065-.113.215-.202.302-.143.14-.215.366-.141.558.044.158.155.278.242.413.05.372-.175.697-.237 1.052 0 .393-.004.794.105 1.175a2.939 2.939 0 00-.146-.027c-.026-.019-.075-.017-.082-.054-.067-.202-.114-.41-.167-.616.05-.048.026-.115.023-.175a.545.545 0 01.007-.107c.013-.104.022-.208.028-.313.072-.11.059-.251.117-.367.048-.102.107-.202.118-.316.083-.344-.202-.66-.072-1.001.026-.15.152-.244.237-.36z"/><path d="M15.65 21.35c.089-.087.087-.237.202-.302l.03.006c.009.088-.045.141-.11.189-.041.146-.196.225-.224.376-.079.232.086.454.272.575.06.03.055.1.066.157.036.32.009.645-.03.965 0 .364-.022.732.022 1.095a.609.609 0 01-.005.189c-.085-.016-.169-.035-.254-.052-.11-.38-.106-.782-.105-1.175.062-.355.286-.68.237-1.052-.087-.135-.198-.255-.242-.413-.074-.192-.002-.418.141-.558z"/><path d="M15.882 21.054l.045.183c.02.08-.033.138-.087.188-.13.062-.226.185-.21.34-.053.174.17.27.26.383.088.254.062.525.09.789.037.559.039 1.118.034 1.679-.047-.004-.095-.006-.14-.016a.609.609 0 00.004-.189c-.044-.363-.021-.731-.022-1.095.039-.32.066-.644.03-.965-.01-.057-.007-.127-.066-.157-.186-.121-.35-.343-.272-.575.028-.151.183-.23.224-.376.065-.048.119-.1.11-.189z"/><path d="M15.966 21.241a.929.929 0 00.157-.187c.005.107.006.213.006.321l-.06.113c-.04-.019-.08-.035-.119-.054l.016-.193z"/><path d="M17.52 21.118h.028c0 .141.006.285-.002.427l-.027-.008v-.226l.002-.193z"/><path d="M16.488 21.325l.027-.184c.018.088.075.161.171.16.23.046.388.278.391.506.043-.114.058-.241.134-.34.156.045.172-.147.307-.156v.226a3.257 3.257 0 01-.03.032.622.622 0 00-.174.22c-.04-.03-.077-.072-.13-.078-.011.104-.035.21-.018.316-.009.326-.102.645-.096.972l-.009.046c-.02.074-.037.153-.061.228-.17-.049-.325.048-.493.025a.45.45 0 01-.094-.253c.03.047.057.097.089.144.086-.04.155-.156.26-.125.084.001.161-.05.238-.08.062-.248.061-.505.091-.758a.916.916 0 00-.03-.343c-.057.082-.11.168-.176.245-.113.034-.23.087-.35.057-.062-.02-.126-.005-.188.007l.007-.022c.11-.12.316-.024.447-.123.184-.127.198-.415.046-.57-.083-.114-.239-.102-.359-.152z"/><path d="M9.703 21.172c.18.087.32.245.456.39a.124.124 0 00-.093.093l-.02-.002c-.083-.182-.22-.327-.343-.48z"/><path d="M16.13 21.375c.057-.082.172-.071.257-.11.039-.021.057.032.08.053l.006.14c-.159.077-.196.292-.087.427a.816.816 0 01-.03.197c-.052.057-.167.098-.194-.004-.034-.064-.073-.125-.099-.193a.266.266 0 00.005-.397l.061-.113z"/><path d="M10.842 21.316h.029c0 .049.003.145.004.193a7.292 7.292 0 00-.006.177h-.027c-.002-.124-.005-.247 0-.37z"/><path d="M16.467 21.318l.021.007c.12.05.276.038.36.153.151.154.137.442-.047.569-.131.1-.338.004-.447.123l.003-.088a.816.816 0 00.03-.197c.12.133.367.09.424-.084.116-.199-.146-.406-.338-.344l-.006-.139z"/><path d="M15.63 21.764c-.016-.154.08-.277.21-.339l.11.01c.04.018.08.034.118.053a.266.266 0 01-.005.397l-.078.058c-.151.045-.29-.05-.355-.179z"/><path d="M16.473 21.457c.192-.062.454.145.338.344-.057.175-.304.217-.425.084-.109-.135-.072-.35.087-.428z"/><path d="M10.875 21.509c.055.068.063.195.14.232.119.041.092-.085.09-.175l.022.178c-.001.095 0 .193-.003.29a1.538 1.538 0 01-.16-.044c-.05-.043-.062-.111-.09-.168a4.374 4.374 0 01-.005-.136c.001-.06.004-.118.006-.177z"/><path d="M17.487 21.569l.032-.032c0 .086.004.175 0 .263h-.027l-.005-.231z"/><path d="M10.066 21.655a.124.124 0 01.093-.093c.203.192.357.438.478.689-.08.08-.177.149-.23.25l-.015.011c-.064-.3-.206-.577-.326-.857z"/><path d="M11.41 21.629a1.02 1.02 0 01.08-.054c.02.029.039.058.056.089.01.097.055.2.026.297-.16.067-.06.28-.132.408-.043.11-.199.069-.285.116l.003-.2c.04-.132.2-.041.276-.123a5.48 5.48 0 00.005-.222c-.004-.098.017-.2-.023-.292l-.007-.02z"/><path d="M17.314 21.79a.622.622 0 01.173-.221l.005.23c0 .22 0 .439.002.658a1.647 1.647 0 00-.005.14c-.148-.112-.22.124-.354.155-.026.081-.044.163-.065.247-.006-.327.087-.646.096-.972-.017-.105.007-.212.018-.316.053.006.09.048.13.078z"/><path d="M11.348 21.733c.024-.027.045-.057.068-.085.04.092.02.194.023.292-.082.11-.256-.037-.315.094.003-.097.002-.195.003-.29.058-.078.145-.022.221-.011z"/><path d="M10.842 21.686h.027l.005.136-.005.262h-.027c-.001-.134-.004-.266 0-.398z"/><path d="M15.233 21.686a.392.392 0 01.014.196h-.019a.238.238 0 01.005-.196z"/><path d="M15.89 22.148c-.09-.113-.313-.21-.26-.384.065.129.204.224.355.179-.031.025-.075.024-.112.036.03.09.14.097.189.17.032.093.038.195.086.283.026.128.038.259.037.39a.641.641 0 00-.08-.029c-.01.088-.057.175-.047.267.044.526-.027 1.059.038 1.583h-.081l-.001-.027c.005-.56.003-1.12-.035-1.68-.027-.263-.001-.534-.09-.788z"/><path d="M17.492 21.8h.027c-.004.218.016.438-.008.656h-.017a35.863 35.863 0 01-.002-.656z"/><path d="M10.874 21.822c.028.057.04.125.09.168.052.018.106.032.16.044a2.5 2.5 0 00.014.1c-.023.088-.016.261-.179.174-.05-.006-.053-.082-.083-.117a.434.434 0 01-.007-.107l.005-.262z"/><path d="M15.228 21.883l.019-.001c0 .076.001.153.004.23-.069-.019-.024-.162-.023-.23z"/><path d="M15.985 21.943c.026-.02.052-.04.078-.058.026.068.065.129.099.193l-.014.354c-.048-.088-.054-.19-.086-.283-.05-.073-.16-.08-.189-.17.037-.012.08-.011.112-.036z"/><path d="M16.885 22.128c.065-.077.12-.163.177-.245.038.11.034.228.03.343-.03.253-.03.51-.092.759-.077.03-.154.08-.238.079-.105-.03-.174.085-.26.125-.032-.047-.059-.097-.09-.144-.064-.212-.068-.437-.094-.655a.559.559 0 01.03-.198c.061-.012.125-.026.187-.007.12.03.237-.023.35-.057z"/><path d="M11.124 22.034c.059-.13.233.017.315-.094 0 .074-.002.148-.005.222-.076.082-.235-.01-.276.124a1.125 1.125 0 00-.02-.152 2.5 2.5 0 01-.014-.1z"/><path d="M11.44 22.37c.072-.128-.027-.342.132-.409.021.094.05.192.032.289-.034.024-.082.038-.085.087-.037.174-.012.365-.093.53-.082.07-.161.144-.241.216-.008-.173-.03-.346-.033-.519l.003-.08c.086-.046.242-.005.285-.115z"/><path d="M16.162 22.078c.027.102.142.061.195.004l-.003.088-.007.022a.559.559 0 00-.029.198c-.03.174-.038.352-.083.523a3.62 3.62 0 01-.05-.092 1.897 1.897 0 00-.037-.389l.014-.354z"/><path d="M15.25 22.113l.03.008a4.437 4.437 0 00-.005.247h-.027a1.826 1.826 0 01.003-.255z"/><path d="M11.138 22.134c.01.05.016.1.02.152l-.003.199-.003.08c-.083.01-.166.029-.25.032a1.276 1.276 0 00-.021-.123 1.027 1.027 0 01-.005-.283c.03.035.032.11.083.117.163.087.156-.086.179-.174z"/><path d="M10.407 22.502c.053-.102.15-.171.23-.251.085.147.16.3.214.462.011.03.024.06.037.089.054.146.114.29.144.443-.174.037-.007.286-.1.378-.102.06-.272.11-.263.25l-.026.002c.002-.467-.138-.922-.236-1.373z"/><path d="M11.52 22.337c.002-.05.05-.063.084-.087.039.216.05.439.062.658-.004.117.054.255-.058.337-.077.054-.112.145-.145.23-.044.09-.059.189-.08.285-.022.028-.044.054-.063.083-.025.127-.033.264-.06.394l-.021.015a2.051 2.051 0 01-.031-.297c-.001-.045-.013-.088-.022-.132.055-.245-.03-.493-.001-.74l.24-.216c.082-.165.057-.356.094-.53z"/><path d="M15.248 22.368h.027c.002.286-.004.572.004.858l-.03-.007a35.34 35.34 0 01-.001-.85z"/><path d="M16.235 22.913c.045-.171.054-.35.083-.523.026.218.03.443.095.655a.45.45 0 00.094.253c.168.023.324-.074.493-.025.024-.075.04-.154.061-.228.001.056.002.113 0 .17-.024.141-.039.284-.057.426-.16-.068-.298.153-.442.084-.037-.098-.066-.198-.105-.296-.04-.067-.128-.078-.19-.12-.01-.117.02-.24-.018-.351l-.014-.045z"/><path d="M17.494 22.457l.017-.001c.026.053.013.118.008.176l-.01.018a10.44 10.44 0 01-.02-.053c0-.047.001-.094.005-.14z"/><path d="M10.88 22.474c.01.04.017.082.022.123l-.014.205c-.013-.03-.026-.06-.037-.09a3.58 3.58 0 01.03-.238z"/><path d="M10.902 22.597c.084-.003.167-.022.25-.033.002.173.025.346.033.519-.03.247.056.495.001.74l-.092-.059c.06-.173-.03-.349-.062-.52-.03-.152-.09-.296-.144-.442l.014-.205z"/><path d="M17.135 22.752c.134-.031.206-.267.354-.155l.02.053.002.022a.765.765 0 00.004.299l.002.025v.117c-.019-.05-.031-.102-.057-.149-.162.073-.405.113-.39.347a11.116 11.116 0 00-.01-.096 3.38 3.38 0 00.001-.17l.009-.046c.021-.084.04-.166.065-.247z"/><path d="M17.519 22.632l.026-.011c.002.123.01.248.001.371l-.029.004-.002-.025c0-.101.007-.2-.004-.299l-.001-.022.009-.018z"/><path d="M17.515 22.97a.765.765 0 01-.004-.298c.01.1.005.198.004.299z"/><path d="M12.461 22.71h.313v.027c-.104 0-.208.002-.312 0v-.028z"/><path d="M11.696 23.11c.197-.21.471-.371.766-.373.104.002.208 0 .312 0 .037.013.152-.028.136.028a.388.388 0 00-.193.013.857.857 0 00-.592.446c-.021.075-.072.136-.11.203-.063.201-.099.41-.123.618l-.023-.003a1.346 1.346 0 00-.128-.329c-.1-.063-.283-.08-.251-.237.043-.075.091-.148.118-.231.112-.082.054-.22.058-.337h.027l.003.202z"/><path d="M12.717 22.778a.388.388 0 01.193-.013c-.022.063-.143.04-.193.013z"/><path d="M16.106 22.793a.641.641 0 01.08.028l.049.092.014.045c.016.122-.048.265.017.38.03.048.033.105.038.161 0 .14-.015.284 0 .425.032.2.018.408.076.603-.067-.013-.093.02-.082.085.001.039-.017.06-.055.065-.049-.01-.098-.023-.147-.034-.065-.524.006-1.057-.038-1.583-.01-.092.038-.179.048-.267z"/><path d="M16.25 22.958c.038.111.006.234.017.35v.03c-.066-.115-.002-.258-.018-.38z"/><path d="M17.07 23.311c-.015-.234.228-.274.39-.347.026.047.038.099.056.15.002.041.002.083.003.126-.13.089-.28.161-.396.266-.077.304-.062.629-.051.943l-.007.078-.026.002c-.004-.406-.013-.813.031-1.218z"/><path d="M17.517 22.996l.03-.004c.002.085.006.174-.002.26l-.026-.012a2.66 2.66 0 00-.003-.127l.001-.117z"/><path d="M15.021 23.217c.033.018.066.04.046.082a.859.859 0 00-.012.255l-.003.03-.03.008c-.003-.126-.007-.25 0-.375z"/><path d="M15.249 23.219l.03.007.003.03a4.471 4.471 0 01-.028.313 3.43 3.43 0 01-.005-.35z"/><path d="M17.004 23.641c.018-.142.033-.285.057-.426l.01.096c-.045.405-.036.812-.032 1.218l-.024.004a1.876 1.876 0 00-.17 0 4.072 4.072 0 00-.228 0c-.052-.292-.051-.597-.158-.878-.077-.025-.14-.068-.155-.156-.005-.056-.009-.113-.038-.162l.001-.029c.062.043.15.054.19.121.039.098.068.198.105.296.144.069.283-.152.442-.084z"/><path d="M10.933 23.623c.092-.092-.075-.34.1-.378.032.17.12.346.061.52-.108-.033-.2.034-.223.14.002.109.104.18.201.206l-.084.027a.401.401 0 01.116.129c-.006.103.011.218-.041.314-.111.003-.222.004-.333.004a1.85 1.85 0 00-.02-.093c-.003-.208-.04-.413-.041-.62-.01-.14.161-.189.264-.249z"/><path d="M11.463 23.475c.033-.085.068-.176.145-.23-.027.083-.075.156-.118.23h-.027z"/><path d="M17.123 23.506c.117-.105.265-.177.396-.266 0 .099-.01.204.021.3l.01.106v.025l-.047-.008c-.102.117-.231.224-.262.384 0 .064-.069.05-.11.065 0 .115-.028.227-.06.337-.01-.314-.025-.64.052-.943z"/><path d="M17.519 23.24l.026.013c.006.055.006.11.004.166l-.009.122c-.032-.097-.02-.202-.021-.301z"/><path d="M15.055 23.554a.859.859 0 01.012-.255c.034.163.08.324.13.483.06.032-.021-.13.05-.106.003.06.026.127-.023.175.053.206.1.414.167.616.007.037.056.035.082.054-.08-.01-.057.08-.038.126l.031.085.01.079c-.128-.033-.288.017-.399-.06-.015-.399.026-.801-.022-1.197z"/><path d="M17.549 23.42c.063.024.015.158.027.227l-.027-.001a4.11 4.11 0 00-.009-.105l.009-.122z"/><path d="M11.463 23.475h.027c-.032.158.152.175.251.238.056.104.1.214.128.329a1.263 1.263 0 01-.012.138 2.333 2.333 0 00-.022.233c-.066 0-.134 0-.19.037-.031.088-.03.181-.035.274l-.002.02c-.022.057-.037.118-.064.174a1.68 1.68 0 01-.274.037 4.757 4.757 0 01-.036-.38c.032.027.052.071.092.088.073-.02.146-.043.22-.06a1.66 1.66 0 00.092-.415c-.123.016-.28-.052-.379.05.028-.131.036-.268.061-.395-.108.196.222.327.29.146.101-.131-.1-.305-.228-.229.022-.096.037-.195.08-.285z"/><path d="M16.304 23.5c.015.087.078.13.155.155.107.28.106.586.158.878l-.033-.001c-.039-.119-.05-.244-.09-.362-.148.057-.092-.183-.19-.246-.015-.141 0-.284 0-.425z"/><path d="M15.055 23.554c.048.396.007.798.022 1.197l-.027.005-.003-.056v-.056l-.002-.053c.001-.11.004-.216.002-.324v-.109c.005-.192-.008-.383.005-.574l.003-.03z"/><path d="M17.503 23.663l.046.008c0 .088-.01.182.017.269.017.072.041.142.041.217.007.123.02.245.025.368-.19.003-.378.003-.567.002l.007-.078c.031-.11.058-.222.058-.337.042-.015.111-.001.11-.065.032-.16.161-.267.263-.384z"/><path d="M17.55 23.646l.026.001c.002.096.009.197-.01.293-.027-.087-.016-.181-.017-.27v-.024z"/><path d="M11.382 23.76c.128-.076.33.098.229.23-.069.18-.4.05-.29-.147.018-.03.04-.055.061-.083z"/><path d="M10.87 23.905c.024-.106.116-.173.224-.14l.092.058c.01.044.02.087.022.132a.671.671 0 01-.136.156c-.097-.025-.2-.097-.201-.206z"/><path d="M17.888 24.303c.103-.182.187-.383.316-.546-.048.266-.175.518-.247.78-.03.083-.044.174-.1.244a2.13 2.13 0 01-.226.001.185.185 0 01.038-.08c.023-.036.043-.074.061-.112.048-.098.114-.187.158-.287z"/><path d="M16.304 23.924c.098.063.042.303.19.246.04.118.051.243.09.362a48.88 48.88 0 00-.204-.005c-.058-.195-.044-.404-.076-.603z"/><path d="M11.072 24.111a.671.671 0 00.136-.156c.004.1.012.199.03.297 0 .107 0 .215-.004.323-.036.154-.027.313.004.467a.607.607 0 00-.088-.088c-.07-.223.026-.47-.046-.687a.401.401 0 00-.116-.13.9.9 0 00.084-.026z"/><path d="M14.193 24.014c.096.052.142.163.223.235.064.071.12.148.178.224-.17.076-.207-.085-.277-.182-.042-.092-.102-.178-.124-.277z"/><path d="M18.752 24.14l.02-.012a2.295 2.295 0 01-.176.397l-.196.002c.084-.154.226-.267.352-.387z"/><path d="M14.416 24.25c.214.055.415-.107.631-.092v.053a.66.66 0 00-.283.09c-.056.035-.137.085-.111.164.108.1.253.145.393.18l.001.055c-.27-.05-.546-.108-.793-.233-.01-.062.003-.146.063-.176.07.097.106.258.277.182-.058-.076-.114-.153-.178-.224z"/><path d="M17.607 24.157c.055-.004 0 .091.057.087.075.02.15.034.224.06-.044.099-.11.188-.158.286.006-.073-.05-.053-.097-.042v-.023c-.005-.123-.019-.245-.026-.368z"/><path d="M11.26 24.237c.098-.1.255-.033.378-.05a1.7 1.7 0 01-.091.416c-.075.017-.148.04-.221.06-.04-.017-.06-.061-.092-.088.003-.108.005-.216.005-.323l.02-.015z"/><path d="M11.835 24.413c.003-.077.01-.158.022-.233.003.096.019.198-.001.295h-.017l-.004-.062z"/><path d="M14.764 24.301a.66.66 0 01.283-.09v.056c-.09.007-.18.052-.197.147.023.095.106.153.195.177l.001.053c-.14-.034-.285-.078-.393-.179-.026-.08.055-.129.111-.164z"/><path d="M11.104 24.267c.072.217-.023.464.046.687.004.13.002.262.008.393a.676.676 0 00-.17.007 4.53 4.53 0 00-.2-.035 2.912 2.912 0 01-.069-.215c.002-.09.008-.176.009-.263l.002-.256c.111 0 .222 0 .333-.004.052-.096.035-.21.041-.314z"/><path d="M14.85 24.414c.017-.095.107-.14.197-.147.002.108 0 .215-.002.324-.089-.024-.172-.082-.195-.177z"/><path d="M10.444 24.356c.047.003.034.075.04.11l-.014.117c-.097.018-.006-.167-.026-.227z"/><path d="M11.645 24.45c.056-.038.124-.037.19-.037 0 .016.003.046.004.062-.003.055-.004.11-.006.166-.08.002-.172.015-.223.083.005-.093.004-.186.035-.274z"/><path d="M10.47 24.583c.004-.04.009-.078.015-.117.09.208.143.43.234.638.02.072.044.144.07.215l.022.062.023.062.011.03a.663.663 0 01-.115.025c-.056 0-.113-.002-.17-.006l-.002-.027-.003-.051a9.343 9.343 0 00-.043-.41c-.012-.14-.044-.28-.042-.42z"/><path d="M11.84 24.475h.016a.336.336 0 010 .191l-.017-.002-.006-.023c.002-.056.003-.111.006-.166z"/><path d="M10.71 24.492l.02.093-.002.256h-.029a2.232 2.232 0 01.01-.35z"/><path d="M15.435 24.647c-.02-.047-.042-.136.038-.126l.039.056a1.934 1.934 0 00.584.066c.05.01.098.023.147.034l-.002.023c-.272.03-.536-.049-.806-.053z"/><path d="M15.473 24.521c.049.008.098.017.146.027.085.017.17.036.254.052.046.01.094.012.14.016l.002.027a1.934 1.934 0 01-.503-.066l-.04-.056z"/><path d="M16.298 24.612c-.011-.065.015-.098.082-.085l.204.005.033.001c-.087.063-.2.037-.297.073l-.022.006z"/><path d="M16.617 24.533c.075-.002.152-.002.228 0-.163.075-.348.09-.525.073.097-.036.21-.01.297-.073z"/><path d="M16.845 24.533c.056-.003.113-.002.17 0-.11.086-.255.058-.379.103l-.299.011-.008.025-.009.027-.08.001.003-.023c.038-.005.056-.026.055-.065l.022-.006c.177.016.362.002.525-.073z"/><path d="M17.015 24.533l.024-.004.026-.002c.19.001.378.001.567-.002l.001.023-.106.016-.2-.002c-.224-.02-.43.095-.656.086l-.035-.012c.124-.045.27-.017.379-.103z"/><path d="M17.633 24.548c.047-.011.103-.031.097.042a1.064 1.064 0 01-.061.112l-.012-.059a9.815 9.815 0 01-2.19.09 1.456 1.456 0 01-.032-.086c.27.004.534.083.806.053l.08-.001c.199.004.399.003.595-.037a1.15 1.15 0 00.611-.098l.106-.016z"/><path d="M12.525 24.562l.024-.007c-.029.287-.104.568-.15.853l-.172-.004c.02-.073.05-.142.073-.213.069-.212.166-.414.225-.629z"/><path d="M16.671 24.648c.225.009.432-.107.657-.086-.129.065-.273.076-.412.1a2.7 2.7 0 01-.596.037l.009-.027c.111-.015.234.017.342-.024z"/><path d="M17.328 24.562l.2.002a1.15 1.15 0 01-.612.098c.14-.024.283-.035.412-.1z"/><path d="M11.238 25.042a1.082 1.082 0 01-.004-.467c.008.127.018.253.036.38a1.68 1.68 0 00.274-.037c.027-.056.042-.117.064-.175.021.12.018.24.027.36v.05c-.131.03-.262.061-.393.089l-.004-.2z"/><path d="M11.61 24.724c.051-.068.143-.081.223-.083l.006.023c0 .097-.017.203.018.299l.006.107c-.04-.032-.082-.072-.137-.06-.034.028-.06.062-.091.093-.01-.12-.006-.24-.027-.36l.002-.019z"/><path d="M16.337 24.647l.3-.01.034.01c-.108.042-.23.01-.342.025l.008-.025z"/><path d="M11.84 24.664l.017.002a1.18 1.18 0 010 .297c-.035-.096-.018-.202-.018-.3z"/><path d="M12.895 24.905l.023-.01c-.004.099-.062.186-.065.285h-.14c.048-.1.115-.188.182-.275z"/><path d="M9.928 24.927c.103.046.143.163.226.234.047.04.151.143.026.15-.076-.043-.11-.125-.155-.195-.033-.062-.084-.118-.097-.19z"/><path d="M11.15 24.954a.607.607 0 01.088.088l.004.2-.004.14-.057-.002a2.375 2.375 0 00-.023-.033c-.006-.131-.004-.263-.008-.393z"/><path d="M11.857 24.963c.066-.03.025.096.037.134l-.002.054-.008.066c-.016-.048-.018-.098-.021-.147a4.232 4.232 0 00-.006-.107z"/><path d="M10.512 25.003c.017.136.032.274.043.41-.095-.001-.2-.093-.163-.195.04-.039.117-.054.108-.122l.012-.093z"/><path d="M11.635 25.103c.03-.03.057-.065.09-.093.056-.012.098.028.138.06.003.049.005.1.021.147.012.044.027.087.036.131-.075.048-.17.052-.256.063a3.656 3.656 0 01-.03-.259v-.049z"/><path d="M10.154 25.16c.117-.01.229-.056.346-.064.01.068-.069.083-.108.122-.037.102.068.194.163.196l.003.05c-.132-.032-.278-.051-.378-.154.125-.006.021-.11-.026-.15z"/><path d="M11.894 25.097c.134.028.286.022.406.094-.022.071-.054.14-.073.213-.288.06-.587.086-.881.083.106-.022.212-.048.32-.05.14-.02.318-.006.422-.12.033-.117-.114-.145-.196-.166l.002-.054z"/><path d="M9.873 25.206c.058-.017.104-.055.152-.09.044.07.079.152.155.194.1.103.246.122.378.155l.002.027c-.177.024-.343-.05-.514-.083a.41.41 0 01-.252-.12c-.026-.056.039-.07.079-.083z"/><path d="M11.242 25.242c.131-.028.262-.06.393-.09.007.086.016.173.03.259l.002.025c-.109.003-.215.029-.321.051a.435.435 0 01-.105.006l-.002-.027v-.027l-.001-.028v-.03l.004-.14z"/><path d="M11.892 25.151c.082.021.229.05.196.166-.104.114-.282.1-.421.12l-.003-.026c.087-.01.181-.015.256-.063-.009-.044-.024-.087-.036-.131l.008-.066z"/><path d="M10.788 25.319c.067.01.133.022.2.035a.23.23 0 00.193.026l.057.001v.03c-.144-.002-.285-.018-.427-.03l-.023-.062z"/><path d="M10.988 25.354a.676.676 0 01.17-.007l.023.033a.23.23 0 01-.193-.026z"/><path d="M10.81 25.38c.143.013.284.029.428.03v.029c-.13.018-.282-.042-.404.004l-.023-.062z"/><path d="M10.834 25.443c.122-.046.274.014.404-.004l.001.027c-.131 0-.263-.003-.394.006l-.011-.03z"/><path d="M10.845 25.472c.131-.009.263-.006.394-.006l.002.027c-.172 0-.345-.003-.515.03l.004-.025a.663.663 0 00.115-.026z"/></g></svg>', typescript: '<svg viewBox="0 0 32 32"><path d="M15.6 11.8h-3.4V22H9.7V11.8H6.3V10h9.2v1.8zm7.7 7.1c0-.5-.2-.8-.5-1.1-.3-.3-.9-.5-1.7-.8-1.4-.4-2.5-.9-3.3-1.5-.7-.6-1.1-1.3-1.1-2.3 0-1 .4-1.8 1.3-2.4.8-.6 1.9-.9 3.2-.9 1.3 0 2.4.4 3.2 1.1.8.7 1.2 1.6 1.2 2.6h-2.3c0-.6-.2-1-.6-1.4-.4-.3-.9-.5-1.6-.5-.6 0-1.1.1-1.5.4-.4.3-.5.7-.5 1.1 0 .4.2.7.6 1 .4.3 1 .5 2 .8 1.3.4 2.3.9 3 1.5.7.6 1 1.4 1 2.4s-.4 1.9-1.2 2.4c-.8.6-1.9.9-3.2.9-1.3 0-2.5-.3-3.4-1s-1.5-1.6-1.4-2.9h2.4c0 .7.2 1.2.7 1.6.4.3 1.1.5 1.8.5s1.2-.1 1.5-.4c.2-.3.4-.7.4-1.1z"/></svg>', tsconfig: '<svg viewBox="0 0 32 32"><path d="M8.125 7h15.75C24.496 7 25 7.504 25 8.125v15.75c0 .621-.504 1.125-1.125 1.125H8.125A1.125 1.125 0 017 23.875V8.125C7 7.504 7.504 7 8.125 7zm9 9.422v-1.547h-6.188v1.547h2.21v6.89h1.758v-6.89h2.22zm.597 6.968a3.71 3.71 0 001.054.364c.407.08.834.121 1.284.121.438 0 .855-.045 1.249-.133.394-.089.74-.237 1.038-.44.297-.206.54-.48.706-.802.173-.33.26-.737.26-1.223 0-.351-.05-.66-.149-.925-.097-.26-.242-.5-.429-.707a3.174 3.174 0 00-.672-.555 7.037 7.037 0 00-.883-.464c-.24-.105-.456-.208-.646-.307a3.24 3.24 0 01-.486-.304 1.288 1.288 0 01-.309-.327.72.72 0 01-.108-.391c0-.134.033-.255.097-.362a.868.868 0 01.275-.276c.118-.077.262-.136.434-.179.172-.042.362-.064.572-.064a3.623 3.623 0 011.495.34c.162.077.311.166.449.267V15.21a4.256 4.256 0 00-.912-.252 7.003 7.003 0 00-1.135-.082c-.435 0-.846.05-1.235.149-.388.1-.73.254-1.026.464a2.272 2.272 0 00-.7.805c-.172.325-.257.714-.257 1.167 0 .58.157 1.072.47 1.481.316.409.793.755 1.433 1.038.251.11.486.216.703.321.217.106.405.215.563.328.158.113.283.237.375.37a.786.786 0 01.137.456.73.73 0 01-.346.628c-.116.079-.26.14-.434.185a2.472 2.472 0 01-.61.067 3.293 3.293 0 01-1.177-.222 3.472 3.472 0 01-1.08-.665v1.943z"/></svg>', vala: '<svg viewBox="0 0 32 32"><path d="M17.2 12.8c.9 0 1.7.1 2.5.3.2.1.3.1.5.2 1.2.6 1.3 1.7.9 2.6-.2.6-.7 1-1.1 1.4-.8.7-1.7 1.2-2.6 1.8-.7.5-1.5.9-2.1 1.5-.2.2-.3.4-.5.6-.2.3-.2.7-.1 1 .3.6.9 1.1 1.6 1.3.8.2 1.4-.3 1.5-1.1V22c0-.3.1-.5.3-.7.3-.2.7-.4 1.1-.5.5-.1 1.1-.2 1.6-.1.1 0 .2 0 .3.1.5.2.6.5.5 1-.3 1.2-.9 2.1-1.8 2.9-.8.7-1.7 1.1-2.7 1.2-.8.1-1.6 0-2.4-.3-2.6-1-4.4-2.9-5.3-5.6-.6-2 0-3.8 1.6-5.1 1.1-1 2.5-1.5 3.9-1.8.4-.1.8-.2 1.2-.2.5-.1.9-.1 1.1-.1zm1.3-2.9c.1-1.4.7-2.7 2.1-3.5.8-.4 1.6-.5 2.4-.3.9.2 1.2.7 1.1 1.6-.1.6-.4 1.1-.7 1.5-.6.8-1.2 1.6-2.1 2.1-.4.3-.8.5-1.3.6-.6.1-1.1-.1-1.3-.7-.1-.3-.2-.7-.2-1.3zm-1.4-1.7c0 .9-.2 1.7-.7 2.4-.1.2-.2.3-.4.4-.3.3-.7.3-1 0-.3-.3-.4-.6-.5-.9-.2-.7-.3-1.4-.1-2.2.2-.7.7-1.1 1.5-1.1.5 0 .9.2 1 .6.1.1.1.2.1.3 0 .2 0 .3.1.5zM13 10.3c0 .5 0 1-.3 1.4-.2.5-.6.6-1.1.2-.6-.5-.9-1.1-1-1.8v-.7c.1-.6.6-1.1 1.2-1.1.3 0 .6.1.8.4.3.4.4.8.4 1.3v.3zm-2.8 2.9c0 .2-.1.5-.2.7-.1.3-.3.4-.6.3-.1 0-.1 0-.2-.1-.8-.3-1.4-1.4-1.4-2.2 0-.5.4-.9.8-1.1.3-.1.6 0 .9.3.4.4.5 1 .6 1.5.1.3.1.4.1.6z"/></svg>', vue: '<svg viewBox="0 0 1200 1000"><path d="M600 495.9l159.1-275.4h-84.4L600 349.7l-74.6-129.2h-84.5z"/><path d="M793.7 220.5L600 555.9 406.3 220.5H277l323 559 323-559z"/></svg>', wasm: '<svg viewBox="0 0 32 32"><path d="M7 7v18h18V7h-7c0 1-1 2-2 2s-2-1-2-2zm5.2 10h1.2l.9 3.45.9-3.45h.9l.9 3.45.9-3.45h1.2l-1.5 6h-1.05l-.9-3.9c-.3 1.41-.5 2.52-.9 3.9H13.7zm7.95 0h1.8l1.5 6H22.1l-.3-1.5h-1.5L20 23h-1.35l1.5-6m1.05 1.2h-.3l-.45 2.25h1.2z"/></svg>', wat: '<svg viewBox="0 0 32 32"><path d="M13.5 22l-2-8-2 8h-2L5 10h2.1l1.4 7 2-7h2l2 7 1.4-7H18l-2.5 12zM24 10h-4l-2.47 12H20l.5-3h3l.5 3h2.54zm-3.25 7l.75-4.5h1l.75 4.5z"/></svg>', xml: '<svg viewBox="0 0 32 32"><path d="M9.7 9.6c7.2-.1 12.9 6.2 12.7 12.7h-2.6c-.1-2.8-1-5.1-2.9-7.1s-4.4-2.9-7.1-2.9c-.1-.9-.1-1.8-.1-2.7zm8.6 12.8h-2.6c-.1-.5-.2-1.1-.3-1.6-.8-2.4-2.3-3.8-4.8-4.3-.2-.1-.4-.1-.7-.1-.2 0-.2-.1-.2-.2v-2.5c2.1 0 3.9.7 5.5 2 2 1.8 3 4 3.1 6.7zm-5.1-1.8c0 1-.8 1.8-1.8 1.8s-1.7-.8-1.8-1.8c0-1 .8-1.8 1.8-1.8s1.8.8 1.8 1.8z"/></svg>', yml: '<svg viewBox="0 0 32 32"><path fill-rule="evenodd" d="M17.1 19.3c-.5 0-.8.1-1.1.1h-1.8c.4-4.3.7-8.5 1.1-12.8 1.2 0 2.2-.1 3.2 0 .3 0 .7.5.6.8-.3 2.3-.8 4.7-1.2 7-.2 1.6-.5 3.2-.8 4.9zm.4 4c.1 1.1-.8 2.1-2.1 2.2-1.3.1-2.5-.7-2.6-1.8-.1-1.2.8-2.1 2.2-2.2 1.4-.1 2.4.6 2.5 1.8z" clip-rule="evenodd"/></svg>', prolog: '<svg viewBox="0 0 32 32"><g fill-rule="nonzero" transform="translate(8 7)"><path d="M14.532 0s-2.227 2.676-6.23 2.676C4.3 2.676 2.08 0 2.08 0S-.194 3.535.013 6.975c.13 2.167.693 4.453 2.783 6.803 1.232 1.386 2.99 2.79 5.507 4.21 6.797-3.83 8.082-7.573 8.29-11.013C16.8 3.535 14.531 0 14.531 0zM2.404 1.886c.39.294.8.559 1.23.792a4.57 4.57 0 00-2.095 1.478c.223-.78.513-1.539.865-2.27zm11.521 9.805c-.547.843-1.258 1.656-2.144 2.445v-1.069h-1.184v2.035c-.522.391-1.09.778-1.703 1.16v-1.734H7.71v1.732A23.887 23.887 0 016.01 15.1v-2.033H4.825v1.065a13.957 13.957 0 01-1.144-1.14c-.843-.95-1.399-1.87-1.767-2.747a4.555 4.555 0 004.53 1.106l1.859 1.858 1.858-1.858a4.554 4.554 0 004.53-1.105 8.91 8.91 0 01-.766 1.445zm-6.34-.874a4.5 4.5 0 00.718-.578c.219.216.46.41.717.578l-.717.718-.718-.718zm3.915-.45a3.381 3.381 0 01-3.197-2.293 3.37 3.37 0 110-2.162 3.375 3.375 0 113.197 4.456zm1.474-7.689c.43-.233.84-.498 1.23-.792.353.731.641 1.491.864 2.271a4.576 4.576 0 00-2.094-1.479z"/><circle cx="5.105" cy="6.993" r="1.688"/><circle cx="11.5" cy="6.993" r="1.688"/></g></svg>', zip: '<svg viewBox="0 0 1200 1000"><path d="M846.4 813.2H353.6c-8.2 0-15-6.8-15-15v-595c0-8.2 6.8-15 15-15h492.7c8.2 0 15 6.8 15 15v595c.1 8.3-6.7 15-14.9 15z"/><g><path d="M589.5 186.8h20.9v380.3h-20.9z"/><path d="M594.7 210h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6zm0 43.4h61.6V361h-61.6zm0 44.1h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6z"/><path d="M542 230.2h61.6V251H542zm0 43.4h61.6v20.8H542zm0 43.3h61.6v20.8H542zm0 44.2h61.6v20.8H542zm0 43.4h61.6v20.8H542zm0 43.4h61.6v20.8H542zm0 43.4h61.6v20.8H542zm0-304.5h61.6v20.8H542zm0 347.8h61.6v20.8H542zm132.3 160.8c-3.5-26.4-8.8-52.7-13.3-79-.2-1-.5-1.9-.9-2.9-6.7-14.5-24.6-20.7-60-20.5-35.5-.3-53.4 6-60 20.5-.4.9-.8 1.9-.9 2.9-4.5 26.3-9.8 52.6-13.3 79-2.5 18.8 13.7 30.7 41.1 31.8 10.8.4 21.7-.3 32.5 0h1.2c10.8-.2 21.7.5 32.5 0 27.4-1.1 43.6-13 41.1-31.8zM601 666.2h-2c-19.6.1-33.2-9.9-33.6-24.7-.4-15.4 13.8-26.3 34-26v.1h1.2v-.1c20.2-.3 34.4 10.5 34 26-.4 14.8-14 24.8-33.6 24.7z"/></g></svg>', wgt: '<svg viewBox="0 0 512 512"><path d="M252.245 87.27a2.687 2.687 0 00-1.285.276c-21.947 13.49-53.976 32.266-61.563 55.249-2.373 7.61-1.323 10.427-.029 16.561 2.146 7.381 6.63 17.058 11.62 25.1 3.234 5.208 13.882 18.953 14.685 18.953 14.75-9.362 30.539-20.182 42.413-31.898v-39.379c0-33.305-.35-39.883-2.254-42.6-.715-1.363-2.221-2.241-3.587-2.263zm-68.639 66.305c-.776.016-1.998 2.942-2.717 6.503-1.866 9.233-10.172 42.115-13.864 54.902-2.998 10.381-4.059 21.53-2.322 24.339 1.287 2.082 23.115 9.977 54.349 19.655 15.156 4.696 17.55 4.603 20.603-.761 4.651-8.172 5.375-6.754-23.805-46.602-23.032-31.454-26.088-36.773-29.22-50.842-.885-3.975-2.247-7.21-3.024-7.194zm159.185 9.645a28.373 28.373 0 00-3.745.198c-9.359 1.078-43.192 3.334-56.494 3.774-10.8.357-21.738 2.797-23.874 5.317-1.583 1.867-2.345 25.063-1.898 57.758.217 15.866 1.05 18.113 7.096 19.359 9.209 1.898 8.086 3.028 36.967-37.037 22.797-31.625 26.907-36.174 39.32-43.5 3.506-2.07 6.165-4.365 5.909-5.098-.16-.459-1.452-.732-3.281-.771zm15.326 2.945c-7.971.095-10.326 1.963-15.761 5.089-6.357 4.322-14.182 11.573-20.287 18.805-3.955 4.684-13.727 19.059-13.479 19.822 13.461 11.135 28.628 22.813 43.44 30.485l37.452-12.174c31.675-10.292 37.817-12.657 39.813-15.307 1.076-1.102 1.45-2.805 1.048-4.11a2.72 2.72 0 00-.662-1.137c-19.612-16.704-47.361-41.36-71.564-41.473zM86.727 215.74c-.737 0-1.304.085-1.8.237-1.517.26-2.818 1.426-3.26 2.718-.148.43-.207.87-.139 1.304 6.048 25.042 14.006 61.307 33.52 75.625 6.504 4.608 9.507 4.483 15.74 5.148 7.684.24 18.272-1.038 27.462-3.3 5.953-1.465 22.322-7.34 22.57-8.103-4.346-16.92-9.76-35.286-17.234-50.2l-37.452-12.164C99.41 218.323 90.7 215.75 86.726 215.741zm264.019 25.584c-4.43-.018-25.841 6.256-54.864 16.127-15.022 5.11-16.899 6.594-16.216 12.728 1.04 9.345-.377 8.62 46.652 23.706 37.122 11.908 42.717 14.422 53.52 23.963 3.052 2.696 6.051 4.512 6.67 4.042.618-.47-.11-3.555-1.621-6.858-3.918-8.567-16.53-40.056-21.058-52.57-3.677-10.161-9.365-19.797-12.421-21.05-.142-.057-.367-.087-.662-.088zm-117.978 37.62c-5.473-.013-16.236 3.62-44.092 12.786-37.032 12.186-43.036 13.445-57.383 12.076-4.055-.387-7.553-.091-7.777.652-.224.744 2.181 2.81 5.346 4.595 8.205 4.628 36.906 22.686 47.926 30.15 8.947 6.058 19.222 10.516 22.431 9.733 2.379-.58 16.63-18.9 35.486-45.614 9.15-12.963 9.8-15.272 5.642-19.833-2.573-2.823-3.835-4.536-7.58-4.545zm35.88 11.354c-1.126.034-2.3.43-3.705 1.067-8.567 3.877-8.318 2.302-8.133 51.691.146 38.985-.51 45.09-6.245 58.312-1.62 3.736-2.427 7.147-1.789 7.59.638.442 3.353-1.199 6.028-3.657 6.937-6.373 32.976-28.101 43.48-36.276 8.527-6.636 15.939-15.026 16.186-18.32.183-2.442-12.832-21.66-32.412-47.848-7.126-9.53-10.032-12.663-13.41-12.56zm62.74 10.089c-.052.01-.089.015-.11.029-6.43 16.243-12.843 34.285-15.563 50.743l23.143 31.858c19.576 26.944 23.732 32.054 26.868 33.134 1.38.682 3.112.508 4.23-.277a2.72 2.72 0 00.88-.978c9.826-23.814 24.702-57.83 17.332-80.882-2.554-7.552-5.062-9.217-9.714-13.42-6.075-4.71-15.386-9.897-24.151-13.468-5.5-2.242-21.34-6.882-22.916-6.74zm-106.14 48.5c-9.025.043-17.93.538-26.177 1.788l-23.153 31.859c-19.576 26.944-23.154 32.474-23.212 35.791-.222 1.524.479 3.113 1.571 3.933.364.274.773.465 1.206.534 25.685 1.986 62.628 5.625 82.275-8.508 6.393-4.763 7.204-7.667 9.763-13.39 2.603-7.233 4.658-17.696 5.346-27.135.446-6.115-.092-23.492-.74-23.964-8.718-.547-17.855-.952-26.88-.909z"/></svg>', illustrator: '<svg viewBox="0 0 32 32"><path d="M25 8H7v17h18V8zm-7.6 12.3h-1c-.2 0-.2 0-.3-.2-.2-.7-.5-1.5-.7-2.2 0-.1-.1-.2-.3-.2H13c-.2 0-.2.1-.3.2-.2.7-.4 1.5-.6 2.2 0 .1-.1.2-.2.2h-1.1c-.2 0-.2-.1-.2-.2.4-1.3.7-2.6 1.1-3.9.4-1.5.9-3.1 1.3-4.6.1-.2.1-.3.3-.2h1.5c.1 0 .2 0 .2.2.5 1.5.9 3.1 1.4 4.6l1.2 3.9c.1.2.1.2-.2.2zm3-.5c0 .5 0 .5-.5.5h-.7c-.2 0-.2 0-.2-.2v-6.5c0-.2.1-.3.2-.2h.9c.2 0 .2.1.2.2.1 2.1.1 4.2.1 6.2zm-.7-7.1c-.4 0-.8-.3-.8-.7 0-.4.3-.8.8-.8.4 0 .8.3.8.7 0 .5-.3.8-.8.8z"/><path d="M14.2 13.3c0-.1-.1-.1-.2 0 0 .1-.1.2-.1.3-.2.9-.4 1.8-.7 2.6 0 .1 0 .2.1.2h1.4c.2 0 .2-.1.1-.2-.1-1-.3-2-.6-2.9z"/></svg>', photoshop: '<svg viewBox="0 0 32 32"><path d="M25 7.4V7H7v18h17.5c.4 0 .5-.1.5-.5V7.4zm-10.6 9.7c-.8.2-1.4.2-2.4.3V21h-1.8c-.1 0-.2-.3-.2-.5V11c0-.1 1-.2 1.5-.2.9 0 1.8 0 2.6.1 1.7.2 2.6 1.3 2.7 2.8.1 1.7-.8 3-2.4 3.4zm7.7 2c-.1.9-.6 1.5-1.4 1.8-1.2.5-2.4.4-3.6-.1-.1 0-.2-.2-.2-.3.1-.4.2-.8.3-1.1.7.1 1.4.3 2 .4.4.1.8-.1.9-.6.1-.4-.1-.7-.6-1-.3-.2-.7-.3-1-.4-1.1-.5-1.6-1.2-1.5-2.3.1-.9.8-1.6 1.9-1.9.9-.2 1.8-.1 2.6.2.1 0 .3.3.2.4-.1.4-.2.7-.3 1.1-.5-.1-1-.2-1.4-.3-.2 0-.5 0-.7.1-.5.2-.6.8-.2 1.1.2.2.4.2.7.4.3.2.7.3 1.1.5.8.3 1.2 1 1.2 2z"/><path d="M13.9 12.5c-.6-.1-.9-.1-1.9-.2v3.4c1 .1 1.4.1 2.1-.2.7-.3.8-1 .8-1.6 0-.7-.4-1.2-1-1.4z"/></svg>', pdf: '<svg viewBox="0 0 32 32"><path d="M7 22.9c.1-.6.5-1 .9-1.4.5-.5 1.1-.8 1.8-1.2.7-.4 1.4-.7 2.1-1 .1 0 .2-.1.2-.2.6-1.2 1.2-2.4 1.7-3.6.3-.7.5-1.4.8-2.1v-.1c-.3-.7-.6-1.5-.7-2.3-.2-.8-.2-1.6-.1-2.4.1-.5.4-.9.8-1.3.1-.1.3-.1.5-.1h.8c.2 0 .4.1.5.3.3.2.5.5.7.8.2.4.2.8.3 1.2 0 1.2-.2 2.3-.4 3.4-.1.4-.2.7-.3 1.1v.1c.6 1.1 1.4 2.1 2.2 3 .1.1.1.1.3.1 1.1-.2 2.2-.2 3.2-.2.6 0 1.3.1 1.9.4.3.2.6.4.8.7.1.2.2.4.2.6v.7c0 .2-.1.4-.3.5-.2.2-.4.5-.8.5-.2 0-.5.1-.7.1-1.6.1-2.9-.4-4.2-1.3-.2-.2-.5-.4-.7-.6-.1 0-.1-.1-.2-.1-.6.1-1.2.2-1.8.4-.8.2-1.6.5-2.4.7-.1 0-.1.1-.2.1-.5.9-1.1 1.8-1.7 2.6-.5.6-1.1 1.2-1.7 1.7-.3.2-.7.4-1.1.5h-.8c-.2 0-.3 0-.5-.1-.5-.2-.9-.6-1-1.1-.1 0-.1-.2-.1-.4zm8.8-7c-.3.8-.7 1.6-1 2.4l2.4-.6c-.5-.6-1-1.3-1.4-1.8zm4.3 2.6c.6.4 1.3.7 2 .9.3.1.5 0 .7-.1.2-.1.3-.4.1-.5 0-.1-.1-.1-.2-.1-.2-.1-.5-.1-.8-.2-.6-.1-1.2-.1-1.8 0zm-9.4 2.8s-.1 0 0 0c-.6.3-1.2.7-1.7 1.1-.3.2-.5.5-.7.8v.2c.1.1.1.1.2.1.3-.2.5-.4.7-.5.6-.5 1-1.1 1.5-1.7zM15 11.2c.1 0 .1 0 0 0 .2-.6.3-1.2.3-1.7 0-.3 0-.6-.1-.9 0-.1-.1-.1-.2-.1s-.1.1-.2.1c-.2.3-.2.6-.2 1 0 .3 0 .5.1.8.2.2.2.5.3.8z"/></svg>', font: '<svg viewBox="0 0 32 32"><path d="M21.1 18.3h-3.3l-.4.9c-.1.3-.2.5-.2.7 0 .3.1.5.3.6.1.1.4.1.9.2v.3h-3.1v-.3c.3-.1.6-.2.8-.4s.5-.7.8-1.4l3.3-7.4h.1l3.3 7.6c.3.7.6 1.2.8 1.4.2.1.4.2.7.2v.3h-4.5v-.3h.4c.4 0 .6-.1.8-.2.1-.1.2-.2.2-.3v-.3s-.1-.2-.2-.5l-.7-1.1zm-.2-.6l-1.4-3.2-1.4 3.2h2.8z" opacity=".6"/><path d="M6.7 22.4c.5 0 .9-.3 1.2-.7.2-.3.5-.8.8-1.7l4.4-10.9h.6l4.5 10.5c.5 1.2.9 1.9 1.1 2.3s.6.5 1.1.5v.5h-6.5v-.5c.7 0 1.1-.1 1.3-.2.2-.1.3-.3.3-.6 0-.2-.1-.4-.2-.7-.1-.2-.2-.4-.3-.7l-.5-1.2H10c-.3.8-.5 1.3-.6 1.6-.2.5-.3.9-.3 1.1 0 .3.2.5.6.6.2.1.6.1 1 .1v.5h-4v-.5zm7.5-4.2l-1.9-4.6h-.2l-1.8 4.6h3.9z"/></svg>', image: '<svg viewBox="0 0 32 32"><path d="M21.3 17.2c1 0 1.8-.8 1.8-1.8s-.8-1.8-1.8-1.8-1.8.8-1.8 1.8.8 1.8 1.8 1.8zm-11.1-5.5v12.4h15.3V11.7H10.2zm.7.7h13.9v10.8l-3.6-4.1-2.2 2.6-4.4-4.7-3.7 4.6v-9.2zm9.8-4.5H6.5v10.8h1.9V9.6h12.3V7.9z"/></svg>', svg: '<svg viewBox="0 0 32 32"><path d="M11.5 11.4H17c0-2-2.3-4.9-5.1-4.9s-5.3 2.4-5.3 5.2 2.9 5.2 4.9 5.2v-5.5z" opacity=".5"/><path d="M13.6 13.7h11.8v11.8H13.6z"/></svg>', sublime: '<svg viewBox="0 0 32 32"><path d="M25 15.4v-.5c-.2-1.2-.6-2.4-1.2-3.5-.6-.9-1.3-1.7-2.1-2.4-.7-.6-1.4-1-2.2-1.3-2.6-1-5.2-.9-7.7.4-1.4.8-2.5 1.8-3.4 3.2-.9 1.4-1.4 2.8-1.4 4.5v1.1c.2 1.5.6 2.8 1.4 4.1.7 1 1.5 1.9 2.6 2.6.6.4 1.3.8 2.1 1 1.3.4 2.7.6 4 .4 3.3-.5 5.7-2.3 7.1-5.3.7-1.4.9-2.8.8-4.3zm-6.8 4.8c-.8.4-1.6.4-2.4.4-1.2 0-2.2-.4-3.2-1-.2-.1-.2-.2-.1-.3l.6-1.2c.1-.1.1-.1.2-.1.8.6 1.7.9 2.7 1 .3 0 .6 0 .9-.1.4-.1.6-.4.7-.7 0-.3-.1-.6-.5-.8-.6-.3-1.2-.5-1.8-.7-.7-.2-1.5-.4-2-1-.4-.4-.5-1-.5-1.6.1-1.6 1.2-2.4 2.5-2.6 1.4-.2 2.6.1 3.7.8.1.1.1.2.1.3-.2.4-.4.7-.6 1.1-.1.2-.1.1-.3.1-.8-.5-1.6-.8-2.6-.7-.2 0-.4.1-.6.1-.3.2-.5.4-.5.8 0 .3.1.6.4.8.3.2.6.3.9.3.6.2 1.2.3 1.9.5.1-.1.2-.1.4-.1-.1 0-.3 0-.4.1.2.1.5.2.7.3 0 0 .1 0 .1.1 0 0 .1 0 .1.1.1.1.2.1.2.2l.1.1c.9.8 1 3-.7 3.8z"/></svg>', "code-search": '<svg viewBox="0 0 32 32"><g class="layer"><path d="M18.381 5.225c-1.371 0-2.714.4-3.866 1.153a7.18 7.18 0 00-2.628 3.093 7.282 7.282 0 00-.547 4.04 7.241 7.241 0 001.709 3.694l-6.963 7.999.966.873 6.946-7.964a7.08 7.08 0 003.055 1.402 7.038 7.038 0 003.35-.17 7.1 7.1 0 002.901-1.703 7.214 7.214 0 001.809-2.858 7.285 7.285 0 00-.936-6.53 7.143 7.143 0 00-2.536-2.22 7.05 7.05 0 00-3.26-.8v-.009zm0 13.098a5.775 5.775 0 01-3.235-.993A5.88 5.88 0 0113 14.685a5.96 5.96 0 01-.331-3.406 5.916 5.916 0 011.594-3.018 5.803 5.803 0 012.982-1.613 5.76 5.76 0 013.365.336 5.84 5.84 0 012.614 2.17c.64.97.982 2.11.982 3.275a5.93 5.93 0 01-1.706 4.168 5.79 5.79 0 01-4.119 1.726z"/><path d="M18.404 6.514c-1.138 0-2.251.33-3.207.95a5.93 5.93 0 00-2.179 2.55 5.974 5.974 0 00.963 6.379l-5.774 6.595.801.72 5.76-6.566a5.869 5.869 0 007.717-.389 5.944 5.944 0 001.5-2.357 5.975 5.975 0 00-.775-5.384 5.914 5.914 0 00-2.103-1.832 5.874 5.874 0 00-2.703-.659v-.007zm0 10.8c-.956 0-1.89-.285-2.684-.819a4.854 4.854 0 01-1.779-2.18 4.888 4.888 0 011.047-5.297 4.802 4.802 0 015.264-1.054c.883.368 1.637.99 2.168 1.79a4.882 4.882 0 01-.601 6.137 4.815 4.815 0 01-3.415 1.423z"/><path stroke-dasharray="null" stroke-linecap="null" stroke-linejoin="null" stroke-width="null" d="M5.64 24.78l7.88-8.967 2.261 1.988-7.88 8.967z"/></g></svg>', salesforce: '<svg viewBox="0 0 32 32"><path d="M12.4 10.4c.6.1 1.2.3 1.7.7.2.2.4.3.5.5h.1c.2-.2.4-.3.6-.5.2-.1.5-.2.7-.3.1 0 .2 0 .4-.1h.6c.4 0 .7.1 1 .3.5.3.8.6 1.1 1.1 0 .1.1.1.1 0 .3-.1.5-.2.8-.2h.8c.4 0 .9.2 1.3.4.3.2.6.3.8.6.3.3.5.6.7 1 .2.3.3.7.3 1.1v.8c0 .5-.2.9-.4 1.3s-.5.8-.8 1.1c-.2.2-.5.4-.8.5l-.9.3h-1.3c-.2.4-.5.6-.8.9-.3.2-.6.3-1 .4h-.6c-.3 0-.5-.1-.8-.2h-.1c-.1.3-.3.5-.5.8-.2.3-.5.5-.8.6-1.2.6-2.7.3-3.6-.9-.2-.2-.3-.4-.4-.7 0-.1-.1 0-.1 0h-.7c-.3 0-.5-.1-.7-.1-.3-.1-.5-.2-.8-.4-.3-.3-.6-.6-.8-1 .1-.4.1-.7 0-.9v-.6c0-.3.1-.6.2-.8.1-.2.2-.4.4-.6.1-.1.2-.2.2-.3.2-.2.3-.3.5-.4 0 0 .1 0 0-.1-.1-.2-.2-.4-.2-.7v-.9c.2-1.5 1.4-2.7 2.9-2.8h.2c.1.1.2.1.2.1z"/></svg>', shell: '<svg viewBox="0 0 32 32"><path d="M6.726 7.237v17.8h18v-17.8zm2.8 2.3l1.899 1.5-1.899 1.6zm0 4.6h11.6v1.301h-11.6zm0 3.7h7.3v1.3h-7.3zm0 3.601h9.7v1.299h-9.7z"/></svg>', video: '<svg viewBox="0 0 32 32"><path d="M16 25c-4.9 0-9.1-4.1-9-9.2C7.1 11 11 7 16.1 7c4.9 0 9 4.1 8.9 9.2-.1 4.8-4.1 8.8-9 8.8zm-3.2-14.6v11.1h.1l8.1-5.4c.1-.1.1-.1 0-.1-2.7-1.8-5.4-3.6-8.2-5.4.1-.1.1-.2 0-.2z"/></svg>', audio: '<svg viewBox="0 0 32 32"><path d="M16.3 23.8c-.2 0-.4-.2-.6-.3-1.5-1.3-3-2.6-4.6-3.9-.1-.1-.1-.1-.2-.1H6.7c-.4 0-.6-.2-.7-.5v-5.7c0-.5.3-.8.8-.8H11c.1 0 .2 0 .2-.1 1.5-1.3 3.1-2.7 4.6-4 .4-.3.8-.3 1.1.1.1.1.1.3.1.4V23c0 .3-.1.6-.4.7-.1 0-.1 0-.2.1h-.1zm9.7-7.7c0 .3 0 .6-.1.9-.1 1.2-.4 2.4-.9 3.6-.4 1-.9 1.9-1.6 2.7-.1.2-.3.3-.6.4-.3 0-.5-.1-.7-.3-.2-.2-.2-.5 0-.7.1-.2.3-.4.4-.6 1-1.4 1.6-2.9 1.8-4.5.4-3-.3-5.7-2.2-8.1-.2-.3-.3-.6 0-.9.3-.4.8-.4 1.2 0 .7.9 1.3 1.8 1.7 2.9.5 1.2.8 2.5.9 3.8v.7c.1 0 .1.1.1.1z"/><path d="M23.3 15.9c0 2.1-.6 3.9-1.7 5.5-.1.2-.3.3-.6.4-.3 0-.5-.1-.7-.3-.2-.2-.2-.5 0-.8 0-.1.1-.1.1-.2.8-1.1 1.2-2.2 1.4-3.5.3-2.1-.2-4-1.5-5.8-.1-.2-.2-.4-.2-.6.1-.3.2-.5.5-.6.3-.1.6 0 .8.3.3.4.6.9.9 1.4.5 1.1.9 2.3.9 3.5.1.4.1.6.1.7z"/><path d="M20.5 16c0 1.2-.3 2.4-1 3.4-.2.4-.6.5-1 .3-.3-.2-.5-.6-.2-1 .4-.6.6-1.3.7-2 .2-1.2-.1-2.4-.7-3.4-.2-.4-.1-.8.2-1 .3-.2.8-.1 1 .2.4.6.6 1.2.8 1.9.1.6.2 1.1.2 1.6z"/></svg>', windows: '<svg preserveAspectRatio="xMidYMid" viewBox="0 0 32 32"><path d="M6 8.81l8.173-1.114.004 7.884-8.17.047L6 8.81zm8.17 7.68l.006 7.89-8.17-1.124v-6.82l8.163.053zm.99-8.94l10.837-1.58v9.51l-10.837.086V7.55zM26 16.564l-.003 9.468L15.16 24.5l-.015-7.955L26 16.563z"/></svg>', jenkins: '<svg viewBox="0 0 1200 1000"><path d="M637.9 394c1.9 0 3.7-.2 5.6-.3 21.2-1.1 39.2-10.7 56.4-22 1.1-.7 1.9-2.3 2.4-3.6 1.1-3 1.6-6.2 2.8-9.2 2.7-6.6.5-11.2-4.6-16-15.2-14.3-28.3-30.5-39.2-48.2-3.4-5.5-5.4-11.9-8.3-17.8-.8-1.6-2.8-2.7-4.2-4-.5 1.6-1.5 3.2-1.5 4.8 0 2.7.4 5.4 1 8 3.1 15.1 11.2 27.8 20.6 39.7 6.4 8.1 13 16 19.9 23.7 6 6.7 4.5 18.4-4.6 21.3-5.1 1.6-9.8 4.6-14.8 6.7-8.9 3.7-17.7 7.6-27.7 7.4-7.7-.2-10.8-2.5-12.7-9.8-.7-2.8-1.5-5.5-2.4-8.5-5.1 5.8-5.3 12.8-2 21.2 2.6 6.6 7.8 6.7 13.3 6.6zm-47.5 21.7c6.2 6.9 14.2 10.6 22.9 13.3 14.2 4.3 28.7 6 44 5 0-4.2-.1-7.7 0-11.3.1-4.7-1.8-6.3-6.7-6.4-12.5-.2-25.1-.5-37.5-1.8-9.1-1-17.9-3.7-27.5-5.7 1.6 2.4 3 4.9 4.8 6.9zM573.1 305c-4.7-.4-7.7 2.2-6.1 6.7.9 2.4 3.1 5.1 5.4 6.2 9.6 4.3 19.8 5.4 29.6 1.4 11.8-4.7 12.4-14.3 9.7-24.5-2.6-10.2-18.8-32-22.6-30.5-6.4 3.3 9.4 34 7.3 39.6-.2 3.3-15.6 1.8-23.3 1.1zm-30-43.9c.9-1.9 1.7-3.5 2.5-5.1 8.3-15.7 20.9-28.6 42.5-24.5 3.5.7 4.6-1 4.8-4 .3-4.7-4-9.6-9.7-10.8-8.5-1.9-16.1.4-23.1 5.2-11.2 7.7-20.1 17-21.7 31.3-.2 3.2-.2 6.5 4.7 7.9zm123.1 154.1c-1 .1-2.4 2-2.5 3.1-.3 4.7-.1 9.4-.1 14.3 20.9.7 38.8-14.8 47.5-35.2-1.2.3-2.2.4-3 .8-13.4 6.9-26.3 15.2-41.9 17zm32-101.9c10.2 1.2 18.9-2.2 26.4-9 2.6-2.3 2.7-4.4 1-7.5-4.4-8-12.7-34.6-17.3-33.5s.8 17.8 4.2 25.9c3.3 7.8 2.6 9-6 9.7-2.4.2-15.5-2.3-17.3 2.1-2 4.5 2.6 11.5 9 12.3z"/><path d="M827 655.2c-7.8-26.9-23.9-34.2-50.6-27.9-11.4 2.7-22.2 8.1-33.3 12.3-1.7.6-3.4 1.3-6 2.4 1.1-3.1 1.8-5.3 2.6-7.5 11.8-35.5 23.7-70.9 35.4-106.4 5.2-15.6 1.7-28.6-11.6-38.7-7.8-6-15.3-12.3-22.9-18.6-2.9-2.4-5.8-4.8-8.4-7.4-9.4-9.2-9.7-10.8-3.1-22 12.9-22.2 19.1-46.6 23.3-71.5 4.9-28.6 7.4-57.5 6.2-86.6-1.3-33-8.2-64.5-28.3-91.7-26.4-35.6-61-57.4-105.5-62.4-3.2-.4-6.3-.8-9.5-1.2h-22.4c-8.7 1.3-17.4 2.5-26 3.9-31.6 5.4-60.6 17.8-87.8 34.5-4 2.5-8 5.1-12 7.5-15.1 9.2-26.1 21.8-32.3 38.6-1 2.7-3.4 5.3-5.9 7-14.6 9.8-20.3 24.3-20.9 40.8-.6 13.9.6 27.8.6 41.7 0 2.8-1.4 5.7-2.3 8.4-2.4 6.8-6.1 13.4-7 20.4-3.2 25.2 2.8 48.1 20.1 67.3 6.1 6.8 14.4 10.6 23.1 13.3 3.3 1 5.1 2.6 5.6 6.1 1.8 11.9 6.4 22.7 13.2 32.7 1.7 2.6 3 5.8 3.5 8.8.9 5.2-1 8.9-6.1 12-23.3 14.1-46.4 28.7-69.5 43.1-2.3 1.4-4.7 2.6-7.3 3.5-8.9 3.1-16.1 7.8-18.9 17.4v7.1c8.6 23.3 17.9 46.3 25.5 69.8 9 27.5 12.3 56.1 14.1 84.9.9 13.9 1.3 27.7 1.8 41.6.2 6.7 3.6 11.4 9.3 13.9 20.4 9.1 40.8 18.1 61.3 26.8 11.2 4.7 23 6.9 35.2 6 3.4-.2 4.5 1 5.5 4.2 7.3 23.2 14.9 46.3 22.3 69.5 1 3.1 2.6 4.7 5.9 5.3 13.2 2.2 26.3 4.5 39.4 6.8 1.5.3 2.9.6 4.4.9h41.7c7.6-.7 15.2-1 22.7-2.2 7.4-1.2 15-2.8 22-5.4 8.2-3.1 11.5-9.6 10.2-18.7-1.4-10.2-1.1-10.2 8.7-12.8 18.1-4.8 22-11.3 18.2-29.4-2.2-10.8-4-21.6-5.9-32.4-.4-2.5-.2-5.1-.2-7.6 0-3.6 1.4-5.8 5.1-6.9 4.1-1.2 6.7-4.3 7.6-8.7.3-1.4 1.4-3.2 2.6-3.8 10.7-4.9 22-6.4 33.7-5.3.8.1 2 .4 2.2.9 2.9 8.1 10.3 8.3 16.8 8.7 10.4.7 21 1.1 31.3.1 17.5-1.7 25-14.4 29.4-29.5 1.3-4.5 2.1-9.2 3.1-13.8v-12.2c-3.1-12.5-6.3-25.1-9.9-37.6zM480.5 463.5c-7.7-16-14.3-32.4-17.5-50.1-.9-5.1.4-8.8 3.9-12.4 2.3-2.4 4.7-5 6.1-7.9.8-1.8.1-4.6-.8-6.6-.3-.6-3.7-.2-5.4.5-2.3.9-4.4 2.5-6.5 3.9-9.2 6.4-16.8 6.7-26.1.4-11.9-8-17.9-19.9-21.4-33.4-3-11.5-2.7-22.6 4.4-32.6 7.3-10.3 17.3-15.6 30.1-14 8.2 1 13.2 6.6 16.3 13.7 2 4.5 3.2 9.3 4.4 14 .7 2.8 2 4 4.9 3.6 3.7-.5 7.5-.5 11.1-1.4 8-2 10-5.5 8.2-13.7-1.8-7.9-4-15.8-5.5-23.7-2.1-10.7-.1-21.2 1.8-31.7 2.2-11.8 4.4-23.6 5.4-35.6.5-6.2-1.9-12.6-2.7-18.9-.3-2.4-.3-5.4.8-7.4 7.1-13.7 17.8-24.4 30.3-32.9 14.2-9.7 29-18.6 44.2-26.6 14.7-7.8 31.1-7.8 47.3-6.2 22.2 2.2 43.3 8.9 63.2 19.1 13.3 6.8 23.1 17.5 32.4 28.8 4.6 5.6 8.9 11.4 14.1 18-10.4-1.2-20-2-26.4 6.6-2.2 3-2.9 7.1-3.6 11.3 10-6.4 19.8-5.9 29.5-1.1 9.3 4.5 16.6 11.2 20 21.2 1.9 5.7 3.5 11.8 4 17.8 2.4 24.7 3.9 49.4 1.4 74.1-3.4 32.4-11 63.8-28.4 91.8-7.5 12.1-15.4 24.7-25.7 34.2-13.8 12.8-31.5 19.8-50.1 24.3-14.1 3.4-27.9 3.7-41.6-.8-15.2-5-28.9-12.9-41-23.7-14.1-12.6-25-27.9-36.1-43-.5-.7-1-1.3-1.6-2.1-.9 4.5.8 11.1 3.9 16.8 7.9 14.2 19.1 25.8 30.6 37 5.5 5.4 11.8 10 18.5 15.5-4.7 0-54.8 4.3-67.6 1.1-14.6-3.5-22.6-15.1-28.8-27.9zm134.4 107c13.5 12.4 33.1 52.6 40.2 69.9-6.4-1.8-12.3-2.9-17.8-5.1-17.9-7.2-35.5-14.7-53.3-22.1-2.9-1.2-3.6-3.3-2.3-5.6 3.6-6.4 6.7-13.4 11.6-18.7 6.3-6.9 14.2-12.3 21.6-18.4zm37.7 33.1c-6.1-12.4-13.1-24.3-19.6-36.5-1-1.8-2.1-4.4-1.5-6 1.1-2.6 2.8-5.1 7-4 2.2.6 5.3-.8 7.6-2 6.1-3.3 11.3-2.4 16.9 1.7 4 2.9 8.8 4.7 14 7.3.3 15.7-2.1 65.6-8.6 74.7-5.3-12.1-10.1-23.8-15.8-35.2zM636.1 850c-19.9 2.4-39.8 1.8-59.5-1.6-7.5-1.3-14.9-3.1-22.2-5-1.6-.4-3.6-2-4-3.5-6.3-23.4-13.4-46.7-18.2-70.4-5.2-25.5-8.3-51.5-12.2-77.3-.2-1.3-.2-2.7-.3-4.8 7.4-1.3 14.4-2.8 21.4-3.8 27.6-3.9 55.3-6.3 83.2-4.8 8.3.4 16.6 1.9 24.9 2.8 2.7.3 3.1 1.9 3.3 4 1 15.5 2.2 30.9 3.1 46.4 1.7 29.4 3.1 58.9 4.9 88.3.5 8 2 15.9 3.2 24.8-9.2 1.7-18.3 3.8-27.6 4.9zm55.4-31.6c-4.7 1.1-9.5 2.1-15.2 3.4-.9-19.8-1.7-38.6-2.6-57.7 5.3-1.3 9.4-2.5 13.5-3.1 1.3-.2 3.9 1.2 4 2.1 2.7 14.9 5.5 29.9 7.4 44.9 1.1 8.9 1.2 8.5-7.1 10.4zm-10-180.9c-.1.2-.6.3-.3.2 2.2-18 4.6-36.3 6.7-54.5.6-5 .8-10.1.8-15.2-.1-4 2.3-5.3 5.4-6.1 8.7-2.2 20.5 2.8 25.1 10.6.6 1 .8 3 .2 4-12.6 20.4-25.2 40.7-37.9 61zm110 90.2c-7.2.3-14.3.9-21.4-.7-.1-.5-.1-1.1-.2-1.6 8.1-1.8 16.1-3.6 24.2-5.4 0-.4 0-.7.1-1.1-2.9-.5-5.8-1.5-8.6-1.5-9.8.2-19.5.7-29.3 1.1-5.9.2-5.7 0-6.5-5.9-2-15.1-4.3-30.1-6.3-45.1-.2-1.2.8-3.4 1.9-3.9 7.2-3.5 14.6-6.8 21.9-10 4.8-2.1 10-3.6 14.6-6 9.5-4.9 20.4-1.9 23.7 8.3 4.4 13.7 8.8 27.8 10.6 42 1.7 15.2-8 29.1-24.7 29.8z"/><path d="M710.4 223.7s12.9 2.2 24.7 20.6 12.3 50.9 12.3 50.9.5 28.9-3.1 58.1c-8.7 67.3-61.4 122.8-61.4 122.8l35.7-29.9 25.7-51.3 9.2-60.6v-60.6l-8.4-50.2-32-7.8-2.7 8z"/></svg>', babel: '<svg viewBox="0 0 32 32"><path d="M22.36 12.38l1.876-1.687A4.99 4.99 0 0025 8.023v-.211c0-.211-.07-.422-.139-.563-.347-.703-.973-1.195-1.737-1.476-.695-.492-1.946-.703-3.753-.773-2.016.281-3.962.773-5.769 1.546-.695.492-1.46.984-2.224 1.406v.14c.07 0 .14-.07.209-.07s.139 0 .139.07l.139-.07h.07v.07s-.07.141-.348.282c-.278.14-.695.492-1.251.914l.208.14-.139-.07c0 .07-.07.07-.208.07v.07l.139.211c-.07 0-.14 0-.209-.07-.417.07-.764.351-.973.703v.281c.14-.14.278-.281.487-.422v.211h-.07l-.139.07v.07l.14.212v.07a.97.97 0 01.208-.281l.208-.211.14-.14.138-.141.07-.07.347-.211c.209.07.278.14.278.21h.14c1.042-.773 2.154-1.405 3.335-1.827v.14c-.07.141-.208.282-.278.352s-.07.07-.139.07c0 .07.07.211.14.281-.418 1.336-.904 2.601-1.53 3.796A97.162 97.162 0 017 25.032c0 .07.07.14.07.21l.208-.07c.208-.07.347-.14.486-.21h.07v.14h.139l.139-.07h.139v.281c-.07.14-.139.352-.209.492-.208.352-.417.703-.486 1.125V27h.208l.209-.281c.486-.562.903-1.125 1.181-1.757l.695-.211c.487-.14.904-.281 1.251-.422l.14-.07c.694-.281 1.39-.563 2.084-.914.765 0 1.599-.281 2.224-.773v-.07l-.347.14h-.07v-.14c.556-.07 1.043-.211 1.46-.492a130.306 130.306 0 013.127-2.32c2.155-1.617 3.197-3.163 3.128-4.639-.348-.562-.765-1.124-1.251-1.546l-.209-.281c0-.14.278-.422.973-.844zm-3.337 5.342l-1.946 1.546c-.764.492-1.529.984-2.293 1.406a20.566 20.566 0 01-3.962 1.898c-.07 0-.208.07-.278.07h-.07c.07-.281 1.113-2.32 3.059-6.255 1.39-.211 2.78-.633 4.03-1.195l.487-.07c.765-.141 1.53.07 2.085.562v.28c-.347.985-.695 1.547-1.112 1.758zm1.182-6.396a7.49 7.49 0 01-1.668 1.265c-1.112.351-2.224.773-3.267 1.336-.07 0-.07 0-.139-.07h-.208v-.141c0-.352.139-.774.347-1.055.14-.773.278-1.265.487-1.335l1.598-3.585c0-.21.348-.422 1.043-.492h.208v.211c.695-.14 1.112-.14 1.251-.14 1.182-.141 1.807.14 1.946.632v.14h.14v-.491h.138c.278.14.487.351.556.632v.14c0 .282-.139.563-.347.774-.07 0-.14-.07-.14-.21h-.138v.42c-.626.985-1.112 1.477-1.39 1.477a4.194 4.194 0 01-.417.492z"/></svg>', bower: '<svg viewBox="0 0 32 32"><path d="M25.1 15.5c-.3-.1-.6-.3-1-.4-1.8-.5-3.6-.7-5.4-1-.3 0-.6-.1-1-.1.1-.5.3-.7 1-.8.1.1.1.3.2.4 0 .1.1.2.2.1h.7c1.2-.2 2-.8 2.5-2 .1-.4.2-.8.3-1.1.1-.8.4-1.6 1-2.2l.2-.2c-1.4-.4-3.9.5-4.9 2.6-.2-.1-.5-.1-.7-.2-.1 0-.2-.1-.2-.2-.4-1.1-1.1-2-2.2-2.7-.8-.5-1.9-.6-2.8-.5-2.1.3-3.8 1.3-5.1 2.9S6 13.7 6.1 15.7c.1 2.1.8 4.1 2 5.9.4.6 1.1 1.2 1.6 1.7.7.4 1.6.4 2.2-.2.1-.1.2-.3.3-.4 0 .1.1.1.1.2.2.4.3 1 .5 1.3.2.4.9.7 1.4.5.1-.1.2-.1.3 0 .4.2.8.2 1.2 0 .2-.1.3-.3.5-.3.2-.1.4 0 .6 0 .5-.1 1-.3 1-1 0 0 0-.1.1-.1.2-.1.4-.3.4-.5.1-.3.1-.6 0-1-.3-.5-.6-1.2-1-1.7l-.1-.1c.3.1.6.2 1 .3.5.1 1 .1 1.4-.3.1 0 .1.1.2.1.8.5 1.9.3 2.5-.4h.2c.6.1 1.1 0 1.6-.4.2-.2.4-.4.4-.7v-.1c1-.1 1.5-.5 1.5-1.5-.1-.7-.3-1.2-.9-1.5zm-4.4-2.7c-.4.2-.8.3-1.4.3 0 0-.1 0-.1-.1-.1-.2-.1-.4-.2-.6 0-.1 0-.1.1-.1.3 0 .4 0 .4.4.2-.3.2-.3.5-.2.2.1.4.1.6.2.2.1.2.1.1.1zm-1.3-2.1c.4-.7 1-1.2 1.5-1.6.5-.3 1-.5 1.6-.5-.1.1-.2.2-.3.4-.3.4-.3 1-.4 1.4-.1.5-.2 1-.4 1.5 0 .2-.2.3-.2.4-.3-.3-.6-.5-1-.8v-.2c.4-.7.8-1.5 1.5-2-1 .4-1.4 1.1-1.9 2-.2-.1-.3-.2-.5-.3 0-.1.1-.2.1-.3zm-2.7 1.7c0-.5.1-1 .4-1.4 0-.1.2-.1.2-.1 1 .1 1.8.4 2.6 1 .2.1.3.3.5.4-.2-.1-.5-.1-.7-.2-.5-.1-1.1-.1-1.6.1-.4.3-.9.3-1.4.2.3.3.6.3 1 .2.3 0 .5-.1.8-.2 0 .1-.1.2-.1.2-.4.3-1 .5-1.5.7h-.1c-.1-.3-.1-.6-.1-.9zm-3-2.4c.9 0 1.8.8 1.8 1.8s-.8 1.8-1.8 1.8-1.8-.8-1.8-1.8c0-1.1.8-1.8 1.8-1.8zm4.6 6.1c.4.1 1 .2 1.4.2.6.1 1.1.2 1.8.3.2 0 .3.1.1.3-.2.3-.7.5-1.1.4h-.2c.1.2 0 .5-.2.6-.3.3-.6.4-1 .4-.2 0-.5-.1-.7-.1-.1.6-1.2.8-1.9.3.1.3.2.6.3 1v.3c-.2 1.5-1.4 2.6-2.9 2.7-1.4.1-2.8-.3-4-1.2-1.1-.7-1.9-1.7-2.4-2.8 0-.1-.1-.1-.1-.2.4.1.8.2 1.1.3.7.1 1.4.1 2.1-.4h.2c.7.2 1.4.3 2.2.2 1.1-.2 1.9-.8 2.7-1.7.3-.3.5-.7.7-1.1.2-.3.4-.5.6-.7h.2c.8.1 1.6.2 2.5.3 1.1.2 2.1.4 3.3.6 0 0 .1 0 .1.1-1.5.1-3.2.3-4.8.2zm-4.6-3.3c.6 0 1.1-.4 1.1-1s-.5-1-1.1-1c-.6 0-1.1.5-1.1 1s.4 1 1.1 1zm-.6-1.8c.1-.1.3-.1.5-.2.2.1.3.1.5.2s.2.3 0 .5-.7.2-1.1 0c-.1-.2-.1-.4.1-.5z"/></svg>', docker: '<svg viewBox="0 0 32 32"><g><path d="M14.5 8.6h2v2h-2zm0 2.3h2v2h-2zm0 2.4h2v2h-2zm-2.3-2.4h2v2h-2zm0 2.4h2v2h-2zm-2.4-2.4h2v2h-2zm0 2.4h2v2h-2zm-2.3 0h2v2h-2zm9.4 0h2v2h-2z"/><path d="M27.1 13.6c-.4-.1-.9-.2-1.3-.2-.5.1-.8-.1-1-.6-.2-.5-.5-.9-.9-1.2-.6-.7-1.2-.5-1.5.3-.2.7-.2 1.5-.1 2.2.2.9.1 1.1-.8 1.3-1.1.3-16.3.2-16.3.2-.2 0-.3.5-.3 1s.1 2 .4 2.7c1 2.2 2.7 3.8 5.2 4H15c2.9-.1 5.2-1.5 7.2-3.6.8-.9 1.5-1.9 2-3 .2-.4.5-.6.9-.7.7-.1 1.3-.2 1.8-.6.1-.2.3-.4.4-.5.7-.5.6-1.1-.2-1.3zm-14.9 5.1c.4 0 .8.3.8.8s-.3.8-.8.8c-.4 0-.8-.3-.8-.8s.4-.8.8-.8zm-4.9 2.2c.8-.1 1.6.1 2.3-.1.9-.3 1.6-.2 2.1.8.3.6 1 .9 1.7 1.3-2.2.3-4.6-.5-6.1-2z"/></g></svg>', "code-climate": '<svg viewBox="0 0 1200 1000"><path d="M723.4 621.3c-26.8 25.7-53 50.8-79 76.1-6.3 6.1-9.5 1.7-13.6-2.3-48.1-46.2-96.3-92.4-144.4-138.6-3.7-3.5-7.4-6.9-11.9-11.2-20.9 19.9-41.3 39.2-61.6 58.7-31.1 29.9-62.4 59.8-93.2 90-6.9 6.8-11.4 7.4-18.7.1-24.5-24.4-49.7-48.1-79-76.3 6.7-4.7 13.7-8.2 19.2-13.4 75.1-71.7 150.1-143.6 224.9-215.8 6.3-6 10-6.7 16.6-.3 77.8 75.1 155.9 149.9 233.9 224.9 2.4 2.3 4.3 5 6.8 8.1zm4.9-321.7C812.1 380 894.7 459.2 978 539.2c-28.6 27.6-56.6 54.4-85.4 82.2-55-52.6-109.5-104.8-164.3-157.4-19.5 18.6-38.2 36.5-57.9 55.3-28.8-27.6-56.7-54.3-85.5-81.9 48.2-46.4 95.2-91.6 143.4-137.8z"/></svg>', eslint: '<svg viewBox="0 0 32 32"><path d="M21.8 7H10.5l-5.1 9 5.1 9h11.3l4.7-9-4.7-9zM16 23.3l-6.3-3.6v-7.1L16 8.7l6.3 3.9v7.1L16 23.3z"/><path d="M11.8 13.7v4.8l4.2 2.4 4.2-2.4v-4.8L16 11.1z"/></svg>', firebase: '<svg baseProfile="tiny" version="1.2" viewBox="0 0 512 512"><path d="M297.036 205.578l-36.334 33.809-33.716-68.005 17.446-39.108c4.416-7.84 11.621-7.855 16.037 0l36.567 73.304z"/><path d="M260.702 239.386L124.924 365.697l102.062-194.316z"/><path d="M336.776 153.901c6.491-6.239 13.202-4.111 14.912 4.729l35.342 205.375-117.157 70.215c-4.1 2.264-14.957 3.246-14.957 3.246s-9.91-1.185-13.687-3.281L124.92 365.69l211.856-211.789z"/><path d="M226.986 171.381L124.924 365.697l45.46-283.998c1.674-8.847 6.71-9.699 11.203-1.89l45.399 91.572z"/></svg>', firefox: '<svg viewBox="0 0 1200 1000"><path d="M883 466.6c-2.1-12.2-4.2-24.4-6.4-37.6-3.6 8.1-6.5 14.7-9.4 21.3-.7 0-1.3-.1-2-.1 5.8-56.6-7.8-106-52.1-144.9-.8 2.3-1.2 3.5-1.7 5-9.8-12.7-22-21.6-34.5-30.6-2.2 7.7.1 12.3 5.1 17 17.9 16.6 33.7 35.1 46.1 56.3 1 1.7 1.8 3.6 2.7 5.4-12.9-18.2-29.1-33-44.4-48.7-20.5-21.2-45.2-34.6-72.9-43.4-4.9-1.6-9.9-3.1-13.8-4.3 13.8 11.4 28.6 22.8 42.3 35.4 16.8 15.5 33.1 37.5 34.1 44-13.8-11.5-28.4-21.1-48.4-22.4 41.2 37 59.9 81.7 55.7 136.7-5.7-10.6-12.5-19-23.5-25.3.9 8.8 1.7 16.1 2.3 23.4 1.7 19.5 6.1 38.9 1.8 58.7-1.9 8.8-3.6 17.7-5.5 26.6-2.5-4.9-4.8-9.2-7.1-13.7-4.2 16.4-7.7 31.7-12.2 46.7-4.5 15.1-11.9 28.8-23.6 39.7-2.7 2.5-5.8 4.6-8.9 6.5-1.3.8-3.2.4-4.8.6-.1-1.4-.2-2.9-.2-4.3 0-.7.1-1.4.3-3.1-2.5.6-4.9.6-6.3 1.7-2.8 2.3-5.3 5.1-7.4 8.1-5 7-11.4 12.3-19.6 16.5.9-3.3 1.5-5.6 2.1-8.1-6.6 1.7-12.4 3.6-18.3 4.7-18.3 3.6-36.5 8.5-55.4 5.3-9.4-1.6-18.3-4.2-25.4-11.7h17.4c-1.9-1.9-4-3.3-6.3-3.9-9.4-2.4-19-4.1-28.3-6.8-7.3-2.1-15.1-4.2-21.4-8.3-7.4-4.8-13.7-11.4-20-17.7-22.2-22.1-28.2-49.5-24.1-79.5 2-14.6 4.2-29.5 17.1-39.8-6.5-4.7-13.5-7.2-21.2-7.5-20.6-.7-41.7 14.7-49.2 36.6-9.4 27.6-2 52 14.9 74.5 1.2 1.6 2.4 3.2 3.7 4.9-22.9-19.8-35.8-57.3-21.5-89.4 17.5-39.3 62.3-47.8 92.7-17.6 1.5 1.5 2.5 3.3 4.1 5.4 5.2-11.7 3.6-29.5-2.9-38.5-15.6-21.4-22.9-44.7-17.4-71.4 5.4-26.3 18.4-48.1 37.3-66.7 1.4-1.4 2.8-2.8 4.5-4.6-28.7-6-59.7 13.1-89 53.3 1.3-7.7 2.6-15.4 3.9-23.7-2.7-.6-5.5-1.5-8.3-1.8-30.3-3.8-57.4 3.7-81.1 23.3-24.4 20.2-39.1 46.6-48.2 76.3-4.3 14.1-8.3 28.4-12.4 42.6.4.1.7.2 1.1.3 2.2-3.4 4.4-6.9 7.6-11.7-5.2 29.4-8.1 69.7-6.4 86.2 1.9-5.9 3.8-11.7 5.7-17.5 8.3 61.3 30.9 115 73.5 159.6 40.7 42.5 122 88.5 151.9 86.5-3.5-2.4-7.3-5-11-7.6 9.2 1.6 17.6 4.7 26.2 6.9 11.1 2.8 22.3 4.8 33.5 7.2h17.5c-2.7-2.3-5.4-4.7-9-7.7 11.4-.6 21.6-.8 31.8-1.6 30.9-2.5 61.1-9 90.5-18.9 19.9-6.7 32.3-21.5 43.8-37.7 2.4-3.3 5.7-6.4 9.2-8.3 29.8-16.7 52.7-40.2 69.5-69.8 8.6-15.2 9.5-31.3 5.7-48-.7-3-.4-6.6.7-9.4 4.9-12 11-23.6 15.4-35.9 4.2-11.6 6.8-23.8 10.2-35.7.3-.9.6-1.8 1-2.7v-28c-.6-2.8-1-5-1.4-7.3z"/><path d="M500.1 517.4c-5.7 28.1 9.6 62 35.2 76.4 1.3.7 2.9 1 4.3 1.1 29.3 2.2 56-4.2 79-23.5 2.5-2.1 5.6-3.6 7.9-5.9 6.4-6.3 13.8-7.9 22.5-6.2 6.9 1.3 10.3-2.8 8.9-9.7-1.5-7.3-5.9-12.8-12.4-16.2-19.8-10.4-39.6-11.4-59.6-.1-4.8 2.8-10.1 5.2-15.5 6.5-14.2 3.5-28.1.9-40.9-5.3-10.1-4.8-19.7-11.4-29.4-17.1zM408.6 312c1.1-1.1 2.2-2.2 3.4-3.2 67.8-63 147.4-86.3 238-67.8 32.2 6.5 63.5 17.5 93.2 25.9-106.4-72.2-258.3-53.3-343.9 39 2.6 2.4 5.3 4.9 7.8 7.2.9-.6 1.2-.8 1.5-1.1zm183.6 74.8c.5-7.2-1.3-9.9-8.5-10.5-11.4-1-22.9-1.2-34.3-1.5-9.8-.3-19.6-.3-26.9-8.6-8.8 19-.4 54.9 14.8 67.8 13.4-7.5 26.1-15.3 39.5-21.9 11-5.4 14.7-14.3 15.4-25.3zM400.5 320c-13.3-11.3-19.6-25.3-21-43.1-20.8 23.3-26.4 50-28 78.5 14.1-14.8 29.7-27.2 49-35.4z"/></svg>', grunt: '<svg viewBox="0 0 32 32"><path d="M22.5 16.4c.4-.2.9-.4 1.3-.7.9-.6.9-1.7 0-2.1-.2-.1-.3-.3-.4-.6-.1-.6 0-1.1.3-1.6.7-1 .2-1.8-1.1-1.9h-.1l-.1-.1c-.1-.5-.2-.9.4-1.3.2-.1.5-.2.8-.3.2-.1.4-.1.5-.1 0-.1-.1-.1-.1-.1-.7-.8-1.7-1-2.6-.9-1.2.1-1.9.7-2.6 1.5-.1.2-.3.2-.5.1s-.2-.2-.2-.3c0-.2.1-.4.1-.6l.3-.6c-.6 0-1 .3-1.5.6-.3-.5-.3-.9-.1-1.4-.9.3-1.5.7-1.7 1.6-.3-.3-.2-.7-.2-1.1h-.1c-.1 0-.1.1-.2.1-.5.4-.8.9-.9 1.4 0 .1-.1.2-.1.3-.1-.1-.2-.1-.3-.2-.4-.3-.8-.7-1.2-1-1.2-.7-2.3-.7-3.5-.1l-.8.8c.4.2.8.2 1.2.4.7.2.9.6.6 1.4-.2 0-.4.1-.6.1-.7.2-1 .7-.9 1.3.1.3.3.6.4.9 0 .1.1.2.1.3v1c0 .2-.2.4-.4.6-.2.2-.5.4-.6.7-.3.5 0 1.1.5 1.5.4.3.8.5 1.3.7.6.3.8.7.8 1.2 0 .6 0 1.1-.1 1.7 0 .2-.1.5-.1.8-.6-.5-1-1-1.1-1.7-.6.5-.9 1-.9 1.6-.2 1.3.3 2.6 1.9 3.2.1 0 .2.1.3.2.6 1 1.5 1.6 2.7 1.8.1 0 .2 0 .2.1 1.1.7 2.2.8 3.4.7.7-.1 1.3-.2 1.8-.6.1-.1.3-.1.4-.2 1.2-.2 2-.8 2.6-1.7l.3-.3c.6-.2 1.1-.5 1.4-1 .5-.7.6-1.6.5-2.3-.1-.6-.4-1-.9-1.5-.2.7-.5 1.2-1.1 1.7-.1-.9-.1-1.8-.1-2.6.2-.8.5-1.2 1-1.4zm-8.4 5.3h4.5-4.5z"/></svg>', gulp: '<svg viewBox="0 0 32 32"><path d="M20.1 22.8c-.2.3-.3.5-.4.7-.1.2-.2.5-.2.7-.1 1-.2 2.1-.3 3.1 0 .4-.2.6-.5.7-.7.2-1.5.5-2.2.7h-1.1c-.1 0-.3-.1-.4-.1-.6-.2-1.2-.4-1.7-.7-.1-.1-.3-.3-.3-.5-.1-.8-.1-1.5-.1-2.3 0-.8 0-1.6-.6-2.2v-.1c2.5.7 5.1.7 7.8 0zm1.5-12.7c-.1 1.4-.3 2.8-.4 4.2l-.4 4.1c-.1 1-.2 2.1-.3 3.2 0 .7-.4 1-1 1.1-1 .2-1.9.3-2.9.4-1.4.1-2.8 0-4.2-.4-.5-.1-.6-.5-.7-.9 0-.5-.1-1-.2-1.4-.1-.9-.2-1.8-.3-2.8l-.1-.9c0-.1-.1-.2-.1-.3-.1-1.6-.4-3.1-.6-4.7-.1-.5-.1-1-.1-1.5 3.8.8 7.6.8 11.3-.1zm-11.3-.6c.2-.1.4-.2.6-.2.9-.1 1.9-.2 2.8-.3.1 0 .4-.2.4-.2-.3-.9-.3-1.8-1-2.5-.8-.8-1.5-1.7-2.3-2.5.6-.6.6-.6 1.1-.1.4.4.7.8 1.1 1.1 1.1.9 1.8 2.1 2 3.5.2.6.5.7 1 .7 1.7.1 3.3.2 5 .3.2 0 .4.1.7.2-1.7 1.3-10.4 1.2-11.4 0z"/></svg>', ionic: '<svg viewBox="0 0 32 32"><path d="M24.9 11.6c.4-.4.6-1 .6-1.7 0-1.4-1.1-2.6-2.6-2.6-.5 0-1 .2-1.4.4C20 6.6 18.1 6 16 6 10.5 6 6 10.5 6 16s4.5 10 10 10 10-4.5 10-10c0-1.6-.4-3.1-1.1-4.4zM16 24.4c-4.7 0-8.4-3.8-8.4-8.4s3.8-8.4 8.4-8.4c1.7 0 3.3.5 4.6 1.4-.1.3-.2.6-.2.9 0 1.4 1.1 2.6 2.6 2.6.2 0 .4 0 .6-.1.5 1.1.8 2.3.8 3.6 0 4.7-3.7 8.4-8.4 8.4z"/><path d="M16 11.9c-2.3 0-4.1 1.8-4.2 4.1 0 2.3 1.8 4.1 4.1 4.2 2.3 0 4.1-1.8 4.2-4.1 0-2.3-1.8-4.2-4.1-4.2z"/></svg>', platformio: '<svg preserveAspectRatio="xMidYMid" viewBox="0 0 32 32"><g><path d="M20.155 10.313l.625-2.183c.64-.055 1.142-.575 1.142-1.21 0-.671-.562-1.215-1.255-1.215-.693 0-1.254.544-1.254 1.215 0 .442.244.828.609 1.04l-.614 2.144c-1.755-.432-3.237-.4-3.237-.4l-.274.12v16.592l.274.089c1.655 0 8.896-4.845 8.913-10.044 0-3.724-2.555-5.397-4.93-6.148zm-1.743 10.688c-1.412-2.186-.815-7.273 2.874-8 1.011-.158 2.25.486 2.615 1.917.921 3.034-4.5 7.284-5.49 6.083zm2.214-4.682c-.63 0-1.142.495-1.142 1.107 0 .611.511 1.107 1.142 1.107.631 0 1.143-.496 1.143-1.107 0-.612-.512-1.107-1.143-1.107zm.342 1.021a.284.284 0 01-.289-.28c0-.154.13-.28.289-.28.16 0 .288.126.288.28 0 .155-.129.28-.288.28z"/><path d="M12.922 10.154l-.61-2.226c.349-.216.581-.594.581-1.025 0-.671-.561-1.216-1.254-1.216s-1.254.545-1.254 1.216c0 .67.558 1.212 1.248 1.215l.612 2.233c-2.384.766-4.97 2.443-4.97 6.11.053 5.301 7.241 10.043 8.896 10.043v-16.8s-1.489-.007-3.249.45zm1.264 10.847c-.99 1.2-6.41-3.049-5.489-6.083.365-1.43 1.603-2.075 2.615-1.918 3.689.728 4.286 5.815 2.874 8zm-2.288-4.648c-.63 0-1.142.495-1.142 1.107 0 .611.511 1.107 1.142 1.107.631 0 1.143-.496 1.143-1.107 0-.612-.512-1.107-1.143-1.107zm-.341 1.021a.284.284 0 01-.29-.28c0-.154.13-.279.29-.279.159 0 .288.125.288.28 0 .154-.13.28-.288.28z"/></g></svg>', rollup: '<svg viewBox="0 0 32 32"><path d="M22.3 23.9l-2.7-5.4c-.1-.2-.1-.3.1-.4.6-.3 1.1-.7 1.5-1.2 1.1-1.3 1.6-2.9 1.4-4.6-.1-.8-.3-1.5-.7-2.2-.1-.1-.1-.2-.2-.3-.4-.4-.9-.6-1.5-.8-.6-.1-1.2-.2-1.8 0-.4.1-.7.2-.9.5-.5.6-.6 1.2-.4 1.9.2.8.7 1.3 1.3 1.8.2.1.4.2.7.3.2 0 .4 0 .5-.3.1-.1.1-.3.1-.4 0-.4-.1-.7-.2-1-.1-.2-.2-.4-.2-.6.2.5.5 1 .7 1.4.1.3.1.7-.1 1l-.2.2c-.5.4-1 .9-1.5 1.3-.7.6-1.3 1.2-1.8 1.8-.8 1-1.5 2-2.2 3-.5.7-.9 1.4-1.4 2.2-.4.6-.7 1.2-1.1 1.8-.2.4-.5.8-.7 1.1h11.6c.3 0 .4-.2.3-.5-.4-.2-.5-.4-.6-.6z"/><path d="M12.7 15.1c.8-1.4 1.5-2.8 2.4-4.1.4-.6.8-1.2 1.2-1.7.4-.4.8-.7 1.3-.9.5-.1 1.1-.2 1.7-.1.8.1 1.5.4 2.1 1l.1.1.1.1v-.1C20.4 7.9 18.8 7 16.8 7H9.6c-.2 0-.3.1-.3.4v14.4c.5-1.3 1.2-2.6 1.9-3.9.5-1 1-1.9 1.5-2.8z"/></svg>', stylelint: '<svg viewBox="0 0 32 32"><path d="M14.482 9.308h2.399v1.46h-2.4zm5.266 3.157l-2.534-1.572c-.093-.096-.046-1.76-.046-1.76L19.7 7.708l.047 4.758zm-8.152-.048l2.55-1.572c.094-.096.046-1.76.046-1.76l-2.55-1.426-.046 4.758zm3.392.485c0-.36.285-.653.637-.653.352 0 .637.292.637.653a.645.645 0 01-.637.654.645.645 0 01-.637-.654zm0 3.99c0-.362.285-.655.637-.655.352 0 .637.293.637.654a.645.645 0 01-.637.654.645.645 0 01-.637-.654zm0 3.988c0-.361.285-.654.637-.654.352 0 .637.293.637.654a.645.645 0 01-.637.653.645.645 0 01-.637-.653zM25.226 9.75L22.46 7.203h-1.546l-.796 2.835-.047 3.028-.75-.433-3.466 13.12 8.854-12.976-1.218-1.441 1.734-1.586zM6.11 9.702l2.764-2.547h1.546l.796 2.835.047 3.028.75-.433 3.467 13.12-8.855-12.976 1.218-1.441L6.11 9.702zm5.786 3.1"/></svg>', yarn: '<svg viewBox="0 0 32 32"><path d="M12 24.2c-.2-.1-.3-.2-.4-.4-.1-.1-.1-.1-.2 0-.1.2-.1.4-.2.6-.3 1-.8 1.3-1.8 1.1-.2 0-.4-.1-.6-.2-.4-.2-.5-.5-.3-.9 0-.1.1-.2.1-.3-.4 0-.6-.2-.7-.5-.5-1.3-.4-2.3.6-3.3.1-.2.2-.3.2-.5 0-1.3.2-2.5 1.1-3.6.3-.4.7-.8 1.2-1.1.2-.1.2-.2.1-.4-.4-.5-.6-1-.7-1.6-.1-.5.2-1 .4-1.5.1-.1.2-.2.3-.2.4-.1.7-.4 1-.6.7-.7 1.5-1 2.5-1 .2 0 .3-.1.3-.2.1-.4.3-.8.6-1.2l.3-.3c.2-.2.5-.2.6.1.3.5.5 1 .7 1.4.1.2.2.2.3.1.7-.3.7-.3.9.4.5 2.1.2 4.1-1 6-.1.2-.3.4-.4.6-.1.2-.1.3.1.5.9.8 1.5 1.9 1.7 3.1.1.7.1 1.5 0 2.2-.1.4 0 .4.3.3.7-.2 1.4-.5 2-.9.7-.4 1.3-.8 2.1-.9.3 0 .5-.1.8 0 .3.1.5.4.5.7 0 .3-.2.5-.5.6-1 .2-1.9.7-2.7 1.3-1 .7-2.2 1.2-3.3 1.5-.1 0-.3.1-.4.2-.4.3-.8.3-1.3.4-1.1.1-2.1.2-3.2.2-.3 0-.6 0-1-.1-.3-.1-.6-.3-.7-.6-.1-.4 0-.7.3-.9.2 0 .3-.1.4-.1z"/></svg>', webpack: '<svg viewBox="0 0 32 32"><path d="M24 21.4L16 26v-3.6l5-2.8 3 1.8zm.6-.5v-9.6l-3 1.7v6.2l3 1.7zm-17.4.5l8.1 4.6v-3.6l-5-2.8-3.1 1.8zm-.6-.5v-9.6l3 1.7v6.2l-3 1.7zm.3-10.2L15.2 6v3.4l-5.3 2.9-3-1.6zm17.4 0L16 6v3.4l5.3 2.9 3-1.6zm-9.1 10.9l-5-2.7v-5.4l5 2.9v5.2zm.8 0l5-2.7v-5.4l-5 2.9v5.2zm-5.4-8.8l5-2.7 5 2.7-5 2.9-5-2.9z"/></svg>', lock: '<svg viewBox="0 0 1200 1000"><path d="M818.5 463.8v290.9h-437V463.8h73.4v-6.2c0-22-.1-44 .1-66 .1-7.1.6-14.3 1.6-21.4 11.3-80 87.2-136 166.9-123.1C694 258.5 746.2 319.7 746.2 391v72.7c24.4.1 48.4.1 72.3.1zm-145.2-.1c.1-1.6.2-2.6.2-3.5 0-23.7.1-47.3-.1-71 0-4.1-.6-8.3-1.4-12.4-8-38.7-41-62.2-81.3-58.2-35.6 3.6-63.3 35.5-63.3 73.1v72h145.9z"/></svg>', license: '<svg viewBox="0 0 32 32"><path d="M18.7 12.8c-.2-2.2-1.9-3.7-4.2-3.8H13c-.1-1.3.4-3.1 2.5-3.3.9-.1 1.7.1 2.4.8.6.7.8 1.5.8 2.4 0 .1 0 .3.1.4l.9.9c.3-.9.3-1.8.1-2.7-.5-1.8-2-2.9-3.9-3-1.1 0-2.1.2-2.9 1-1.4 1.3-1.9 4.2.1 6.1.3.3.7.5 1.1.7.5.2.9-.2.9-.6 0-.4-.2-.7-.7-.8-.1 0-.2-.1-.3-.2v-.1c.4-.1.9 0 1.2.3.3.3.4.7.3 1.2-.2.7-.8 1-1.6.8-1.1-.3-1.8-1-2.3-2-.1-.3-.3-.6-.4-.9-.7.7-1.3 1.4-1.5 2.4-.4 1.8.1 3.3 1.4 4.5.1.1.2.2.1.4-.1.8-.2 1.5-.4 2.3-.3 1.7-.5 3.3-.8 5-.1.5-.1 1.1 0 1.6.1.4.3.7.8.9.1-.4.1-.8.2-1.2.3-1.7.5-3.3.8-5 .2-1 .3-2.1.5-3.1 0-.2.1-.3.3-.3.2 0 .2.2.2.4-.1 1-.3 2-.5 2.9-.3 2.1-.7 4.2-1 6.3 0 .1.1.2.1.2.5 0 .9.1 1.4.1.5 0 .9-.4 1.2-.8.3-.3.3-.7.1-1.1-.1-.1-.2-.2-.2-.3-.3-.4-.2-.7.2-.9.1-.1.3-.1.4-.2.2-.1.3-.4.1-.6-.3-.3-.5-.6-.8-.8-.2-.2-.1-.6.1-.7.3-.2.7-.3 1-.5.2-.1.3-.3.1-.5-.1-.1-.2-.2-.3-.4-.3-.3-.2-.8.1-1 .1-.1.2-.2.4-.2.2-.1.3-.2.3-.4 0-.3.1-.6.1-.9 0-.1.1-.3.2-.4.3-.3.7-.5 1.1-.7 1.4-1 1.9-2.5 1.7-4.2zm3.6 11.4c0-.2-.1-.4-.4-.4-.2 0-.5 0-.6-.3-.1-.3-.1-.6 0-.9.2-.4.1-.7-.4-.8-.2 0-.4-.1-.7-.1-.2 0-.3-.1-.3-.3 0-.2-.1-.4-.1-.6 0-.3.2-.5.4-.7.2-.3.2-.4-.1-.6-.1-.1-.3-.2-.4-.3-.4-.2-.4-.4-.2-.8.1-.1.2-.2.2-.3.2-.2.2-.4.1-.6-.1-.2-.2-.5-.4-.7-.1-.2-.1-.4 0-.6.8-1.6 1-3.2.3-4.9-.5-1.1-1.4-1.8-2.6-2.1l-.1.1c.1.1.2.3.3.4 1.2 1 1.9 2.3 1.9 3.9 0 1.7-.7 3.1-2.2 4.2-.2.1-.3.3-.2.5.4 1 .7 1.9 1.1 2.9.8 1.9 1.6 3.7 2.4 5.6.1.1.1.2.3.2 1.2-.6 1.9-1.7 1.7-2.8zm-6-5.9c-.1.4-.1.7-.2 1 0 .2-.1.4 0 .6.7 1.7 1.4 3.5 2.1 5.2.2.5.5 1 1 1.4.2.1.4.2.5.3l.1-.1c-1.1-2.8-2.3-5.6-3.5-8.4z"/></svg>', makefile: '<svg viewBox="0 0 32 32"><path d="M10.2 7L7 7.8v16h4.2v-9.9l3.6 3.9h2.4l3.6-3.9v9.9H25v-16L21.8 7 16 13.3 10.2 7z"/></svg>', heroku: '<svg viewBox="0 0 32 32"><path d="M9 26v-5.714l3.25 2.857L9 26zm11.742-11.58c1.243 1.242 1.26 2.826 1.258 3.009V26h-2.889v-8.532C19.097 16.8 18.772 16 17.306 16c-2.938 0-6.233 1.461-6.265 1.476L9 18.39V6h2.889v8.111c1.442-.464 3.458-.968 5.417-.968 1.785 0 2.854.694 3.436 1.277zm-3.798-3.777C18.08 9.17 18.793 7.619 19.111 6H22c-.195 1.623-.86 3.179-2.167 4.643h-2.889z"/></svg>', todo: '<svg viewBox="0 0 32 32"><path d="M16 7h5.7c1.6 0 2.9 1.1 3.2 2.6.1.2.1.5.1.6v11.4c0 1.6-1.1 3-2.7 3.2-.2 0-.4.1-.6.1H10.4c-2 0-3.4-1.4-3.4-3.3V10.3c0-1.7 1.1-3 2.7-3.3H16zm-6.3 9v5.7c0 .4.2.6.7.6h11.2c.4 0 .7-.3.7-.7V10.4c-.1-.5-.3-.7-.8-.7H10.3c-.5 0-.7.2-.7.7.1 1.8.1 3.7.1 5.6z"/><path d="M12.1 14.7c.2.1.3.1.5.2.7.3 1.4.7 2.1 1 .2.1.2.1.3 0 1.5-1.1 2.9-2.2 4.4-3.2.2-.2.4-.2.5-.3.3-.1.5.2.5.5-.1.2-.2.3-.2.4-.7.9-1.3 1.8-2 2.8-.8 1.1-1.5 2.1-2.3 3.1-.5.8-1.3.7-1.8-.1-.8-1.2-1.5-2.2-2.3-3.4-.1-.1-.2-.2-.2-.3-.1-.4.1-.7.5-.7z"/></svg>', npm_ignored: '<svg viewBox="0 0 32 32"><path d="M4 11.3v8h6.8v1.4h5.3v-1.3H28v-8.1H4zm6.6 6.7H9.3v-3.9H8V18H5.3v-5.3h5.3V18zm6.7 0h-2.7v1.4h-2.7v-6.6h5.3c.1 1.6.1 3.4.1 5.2zm9.3 0h-1.3v-3.9H24V18h-1.4v-3.9h-1.3V18h-2.7v-5.3h8V18zm-10.7-3.9h-1.3v2.6h1.3v-2.6z"/></svg>', ignored: '<svg viewBox="0 0 32 32"><path d="M22.9 10.3c.1-.2.2-.4.2-.6-.1-.4-.3-.6-.6-.7-.3-.1-.6 0-.9.2l-2 2c-.1.1-.2.1-.4.1-2.3-.9-4.5-.9-6.8.1s-4 2.7-5.3 4.7c-.2.4-.2.7.1 1 .5.6 1.1 1.2 1.7 1.7.6.5 1.2.9 1.8 1.3-.1 0-.1.1-.2.1-.5.5-1 .9-1.4 1.4-.2.2-.3.5-.2.9.1.3.3.5.7.6.3 0 .6-.1.8-.3l12.4-12.4.1-.1zm-10.8 8.4h-.2c-1.1-.6-2.1-1.3-3-2.3 1-1.3 2.2-2.5 3.7-3.3-1 1.7-.9 3.3.2 4.9l-.7.7zm4.5-5.5c-.1.3-.3.5-.7.5-.9 0-1.6.6-1.7 1.5v.3c0 .4-.3.6-.6.6-.4 0-.6-.3-.6-.7 0-1.6 1.3-3 2.9-3 .5 0 .8.4.7.8zm8.2 2.8c-.5-.6-1-1.3-1.5-1.9-.4-.5-1-.9-1.4-1.4l-1.2 1.2c.9.7 1.7 1.5 2.4 2.5-.1.1-.2.2-.3.2-.3.3-.6.6-.9.8-2 1.6-4.2 2.4-6.7 2.1-.2 0-.3 0-.4.1-.2.2-.4.4-.6.7l-.6.6h.1c1.4.3 2.9.4 4.3.1 2.8-.5 5-2 6.8-4.1.3-.2.3-.5 0-.9z"/></svg>' };
28
+ });
29
+
30
+ // ../../node_modules/seti-icons/lib/index.js
31
+ var require_lib = __commonJS((exports) => {
32
+ var __assign = exports && exports.__assign || function() {
33
+ __assign = Object.assign || function(t) {
34
+ for (var s, i = 1, n = arguments.length;i < n; i++) {
35
+ s = arguments[i];
36
+ for (var p in s)
37
+ if (Object.prototype.hasOwnProperty.call(s, p))
38
+ t[p] = s[p];
39
+ }
40
+ return t;
41
+ };
42
+ return __assign.apply(this, arguments);
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ var rawDefinitions = require_definitions();
46
+ var rawIcons = require_icons();
47
+ var definitions = rawDefinitions;
48
+ var icons = rawIcons;
49
+ var getDetails = function(fileName) {
50
+ if (definitions.files.hasOwnProperty(fileName)) {
51
+ return definitions.files[fileName];
52
+ }
53
+ var extension = fileName.slice(fileName.indexOf("."));
54
+ while (extension !== "") {
55
+ if (definitions.extensions.hasOwnProperty(extension)) {
56
+ return definitions.extensions[extension];
57
+ }
58
+ extension = extension.slice(1);
59
+ extension = extension.slice(extension.indexOf("."));
60
+ }
61
+ for (var _i = 0, _a = definitions.partials;_i < _a.length; _i++) {
62
+ var partial = _a[_i];
63
+ if (fileName.indexOf(partial[0]) > -1) {
64
+ return partial[1];
65
+ }
66
+ }
67
+ return definitions.default;
68
+ };
69
+ var getIcon = function(fileName) {
70
+ var _a = getDetails(fileName), icon2 = _a[0], color2 = _a[1];
71
+ return {
72
+ svg: icons[icon2],
73
+ color: color2
74
+ };
75
+ };
76
+ exports.getIcon = getIcon;
77
+ var themeIcons = function(theme2) {
78
+ return function(fileName) {
79
+ var icon2 = getIcon(fileName);
80
+ return __assign(__assign({}, icon2), { color: theme2[icon2.color] });
81
+ };
82
+ };
83
+ exports.themeIcons = themeIcons;
84
+ });
85
+
86
+ // src/components/file-change-row/file-change-row.tsx
87
+ import {
88
+ highlight,
89
+ Pre
90
+ } from "codehike/code";
91
+ import { ChevronDown, ChevronUp } from "lucide-react";
92
+ import { useEffect as useEffect9, useState as useState12 } from "react";
93
+
94
+ // src/lib/utils.ts
95
+ import { clsx } from "clsx";
96
+ import { twMerge } from "tailwind-merge";
97
+ function cn(...inputs) {
98
+ return twMerge(clsx(inputs));
99
+ }
100
+
101
+ // src/components/collapsible/collapsible.tsx
102
+ import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
103
+ import { jsx } from "react/jsx-runtime";
104
+
105
+ function Collapsible({ ...props }) {
106
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, {
107
+ "data-slot": "collapsible",
108
+ ...props
109
+ });
110
+ }
111
+ function CollapsibleTrigger2({
112
+ ...props
113
+ }) {
114
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleTrigger, {
115
+ "data-slot": "collapsible-trigger",
116
+ ...props
117
+ });
118
+ }
119
+ function CollapsibleContent2({
120
+ ...props
121
+ }) {
122
+ return /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleContent, {
123
+ "data-slot": "collapsible-content",
124
+ ...props
125
+ });
126
+ }
127
+ // src/components/docskit/code.config.ts
128
+ var theme = "github-from-css";
129
+ function flagsToOptions(flags = "") {
130
+ const options = {};
131
+ const map = {
132
+ c: "copyButton",
133
+ n: "lineNumbers",
134
+ w: "wordWrap",
135
+ a: "animate"
136
+ };
137
+ flags.split("").forEach((flag) => {
138
+ if (!flag)
139
+ return;
140
+ if (flag in map) {
141
+ const key = map[flag];
142
+ options[key] = true;
143
+ } else {
144
+ console.warn(`Unknown flag: ${flag}`);
145
+ }
146
+ });
147
+ return options;
148
+ }
149
+
150
+ // src/components/docskit/code.copy.tsx
151
+ import { Check, Copy } from "lucide-react";
152
+ import { useState } from "react";
153
+ import { jsx as jsx2 } from "react/jsx-runtime";
154
+
155
+ function CopyButton({
156
+ text,
157
+ className,
158
+ variant = "floating"
159
+ }) {
160
+ const [copied, setCopied] = useState(false);
161
+ return /* @__PURE__ */ jsx2("button", {
162
+ type: "button",
163
+ className: cn("cursor-pointer transition-opacity duration-200", variant === "floating" && [
164
+ "size-8 flex items-center justify-center",
165
+ "rounded border border-dk-border bg-dk-background",
166
+ "opacity-0 group-hover:opacity-100"
167
+ ], variant === "inline" && "rounded", className),
168
+ onClick: () => {
169
+ navigator.clipboard.writeText(text);
170
+ setCopied(true);
171
+ setTimeout(() => setCopied(false), 1200);
172
+ },
173
+ "aria-label": "Copy to clipboard",
174
+ children: copied ? /* @__PURE__ */ jsx2(Check, {
175
+ size: 16,
176
+ className: "block"
177
+ }) : /* @__PURE__ */ jsx2(Copy, {
178
+ size: 16,
179
+ className: "block"
180
+ })
181
+ });
182
+ }
183
+
184
+ // src/components/docskit/callout.tsx
185
+ import { InnerLine } from "codehike/code";
186
+
187
+ // src/components/docskit/notes.client.tsx
188
+ import React from "react";
189
+ import { jsx as jsx3 } from "react/jsx-runtime";
190
+
191
+ var NotesContext = React.createContext([]);
192
+ function useNotesContext(n) {
193
+ return React.useContext(NotesContext).find(({ name }) => name === n);
194
+ }
195
+
196
+ // src/components/docskit/callout.client.tsx
197
+ import { jsx as jsx4 } from "react/jsx-runtime";
198
+
199
+ function CalloutClient({ name }) {
200
+ const note = useNotesContext(name);
201
+ if (note?.type === "code") {
202
+ return /* @__PURE__ */ jsx4("div", {
203
+ className: "prose-no-margin [&>div]:!border-none [&>div]:!my-0 [&>div>pre]:!bg-transparent",
204
+ children: note.children
205
+ });
206
+ }
207
+ return /* @__PURE__ */ jsx4("div", {
208
+ className: "px-2 prose dark:prose-invert",
209
+ children: note ? note.children : name
210
+ });
211
+ }
212
+
213
+ // src/components/docskit/callout.tsx
214
+ import { jsx as jsx5, jsxs } from "react/jsx-runtime";
215
+ var callout = {
216
+ name: "callout",
217
+ transform: (annotation) => {
218
+ const { name, query, lineNumber, fromColumn, toColumn } = annotation;
219
+ return {
220
+ name,
221
+ query,
222
+ fromLineNumber: lineNumber,
223
+ toLineNumber: lineNumber,
224
+ data: {
225
+ ...annotation.data,
226
+ column: (fromColumn + toColumn) / 2
227
+ }
228
+ };
229
+ },
230
+ AnnotatedLine: ({ annotation, ...props }) => {
231
+ const { column } = annotation.data;
232
+ const { indentation, children } = props;
233
+ return /* @__PURE__ */ jsxs(InnerLine, {
234
+ merge: props,
235
+ children: [
236
+ children,
237
+ /* @__PURE__ */ jsxs("div", {
238
+ style: {
239
+ minWidth: `${column + 4}ch`,
240
+ marginLeft: `${indentation}ch`,
241
+ border: "1px solid var(--ch-23)"
242
+ },
243
+ className: "w-fit bg-dk-tabs-background rounded px-0 relative my-1 whitespace-break-spaces select-none",
244
+ children: [
245
+ /* @__PURE__ */ jsx5("div", {
246
+ style: {
247
+ left: `${column - indentation - 1}ch`,
248
+ borderColor: "var(--ch-23)"
249
+ },
250
+ className: "absolute border-l border-t w-2 h-2 rotate-45 -translate-y-1/2 -top-[1px] bg-dk-tabs-background"
251
+ }),
252
+ /* @__PURE__ */ jsx5(CalloutClient, {
253
+ name: annotation.query
254
+ })
255
+ ]
256
+ })
257
+ ]
258
+ });
259
+ }
260
+ };
261
+
262
+ // src/components/docskit/code.line.tsx
263
+ import { InnerLine as InnerLine2 } from "codehike/code";
264
+ import { jsx as jsx6 } from "react/jsx-runtime";
265
+ var line = {
266
+ name: "line",
267
+ Line: ({ annotation, ...props }) => {
268
+ return /* @__PURE__ */ jsx6("div", {
269
+ style: {
270
+ borderLeftColor: "var(--dk-line-border, transparent)",
271
+ backgroundColor: "var(--dk-line-bg, transparent)"
272
+ },
273
+ className: "flex border-l-2 border-l-transparent background-color 0.3s ease",
274
+ children: /* @__PURE__ */ jsx6(InnerLine2, {
275
+ merge: props,
276
+ className: "px-3 flex-1"
277
+ })
278
+ });
279
+ }
280
+ };
281
+
282
+ // src/components/docskit/collapse.tsx
283
+ import { InnerLine as InnerLine3 } from "codehike/code";
284
+ import { ChevronDownIcon } from "lucide-react";
285
+ import { jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
286
+ var collapseRoot = {
287
+ name: "collapse",
288
+ transform: (annotation) => {
289
+ const { fromLineNumber } = annotation;
290
+ return [
291
+ annotation,
292
+ {
293
+ ...annotation,
294
+ fromLineNumber,
295
+ toLineNumber: fromLineNumber,
296
+ name: "CollapseTrigger"
297
+ },
298
+ {
299
+ ...annotation,
300
+ fromLineNumber: fromLineNumber + 1,
301
+ name: "CollapseContent"
302
+ }
303
+ ];
304
+ },
305
+ Block: ({ annotation, children }) => {
306
+ return /* @__PURE__ */ jsx7(Collapsible, {
307
+ defaultOpen: annotation.query !== "collapsed",
308
+ children
309
+ });
310
+ }
311
+ };
312
+ var icon = /* @__PURE__ */ jsx7(ChevronDownIcon, {
313
+ className: "inline-block group-data-[state=closed]:-rotate-90 transition select-none opacity-30 group-data-[state=closed]:opacity-80 group-hover:!opacity-100 mb-0.5 ml-1 -mr-1 ",
314
+ size: 15
315
+ });
316
+ var collapseTrigger = {
317
+ name: "CollapseTrigger",
318
+ onlyIfAnnotated: true,
319
+ AnnotatedLine: ({ annotation, ...props }) => /* @__PURE__ */ jsx7(CollapsibleTrigger2, {
320
+ className: "group contents",
321
+ children: /* @__PURE__ */ jsx7(InnerLine3, {
322
+ merge: props,
323
+ data: { icon }
324
+ })
325
+ }),
326
+ Line: (props) => {
327
+ const icon2 = props.data?.icon;
328
+ return /* @__PURE__ */ jsxs2("div", {
329
+ className: "table-row",
330
+ children: [
331
+ /* @__PURE__ */ jsx7("span", {
332
+ className: "w-4 text-center table-cell",
333
+ children: icon2
334
+ }),
335
+ /* @__PURE__ */ jsx7("div", {
336
+ className: "table-cell",
337
+ children: /* @__PURE__ */ jsx7(InnerLine3, {
338
+ merge: props
339
+ })
340
+ })
341
+ ]
342
+ });
343
+ }
344
+ };
345
+ var collapseContent = {
346
+ name: "CollapseContent",
347
+ Block: CollapsibleContent2
348
+ };
349
+ var collapse = [collapseRoot, collapseTrigger, collapseContent];
350
+
351
+ // src/components/docskit/diff.tsx
352
+ import { InnerLine as InnerLine4 } from "codehike/code";
353
+ import { jsx as jsx8, jsxs as jsxs3, Fragment } from "react/jsx-runtime";
354
+ var diff = {
355
+ name: "diff",
356
+ onlyIfAnnotated: true,
357
+ Block: ({ annotation, children }) => {
358
+ const color = annotation.query === "-" ? "#f85149" : "#3fb950";
359
+ return /* @__PURE__ */ jsx8("div", {
360
+ style: {
361
+ ["--dk-line-bg"]: `rgb(from ${color} r g b / 0.13)`,
362
+ ["--dk-line-border"]: color
363
+ },
364
+ children
365
+ });
366
+ },
367
+ Line: ({ annotation, ...props }) => /* @__PURE__ */ jsxs3(Fragment, {
368
+ children: [
369
+ /* @__PURE__ */ jsx8("div", {
370
+ className: "min-w-[1ch] box-content opacity-70 pl-2 select-none",
371
+ children: annotation?.query
372
+ }),
373
+ /* @__PURE__ */ jsx8(InnerLine4, {
374
+ merge: props
375
+ })
376
+ ]
377
+ })
378
+ };
379
+
380
+ // src/components/docskit/expandable.tsx
381
+ import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
382
+ var expandable = {
383
+ name: "expandable",
384
+ transform: (annotation) => {
385
+ return { ...annotation, toLineNumber: 999 };
386
+ },
387
+ Block: ({ children }) => {
388
+ return /* @__PURE__ */ jsxs4(Collapsible, {
389
+ children: [
390
+ /* @__PURE__ */ jsx9(CollapsibleTrigger2, {
391
+ className: "h-24 w-full translate-y-[-75%] absolute bg-gradient-to-b from-dk-background/0 via-dk-background/80 to-dk-background data-[state=open]:invisible",
392
+ children: /* @__PURE__ */ jsx9("div", {
393
+ className: "pt-6",
394
+ children: "Expand"
395
+ })
396
+ }),
397
+ /* @__PURE__ */ jsx9(CollapsibleContent2, {
398
+ children
399
+ })
400
+ ]
401
+ });
402
+ }
403
+ };
404
+
405
+ // src/components/docskit/hover.client.tsx
406
+ import {
407
+ InnerLine as InnerLine5
408
+ } from "codehike/code";
409
+ import { createContext, useContext, useState as useState2 } from "react";
410
+ import { jsx as jsx10 } from "react/jsx-runtime";
411
+
412
+ var HoverContext = createContext({
413
+ hoveredNames: [],
414
+ addHoveredName: () => {},
415
+ removeHoveredName: () => {}
416
+ });
417
+ var HoverBlock = ({ annotation, children }) => {
418
+ const { hoveredNames } = useContext(HoverContext);
419
+ const name = annotation?.query;
420
+ const isHovered = name && hoveredNames[hoveredNames.length - 1] === name;
421
+ const style = isHovered && !annotation.data?.inline ? {
422
+ ["--dk-line-bg"]: `rgb(from ${color} r g b / 0.13)`,
423
+ ["--dk-line-border"]: color
424
+ } : undefined;
425
+ return /* @__PURE__ */ jsx10("div", {
426
+ style,
427
+ children
428
+ });
429
+ };
430
+ var color = "var(--ch-5)";
431
+ var HoverLine = ({ annotation, ...props }) => {
432
+ const { hoveredNames } = useContext(HoverContext);
433
+ const prevOpacity = props.style?.opacity;
434
+ const anyHovered = hoveredNames.length > 0;
435
+ const name = annotation?.query;
436
+ const isHovered = name && hoveredNames[hoveredNames.length - 1] === name;
437
+ const opacity = isHovered ? 1 : prevOpacity ? prevOpacity : anyHovered ? 0.5 : 1;
438
+ return /* @__PURE__ */ jsx10(InnerLine5, {
439
+ merge: props,
440
+ style: {
441
+ opacity,
442
+ transition: "opacity 0.3s ease"
443
+ }
444
+ });
445
+ };
446
+ var HoverInline = ({ annotation, children }) => {
447
+ const { hoveredNames } = useContext(HoverContext);
448
+ const isHovered = hoveredNames[hoveredNames.length - 1] === annotation.query;
449
+ return /* @__PURE__ */ jsx10("span", {
450
+ className: "rounded px-0.5 py-0 -mx-0.5",
451
+ style: {
452
+ transition: "background-color 0.3s ease, box-shadow 0.3s ease",
453
+ boxShadow: isHovered ? `0 0 0 1px rgb(from ${color} r g b / 0.5)` : undefined,
454
+ backgroundColor: isHovered ? `rgb(from ${color} r g b / 0.13)` : undefined
455
+ },
456
+ children
457
+ });
458
+ };
459
+
460
+ // src/components/docskit/hover.tsx
461
+ import { jsx as jsx11 } from "react/jsx-runtime";
462
+ var hover = {
463
+ name: "hover",
464
+ onlyIfAnnotated: true,
465
+ Block: HoverBlock,
466
+ Line: HoverLine,
467
+ Inline: HoverInline,
468
+ transform: (annotation) => {
469
+ if (!("fromColumn" in annotation)) {
470
+ return [annotation];
471
+ }
472
+ const blockAnnotation = {
473
+ name: annotation.name,
474
+ query: annotation.query,
475
+ fromLineNumber: annotation.lineNumber,
476
+ toLineNumber: annotation.lineNumber,
477
+ data: { inline: true }
478
+ };
479
+ return [blockAnnotation, annotation];
480
+ }
481
+ };
482
+
483
+ // src/components/docskit/line-numbers.tsx
484
+ import { InnerLine as InnerLine6 } from "codehike/code";
485
+ import { jsx as jsx12, jsxs as jsxs5, Fragment as Fragment2 } from "react/jsx-runtime";
486
+ var lineNumbers = {
487
+ name: "line-numbers",
488
+ Line: (props) => {
489
+ const width = props.totalLines.toString().length + 1;
490
+ return /* @__PURE__ */ jsxs5(Fragment2, {
491
+ children: [
492
+ /* @__PURE__ */ jsx12("span", {
493
+ style: { minWidth: `${width}ch` },
494
+ className: "text-right text-dk-line-number select-none mr-1",
495
+ children: props.lineNumber
496
+ }),
497
+ /* @__PURE__ */ jsx12(InnerLine6, {
498
+ merge: props
499
+ })
500
+ ]
501
+ });
502
+ }
503
+ };
504
+
505
+ // src/components/docskit/link.tsx
506
+ import { jsx as jsx13 } from "react/jsx-runtime";
507
+ var link = {
508
+ name: "link",
509
+ Inline: ({ annotation, children }) => {
510
+ const { query } = annotation;
511
+ return /* @__PURE__ */ jsx13("a", {
512
+ href: query,
513
+ className: "underline",
514
+ children
515
+ });
516
+ }
517
+ };
518
+
519
+ // src/components/docskit/mark.tsx
520
+ import { jsx as jsx14 } from "react/jsx-runtime";
521
+ var mark = {
522
+ name: "mark",
523
+ Block: ({ annotation, children }) => {
524
+ const color2 = getColor(annotation);
525
+ return /* @__PURE__ */ jsx14("div", {
526
+ style: {
527
+ ["--dk-line-bg"]: `rgb(from ${color2} r g b / 0.13)`,
528
+ ["--dk-line-border"]: color2
529
+ },
530
+ children
531
+ });
532
+ },
533
+ Inline: ({ annotation, children }) => {
534
+ const color2 = getColor(annotation);
535
+ return /* @__PURE__ */ jsx14("span", {
536
+ style: {
537
+ boxShadow: `0 0 0 1px rgb(from ${color2} r g b / 0.5)`,
538
+ backgroundColor: `rgb(from ${color2} r g b / 0.13)`
539
+ },
540
+ className: "rounded px-0.5 py-0 -mx-0.5",
541
+ children
542
+ });
543
+ }
544
+ };
545
+ function getColor(annotation) {
546
+ const n = Number(annotation?.query || "0") % colors.length;
547
+ return colors[n] || annotation?.query;
548
+ }
549
+ var colors = ["var(--ch-5)", "var(--ch-3)", "var(--ch-2)"];
550
+
551
+ // ../../node_modules/@radix-ui/react-tooltip/dist/index.mjs
552
+ import * as React26 from "react";
553
+
554
+ // ../../node_modules/@radix-ui/primitive/dist/index.mjs
555
+ var canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement);
556
+ function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
557
+ return function handleEvent(event) {
558
+ originalEventHandler?.(event);
559
+ if (checkForDefaultPrevented === false || !event.defaultPrevented) {
560
+ return ourEventHandler?.(event);
561
+ }
562
+ };
563
+ }
564
+
565
+ // ../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs
566
+ import * as React2 from "react";
567
+ function setRef(ref, value) {
568
+ if (typeof ref === "function") {
569
+ return ref(value);
570
+ } else if (ref !== null && ref !== undefined) {
571
+ ref.current = value;
572
+ }
573
+ }
574
+ function composeRefs(...refs) {
575
+ return (node) => {
576
+ let hasCleanup = false;
577
+ const cleanups = refs.map((ref) => {
578
+ const cleanup = setRef(ref, node);
579
+ if (!hasCleanup && typeof cleanup == "function") {
580
+ hasCleanup = true;
581
+ }
582
+ return cleanup;
583
+ });
584
+ if (hasCleanup) {
585
+ return () => {
586
+ for (let i = 0;i < cleanups.length; i++) {
587
+ const cleanup = cleanups[i];
588
+ if (typeof cleanup == "function") {
589
+ cleanup();
590
+ } else {
591
+ setRef(refs[i], null);
592
+ }
593
+ }
594
+ };
595
+ }
596
+ };
597
+ }
598
+ function useComposedRefs(...refs) {
599
+ return React2.useCallback(composeRefs(...refs), refs);
600
+ }
601
+
602
+ // ../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-context/dist/index.mjs
603
+ import * as React3 from "react";
604
+ import { jsx as jsx15 } from "react/jsx-runtime";
605
+ function createContextScope(scopeName, createContextScopeDeps = []) {
606
+ let defaultContexts = [];
607
+ function createContext3(rootComponentName, defaultContext) {
608
+ const BaseContext = React3.createContext(defaultContext);
609
+ const index = defaultContexts.length;
610
+ defaultContexts = [...defaultContexts, defaultContext];
611
+ const Provider = (props) => {
612
+ const { scope, children, ...context } = props;
613
+ const Context = scope?.[scopeName]?.[index] || BaseContext;
614
+ const value = React3.useMemo(() => context, Object.values(context));
615
+ return /* @__PURE__ */ jsx15(Context.Provider, { value, children });
616
+ };
617
+ Provider.displayName = rootComponentName + "Provider";
618
+ function useContext22(consumerName, scope) {
619
+ const Context = scope?.[scopeName]?.[index] || BaseContext;
620
+ const context = React3.useContext(Context);
621
+ if (context)
622
+ return context;
623
+ if (defaultContext !== undefined)
624
+ return defaultContext;
625
+ throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``);
626
+ }
627
+ return [Provider, useContext22];
628
+ }
629
+ const createScope = () => {
630
+ const scopeContexts = defaultContexts.map((defaultContext) => {
631
+ return React3.createContext(defaultContext);
632
+ });
633
+ return function useScope(scope) {
634
+ const contexts = scope?.[scopeName] || scopeContexts;
635
+ return React3.useMemo(() => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }), [scope, contexts]);
636
+ };
637
+ };
638
+ createScope.scopeName = scopeName;
639
+ return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];
640
+ }
641
+ function composeContextScopes(...scopes) {
642
+ const baseScope = scopes[0];
643
+ if (scopes.length === 1)
644
+ return baseScope;
645
+ const createScope = () => {
646
+ const scopeHooks = scopes.map((createScope2) => ({
647
+ useScope: createScope2(),
648
+ scopeName: createScope2.scopeName
649
+ }));
650
+ return function useComposedScopes(overrideScopes) {
651
+ const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {
652
+ const scopeProps = useScope(overrideScopes);
653
+ const currentScope = scopeProps[`__scope${scopeName}`];
654
+ return { ...nextScopes2, ...currentScope };
655
+ }, {});
656
+ return React3.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
657
+ };
658
+ };
659
+ createScope.scopeName = baseScope.scopeName;
660
+ return createScope;
661
+ }
662
+
663
+ // ../../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs
664
+ import * as React7 from "react";
665
+
666
+ // ../../node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive/dist/index.mjs
667
+ import * as React4 from "react";
668
+ import * as ReactDOM from "react-dom";
669
+ import { createSlot } from "@radix-ui/react-slot";
670
+ import { jsx as jsx16 } from "react/jsx-runtime";
671
+ var NODES = [
672
+ "a",
673
+ "button",
674
+ "div",
675
+ "form",
676
+ "h2",
677
+ "h3",
678
+ "img",
679
+ "input",
680
+ "label",
681
+ "li",
682
+ "nav",
683
+ "ol",
684
+ "p",
685
+ "select",
686
+ "span",
687
+ "svg",
688
+ "ul"
689
+ ];
690
+ var Primitive = NODES.reduce((primitive, node) => {
691
+ const Slot = createSlot(`Primitive.${node}`);
692
+ const Node2 = React4.forwardRef((props, forwardedRef) => {
693
+ const { asChild, ...primitiveProps } = props;
694
+ const Comp = asChild ? Slot : node;
695
+ if (typeof window !== "undefined") {
696
+ window[Symbol.for("radix-ui")] = true;
697
+ }
698
+ return /* @__PURE__ */ jsx16(Comp, { ...primitiveProps, ref: forwardedRef });
699
+ });
700
+ Node2.displayName = `Primitive.${node}`;
701
+ return { ...primitive, [node]: Node2 };
702
+ }, {});
703
+ function dispatchDiscreteCustomEvent(target, event) {
704
+ if (target)
705
+ ReactDOM.flushSync(() => target.dispatchEvent(event));
706
+ }
707
+
708
+ // ../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs
709
+ import * as React5 from "react";
710
+ function useCallbackRef(callback) {
711
+ const callbackRef = React5.useRef(callback);
712
+ React5.useEffect(() => {
713
+ callbackRef.current = callback;
714
+ });
715
+ return React5.useMemo(() => (...args) => callbackRef.current?.(...args), []);
716
+ }
717
+
718
+ // ../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs
719
+ import * as React6 from "react";
720
+ function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
721
+ const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);
722
+ React6.useEffect(() => {
723
+ const handleKeyDown = (event) => {
724
+ if (event.key === "Escape") {
725
+ onEscapeKeyDown(event);
726
+ }
727
+ };
728
+ ownerDocument.addEventListener("keydown", handleKeyDown, { capture: true });
729
+ return () => ownerDocument.removeEventListener("keydown", handleKeyDown, { capture: true });
730
+ }, [onEscapeKeyDown, ownerDocument]);
731
+ }
732
+
733
+ // ../../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs
734
+ import { jsx as jsx17 } from "react/jsx-runtime";
735
+
736
+ var DISMISSABLE_LAYER_NAME = "DismissableLayer";
737
+ var CONTEXT_UPDATE = "dismissableLayer.update";
738
+ var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
739
+ var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
740
+ var originalBodyPointerEvents;
741
+ var DismissableLayerContext = React7.createContext({
742
+ layers: /* @__PURE__ */ new Set,
743
+ layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set,
744
+ branches: /* @__PURE__ */ new Set
745
+ });
746
+ var DismissableLayer = React7.forwardRef((props, forwardedRef) => {
747
+ const {
748
+ disableOutsidePointerEvents = false,
749
+ onEscapeKeyDown,
750
+ onPointerDownOutside,
751
+ onFocusOutside,
752
+ onInteractOutside,
753
+ onDismiss,
754
+ ...layerProps
755
+ } = props;
756
+ const context = React7.useContext(DismissableLayerContext);
757
+ const [node, setNode] = React7.useState(null);
758
+ const ownerDocument = node?.ownerDocument ?? globalThis?.document;
759
+ const [, force] = React7.useState({});
760
+ const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));
761
+ const layers = Array.from(context.layers);
762
+ const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
763
+ const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
764
+ const index = node ? layers.indexOf(node) : -1;
765
+ const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
766
+ const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
767
+ const pointerDownOutside = usePointerDownOutside((event) => {
768
+ const target = event.target;
769
+ const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));
770
+ if (!isPointerEventsEnabled || isPointerDownOnBranch)
771
+ return;
772
+ onPointerDownOutside?.(event);
773
+ onInteractOutside?.(event);
774
+ if (!event.defaultPrevented)
775
+ onDismiss?.();
776
+ }, ownerDocument);
777
+ const focusOutside = useFocusOutside((event) => {
778
+ const target = event.target;
779
+ const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));
780
+ if (isFocusInBranch)
781
+ return;
782
+ onFocusOutside?.(event);
783
+ onInteractOutside?.(event);
784
+ if (!event.defaultPrevented)
785
+ onDismiss?.();
786
+ }, ownerDocument);
787
+ useEscapeKeydown((event) => {
788
+ const isHighestLayer = index === context.layers.size - 1;
789
+ if (!isHighestLayer)
790
+ return;
791
+ onEscapeKeyDown?.(event);
792
+ if (!event.defaultPrevented && onDismiss) {
793
+ event.preventDefault();
794
+ onDismiss();
795
+ }
796
+ }, ownerDocument);
797
+ React7.useEffect(() => {
798
+ if (!node)
799
+ return;
800
+ if (disableOutsidePointerEvents) {
801
+ if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
802
+ originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
803
+ ownerDocument.body.style.pointerEvents = "none";
804
+ }
805
+ context.layersWithOutsidePointerEventsDisabled.add(node);
806
+ }
807
+ context.layers.add(node);
808
+ dispatchUpdate();
809
+ return () => {
810
+ if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {
811
+ ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;
812
+ }
813
+ };
814
+ }, [node, ownerDocument, disableOutsidePointerEvents, context]);
815
+ React7.useEffect(() => {
816
+ return () => {
817
+ if (!node)
818
+ return;
819
+ context.layers.delete(node);
820
+ context.layersWithOutsidePointerEventsDisabled.delete(node);
821
+ dispatchUpdate();
822
+ };
823
+ }, [node, context]);
824
+ React7.useEffect(() => {
825
+ const handleUpdate = () => force({});
826
+ document.addEventListener(CONTEXT_UPDATE, handleUpdate);
827
+ return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
828
+ }, []);
829
+ return /* @__PURE__ */ jsx17(Primitive.div, {
830
+ ...layerProps,
831
+ ref: composedRefs,
832
+ style: {
833
+ pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : undefined,
834
+ ...props.style
835
+ },
836
+ onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),
837
+ onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),
838
+ onPointerDownCapture: composeEventHandlers(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture)
839
+ });
840
+ });
841
+ DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
842
+ var BRANCH_NAME = "DismissableLayerBranch";
843
+ var DismissableLayerBranch = React7.forwardRef((props, forwardedRef) => {
844
+ const context = React7.useContext(DismissableLayerContext);
845
+ const ref = React7.useRef(null);
846
+ const composedRefs = useComposedRefs(forwardedRef, ref);
847
+ React7.useEffect(() => {
848
+ const node = ref.current;
849
+ if (node) {
850
+ context.branches.add(node);
851
+ return () => {
852
+ context.branches.delete(node);
853
+ };
854
+ }
855
+ }, [context.branches]);
856
+ return /* @__PURE__ */ jsx17(Primitive.div, { ...props, ref: composedRefs });
857
+ });
858
+ DismissableLayerBranch.displayName = BRANCH_NAME;
859
+ function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
860
+ const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);
861
+ const isPointerInsideReactTreeRef = React7.useRef(false);
862
+ const handleClickRef = React7.useRef(() => {});
863
+ React7.useEffect(() => {
864
+ const handlePointerDown = (event) => {
865
+ if (event.target && !isPointerInsideReactTreeRef.current) {
866
+ let handleAndDispatchPointerDownOutsideEvent2 = function() {
867
+ handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, { discrete: true });
868
+ };
869
+ var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;
870
+ const eventDetail = { originalEvent: event };
871
+ if (event.pointerType === "touch") {
872
+ ownerDocument.removeEventListener("click", handleClickRef.current);
873
+ handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;
874
+ ownerDocument.addEventListener("click", handleClickRef.current, { once: true });
875
+ } else {
876
+ handleAndDispatchPointerDownOutsideEvent2();
877
+ }
878
+ } else {
879
+ ownerDocument.removeEventListener("click", handleClickRef.current);
880
+ }
881
+ isPointerInsideReactTreeRef.current = false;
882
+ };
883
+ const timerId = window.setTimeout(() => {
884
+ ownerDocument.addEventListener("pointerdown", handlePointerDown);
885
+ }, 0);
886
+ return () => {
887
+ window.clearTimeout(timerId);
888
+ ownerDocument.removeEventListener("pointerdown", handlePointerDown);
889
+ ownerDocument.removeEventListener("click", handleClickRef.current);
890
+ };
891
+ }, [ownerDocument, handlePointerDownOutside]);
892
+ return {
893
+ onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true
894
+ };
895
+ }
896
+ function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {
897
+ const handleFocusOutside = useCallbackRef(onFocusOutside);
898
+ const isFocusInsideReactTreeRef = React7.useRef(false);
899
+ React7.useEffect(() => {
900
+ const handleFocus = (event) => {
901
+ if (event.target && !isFocusInsideReactTreeRef.current) {
902
+ const eventDetail = { originalEvent: event };
903
+ handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
904
+ discrete: false
905
+ });
906
+ }
907
+ };
908
+ ownerDocument.addEventListener("focusin", handleFocus);
909
+ return () => ownerDocument.removeEventListener("focusin", handleFocus);
910
+ }, [ownerDocument, handleFocusOutside]);
911
+ return {
912
+ onFocusCapture: () => isFocusInsideReactTreeRef.current = true,
913
+ onBlurCapture: () => isFocusInsideReactTreeRef.current = false
914
+ };
915
+ }
916
+ function dispatchUpdate() {
917
+ const event = new CustomEvent(CONTEXT_UPDATE);
918
+ document.dispatchEvent(event);
919
+ }
920
+ function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
921
+ const target = detail.originalEvent.target;
922
+ const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });
923
+ if (handler)
924
+ target.addEventListener(name, handler, { once: true });
925
+ if (discrete) {
926
+ dispatchDiscreteCustomEvent(target, event);
927
+ } else {
928
+ target.dispatchEvent(event);
929
+ }
930
+ }
931
+
932
+ // ../../node_modules/@radix-ui/react-id/dist/index.mjs
933
+ import * as React9 from "react";
934
+
935
+ // ../../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs
936
+ import * as React8 from "react";
937
+ var useLayoutEffect2 = globalThis?.document ? React8.useLayoutEffect : () => {};
938
+
939
+ // ../../node_modules/@radix-ui/react-id/dist/index.mjs
940
+ var useReactId = React9[" useId ".trim().toString()] || (() => {
941
+ return;
942
+ });
943
+ var count = 0;
944
+ function useId(deterministicId) {
945
+ const [id, setId] = React9.useState(useReactId());
946
+ useLayoutEffect2(() => {
947
+ if (!deterministicId)
948
+ setId((reactId) => reactId ?? String(count++));
949
+ }, [deterministicId]);
950
+ return deterministicId || (id ? `radix-${id}` : "");
951
+ }
952
+
953
+ // ../../node_modules/@radix-ui/react-popper/dist/index.mjs
954
+ import * as React16 from "react";
955
+
956
+ // ../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
957
+ var sides = ["top", "right", "bottom", "left"];
958
+ var min = Math.min;
959
+ var max = Math.max;
960
+ var round = Math.round;
961
+ var floor = Math.floor;
962
+ var createCoords = (v) => ({
963
+ x: v,
964
+ y: v
965
+ });
966
+ var oppositeSideMap = {
967
+ left: "right",
968
+ right: "left",
969
+ bottom: "top",
970
+ top: "bottom"
971
+ };
972
+ var oppositeAlignmentMap = {
973
+ start: "end",
974
+ end: "start"
975
+ };
976
+ function clamp(start, value, end) {
977
+ return max(start, min(value, end));
978
+ }
979
+ function evaluate(value, param) {
980
+ return typeof value === "function" ? value(param) : value;
981
+ }
982
+ function getSide(placement) {
983
+ return placement.split("-")[0];
984
+ }
985
+ function getAlignment(placement) {
986
+ return placement.split("-")[1];
987
+ }
988
+ function getOppositeAxis(axis) {
989
+ return axis === "x" ? "y" : "x";
990
+ }
991
+ function getAxisLength(axis) {
992
+ return axis === "y" ? "height" : "width";
993
+ }
994
+ var yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
995
+ function getSideAxis(placement) {
996
+ return yAxisSides.has(getSide(placement)) ? "y" : "x";
997
+ }
998
+ function getAlignmentAxis(placement) {
999
+ return getOppositeAxis(getSideAxis(placement));
1000
+ }
1001
+ function getAlignmentSides(placement, rects, rtl) {
1002
+ if (rtl === undefined) {
1003
+ rtl = false;
1004
+ }
1005
+ const alignment = getAlignment(placement);
1006
+ const alignmentAxis = getAlignmentAxis(placement);
1007
+ const length = getAxisLength(alignmentAxis);
1008
+ let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
1009
+ if (rects.reference[length] > rects.floating[length]) {
1010
+ mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
1011
+ }
1012
+ return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
1013
+ }
1014
+ function getExpandedPlacements(placement) {
1015
+ const oppositePlacement = getOppositePlacement(placement);
1016
+ return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
1017
+ }
1018
+ function getOppositeAlignmentPlacement(placement) {
1019
+ return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
1020
+ }
1021
+ var lrPlacement = ["left", "right"];
1022
+ var rlPlacement = ["right", "left"];
1023
+ var tbPlacement = ["top", "bottom"];
1024
+ var btPlacement = ["bottom", "top"];
1025
+ function getSideList(side, isStart, rtl) {
1026
+ switch (side) {
1027
+ case "top":
1028
+ case "bottom":
1029
+ if (rtl)
1030
+ return isStart ? rlPlacement : lrPlacement;
1031
+ return isStart ? lrPlacement : rlPlacement;
1032
+ case "left":
1033
+ case "right":
1034
+ return isStart ? tbPlacement : btPlacement;
1035
+ default:
1036
+ return [];
1037
+ }
1038
+ }
1039
+ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
1040
+ const alignment = getAlignment(placement);
1041
+ let list = getSideList(getSide(placement), direction === "start", rtl);
1042
+ if (alignment) {
1043
+ list = list.map((side) => side + "-" + alignment);
1044
+ if (flipAlignment) {
1045
+ list = list.concat(list.map(getOppositeAlignmentPlacement));
1046
+ }
1047
+ }
1048
+ return list;
1049
+ }
1050
+ function getOppositePlacement(placement) {
1051
+ return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);
1052
+ }
1053
+ function expandPaddingObject(padding) {
1054
+ return {
1055
+ top: 0,
1056
+ right: 0,
1057
+ bottom: 0,
1058
+ left: 0,
1059
+ ...padding
1060
+ };
1061
+ }
1062
+ function getPaddingObject(padding) {
1063
+ return typeof padding !== "number" ? expandPaddingObject(padding) : {
1064
+ top: padding,
1065
+ right: padding,
1066
+ bottom: padding,
1067
+ left: padding
1068
+ };
1069
+ }
1070
+ function rectToClientRect(rect) {
1071
+ const {
1072
+ x,
1073
+ y,
1074
+ width,
1075
+ height
1076
+ } = rect;
1077
+ return {
1078
+ width,
1079
+ height,
1080
+ top: y,
1081
+ left: x,
1082
+ right: x + width,
1083
+ bottom: y + height,
1084
+ x,
1085
+ y
1086
+ };
1087
+ }
1088
+
1089
+ // ../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs
1090
+ function computeCoordsFromPlacement(_ref, placement, rtl) {
1091
+ let {
1092
+ reference,
1093
+ floating
1094
+ } = _ref;
1095
+ const sideAxis = getSideAxis(placement);
1096
+ const alignmentAxis = getAlignmentAxis(placement);
1097
+ const alignLength = getAxisLength(alignmentAxis);
1098
+ const side = getSide(placement);
1099
+ const isVertical = sideAxis === "y";
1100
+ const commonX = reference.x + reference.width / 2 - floating.width / 2;
1101
+ const commonY = reference.y + reference.height / 2 - floating.height / 2;
1102
+ const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
1103
+ let coords;
1104
+ switch (side) {
1105
+ case "top":
1106
+ coords = {
1107
+ x: commonX,
1108
+ y: reference.y - floating.height
1109
+ };
1110
+ break;
1111
+ case "bottom":
1112
+ coords = {
1113
+ x: commonX,
1114
+ y: reference.y + reference.height
1115
+ };
1116
+ break;
1117
+ case "right":
1118
+ coords = {
1119
+ x: reference.x + reference.width,
1120
+ y: commonY
1121
+ };
1122
+ break;
1123
+ case "left":
1124
+ coords = {
1125
+ x: reference.x - floating.width,
1126
+ y: commonY
1127
+ };
1128
+ break;
1129
+ default:
1130
+ coords = {
1131
+ x: reference.x,
1132
+ y: reference.y
1133
+ };
1134
+ }
1135
+ switch (getAlignment(placement)) {
1136
+ case "start":
1137
+ coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
1138
+ break;
1139
+ case "end":
1140
+ coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
1141
+ break;
1142
+ }
1143
+ return coords;
1144
+ }
1145
+ var computePosition = async (reference, floating, config) => {
1146
+ const {
1147
+ placement = "bottom",
1148
+ strategy = "absolute",
1149
+ middleware = [],
1150
+ platform
1151
+ } = config;
1152
+ const validMiddleware = middleware.filter(Boolean);
1153
+ const rtl = await (platform.isRTL == null ? undefined : platform.isRTL(floating));
1154
+ let rects = await platform.getElementRects({
1155
+ reference,
1156
+ floating,
1157
+ strategy
1158
+ });
1159
+ let {
1160
+ x,
1161
+ y
1162
+ } = computeCoordsFromPlacement(rects, placement, rtl);
1163
+ let statefulPlacement = placement;
1164
+ let middlewareData = {};
1165
+ let resetCount = 0;
1166
+ for (let i = 0;i < validMiddleware.length; i++) {
1167
+ const {
1168
+ name,
1169
+ fn
1170
+ } = validMiddleware[i];
1171
+ const {
1172
+ x: nextX,
1173
+ y: nextY,
1174
+ data,
1175
+ reset
1176
+ } = await fn({
1177
+ x,
1178
+ y,
1179
+ initialPlacement: placement,
1180
+ placement: statefulPlacement,
1181
+ strategy,
1182
+ middlewareData,
1183
+ rects,
1184
+ platform,
1185
+ elements: {
1186
+ reference,
1187
+ floating
1188
+ }
1189
+ });
1190
+ x = nextX != null ? nextX : x;
1191
+ y = nextY != null ? nextY : y;
1192
+ middlewareData = {
1193
+ ...middlewareData,
1194
+ [name]: {
1195
+ ...middlewareData[name],
1196
+ ...data
1197
+ }
1198
+ };
1199
+ if (reset && resetCount <= 50) {
1200
+ resetCount++;
1201
+ if (typeof reset === "object") {
1202
+ if (reset.placement) {
1203
+ statefulPlacement = reset.placement;
1204
+ }
1205
+ if (reset.rects) {
1206
+ rects = reset.rects === true ? await platform.getElementRects({
1207
+ reference,
1208
+ floating,
1209
+ strategy
1210
+ }) : reset.rects;
1211
+ }
1212
+ ({
1213
+ x,
1214
+ y
1215
+ } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
1216
+ }
1217
+ i = -1;
1218
+ }
1219
+ }
1220
+ return {
1221
+ x,
1222
+ y,
1223
+ placement: statefulPlacement,
1224
+ strategy,
1225
+ middlewareData
1226
+ };
1227
+ };
1228
+ async function detectOverflow(state, options) {
1229
+ var _await$platform$isEle;
1230
+ if (options === undefined) {
1231
+ options = {};
1232
+ }
1233
+ const {
1234
+ x,
1235
+ y,
1236
+ platform,
1237
+ rects,
1238
+ elements,
1239
+ strategy
1240
+ } = state;
1241
+ const {
1242
+ boundary = "clippingAncestors",
1243
+ rootBoundary = "viewport",
1244
+ elementContext = "floating",
1245
+ altBoundary = false,
1246
+ padding = 0
1247
+ } = evaluate(options, state);
1248
+ const paddingObject = getPaddingObject(padding);
1249
+ const altContext = elementContext === "floating" ? "reference" : "floating";
1250
+ const element = elements[altBoundary ? altContext : elementContext];
1251
+ const clippingClientRect = rectToClientRect(await platform.getClippingRect({
1252
+ element: ((_await$platform$isEle = await (platform.isElement == null ? undefined : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform.getDocumentElement == null ? undefined : platform.getDocumentElement(elements.floating)),
1253
+ boundary,
1254
+ rootBoundary,
1255
+ strategy
1256
+ }));
1257
+ const rect = elementContext === "floating" ? {
1258
+ x,
1259
+ y,
1260
+ width: rects.floating.width,
1261
+ height: rects.floating.height
1262
+ } : rects.reference;
1263
+ const offsetParent = await (platform.getOffsetParent == null ? undefined : platform.getOffsetParent(elements.floating));
1264
+ const offsetScale = await (platform.isElement == null ? undefined : platform.isElement(offsetParent)) ? await (platform.getScale == null ? undefined : platform.getScale(offsetParent)) || {
1265
+ x: 1,
1266
+ y: 1
1267
+ } : {
1268
+ x: 1,
1269
+ y: 1
1270
+ };
1271
+ const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
1272
+ elements,
1273
+ rect,
1274
+ offsetParent,
1275
+ strategy
1276
+ }) : rect);
1277
+ return {
1278
+ top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
1279
+ bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
1280
+ left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
1281
+ right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
1282
+ };
1283
+ }
1284
+ var arrow = (options) => ({
1285
+ name: "arrow",
1286
+ options,
1287
+ async fn(state) {
1288
+ const {
1289
+ x,
1290
+ y,
1291
+ placement,
1292
+ rects,
1293
+ platform,
1294
+ elements,
1295
+ middlewareData
1296
+ } = state;
1297
+ const {
1298
+ element,
1299
+ padding = 0
1300
+ } = evaluate(options, state) || {};
1301
+ if (element == null) {
1302
+ return {};
1303
+ }
1304
+ const paddingObject = getPaddingObject(padding);
1305
+ const coords = {
1306
+ x,
1307
+ y
1308
+ };
1309
+ const axis = getAlignmentAxis(placement);
1310
+ const length = getAxisLength(axis);
1311
+ const arrowDimensions = await platform.getDimensions(element);
1312
+ const isYAxis = axis === "y";
1313
+ const minProp = isYAxis ? "top" : "left";
1314
+ const maxProp = isYAxis ? "bottom" : "right";
1315
+ const clientProp = isYAxis ? "clientHeight" : "clientWidth";
1316
+ const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
1317
+ const startDiff = coords[axis] - rects.reference[axis];
1318
+ const arrowOffsetParent = await (platform.getOffsetParent == null ? undefined : platform.getOffsetParent(element));
1319
+ let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
1320
+ if (!clientSize || !await (platform.isElement == null ? undefined : platform.isElement(arrowOffsetParent))) {
1321
+ clientSize = elements.floating[clientProp] || rects.floating[length];
1322
+ }
1323
+ const centerToReference = endDiff / 2 - startDiff / 2;
1324
+ const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
1325
+ const minPadding = min(paddingObject[minProp], largestPossiblePadding);
1326
+ const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);
1327
+ const min$1 = minPadding;
1328
+ const max2 = clientSize - arrowDimensions[length] - maxPadding;
1329
+ const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
1330
+ const offset = clamp(min$1, center, max2);
1331
+ const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
1332
+ const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max2 : 0;
1333
+ return {
1334
+ [axis]: coords[axis] + alignmentOffset,
1335
+ data: {
1336
+ [axis]: offset,
1337
+ centerOffset: center - offset - alignmentOffset,
1338
+ ...shouldAddOffset && {
1339
+ alignmentOffset
1340
+ }
1341
+ },
1342
+ reset: shouldAddOffset
1343
+ };
1344
+ }
1345
+ });
1346
+ var flip = function(options) {
1347
+ if (options === undefined) {
1348
+ options = {};
1349
+ }
1350
+ return {
1351
+ name: "flip",
1352
+ options,
1353
+ async fn(state) {
1354
+ var _middlewareData$arrow, _middlewareData$flip;
1355
+ const {
1356
+ placement,
1357
+ middlewareData,
1358
+ rects,
1359
+ initialPlacement,
1360
+ platform,
1361
+ elements
1362
+ } = state;
1363
+ const {
1364
+ mainAxis: checkMainAxis = true,
1365
+ crossAxis: checkCrossAxis = true,
1366
+ fallbackPlacements: specifiedFallbackPlacements,
1367
+ fallbackStrategy = "bestFit",
1368
+ fallbackAxisSideDirection = "none",
1369
+ flipAlignment = true,
1370
+ ...detectOverflowOptions
1371
+ } = evaluate(options, state);
1372
+ if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
1373
+ return {};
1374
+ }
1375
+ const side = getSide(placement);
1376
+ const initialSideAxis = getSideAxis(initialPlacement);
1377
+ const isBasePlacement = getSide(initialPlacement) === initialPlacement;
1378
+ const rtl = await (platform.isRTL == null ? undefined : platform.isRTL(elements.floating));
1379
+ const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
1380
+ const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none";
1381
+ if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
1382
+ fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
1383
+ }
1384
+ const placements2 = [initialPlacement, ...fallbackPlacements];
1385
+ const overflow = await detectOverflow(state, detectOverflowOptions);
1386
+ const overflows = [];
1387
+ let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? undefined : _middlewareData$flip.overflows) || [];
1388
+ if (checkMainAxis) {
1389
+ overflows.push(overflow[side]);
1390
+ }
1391
+ if (checkCrossAxis) {
1392
+ const sides2 = getAlignmentSides(placement, rects, rtl);
1393
+ overflows.push(overflow[sides2[0]], overflow[sides2[1]]);
1394
+ }
1395
+ overflowsData = [...overflowsData, {
1396
+ placement,
1397
+ overflows
1398
+ }];
1399
+ if (!overflows.every((side2) => side2 <= 0)) {
1400
+ var _middlewareData$flip2, _overflowsData$filter;
1401
+ const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? undefined : _middlewareData$flip2.index) || 0) + 1;
1402
+ const nextPlacement = placements2[nextIndex];
1403
+ if (nextPlacement) {
1404
+ const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false;
1405
+ if (!ignoreCrossAxisOverflow || overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {
1406
+ return {
1407
+ data: {
1408
+ index: nextIndex,
1409
+ overflows: overflowsData
1410
+ },
1411
+ reset: {
1412
+ placement: nextPlacement
1413
+ }
1414
+ };
1415
+ }
1416
+ }
1417
+ let resetPlacement = (_overflowsData$filter = overflowsData.filter((d) => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? undefined : _overflowsData$filter.placement;
1418
+ if (!resetPlacement) {
1419
+ switch (fallbackStrategy) {
1420
+ case "bestFit": {
1421
+ var _overflowsData$filter2;
1422
+ const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => {
1423
+ if (hasFallbackAxisSideDirection) {
1424
+ const currentSideAxis = getSideAxis(d.placement);
1425
+ return currentSideAxis === initialSideAxis || currentSideAxis === "y";
1426
+ }
1427
+ return true;
1428
+ }).map((d) => [d.placement, d.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? undefined : _overflowsData$filter2[0];
1429
+ if (placement2) {
1430
+ resetPlacement = placement2;
1431
+ }
1432
+ break;
1433
+ }
1434
+ case "initialPlacement":
1435
+ resetPlacement = initialPlacement;
1436
+ break;
1437
+ }
1438
+ }
1439
+ if (placement !== resetPlacement) {
1440
+ return {
1441
+ reset: {
1442
+ placement: resetPlacement
1443
+ }
1444
+ };
1445
+ }
1446
+ }
1447
+ return {};
1448
+ }
1449
+ };
1450
+ };
1451
+ function getSideOffsets(overflow, rect) {
1452
+ return {
1453
+ top: overflow.top - rect.height,
1454
+ right: overflow.right - rect.width,
1455
+ bottom: overflow.bottom - rect.height,
1456
+ left: overflow.left - rect.width
1457
+ };
1458
+ }
1459
+ function isAnySideFullyClipped(overflow) {
1460
+ return sides.some((side) => overflow[side] >= 0);
1461
+ }
1462
+ var hide = function(options) {
1463
+ if (options === undefined) {
1464
+ options = {};
1465
+ }
1466
+ return {
1467
+ name: "hide",
1468
+ options,
1469
+ async fn(state) {
1470
+ const {
1471
+ rects
1472
+ } = state;
1473
+ const {
1474
+ strategy = "referenceHidden",
1475
+ ...detectOverflowOptions
1476
+ } = evaluate(options, state);
1477
+ switch (strategy) {
1478
+ case "referenceHidden": {
1479
+ const overflow = await detectOverflow(state, {
1480
+ ...detectOverflowOptions,
1481
+ elementContext: "reference"
1482
+ });
1483
+ const offsets = getSideOffsets(overflow, rects.reference);
1484
+ return {
1485
+ data: {
1486
+ referenceHiddenOffsets: offsets,
1487
+ referenceHidden: isAnySideFullyClipped(offsets)
1488
+ }
1489
+ };
1490
+ }
1491
+ case "escaped": {
1492
+ const overflow = await detectOverflow(state, {
1493
+ ...detectOverflowOptions,
1494
+ altBoundary: true
1495
+ });
1496
+ const offsets = getSideOffsets(overflow, rects.floating);
1497
+ return {
1498
+ data: {
1499
+ escapedOffsets: offsets,
1500
+ escaped: isAnySideFullyClipped(offsets)
1501
+ }
1502
+ };
1503
+ }
1504
+ default: {
1505
+ return {};
1506
+ }
1507
+ }
1508
+ }
1509
+ };
1510
+ };
1511
+ var originSides = /* @__PURE__ */ new Set(["left", "top"]);
1512
+ async function convertValueToCoords(state, options) {
1513
+ const {
1514
+ placement,
1515
+ platform,
1516
+ elements
1517
+ } = state;
1518
+ const rtl = await (platform.isRTL == null ? undefined : platform.isRTL(elements.floating));
1519
+ const side = getSide(placement);
1520
+ const alignment = getAlignment(placement);
1521
+ const isVertical = getSideAxis(placement) === "y";
1522
+ const mainAxisMulti = originSides.has(side) ? -1 : 1;
1523
+ const crossAxisMulti = rtl && isVertical ? -1 : 1;
1524
+ const rawValue = evaluate(options, state);
1525
+ let {
1526
+ mainAxis,
1527
+ crossAxis,
1528
+ alignmentAxis
1529
+ } = typeof rawValue === "number" ? {
1530
+ mainAxis: rawValue,
1531
+ crossAxis: 0,
1532
+ alignmentAxis: null
1533
+ } : {
1534
+ mainAxis: rawValue.mainAxis || 0,
1535
+ crossAxis: rawValue.crossAxis || 0,
1536
+ alignmentAxis: rawValue.alignmentAxis
1537
+ };
1538
+ if (alignment && typeof alignmentAxis === "number") {
1539
+ crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis;
1540
+ }
1541
+ return isVertical ? {
1542
+ x: crossAxis * crossAxisMulti,
1543
+ y: mainAxis * mainAxisMulti
1544
+ } : {
1545
+ x: mainAxis * mainAxisMulti,
1546
+ y: crossAxis * crossAxisMulti
1547
+ };
1548
+ }
1549
+ var offset = function(options) {
1550
+ if (options === undefined) {
1551
+ options = 0;
1552
+ }
1553
+ return {
1554
+ name: "offset",
1555
+ options,
1556
+ async fn(state) {
1557
+ var _middlewareData$offse, _middlewareData$arrow;
1558
+ const {
1559
+ x,
1560
+ y,
1561
+ placement,
1562
+ middlewareData
1563
+ } = state;
1564
+ const diffCoords = await convertValueToCoords(state, options);
1565
+ if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? undefined : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
1566
+ return {};
1567
+ }
1568
+ return {
1569
+ x: x + diffCoords.x,
1570
+ y: y + diffCoords.y,
1571
+ data: {
1572
+ ...diffCoords,
1573
+ placement
1574
+ }
1575
+ };
1576
+ }
1577
+ };
1578
+ };
1579
+ var shift = function(options) {
1580
+ if (options === undefined) {
1581
+ options = {};
1582
+ }
1583
+ return {
1584
+ name: "shift",
1585
+ options,
1586
+ async fn(state) {
1587
+ const {
1588
+ x,
1589
+ y,
1590
+ placement
1591
+ } = state;
1592
+ const {
1593
+ mainAxis: checkMainAxis = true,
1594
+ crossAxis: checkCrossAxis = false,
1595
+ limiter = {
1596
+ fn: (_ref) => {
1597
+ let {
1598
+ x: x2,
1599
+ y: y2
1600
+ } = _ref;
1601
+ return {
1602
+ x: x2,
1603
+ y: y2
1604
+ };
1605
+ }
1606
+ },
1607
+ ...detectOverflowOptions
1608
+ } = evaluate(options, state);
1609
+ const coords = {
1610
+ x,
1611
+ y
1612
+ };
1613
+ const overflow = await detectOverflow(state, detectOverflowOptions);
1614
+ const crossAxis = getSideAxis(getSide(placement));
1615
+ const mainAxis = getOppositeAxis(crossAxis);
1616
+ let mainAxisCoord = coords[mainAxis];
1617
+ let crossAxisCoord = coords[crossAxis];
1618
+ if (checkMainAxis) {
1619
+ const minSide = mainAxis === "y" ? "top" : "left";
1620
+ const maxSide = mainAxis === "y" ? "bottom" : "right";
1621
+ const min2 = mainAxisCoord + overflow[minSide];
1622
+ const max2 = mainAxisCoord - overflow[maxSide];
1623
+ mainAxisCoord = clamp(min2, mainAxisCoord, max2);
1624
+ }
1625
+ if (checkCrossAxis) {
1626
+ const minSide = crossAxis === "y" ? "top" : "left";
1627
+ const maxSide = crossAxis === "y" ? "bottom" : "right";
1628
+ const min2 = crossAxisCoord + overflow[minSide];
1629
+ const max2 = crossAxisCoord - overflow[maxSide];
1630
+ crossAxisCoord = clamp(min2, crossAxisCoord, max2);
1631
+ }
1632
+ const limitedCoords = limiter.fn({
1633
+ ...state,
1634
+ [mainAxis]: mainAxisCoord,
1635
+ [crossAxis]: crossAxisCoord
1636
+ });
1637
+ return {
1638
+ ...limitedCoords,
1639
+ data: {
1640
+ x: limitedCoords.x - x,
1641
+ y: limitedCoords.y - y,
1642
+ enabled: {
1643
+ [mainAxis]: checkMainAxis,
1644
+ [crossAxis]: checkCrossAxis
1645
+ }
1646
+ }
1647
+ };
1648
+ }
1649
+ };
1650
+ };
1651
+ var limitShift = function(options) {
1652
+ if (options === undefined) {
1653
+ options = {};
1654
+ }
1655
+ return {
1656
+ options,
1657
+ fn(state) {
1658
+ const {
1659
+ x,
1660
+ y,
1661
+ placement,
1662
+ rects,
1663
+ middlewareData
1664
+ } = state;
1665
+ const {
1666
+ offset: offset2 = 0,
1667
+ mainAxis: checkMainAxis = true,
1668
+ crossAxis: checkCrossAxis = true
1669
+ } = evaluate(options, state);
1670
+ const coords = {
1671
+ x,
1672
+ y
1673
+ };
1674
+ const crossAxis = getSideAxis(placement);
1675
+ const mainAxis = getOppositeAxis(crossAxis);
1676
+ let mainAxisCoord = coords[mainAxis];
1677
+ let crossAxisCoord = coords[crossAxis];
1678
+ const rawOffset = evaluate(offset2, state);
1679
+ const computedOffset = typeof rawOffset === "number" ? {
1680
+ mainAxis: rawOffset,
1681
+ crossAxis: 0
1682
+ } : {
1683
+ mainAxis: 0,
1684
+ crossAxis: 0,
1685
+ ...rawOffset
1686
+ };
1687
+ if (checkMainAxis) {
1688
+ const len = mainAxis === "y" ? "height" : "width";
1689
+ const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;
1690
+ const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;
1691
+ if (mainAxisCoord < limitMin) {
1692
+ mainAxisCoord = limitMin;
1693
+ } else if (mainAxisCoord > limitMax) {
1694
+ mainAxisCoord = limitMax;
1695
+ }
1696
+ }
1697
+ if (checkCrossAxis) {
1698
+ var _middlewareData$offse, _middlewareData$offse2;
1699
+ const len = mainAxis === "y" ? "width" : "height";
1700
+ const isOriginSide = originSides.has(getSide(placement));
1701
+ const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? undefined : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
1702
+ const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? undefined : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
1703
+ if (crossAxisCoord < limitMin) {
1704
+ crossAxisCoord = limitMin;
1705
+ } else if (crossAxisCoord > limitMax) {
1706
+ crossAxisCoord = limitMax;
1707
+ }
1708
+ }
1709
+ return {
1710
+ [mainAxis]: mainAxisCoord,
1711
+ [crossAxis]: crossAxisCoord
1712
+ };
1713
+ }
1714
+ };
1715
+ };
1716
+ var size = function(options) {
1717
+ if (options === undefined) {
1718
+ options = {};
1719
+ }
1720
+ return {
1721
+ name: "size",
1722
+ options,
1723
+ async fn(state) {
1724
+ var _state$middlewareData, _state$middlewareData2;
1725
+ const {
1726
+ placement,
1727
+ rects,
1728
+ platform,
1729
+ elements
1730
+ } = state;
1731
+ const {
1732
+ apply = () => {},
1733
+ ...detectOverflowOptions
1734
+ } = evaluate(options, state);
1735
+ const overflow = await detectOverflow(state, detectOverflowOptions);
1736
+ const side = getSide(placement);
1737
+ const alignment = getAlignment(placement);
1738
+ const isYAxis = getSideAxis(placement) === "y";
1739
+ const {
1740
+ width,
1741
+ height
1742
+ } = rects.floating;
1743
+ let heightSide;
1744
+ let widthSide;
1745
+ if (side === "top" || side === "bottom") {
1746
+ heightSide = side;
1747
+ widthSide = alignment === (await (platform.isRTL == null ? undefined : platform.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right";
1748
+ } else {
1749
+ widthSide = side;
1750
+ heightSide = alignment === "end" ? "top" : "bottom";
1751
+ }
1752
+ const maximumClippingHeight = height - overflow.top - overflow.bottom;
1753
+ const maximumClippingWidth = width - overflow.left - overflow.right;
1754
+ const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
1755
+ const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
1756
+ const noShift = !state.middlewareData.shift;
1757
+ let availableHeight = overflowAvailableHeight;
1758
+ let availableWidth = overflowAvailableWidth;
1759
+ if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {
1760
+ availableWidth = maximumClippingWidth;
1761
+ }
1762
+ if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {
1763
+ availableHeight = maximumClippingHeight;
1764
+ }
1765
+ if (noShift && !alignment) {
1766
+ const xMin = max(overflow.left, 0);
1767
+ const xMax = max(overflow.right, 0);
1768
+ const yMin = max(overflow.top, 0);
1769
+ const yMax = max(overflow.bottom, 0);
1770
+ if (isYAxis) {
1771
+ availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
1772
+ } else {
1773
+ availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
1774
+ }
1775
+ }
1776
+ await apply({
1777
+ ...state,
1778
+ availableWidth,
1779
+ availableHeight
1780
+ });
1781
+ const nextDimensions = await platform.getDimensions(elements.floating);
1782
+ if (width !== nextDimensions.width || height !== nextDimensions.height) {
1783
+ return {
1784
+ reset: {
1785
+ rects: true
1786
+ }
1787
+ };
1788
+ }
1789
+ return {};
1790
+ }
1791
+ };
1792
+ };
1793
+
1794
+ // ../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
1795
+ function hasWindow() {
1796
+ return typeof window !== "undefined";
1797
+ }
1798
+ function getNodeName(node) {
1799
+ if (isNode(node)) {
1800
+ return (node.nodeName || "").toLowerCase();
1801
+ }
1802
+ return "#document";
1803
+ }
1804
+ function getWindow(node) {
1805
+ var _node$ownerDocument;
1806
+ return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? undefined : _node$ownerDocument.defaultView) || window;
1807
+ }
1808
+ function getDocumentElement(node) {
1809
+ var _ref;
1810
+ return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? undefined : _ref.documentElement;
1811
+ }
1812
+ function isNode(value) {
1813
+ if (!hasWindow()) {
1814
+ return false;
1815
+ }
1816
+ return value instanceof Node || value instanceof getWindow(value).Node;
1817
+ }
1818
+ function isElement(value) {
1819
+ if (!hasWindow()) {
1820
+ return false;
1821
+ }
1822
+ return value instanceof Element || value instanceof getWindow(value).Element;
1823
+ }
1824
+ function isHTMLElement(value) {
1825
+ if (!hasWindow()) {
1826
+ return false;
1827
+ }
1828
+ return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
1829
+ }
1830
+ function isShadowRoot(value) {
1831
+ if (!hasWindow() || typeof ShadowRoot === "undefined") {
1832
+ return false;
1833
+ }
1834
+ return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
1835
+ }
1836
+ var invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
1837
+ function isOverflowElement(element) {
1838
+ const {
1839
+ overflow,
1840
+ overflowX,
1841
+ overflowY,
1842
+ display
1843
+ } = getComputedStyle2(element);
1844
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
1845
+ }
1846
+ var tableElements = /* @__PURE__ */ new Set(["table", "td", "th"]);
1847
+ function isTableElement(element) {
1848
+ return tableElements.has(getNodeName(element));
1849
+ }
1850
+ var topLayerSelectors = [":popover-open", ":modal"];
1851
+ function isTopLayer(element) {
1852
+ return topLayerSelectors.some((selector) => {
1853
+ try {
1854
+ return element.matches(selector);
1855
+ } catch (_e) {
1856
+ return false;
1857
+ }
1858
+ });
1859
+ }
1860
+ var transformProperties = ["transform", "translate", "scale", "rotate", "perspective"];
1861
+ var willChangeValues = ["transform", "translate", "scale", "rotate", "perspective", "filter"];
1862
+ var containValues = ["paint", "layout", "strict", "content"];
1863
+ function isContainingBlock(elementOrCss) {
1864
+ const webkit = isWebKit();
1865
+ const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss;
1866
+ return transformProperties.some((value) => css[value] ? css[value] !== "none" : false) || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || willChangeValues.some((value) => (css.willChange || "").includes(value)) || containValues.some((value) => (css.contain || "").includes(value));
1867
+ }
1868
+ function getContainingBlock(element) {
1869
+ let currentNode = getParentNode(element);
1870
+ while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
1871
+ if (isContainingBlock(currentNode)) {
1872
+ return currentNode;
1873
+ } else if (isTopLayer(currentNode)) {
1874
+ return null;
1875
+ }
1876
+ currentNode = getParentNode(currentNode);
1877
+ }
1878
+ return null;
1879
+ }
1880
+ function isWebKit() {
1881
+ if (typeof CSS === "undefined" || !CSS.supports)
1882
+ return false;
1883
+ return CSS.supports("-webkit-backdrop-filter", "none");
1884
+ }
1885
+ var lastTraversableNodeNames = /* @__PURE__ */ new Set(["html", "body", "#document"]);
1886
+ function isLastTraversableNode(node) {
1887
+ return lastTraversableNodeNames.has(getNodeName(node));
1888
+ }
1889
+ function getComputedStyle2(element) {
1890
+ return getWindow(element).getComputedStyle(element);
1891
+ }
1892
+ function getNodeScroll(element) {
1893
+ if (isElement(element)) {
1894
+ return {
1895
+ scrollLeft: element.scrollLeft,
1896
+ scrollTop: element.scrollTop
1897
+ };
1898
+ }
1899
+ return {
1900
+ scrollLeft: element.scrollX,
1901
+ scrollTop: element.scrollY
1902
+ };
1903
+ }
1904
+ function getParentNode(node) {
1905
+ if (getNodeName(node) === "html") {
1906
+ return node;
1907
+ }
1908
+ const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node);
1909
+ return isShadowRoot(result) ? result.host : result;
1910
+ }
1911
+ function getNearestOverflowAncestor(node) {
1912
+ const parentNode = getParentNode(node);
1913
+ if (isLastTraversableNode(parentNode)) {
1914
+ return node.ownerDocument ? node.ownerDocument.body : node.body;
1915
+ }
1916
+ if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
1917
+ return parentNode;
1918
+ }
1919
+ return getNearestOverflowAncestor(parentNode);
1920
+ }
1921
+ function getOverflowAncestors(node, list, traverseIframes) {
1922
+ var _node$ownerDocument2;
1923
+ if (list === undefined) {
1924
+ list = [];
1925
+ }
1926
+ if (traverseIframes === undefined) {
1927
+ traverseIframes = true;
1928
+ }
1929
+ const scrollableAncestor = getNearestOverflowAncestor(node);
1930
+ const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? undefined : _node$ownerDocument2.body);
1931
+ const win = getWindow(scrollableAncestor);
1932
+ if (isBody) {
1933
+ const frameElement = getFrameElement(win);
1934
+ return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
1935
+ }
1936
+ return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
1937
+ }
1938
+ function getFrameElement(win) {
1939
+ return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
1940
+ }
1941
+
1942
+ // ../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
1943
+ function getCssDimensions(element) {
1944
+ const css = getComputedStyle2(element);
1945
+ let width = parseFloat(css.width) || 0;
1946
+ let height = parseFloat(css.height) || 0;
1947
+ const hasOffset = isHTMLElement(element);
1948
+ const offsetWidth = hasOffset ? element.offsetWidth : width;
1949
+ const offsetHeight = hasOffset ? element.offsetHeight : height;
1950
+ const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
1951
+ if (shouldFallback) {
1952
+ width = offsetWidth;
1953
+ height = offsetHeight;
1954
+ }
1955
+ return {
1956
+ width,
1957
+ height,
1958
+ $: shouldFallback
1959
+ };
1960
+ }
1961
+ function unwrapElement(element) {
1962
+ return !isElement(element) ? element.contextElement : element;
1963
+ }
1964
+ function getScale(element) {
1965
+ const domElement = unwrapElement(element);
1966
+ if (!isHTMLElement(domElement)) {
1967
+ return createCoords(1);
1968
+ }
1969
+ const rect = domElement.getBoundingClientRect();
1970
+ const {
1971
+ width,
1972
+ height,
1973
+ $
1974
+ } = getCssDimensions(domElement);
1975
+ let x = ($ ? round(rect.width) : rect.width) / width;
1976
+ let y = ($ ? round(rect.height) : rect.height) / height;
1977
+ if (!x || !Number.isFinite(x)) {
1978
+ x = 1;
1979
+ }
1980
+ if (!y || !Number.isFinite(y)) {
1981
+ y = 1;
1982
+ }
1983
+ return {
1984
+ x,
1985
+ y
1986
+ };
1987
+ }
1988
+ var noOffsets = /* @__PURE__ */ createCoords(0);
1989
+ function getVisualOffsets(element) {
1990
+ const win = getWindow(element);
1991
+ if (!isWebKit() || !win.visualViewport) {
1992
+ return noOffsets;
1993
+ }
1994
+ return {
1995
+ x: win.visualViewport.offsetLeft,
1996
+ y: win.visualViewport.offsetTop
1997
+ };
1998
+ }
1999
+ function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
2000
+ if (isFixed === undefined) {
2001
+ isFixed = false;
2002
+ }
2003
+ if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
2004
+ return false;
2005
+ }
2006
+ return isFixed;
2007
+ }
2008
+ function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
2009
+ if (includeScale === undefined) {
2010
+ includeScale = false;
2011
+ }
2012
+ if (isFixedStrategy === undefined) {
2013
+ isFixedStrategy = false;
2014
+ }
2015
+ const clientRect = element.getBoundingClientRect();
2016
+ const domElement = unwrapElement(element);
2017
+ let scale = createCoords(1);
2018
+ if (includeScale) {
2019
+ if (offsetParent) {
2020
+ if (isElement(offsetParent)) {
2021
+ scale = getScale(offsetParent);
2022
+ }
2023
+ } else {
2024
+ scale = getScale(element);
2025
+ }
2026
+ }
2027
+ const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
2028
+ let x = (clientRect.left + visualOffsets.x) / scale.x;
2029
+ let y = (clientRect.top + visualOffsets.y) / scale.y;
2030
+ let width = clientRect.width / scale.x;
2031
+ let height = clientRect.height / scale.y;
2032
+ if (domElement) {
2033
+ const win = getWindow(domElement);
2034
+ const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
2035
+ let currentWin = win;
2036
+ let currentIFrame = getFrameElement(currentWin);
2037
+ while (currentIFrame && offsetParent && offsetWin !== currentWin) {
2038
+ const iframeScale = getScale(currentIFrame);
2039
+ const iframeRect = currentIFrame.getBoundingClientRect();
2040
+ const css = getComputedStyle2(currentIFrame);
2041
+ const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
2042
+ const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
2043
+ x *= iframeScale.x;
2044
+ y *= iframeScale.y;
2045
+ width *= iframeScale.x;
2046
+ height *= iframeScale.y;
2047
+ x += left;
2048
+ y += top;
2049
+ currentWin = getWindow(currentIFrame);
2050
+ currentIFrame = getFrameElement(currentWin);
2051
+ }
2052
+ }
2053
+ return rectToClientRect({
2054
+ width,
2055
+ height,
2056
+ x,
2057
+ y
2058
+ });
2059
+ }
2060
+ function getWindowScrollBarX(element, rect) {
2061
+ const leftScroll = getNodeScroll(element).scrollLeft;
2062
+ if (!rect) {
2063
+ return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
2064
+ }
2065
+ return rect.left + leftScroll;
2066
+ }
2067
+ function getHTMLOffset(documentElement, scroll) {
2068
+ const htmlRect = documentElement.getBoundingClientRect();
2069
+ const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
2070
+ const y = htmlRect.top + scroll.scrollTop;
2071
+ return {
2072
+ x,
2073
+ y
2074
+ };
2075
+ }
2076
+ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
2077
+ let {
2078
+ elements,
2079
+ rect,
2080
+ offsetParent,
2081
+ strategy
2082
+ } = _ref;
2083
+ const isFixed = strategy === "fixed";
2084
+ const documentElement = getDocumentElement(offsetParent);
2085
+ const topLayer = elements ? isTopLayer(elements.floating) : false;
2086
+ if (offsetParent === documentElement || topLayer && isFixed) {
2087
+ return rect;
2088
+ }
2089
+ let scroll = {
2090
+ scrollLeft: 0,
2091
+ scrollTop: 0
2092
+ };
2093
+ let scale = createCoords(1);
2094
+ const offsets = createCoords(0);
2095
+ const isOffsetParentAnElement = isHTMLElement(offsetParent);
2096
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
2097
+ if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
2098
+ scroll = getNodeScroll(offsetParent);
2099
+ }
2100
+ if (isHTMLElement(offsetParent)) {
2101
+ const offsetRect = getBoundingClientRect(offsetParent);
2102
+ scale = getScale(offsetParent);
2103
+ offsets.x = offsetRect.x + offsetParent.clientLeft;
2104
+ offsets.y = offsetRect.y + offsetParent.clientTop;
2105
+ }
2106
+ }
2107
+ const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
2108
+ return {
2109
+ width: rect.width * scale.x,
2110
+ height: rect.height * scale.y,
2111
+ x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,
2112
+ y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y
2113
+ };
2114
+ }
2115
+ function getClientRects(element) {
2116
+ return Array.from(element.getClientRects());
2117
+ }
2118
+ function getDocumentRect(element) {
2119
+ const html = getDocumentElement(element);
2120
+ const scroll = getNodeScroll(element);
2121
+ const body = element.ownerDocument.body;
2122
+ const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
2123
+ const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
2124
+ let x = -scroll.scrollLeft + getWindowScrollBarX(element);
2125
+ const y = -scroll.scrollTop;
2126
+ if (getComputedStyle2(body).direction === "rtl") {
2127
+ x += max(html.clientWidth, body.clientWidth) - width;
2128
+ }
2129
+ return {
2130
+ width,
2131
+ height,
2132
+ x,
2133
+ y
2134
+ };
2135
+ }
2136
+ var SCROLLBAR_MAX = 25;
2137
+ function getViewportRect(element, strategy) {
2138
+ const win = getWindow(element);
2139
+ const html = getDocumentElement(element);
2140
+ const visualViewport = win.visualViewport;
2141
+ let width = html.clientWidth;
2142
+ let height = html.clientHeight;
2143
+ let x = 0;
2144
+ let y = 0;
2145
+ if (visualViewport) {
2146
+ width = visualViewport.width;
2147
+ height = visualViewport.height;
2148
+ const visualViewportBased = isWebKit();
2149
+ if (!visualViewportBased || visualViewportBased && strategy === "fixed") {
2150
+ x = visualViewport.offsetLeft;
2151
+ y = visualViewport.offsetTop;
2152
+ }
2153
+ }
2154
+ const windowScrollbarX = getWindowScrollBarX(html);
2155
+ if (windowScrollbarX <= 0) {
2156
+ const doc = html.ownerDocument;
2157
+ const body = doc.body;
2158
+ const bodyStyles = getComputedStyle(body);
2159
+ const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
2160
+ const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
2161
+ if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
2162
+ width -= clippingStableScrollbarWidth;
2163
+ }
2164
+ } else if (windowScrollbarX <= SCROLLBAR_MAX) {
2165
+ width += windowScrollbarX;
2166
+ }
2167
+ return {
2168
+ width,
2169
+ height,
2170
+ x,
2171
+ y
2172
+ };
2173
+ }
2174
+ var absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
2175
+ function getInnerBoundingClientRect(element, strategy) {
2176
+ const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
2177
+ const top = clientRect.top + element.clientTop;
2178
+ const left = clientRect.left + element.clientLeft;
2179
+ const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
2180
+ const width = element.clientWidth * scale.x;
2181
+ const height = element.clientHeight * scale.y;
2182
+ const x = left * scale.x;
2183
+ const y = top * scale.y;
2184
+ return {
2185
+ width,
2186
+ height,
2187
+ x,
2188
+ y
2189
+ };
2190
+ }
2191
+ function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
2192
+ let rect;
2193
+ if (clippingAncestor === "viewport") {
2194
+ rect = getViewportRect(element, strategy);
2195
+ } else if (clippingAncestor === "document") {
2196
+ rect = getDocumentRect(getDocumentElement(element));
2197
+ } else if (isElement(clippingAncestor)) {
2198
+ rect = getInnerBoundingClientRect(clippingAncestor, strategy);
2199
+ } else {
2200
+ const visualOffsets = getVisualOffsets(element);
2201
+ rect = {
2202
+ x: clippingAncestor.x - visualOffsets.x,
2203
+ y: clippingAncestor.y - visualOffsets.y,
2204
+ width: clippingAncestor.width,
2205
+ height: clippingAncestor.height
2206
+ };
2207
+ }
2208
+ return rectToClientRect(rect);
2209
+ }
2210
+ function hasFixedPositionAncestor(element, stopNode) {
2211
+ const parentNode = getParentNode(element);
2212
+ if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
2213
+ return false;
2214
+ }
2215
+ return getComputedStyle2(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode);
2216
+ }
2217
+ function getClippingElementAncestors(element, cache) {
2218
+ const cachedResult = cache.get(element);
2219
+ if (cachedResult) {
2220
+ return cachedResult;
2221
+ }
2222
+ let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body");
2223
+ let currentContainingBlockComputedStyle = null;
2224
+ const elementIsFixed = getComputedStyle2(element).position === "fixed";
2225
+ let currentNode = elementIsFixed ? getParentNode(element) : element;
2226
+ while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
2227
+ const computedStyle = getComputedStyle2(currentNode);
2228
+ const currentNodeIsContaining = isContainingBlock(currentNode);
2229
+ if (!currentNodeIsContaining && computedStyle.position === "fixed") {
2230
+ currentContainingBlockComputedStyle = null;
2231
+ }
2232
+ const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
2233
+ if (shouldDropCurrentNode) {
2234
+ result = result.filter((ancestor) => ancestor !== currentNode);
2235
+ } else {
2236
+ currentContainingBlockComputedStyle = computedStyle;
2237
+ }
2238
+ currentNode = getParentNode(currentNode);
2239
+ }
2240
+ cache.set(element, result);
2241
+ return result;
2242
+ }
2243
+ function getClippingRect(_ref) {
2244
+ let {
2245
+ element,
2246
+ boundary,
2247
+ rootBoundary,
2248
+ strategy
2249
+ } = _ref;
2250
+ const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
2251
+ const clippingAncestors = [...elementClippingAncestors, rootBoundary];
2252
+ const firstClippingAncestor = clippingAncestors[0];
2253
+ const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
2254
+ const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
2255
+ accRect.top = max(rect.top, accRect.top);
2256
+ accRect.right = min(rect.right, accRect.right);
2257
+ accRect.bottom = min(rect.bottom, accRect.bottom);
2258
+ accRect.left = max(rect.left, accRect.left);
2259
+ return accRect;
2260
+ }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
2261
+ return {
2262
+ width: clippingRect.right - clippingRect.left,
2263
+ height: clippingRect.bottom - clippingRect.top,
2264
+ x: clippingRect.left,
2265
+ y: clippingRect.top
2266
+ };
2267
+ }
2268
+ function getDimensions(element) {
2269
+ const {
2270
+ width,
2271
+ height
2272
+ } = getCssDimensions(element);
2273
+ return {
2274
+ width,
2275
+ height
2276
+ };
2277
+ }
2278
+ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
2279
+ const isOffsetParentAnElement = isHTMLElement(offsetParent);
2280
+ const documentElement = getDocumentElement(offsetParent);
2281
+ const isFixed = strategy === "fixed";
2282
+ const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
2283
+ let scroll = {
2284
+ scrollLeft: 0,
2285
+ scrollTop: 0
2286
+ };
2287
+ const offsets = createCoords(0);
2288
+ function setLeftRTLScrollbarOffset() {
2289
+ offsets.x = getWindowScrollBarX(documentElement);
2290
+ }
2291
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
2292
+ if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
2293
+ scroll = getNodeScroll(offsetParent);
2294
+ }
2295
+ if (isOffsetParentAnElement) {
2296
+ const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
2297
+ offsets.x = offsetRect.x + offsetParent.clientLeft;
2298
+ offsets.y = offsetRect.y + offsetParent.clientTop;
2299
+ } else if (documentElement) {
2300
+ setLeftRTLScrollbarOffset();
2301
+ }
2302
+ }
2303
+ if (isFixed && !isOffsetParentAnElement && documentElement) {
2304
+ setLeftRTLScrollbarOffset();
2305
+ }
2306
+ const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
2307
+ const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
2308
+ const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
2309
+ return {
2310
+ x,
2311
+ y,
2312
+ width: rect.width,
2313
+ height: rect.height
2314
+ };
2315
+ }
2316
+ function isStaticPositioned(element) {
2317
+ return getComputedStyle2(element).position === "static";
2318
+ }
2319
+ function getTrueOffsetParent(element, polyfill) {
2320
+ if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") {
2321
+ return null;
2322
+ }
2323
+ if (polyfill) {
2324
+ return polyfill(element);
2325
+ }
2326
+ let rawOffsetParent = element.offsetParent;
2327
+ if (getDocumentElement(element) === rawOffsetParent) {
2328
+ rawOffsetParent = rawOffsetParent.ownerDocument.body;
2329
+ }
2330
+ return rawOffsetParent;
2331
+ }
2332
+ function getOffsetParent(element, polyfill) {
2333
+ const win = getWindow(element);
2334
+ if (isTopLayer(element)) {
2335
+ return win;
2336
+ }
2337
+ if (!isHTMLElement(element)) {
2338
+ let svgOffsetParent = getParentNode(element);
2339
+ while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
2340
+ if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
2341
+ return svgOffsetParent;
2342
+ }
2343
+ svgOffsetParent = getParentNode(svgOffsetParent);
2344
+ }
2345
+ return win;
2346
+ }
2347
+ let offsetParent = getTrueOffsetParent(element, polyfill);
2348
+ while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
2349
+ offsetParent = getTrueOffsetParent(offsetParent, polyfill);
2350
+ }
2351
+ if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
2352
+ return win;
2353
+ }
2354
+ return offsetParent || getContainingBlock(element) || win;
2355
+ }
2356
+ var getElementRects = async function(data) {
2357
+ const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
2358
+ const getDimensionsFn = this.getDimensions;
2359
+ const floatingDimensions = await getDimensionsFn(data.floating);
2360
+ return {
2361
+ reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
2362
+ floating: {
2363
+ x: 0,
2364
+ y: 0,
2365
+ width: floatingDimensions.width,
2366
+ height: floatingDimensions.height
2367
+ }
2368
+ };
2369
+ };
2370
+ function isRTL(element) {
2371
+ return getComputedStyle2(element).direction === "rtl";
2372
+ }
2373
+ var platform = {
2374
+ convertOffsetParentRelativeRectToViewportRelativeRect,
2375
+ getDocumentElement,
2376
+ getClippingRect,
2377
+ getOffsetParent,
2378
+ getElementRects,
2379
+ getClientRects,
2380
+ getDimensions,
2381
+ getScale,
2382
+ isElement,
2383
+ isRTL
2384
+ };
2385
+ function rectsAreEqual(a, b) {
2386
+ return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
2387
+ }
2388
+ function observeMove(element, onMove) {
2389
+ let io = null;
2390
+ let timeoutId;
2391
+ const root = getDocumentElement(element);
2392
+ function cleanup() {
2393
+ var _io;
2394
+ clearTimeout(timeoutId);
2395
+ (_io = io) == null || _io.disconnect();
2396
+ io = null;
2397
+ }
2398
+ function refresh(skip, threshold) {
2399
+ if (skip === undefined) {
2400
+ skip = false;
2401
+ }
2402
+ if (threshold === undefined) {
2403
+ threshold = 1;
2404
+ }
2405
+ cleanup();
2406
+ const elementRectForRootMargin = element.getBoundingClientRect();
2407
+ const {
2408
+ left,
2409
+ top,
2410
+ width,
2411
+ height
2412
+ } = elementRectForRootMargin;
2413
+ if (!skip) {
2414
+ onMove();
2415
+ }
2416
+ if (!width || !height) {
2417
+ return;
2418
+ }
2419
+ const insetTop = floor(top);
2420
+ const insetRight = floor(root.clientWidth - (left + width));
2421
+ const insetBottom = floor(root.clientHeight - (top + height));
2422
+ const insetLeft = floor(left);
2423
+ const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
2424
+ const options = {
2425
+ rootMargin,
2426
+ threshold: max(0, min(1, threshold)) || 1
2427
+ };
2428
+ let isFirstUpdate = true;
2429
+ function handleObserve(entries) {
2430
+ const ratio = entries[0].intersectionRatio;
2431
+ if (ratio !== threshold) {
2432
+ if (!isFirstUpdate) {
2433
+ return refresh();
2434
+ }
2435
+ if (!ratio) {
2436
+ timeoutId = setTimeout(() => {
2437
+ refresh(false, 0.0000001);
2438
+ }, 1000);
2439
+ } else {
2440
+ refresh(false, ratio);
2441
+ }
2442
+ }
2443
+ if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
2444
+ refresh();
2445
+ }
2446
+ isFirstUpdate = false;
2447
+ }
2448
+ try {
2449
+ io = new IntersectionObserver(handleObserve, {
2450
+ ...options,
2451
+ root: root.ownerDocument
2452
+ });
2453
+ } catch (_e) {
2454
+ io = new IntersectionObserver(handleObserve, options);
2455
+ }
2456
+ io.observe(element);
2457
+ }
2458
+ refresh(true);
2459
+ return cleanup;
2460
+ }
2461
+ function autoUpdate(reference, floating, update, options) {
2462
+ if (options === undefined) {
2463
+ options = {};
2464
+ }
2465
+ const {
2466
+ ancestorScroll = true,
2467
+ ancestorResize = true,
2468
+ elementResize = typeof ResizeObserver === "function",
2469
+ layoutShift = typeof IntersectionObserver === "function",
2470
+ animationFrame = false
2471
+ } = options;
2472
+ const referenceEl = unwrapElement(reference);
2473
+ const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];
2474
+ ancestors.forEach((ancestor) => {
2475
+ ancestorScroll && ancestor.addEventListener("scroll", update, {
2476
+ passive: true
2477
+ });
2478
+ ancestorResize && ancestor.addEventListener("resize", update);
2479
+ });
2480
+ const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
2481
+ let reobserveFrame = -1;
2482
+ let resizeObserver = null;
2483
+ if (elementResize) {
2484
+ resizeObserver = new ResizeObserver((_ref) => {
2485
+ let [firstEntry] = _ref;
2486
+ if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
2487
+ resizeObserver.unobserve(floating);
2488
+ cancelAnimationFrame(reobserveFrame);
2489
+ reobserveFrame = requestAnimationFrame(() => {
2490
+ var _resizeObserver;
2491
+ (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
2492
+ });
2493
+ }
2494
+ update();
2495
+ });
2496
+ if (referenceEl && !animationFrame) {
2497
+ resizeObserver.observe(referenceEl);
2498
+ }
2499
+ resizeObserver.observe(floating);
2500
+ }
2501
+ let frameId;
2502
+ let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
2503
+ if (animationFrame) {
2504
+ frameLoop();
2505
+ }
2506
+ function frameLoop() {
2507
+ const nextRefRect = getBoundingClientRect(reference);
2508
+ if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {
2509
+ update();
2510
+ }
2511
+ prevRefRect = nextRefRect;
2512
+ frameId = requestAnimationFrame(frameLoop);
2513
+ }
2514
+ update();
2515
+ return () => {
2516
+ var _resizeObserver2;
2517
+ ancestors.forEach((ancestor) => {
2518
+ ancestorScroll && ancestor.removeEventListener("scroll", update);
2519
+ ancestorResize && ancestor.removeEventListener("resize", update);
2520
+ });
2521
+ cleanupIo == null || cleanupIo();
2522
+ (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
2523
+ resizeObserver = null;
2524
+ if (animationFrame) {
2525
+ cancelAnimationFrame(frameId);
2526
+ }
2527
+ };
2528
+ }
2529
+ var offset2 = offset;
2530
+ var shift2 = shift;
2531
+ var flip2 = flip;
2532
+ var size2 = size;
2533
+ var hide2 = hide;
2534
+ var arrow2 = arrow;
2535
+ var limitShift2 = limitShift;
2536
+ var computePosition2 = (reference, floating, options) => {
2537
+ const cache = new Map;
2538
+ const mergedOptions = {
2539
+ platform,
2540
+ ...options
2541
+ };
2542
+ const platformWithCache = {
2543
+ ...mergedOptions.platform,
2544
+ _c: cache
2545
+ };
2546
+ return computePosition(reference, floating, {
2547
+ ...mergedOptions,
2548
+ platform: platformWithCache
2549
+ });
2550
+ };
2551
+
2552
+ // ../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs
2553
+ import * as React10 from "react";
2554
+ import { useLayoutEffect as useLayoutEffect3 } from "react";
2555
+ import * as ReactDOM2 from "react-dom";
2556
+ var isClient = typeof document !== "undefined";
2557
+ var noop = function noop2() {};
2558
+ var index = isClient ? useLayoutEffect3 : noop;
2559
+ function deepEqual(a, b) {
2560
+ if (a === b) {
2561
+ return true;
2562
+ }
2563
+ if (typeof a !== typeof b) {
2564
+ return false;
2565
+ }
2566
+ if (typeof a === "function" && a.toString() === b.toString()) {
2567
+ return true;
2568
+ }
2569
+ let length;
2570
+ let i;
2571
+ let keys;
2572
+ if (a && b && typeof a === "object") {
2573
+ if (Array.isArray(a)) {
2574
+ length = a.length;
2575
+ if (length !== b.length)
2576
+ return false;
2577
+ for (i = length;i-- !== 0; ) {
2578
+ if (!deepEqual(a[i], b[i])) {
2579
+ return false;
2580
+ }
2581
+ }
2582
+ return true;
2583
+ }
2584
+ keys = Object.keys(a);
2585
+ length = keys.length;
2586
+ if (length !== Object.keys(b).length) {
2587
+ return false;
2588
+ }
2589
+ for (i = length;i-- !== 0; ) {
2590
+ if (!{}.hasOwnProperty.call(b, keys[i])) {
2591
+ return false;
2592
+ }
2593
+ }
2594
+ for (i = length;i-- !== 0; ) {
2595
+ const key = keys[i];
2596
+ if (key === "_owner" && a.$$typeof) {
2597
+ continue;
2598
+ }
2599
+ if (!deepEqual(a[key], b[key])) {
2600
+ return false;
2601
+ }
2602
+ }
2603
+ return true;
2604
+ }
2605
+ return a !== a && b !== b;
2606
+ }
2607
+ function getDPR(element) {
2608
+ if (typeof window === "undefined") {
2609
+ return 1;
2610
+ }
2611
+ const win = element.ownerDocument.defaultView || window;
2612
+ return win.devicePixelRatio || 1;
2613
+ }
2614
+ function roundByDPR(element, value) {
2615
+ const dpr = getDPR(element);
2616
+ return Math.round(value * dpr) / dpr;
2617
+ }
2618
+ function useLatestRef(value) {
2619
+ const ref = React10.useRef(value);
2620
+ index(() => {
2621
+ ref.current = value;
2622
+ });
2623
+ return ref;
2624
+ }
2625
+ function useFloating(options) {
2626
+ if (options === undefined) {
2627
+ options = {};
2628
+ }
2629
+ const {
2630
+ placement = "bottom",
2631
+ strategy = "absolute",
2632
+ middleware = [],
2633
+ platform: platform2,
2634
+ elements: {
2635
+ reference: externalReference,
2636
+ floating: externalFloating
2637
+ } = {},
2638
+ transform = true,
2639
+ whileElementsMounted,
2640
+ open
2641
+ } = options;
2642
+ const [data, setData] = React10.useState({
2643
+ x: 0,
2644
+ y: 0,
2645
+ strategy,
2646
+ placement,
2647
+ middlewareData: {},
2648
+ isPositioned: false
2649
+ });
2650
+ const [latestMiddleware, setLatestMiddleware] = React10.useState(middleware);
2651
+ if (!deepEqual(latestMiddleware, middleware)) {
2652
+ setLatestMiddleware(middleware);
2653
+ }
2654
+ const [_reference, _setReference] = React10.useState(null);
2655
+ const [_floating, _setFloating] = React10.useState(null);
2656
+ const setReference = React10.useCallback((node) => {
2657
+ if (node !== referenceRef.current) {
2658
+ referenceRef.current = node;
2659
+ _setReference(node);
2660
+ }
2661
+ }, []);
2662
+ const setFloating = React10.useCallback((node) => {
2663
+ if (node !== floatingRef.current) {
2664
+ floatingRef.current = node;
2665
+ _setFloating(node);
2666
+ }
2667
+ }, []);
2668
+ const referenceEl = externalReference || _reference;
2669
+ const floatingEl = externalFloating || _floating;
2670
+ const referenceRef = React10.useRef(null);
2671
+ const floatingRef = React10.useRef(null);
2672
+ const dataRef = React10.useRef(data);
2673
+ const hasWhileElementsMounted = whileElementsMounted != null;
2674
+ const whileElementsMountedRef = useLatestRef(whileElementsMounted);
2675
+ const platformRef = useLatestRef(platform2);
2676
+ const openRef = useLatestRef(open);
2677
+ const update = React10.useCallback(() => {
2678
+ if (!referenceRef.current || !floatingRef.current) {
2679
+ return;
2680
+ }
2681
+ const config = {
2682
+ placement,
2683
+ strategy,
2684
+ middleware: latestMiddleware
2685
+ };
2686
+ if (platformRef.current) {
2687
+ config.platform = platformRef.current;
2688
+ }
2689
+ computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => {
2690
+ const fullData = {
2691
+ ...data2,
2692
+ isPositioned: openRef.current !== false
2693
+ };
2694
+ if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {
2695
+ dataRef.current = fullData;
2696
+ ReactDOM2.flushSync(() => {
2697
+ setData(fullData);
2698
+ });
2699
+ }
2700
+ });
2701
+ }, [latestMiddleware, placement, strategy, platformRef, openRef]);
2702
+ index(() => {
2703
+ if (open === false && dataRef.current.isPositioned) {
2704
+ dataRef.current.isPositioned = false;
2705
+ setData((data2) => ({
2706
+ ...data2,
2707
+ isPositioned: false
2708
+ }));
2709
+ }
2710
+ }, [open]);
2711
+ const isMountedRef = React10.useRef(false);
2712
+ index(() => {
2713
+ isMountedRef.current = true;
2714
+ return () => {
2715
+ isMountedRef.current = false;
2716
+ };
2717
+ }, []);
2718
+ index(() => {
2719
+ if (referenceEl)
2720
+ referenceRef.current = referenceEl;
2721
+ if (floatingEl)
2722
+ floatingRef.current = floatingEl;
2723
+ if (referenceEl && floatingEl) {
2724
+ if (whileElementsMountedRef.current) {
2725
+ return whileElementsMountedRef.current(referenceEl, floatingEl, update);
2726
+ }
2727
+ update();
2728
+ }
2729
+ }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);
2730
+ const refs = React10.useMemo(() => ({
2731
+ reference: referenceRef,
2732
+ floating: floatingRef,
2733
+ setReference,
2734
+ setFloating
2735
+ }), [setReference, setFloating]);
2736
+ const elements = React10.useMemo(() => ({
2737
+ reference: referenceEl,
2738
+ floating: floatingEl
2739
+ }), [referenceEl, floatingEl]);
2740
+ const floatingStyles = React10.useMemo(() => {
2741
+ const initialStyles = {
2742
+ position: strategy,
2743
+ left: 0,
2744
+ top: 0
2745
+ };
2746
+ if (!elements.floating) {
2747
+ return initialStyles;
2748
+ }
2749
+ const x = roundByDPR(elements.floating, data.x);
2750
+ const y = roundByDPR(elements.floating, data.y);
2751
+ if (transform) {
2752
+ return {
2753
+ ...initialStyles,
2754
+ transform: "translate(" + x + "px, " + y + "px)",
2755
+ ...getDPR(elements.floating) >= 1.5 && {
2756
+ willChange: "transform"
2757
+ }
2758
+ };
2759
+ }
2760
+ return {
2761
+ position: strategy,
2762
+ left: x,
2763
+ top: y
2764
+ };
2765
+ }, [strategy, transform, elements.floating, data.x, data.y]);
2766
+ return React10.useMemo(() => ({
2767
+ ...data,
2768
+ update,
2769
+ refs,
2770
+ elements,
2771
+ floatingStyles
2772
+ }), [data, update, refs, elements, floatingStyles]);
2773
+ }
2774
+ var arrow$1 = (options) => {
2775
+ function isRef(value) {
2776
+ return {}.hasOwnProperty.call(value, "current");
2777
+ }
2778
+ return {
2779
+ name: "arrow",
2780
+ options,
2781
+ fn(state) {
2782
+ const {
2783
+ element,
2784
+ padding
2785
+ } = typeof options === "function" ? options(state) : options;
2786
+ if (element && isRef(element)) {
2787
+ if (element.current != null) {
2788
+ return arrow2({
2789
+ element: element.current,
2790
+ padding
2791
+ }).fn(state);
2792
+ }
2793
+ return {};
2794
+ }
2795
+ if (element) {
2796
+ return arrow2({
2797
+ element,
2798
+ padding
2799
+ }).fn(state);
2800
+ }
2801
+ return {};
2802
+ }
2803
+ };
2804
+ };
2805
+ var offset3 = (options, deps) => ({
2806
+ ...offset2(options),
2807
+ options: [options, deps]
2808
+ });
2809
+ var shift3 = (options, deps) => ({
2810
+ ...shift2(options),
2811
+ options: [options, deps]
2812
+ });
2813
+ var limitShift3 = (options, deps) => ({
2814
+ ...limitShift2(options),
2815
+ options: [options, deps]
2816
+ });
2817
+ var flip3 = (options, deps) => ({
2818
+ ...flip2(options),
2819
+ options: [options, deps]
2820
+ });
2821
+ var size3 = (options, deps) => ({
2822
+ ...size2(options),
2823
+ options: [options, deps]
2824
+ });
2825
+ var hide3 = (options, deps) => ({
2826
+ ...hide2(options),
2827
+ options: [options, deps]
2828
+ });
2829
+ var arrow3 = (options, deps) => ({
2830
+ ...arrow$1(options),
2831
+ options: [options, deps]
2832
+ });
2833
+
2834
+ // ../../node_modules/@radix-ui/react-arrow/dist/index.mjs
2835
+ import * as React12 from "react";
2836
+
2837
+ // ../../node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive/dist/index.mjs
2838
+ import * as React11 from "react";
2839
+ import * as ReactDOM3 from "react-dom";
2840
+ import { createSlot as createSlot2 } from "@radix-ui/react-slot";
2841
+ import { jsx as jsx18 } from "react/jsx-runtime";
2842
+ var NODES2 = [
2843
+ "a",
2844
+ "button",
2845
+ "div",
2846
+ "form",
2847
+ "h2",
2848
+ "h3",
2849
+ "img",
2850
+ "input",
2851
+ "label",
2852
+ "li",
2853
+ "nav",
2854
+ "ol",
2855
+ "p",
2856
+ "select",
2857
+ "span",
2858
+ "svg",
2859
+ "ul"
2860
+ ];
2861
+ var Primitive2 = NODES2.reduce((primitive, node) => {
2862
+ const Slot = createSlot2(`Primitive.${node}`);
2863
+ const Node2 = React11.forwardRef((props, forwardedRef) => {
2864
+ const { asChild, ...primitiveProps } = props;
2865
+ const Comp = asChild ? Slot : node;
2866
+ if (typeof window !== "undefined") {
2867
+ window[Symbol.for("radix-ui")] = true;
2868
+ }
2869
+ return /* @__PURE__ */ jsx18(Comp, { ...primitiveProps, ref: forwardedRef });
2870
+ });
2871
+ Node2.displayName = `Primitive.${node}`;
2872
+ return { ...primitive, [node]: Node2 };
2873
+ }, {});
2874
+
2875
+ // ../../node_modules/@radix-ui/react-arrow/dist/index.mjs
2876
+ import { jsx as jsx19 } from "react/jsx-runtime";
2877
+ var NAME = "Arrow";
2878
+ var Arrow = React12.forwardRef((props, forwardedRef) => {
2879
+ const { children, width = 10, height = 5, ...arrowProps } = props;
2880
+ return /* @__PURE__ */ jsx19(Primitive2.svg, {
2881
+ ...arrowProps,
2882
+ ref: forwardedRef,
2883
+ width,
2884
+ height,
2885
+ viewBox: "0 0 30 10",
2886
+ preserveAspectRatio: "none",
2887
+ children: props.asChild ? children : /* @__PURE__ */ jsx19("polygon", { points: "0,0 30,0 15,10" })
2888
+ });
2889
+ });
2890
+ Arrow.displayName = NAME;
2891
+ var Root2 = Arrow;
2892
+
2893
+ // ../../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context/dist/index.mjs
2894
+ import * as React13 from "react";
2895
+ import { jsx as jsx20 } from "react/jsx-runtime";
2896
+ function createContextScope2(scopeName, createContextScopeDeps = []) {
2897
+ let defaultContexts = [];
2898
+ function createContext32(rootComponentName, defaultContext) {
2899
+ const BaseContext = React13.createContext(defaultContext);
2900
+ const index2 = defaultContexts.length;
2901
+ defaultContexts = [...defaultContexts, defaultContext];
2902
+ const Provider = (props) => {
2903
+ const { scope, children, ...context } = props;
2904
+ const Context = scope?.[scopeName]?.[index2] || BaseContext;
2905
+ const value = React13.useMemo(() => context, Object.values(context));
2906
+ return /* @__PURE__ */ jsx20(Context.Provider, { value, children });
2907
+ };
2908
+ Provider.displayName = rootComponentName + "Provider";
2909
+ function useContext22(consumerName, scope) {
2910
+ const Context = scope?.[scopeName]?.[index2] || BaseContext;
2911
+ const context = React13.useContext(Context);
2912
+ if (context)
2913
+ return context;
2914
+ if (defaultContext !== undefined)
2915
+ return defaultContext;
2916
+ throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``);
2917
+ }
2918
+ return [Provider, useContext22];
2919
+ }
2920
+ const createScope = () => {
2921
+ const scopeContexts = defaultContexts.map((defaultContext) => {
2922
+ return React13.createContext(defaultContext);
2923
+ });
2924
+ return function useScope(scope) {
2925
+ const contexts = scope?.[scopeName] || scopeContexts;
2926
+ return React13.useMemo(() => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }), [scope, contexts]);
2927
+ };
2928
+ };
2929
+ createScope.scopeName = scopeName;
2930
+ return [createContext32, composeContextScopes2(createScope, ...createContextScopeDeps)];
2931
+ }
2932
+ function composeContextScopes2(...scopes) {
2933
+ const baseScope = scopes[0];
2934
+ if (scopes.length === 1)
2935
+ return baseScope;
2936
+ const createScope = () => {
2937
+ const scopeHooks = scopes.map((createScope2) => ({
2938
+ useScope: createScope2(),
2939
+ scopeName: createScope2.scopeName
2940
+ }));
2941
+ return function useComposedScopes(overrideScopes) {
2942
+ const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {
2943
+ const scopeProps = useScope(overrideScopes);
2944
+ const currentScope = scopeProps[`__scope${scopeName}`];
2945
+ return { ...nextScopes2, ...currentScope };
2946
+ }, {});
2947
+ return React13.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
2948
+ };
2949
+ };
2950
+ createScope.scopeName = baseScope.scopeName;
2951
+ return createScope;
2952
+ }
2953
+
2954
+ // ../../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive/dist/index.mjs
2955
+ import * as React14 from "react";
2956
+ import * as ReactDOM4 from "react-dom";
2957
+ import { createSlot as createSlot3 } from "@radix-ui/react-slot";
2958
+ import { jsx as jsx21 } from "react/jsx-runtime";
2959
+ var NODES3 = [
2960
+ "a",
2961
+ "button",
2962
+ "div",
2963
+ "form",
2964
+ "h2",
2965
+ "h3",
2966
+ "img",
2967
+ "input",
2968
+ "label",
2969
+ "li",
2970
+ "nav",
2971
+ "ol",
2972
+ "p",
2973
+ "select",
2974
+ "span",
2975
+ "svg",
2976
+ "ul"
2977
+ ];
2978
+ var Primitive3 = NODES3.reduce((primitive, node) => {
2979
+ const Slot = createSlot3(`Primitive.${node}`);
2980
+ const Node2 = React14.forwardRef((props, forwardedRef) => {
2981
+ const { asChild, ...primitiveProps } = props;
2982
+ const Comp = asChild ? Slot : node;
2983
+ if (typeof window !== "undefined") {
2984
+ window[Symbol.for("radix-ui")] = true;
2985
+ }
2986
+ return /* @__PURE__ */ jsx21(Comp, { ...primitiveProps, ref: forwardedRef });
2987
+ });
2988
+ Node2.displayName = `Primitive.${node}`;
2989
+ return { ...primitive, [node]: Node2 };
2990
+ }, {});
2991
+
2992
+ // ../../node_modules/@radix-ui/react-use-size/dist/index.mjs
2993
+ import * as React15 from "react";
2994
+ function useSize(element) {
2995
+ const [size4, setSize] = React15.useState(undefined);
2996
+ useLayoutEffect2(() => {
2997
+ if (element) {
2998
+ setSize({ width: element.offsetWidth, height: element.offsetHeight });
2999
+ const resizeObserver = new ResizeObserver((entries) => {
3000
+ if (!Array.isArray(entries)) {
3001
+ return;
3002
+ }
3003
+ if (!entries.length) {
3004
+ return;
3005
+ }
3006
+ const entry = entries[0];
3007
+ let width;
3008
+ let height;
3009
+ if ("borderBoxSize" in entry) {
3010
+ const borderSizeEntry = entry["borderBoxSize"];
3011
+ const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;
3012
+ width = borderSize["inlineSize"];
3013
+ height = borderSize["blockSize"];
3014
+ } else {
3015
+ width = element.offsetWidth;
3016
+ height = element.offsetHeight;
3017
+ }
3018
+ setSize({ width, height });
3019
+ });
3020
+ resizeObserver.observe(element, { box: "border-box" });
3021
+ return () => resizeObserver.unobserve(element);
3022
+ } else {
3023
+ setSize(undefined);
3024
+ }
3025
+ }, [element]);
3026
+ return size4;
3027
+ }
3028
+
3029
+ // ../../node_modules/@radix-ui/react-popper/dist/index.mjs
3030
+ import { jsx as jsx22 } from "react/jsx-runtime";
3031
+
3032
+ var POPPER_NAME = "Popper";
3033
+ var [createPopperContext, createPopperScope] = createContextScope2(POPPER_NAME);
3034
+ var [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);
3035
+ var Popper = (props) => {
3036
+ const { __scopePopper, children } = props;
3037
+ const [anchor, setAnchor] = React16.useState(null);
3038
+ return /* @__PURE__ */ jsx22(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });
3039
+ };
3040
+ Popper.displayName = POPPER_NAME;
3041
+ var ANCHOR_NAME = "PopperAnchor";
3042
+ var PopperAnchor = React16.forwardRef((props, forwardedRef) => {
3043
+ const { __scopePopper, virtualRef, ...anchorProps } = props;
3044
+ const context = usePopperContext(ANCHOR_NAME, __scopePopper);
3045
+ const ref = React16.useRef(null);
3046
+ const composedRefs = useComposedRefs(forwardedRef, ref);
3047
+ const anchorRef = React16.useRef(null);
3048
+ React16.useEffect(() => {
3049
+ const previousAnchor = anchorRef.current;
3050
+ anchorRef.current = virtualRef?.current || ref.current;
3051
+ if (previousAnchor !== anchorRef.current) {
3052
+ context.onAnchorChange(anchorRef.current);
3053
+ }
3054
+ });
3055
+ return virtualRef ? null : /* @__PURE__ */ jsx22(Primitive3.div, { ...anchorProps, ref: composedRefs });
3056
+ });
3057
+ PopperAnchor.displayName = ANCHOR_NAME;
3058
+ var CONTENT_NAME = "PopperContent";
3059
+ var [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);
3060
+ var PopperContent = React16.forwardRef((props, forwardedRef) => {
3061
+ const {
3062
+ __scopePopper,
3063
+ side = "bottom",
3064
+ sideOffset = 0,
3065
+ align = "center",
3066
+ alignOffset = 0,
3067
+ arrowPadding = 0,
3068
+ avoidCollisions = true,
3069
+ collisionBoundary = [],
3070
+ collisionPadding: collisionPaddingProp = 0,
3071
+ sticky = "partial",
3072
+ hideWhenDetached = false,
3073
+ updatePositionStrategy = "optimized",
3074
+ onPlaced,
3075
+ ...contentProps
3076
+ } = props;
3077
+ const context = usePopperContext(CONTENT_NAME, __scopePopper);
3078
+ const [content, setContent] = React16.useState(null);
3079
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));
3080
+ const [arrow4, setArrow] = React16.useState(null);
3081
+ const arrowSize = useSize(arrow4);
3082
+ const arrowWidth = arrowSize?.width ?? 0;
3083
+ const arrowHeight = arrowSize?.height ?? 0;
3084
+ const desiredPlacement = side + (align !== "center" ? "-" + align : "");
3085
+ const collisionPadding = typeof collisionPaddingProp === "number" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };
3086
+ const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];
3087
+ const hasExplicitBoundaries = boundary.length > 0;
3088
+ const detectOverflowOptions = {
3089
+ padding: collisionPadding,
3090
+ boundary: boundary.filter(isNotNull),
3091
+ altBoundary: hasExplicitBoundaries
3092
+ };
3093
+ const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({
3094
+ strategy: "fixed",
3095
+ placement: desiredPlacement,
3096
+ whileElementsMounted: (...args) => {
3097
+ const cleanup = autoUpdate(...args, {
3098
+ animationFrame: updatePositionStrategy === "always"
3099
+ });
3100
+ return cleanup;
3101
+ },
3102
+ elements: {
3103
+ reference: context.anchor
3104
+ },
3105
+ middleware: [
3106
+ offset3({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),
3107
+ avoidCollisions && shift3({
3108
+ mainAxis: true,
3109
+ crossAxis: false,
3110
+ limiter: sticky === "partial" ? limitShift3() : undefined,
3111
+ ...detectOverflowOptions
3112
+ }),
3113
+ avoidCollisions && flip3({ ...detectOverflowOptions }),
3114
+ size3({
3115
+ ...detectOverflowOptions,
3116
+ apply: ({ elements, rects, availableWidth, availableHeight }) => {
3117
+ const { width: anchorWidth, height: anchorHeight } = rects.reference;
3118
+ const contentStyle = elements.floating.style;
3119
+ contentStyle.setProperty("--radix-popper-available-width", `${availableWidth}px`);
3120
+ contentStyle.setProperty("--radix-popper-available-height", `${availableHeight}px`);
3121
+ contentStyle.setProperty("--radix-popper-anchor-width", `${anchorWidth}px`);
3122
+ contentStyle.setProperty("--radix-popper-anchor-height", `${anchorHeight}px`);
3123
+ }
3124
+ }),
3125
+ arrow4 && arrow3({ element: arrow4, padding: arrowPadding }),
3126
+ transformOrigin({ arrowWidth, arrowHeight }),
3127
+ hideWhenDetached && hide3({ strategy: "referenceHidden", ...detectOverflowOptions })
3128
+ ]
3129
+ });
3130
+ const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);
3131
+ const handlePlaced = useCallbackRef(onPlaced);
3132
+ useLayoutEffect2(() => {
3133
+ if (isPositioned) {
3134
+ handlePlaced?.();
3135
+ }
3136
+ }, [isPositioned, handlePlaced]);
3137
+ const arrowX = middlewareData.arrow?.x;
3138
+ const arrowY = middlewareData.arrow?.y;
3139
+ const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;
3140
+ const [contentZIndex, setContentZIndex] = React16.useState();
3141
+ useLayoutEffect2(() => {
3142
+ if (content)
3143
+ setContentZIndex(window.getComputedStyle(content).zIndex);
3144
+ }, [content]);
3145
+ return /* @__PURE__ */ jsx22("div", {
3146
+ ref: refs.setFloating,
3147
+ "data-radix-popper-content-wrapper": "",
3148
+ style: {
3149
+ ...floatingStyles,
3150
+ transform: isPositioned ? floatingStyles.transform : "translate(0, -200%)",
3151
+ minWidth: "max-content",
3152
+ zIndex: contentZIndex,
3153
+ ["--radix-popper-transform-origin"]: [
3154
+ middlewareData.transformOrigin?.x,
3155
+ middlewareData.transformOrigin?.y
3156
+ ].join(" "),
3157
+ ...middlewareData.hide?.referenceHidden && {
3158
+ visibility: "hidden",
3159
+ pointerEvents: "none"
3160
+ }
3161
+ },
3162
+ dir: props.dir,
3163
+ children: /* @__PURE__ */ jsx22(PopperContentProvider, {
3164
+ scope: __scopePopper,
3165
+ placedSide,
3166
+ onArrowChange: setArrow,
3167
+ arrowX,
3168
+ arrowY,
3169
+ shouldHideArrow: cannotCenterArrow,
3170
+ children: /* @__PURE__ */ jsx22(Primitive3.div, {
3171
+ "data-side": placedSide,
3172
+ "data-align": placedAlign,
3173
+ ...contentProps,
3174
+ ref: composedRefs,
3175
+ style: {
3176
+ ...contentProps.style,
3177
+ animation: !isPositioned ? "none" : undefined
3178
+ }
3179
+ })
3180
+ })
3181
+ });
3182
+ });
3183
+ PopperContent.displayName = CONTENT_NAME;
3184
+ var ARROW_NAME = "PopperArrow";
3185
+ var OPPOSITE_SIDE = {
3186
+ top: "bottom",
3187
+ right: "left",
3188
+ bottom: "top",
3189
+ left: "right"
3190
+ };
3191
+ var PopperArrow = React16.forwardRef(function PopperArrow2(props, forwardedRef) {
3192
+ const { __scopePopper, ...arrowProps } = props;
3193
+ const contentContext = useContentContext(ARROW_NAME, __scopePopper);
3194
+ const baseSide = OPPOSITE_SIDE[contentContext.placedSide];
3195
+ return /* @__PURE__ */ jsx22("span", {
3196
+ ref: contentContext.onArrowChange,
3197
+ style: {
3198
+ position: "absolute",
3199
+ left: contentContext.arrowX,
3200
+ top: contentContext.arrowY,
3201
+ [baseSide]: 0,
3202
+ transformOrigin: {
3203
+ top: "",
3204
+ right: "0 0",
3205
+ bottom: "center 0",
3206
+ left: "100% 0"
3207
+ }[contentContext.placedSide],
3208
+ transform: {
3209
+ top: "translateY(100%)",
3210
+ right: "translateY(50%) rotate(90deg) translateX(-50%)",
3211
+ bottom: `rotate(180deg)`,
3212
+ left: "translateY(50%) rotate(-90deg) translateX(50%)"
3213
+ }[contentContext.placedSide],
3214
+ visibility: contentContext.shouldHideArrow ? "hidden" : undefined
3215
+ },
3216
+ children: /* @__PURE__ */ jsx22(Root2, {
3217
+ ...arrowProps,
3218
+ ref: forwardedRef,
3219
+ style: {
3220
+ ...arrowProps.style,
3221
+ display: "block"
3222
+ }
3223
+ })
3224
+ });
3225
+ });
3226
+ PopperArrow.displayName = ARROW_NAME;
3227
+ function isNotNull(value) {
3228
+ return value !== null;
3229
+ }
3230
+ var transformOrigin = (options) => ({
3231
+ name: "transformOrigin",
3232
+ options,
3233
+ fn(data) {
3234
+ const { placement, rects, middlewareData } = data;
3235
+ const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;
3236
+ const isArrowHidden = cannotCenterArrow;
3237
+ const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;
3238
+ const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;
3239
+ const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);
3240
+ const noArrowAlign = { start: "0%", center: "50%", end: "100%" }[placedAlign];
3241
+ const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;
3242
+ const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;
3243
+ let x = "";
3244
+ let y = "";
3245
+ if (placedSide === "bottom") {
3246
+ x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;
3247
+ y = `${-arrowHeight}px`;
3248
+ } else if (placedSide === "top") {
3249
+ x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;
3250
+ y = `${rects.floating.height + arrowHeight}px`;
3251
+ } else if (placedSide === "right") {
3252
+ x = `${-arrowHeight}px`;
3253
+ y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;
3254
+ } else if (placedSide === "left") {
3255
+ x = `${rects.floating.width + arrowHeight}px`;
3256
+ y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;
3257
+ }
3258
+ return { data: { x, y } };
3259
+ }
3260
+ });
3261
+ function getSideAndAlignFromPlacement(placement) {
3262
+ const [side, align = "center"] = placement.split("-");
3263
+ return [side, align];
3264
+ }
3265
+ var Root22 = Popper;
3266
+ var Anchor = PopperAnchor;
3267
+ var Content = PopperContent;
3268
+ var Arrow2 = PopperArrow;
3269
+
3270
+ // ../../node_modules/@radix-ui/react-portal/dist/index.mjs
3271
+ import * as React18 from "react";
3272
+ import ReactDOM6 from "react-dom";
3273
+
3274
+ // ../../node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/dist/index.mjs
3275
+ import * as React17 from "react";
3276
+ import * as ReactDOM5 from "react-dom";
3277
+ import { createSlot as createSlot4 } from "@radix-ui/react-slot";
3278
+ import { jsx as jsx23 } from "react/jsx-runtime";
3279
+ var NODES4 = [
3280
+ "a",
3281
+ "button",
3282
+ "div",
3283
+ "form",
3284
+ "h2",
3285
+ "h3",
3286
+ "img",
3287
+ "input",
3288
+ "label",
3289
+ "li",
3290
+ "nav",
3291
+ "ol",
3292
+ "p",
3293
+ "select",
3294
+ "span",
3295
+ "svg",
3296
+ "ul"
3297
+ ];
3298
+ var Primitive4 = NODES4.reduce((primitive, node) => {
3299
+ const Slot = createSlot4(`Primitive.${node}`);
3300
+ const Node2 = React17.forwardRef((props, forwardedRef) => {
3301
+ const { asChild, ...primitiveProps } = props;
3302
+ const Comp = asChild ? Slot : node;
3303
+ if (typeof window !== "undefined") {
3304
+ window[Symbol.for("radix-ui")] = true;
3305
+ }
3306
+ return /* @__PURE__ */ jsx23(Comp, { ...primitiveProps, ref: forwardedRef });
3307
+ });
3308
+ Node2.displayName = `Primitive.${node}`;
3309
+ return { ...primitive, [node]: Node2 };
3310
+ }, {});
3311
+
3312
+ // ../../node_modules/@radix-ui/react-portal/dist/index.mjs
3313
+ import { jsx as jsx24 } from "react/jsx-runtime";
3314
+
3315
+ var PORTAL_NAME = "Portal";
3316
+ var Portal = React18.forwardRef((props, forwardedRef) => {
3317
+ const { container: containerProp, ...portalProps } = props;
3318
+ const [mounted, setMounted] = React18.useState(false);
3319
+ useLayoutEffect2(() => setMounted(true), []);
3320
+ const container = containerProp || mounted && globalThis?.document?.body;
3321
+ return container ? ReactDOM6.createPortal(/* @__PURE__ */ jsx24(Primitive4.div, { ...portalProps, ref: forwardedRef }), container) : null;
3322
+ });
3323
+ Portal.displayName = PORTAL_NAME;
3324
+
3325
+ // ../../node_modules/@radix-ui/react-presence/dist/index.mjs
3326
+ import * as React22 from "react";
3327
+ import * as React19 from "react";
3328
+
3329
+ function useStateMachine(initialState, machine) {
3330
+ return React19.useReducer((state, event) => {
3331
+ const nextState = machine[state][event];
3332
+ return nextState ?? state;
3333
+ }, initialState);
3334
+ }
3335
+ var Presence = (props) => {
3336
+ const { present, children } = props;
3337
+ const presence = usePresence(present);
3338
+ const child = typeof children === "function" ? children({ present: presence.isPresent }) : React22.Children.only(children);
3339
+ const ref = useComposedRefs(presence.ref, getElementRef(child));
3340
+ const forceMount = typeof children === "function";
3341
+ return forceMount || presence.isPresent ? React22.cloneElement(child, { ref }) : null;
3342
+ };
3343
+ Presence.displayName = "Presence";
3344
+ function usePresence(present) {
3345
+ const [node, setNode] = React22.useState();
3346
+ const stylesRef = React22.useRef(null);
3347
+ const prevPresentRef = React22.useRef(present);
3348
+ const prevAnimationNameRef = React22.useRef("none");
3349
+ const initialState = present ? "mounted" : "unmounted";
3350
+ const [state, send] = useStateMachine(initialState, {
3351
+ mounted: {
3352
+ UNMOUNT: "unmounted",
3353
+ ANIMATION_OUT: "unmountSuspended"
3354
+ },
3355
+ unmountSuspended: {
3356
+ MOUNT: "mounted",
3357
+ ANIMATION_END: "unmounted"
3358
+ },
3359
+ unmounted: {
3360
+ MOUNT: "mounted"
3361
+ }
3362
+ });
3363
+ React22.useEffect(() => {
3364
+ const currentAnimationName = getAnimationName(stylesRef.current);
3365
+ prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none";
3366
+ }, [state]);
3367
+ useLayoutEffect2(() => {
3368
+ const styles = stylesRef.current;
3369
+ const wasPresent = prevPresentRef.current;
3370
+ const hasPresentChanged = wasPresent !== present;
3371
+ if (hasPresentChanged) {
3372
+ const prevAnimationName = prevAnimationNameRef.current;
3373
+ const currentAnimationName = getAnimationName(styles);
3374
+ if (present) {
3375
+ send("MOUNT");
3376
+ } else if (currentAnimationName === "none" || styles?.display === "none") {
3377
+ send("UNMOUNT");
3378
+ } else {
3379
+ const isAnimating = prevAnimationName !== currentAnimationName;
3380
+ if (wasPresent && isAnimating) {
3381
+ send("ANIMATION_OUT");
3382
+ } else {
3383
+ send("UNMOUNT");
3384
+ }
3385
+ }
3386
+ prevPresentRef.current = present;
3387
+ }
3388
+ }, [present, send]);
3389
+ useLayoutEffect2(() => {
3390
+ if (node) {
3391
+ let timeoutId;
3392
+ const ownerWindow = node.ownerDocument.defaultView ?? window;
3393
+ const handleAnimationEnd = (event) => {
3394
+ const currentAnimationName = getAnimationName(stylesRef.current);
3395
+ const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));
3396
+ if (event.target === node && isCurrentAnimation) {
3397
+ send("ANIMATION_END");
3398
+ if (!prevPresentRef.current) {
3399
+ const currentFillMode = node.style.animationFillMode;
3400
+ node.style.animationFillMode = "forwards";
3401
+ timeoutId = ownerWindow.setTimeout(() => {
3402
+ if (node.style.animationFillMode === "forwards") {
3403
+ node.style.animationFillMode = currentFillMode;
3404
+ }
3405
+ });
3406
+ }
3407
+ }
3408
+ };
3409
+ const handleAnimationStart = (event) => {
3410
+ if (event.target === node) {
3411
+ prevAnimationNameRef.current = getAnimationName(stylesRef.current);
3412
+ }
3413
+ };
3414
+ node.addEventListener("animationstart", handleAnimationStart);
3415
+ node.addEventListener("animationcancel", handleAnimationEnd);
3416
+ node.addEventListener("animationend", handleAnimationEnd);
3417
+ return () => {
3418
+ ownerWindow.clearTimeout(timeoutId);
3419
+ node.removeEventListener("animationstart", handleAnimationStart);
3420
+ node.removeEventListener("animationcancel", handleAnimationEnd);
3421
+ node.removeEventListener("animationend", handleAnimationEnd);
3422
+ };
3423
+ } else {
3424
+ send("ANIMATION_END");
3425
+ }
3426
+ }, [node, send]);
3427
+ return {
3428
+ isPresent: ["mounted", "unmountSuspended"].includes(state),
3429
+ ref: React22.useCallback((node2) => {
3430
+ stylesRef.current = node2 ? getComputedStyle(node2) : null;
3431
+ setNode(node2);
3432
+ }, [])
3433
+ };
3434
+ }
3435
+ function getAnimationName(styles) {
3436
+ return styles?.animationName || "none";
3437
+ }
3438
+ function getElementRef(element) {
3439
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
3440
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
3441
+ if (mayWarn) {
3442
+ return element.ref;
3443
+ }
3444
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
3445
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
3446
+ if (mayWarn) {
3447
+ return element.props.ref;
3448
+ }
3449
+ return element.props.ref || element.ref;
3450
+ }
3451
+
3452
+ // ../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-primitive/dist/index.mjs
3453
+ import * as React20 from "react";
3454
+ import * as ReactDOM7 from "react-dom";
3455
+ import { createSlot as createSlot5 } from "@radix-ui/react-slot";
3456
+ import { jsx as jsx25 } from "react/jsx-runtime";
3457
+ var NODES5 = [
3458
+ "a",
3459
+ "button",
3460
+ "div",
3461
+ "form",
3462
+ "h2",
3463
+ "h3",
3464
+ "img",
3465
+ "input",
3466
+ "label",
3467
+ "li",
3468
+ "nav",
3469
+ "ol",
3470
+ "p",
3471
+ "select",
3472
+ "span",
3473
+ "svg",
3474
+ "ul"
3475
+ ];
3476
+ var Primitive5 = NODES5.reduce((primitive, node) => {
3477
+ const Slot = createSlot5(`Primitive.${node}`);
3478
+ const Node2 = React20.forwardRef((props, forwardedRef) => {
3479
+ const { asChild, ...primitiveProps } = props;
3480
+ const Comp = asChild ? Slot : node;
3481
+ if (typeof window !== "undefined") {
3482
+ window[Symbol.for("radix-ui")] = true;
3483
+ }
3484
+ return /* @__PURE__ */ jsx25(Comp, { ...primitiveProps, ref: forwardedRef });
3485
+ });
3486
+ Node2.displayName = `Primitive.${node}`;
3487
+ return { ...primitive, [node]: Node2 };
3488
+ }, {});
3489
+
3490
+ // ../../node_modules/@radix-ui/react-tooltip/dist/index.mjs
3491
+ import { createSlottable } from "@radix-ui/react-slot";
3492
+
3493
+ // ../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
3494
+ import * as React23 from "react";
3495
+ import * as React24 from "react";
3496
+
3497
+ // ../../node_modules/@radix-ui/react-use-effect-event/dist/index.mjs
3498
+ import * as React21 from "react";
3499
+ var useReactEffectEvent = React21[" useEffectEvent ".trim().toString()];
3500
+ var useReactInsertionEffect = React21[" useInsertionEffect ".trim().toString()];
3501
+
3502
+ // ../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
3503
+ var useInsertionEffect = React23[" useInsertionEffect ".trim().toString()] || useLayoutEffect2;
3504
+ function useControllableState({
3505
+ prop,
3506
+ defaultProp,
3507
+ onChange = () => {},
3508
+ caller
3509
+ }) {
3510
+ const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({
3511
+ defaultProp,
3512
+ onChange
3513
+ });
3514
+ const isControlled = prop !== undefined;
3515
+ const value = isControlled ? prop : uncontrolledProp;
3516
+ if (true) {
3517
+ const isControlledRef = React23.useRef(prop !== undefined);
3518
+ React23.useEffect(() => {
3519
+ const wasControlled = isControlledRef.current;
3520
+ if (wasControlled !== isControlled) {
3521
+ const from = wasControlled ? "controlled" : "uncontrolled";
3522
+ const to = isControlled ? "controlled" : "uncontrolled";
3523
+ console.warn(`${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`);
3524
+ }
3525
+ isControlledRef.current = isControlled;
3526
+ }, [isControlled, caller]);
3527
+ }
3528
+ const setValue = React23.useCallback((nextValue) => {
3529
+ if (isControlled) {
3530
+ const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
3531
+ if (value2 !== prop) {
3532
+ onChangeRef.current?.(value2);
3533
+ }
3534
+ } else {
3535
+ setUncontrolledProp(nextValue);
3536
+ }
3537
+ }, [isControlled, prop, setUncontrolledProp, onChangeRef]);
3538
+ return [value, setValue];
3539
+ }
3540
+ function useUncontrolledState({
3541
+ defaultProp,
3542
+ onChange
3543
+ }) {
3544
+ const [value, setValue] = React23.useState(defaultProp);
3545
+ const prevValueRef = React23.useRef(value);
3546
+ const onChangeRef = React23.useRef(onChange);
3547
+ useInsertionEffect(() => {
3548
+ onChangeRef.current = onChange;
3549
+ }, [onChange]);
3550
+ React23.useEffect(() => {
3551
+ if (prevValueRef.current !== value) {
3552
+ onChangeRef.current?.(value);
3553
+ prevValueRef.current = value;
3554
+ }
3555
+ }, [value, prevValueRef]);
3556
+ return [value, setValue, onChangeRef];
3557
+ }
3558
+ function isFunction(value) {
3559
+ return typeof value === "function";
3560
+ }
3561
+ var SYNC_STATE = Symbol("RADIX:SYNC_STATE");
3562
+
3563
+ // ../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
3564
+ import * as React25 from "react";
3565
+ import { jsx as jsx26 } from "react/jsx-runtime";
3566
+ var VISUALLY_HIDDEN_STYLES = Object.freeze({
3567
+ position: "absolute",
3568
+ border: 0,
3569
+ width: 1,
3570
+ height: 1,
3571
+ padding: 0,
3572
+ margin: -1,
3573
+ overflow: "hidden",
3574
+ clip: "rect(0, 0, 0, 0)",
3575
+ whiteSpace: "nowrap",
3576
+ wordWrap: "normal"
3577
+ });
3578
+ var NAME2 = "VisuallyHidden";
3579
+ var VisuallyHidden = React25.forwardRef((props, forwardedRef) => {
3580
+ return /* @__PURE__ */ jsx26(Primitive5.span, {
3581
+ ...props,
3582
+ ref: forwardedRef,
3583
+ style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }
3584
+ });
3585
+ });
3586
+ VisuallyHidden.displayName = NAME2;
3587
+ var Root3 = VisuallyHidden;
3588
+
3589
+ // ../../node_modules/@radix-ui/react-tooltip/dist/index.mjs
3590
+ import { jsx as jsx27, jsxs as jsxs6 } from "react/jsx-runtime";
3591
+
3592
+ var [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [
3593
+ createPopperScope
3594
+ ]);
3595
+ var usePopperScope = createPopperScope();
3596
+ var PROVIDER_NAME = "TooltipProvider";
3597
+ var DEFAULT_DELAY_DURATION = 700;
3598
+ var TOOLTIP_OPEN = "tooltip.open";
3599
+ var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
3600
+ var TooltipProvider = (props) => {
3601
+ const {
3602
+ __scopeTooltip,
3603
+ delayDuration = DEFAULT_DELAY_DURATION,
3604
+ skipDelayDuration = 300,
3605
+ disableHoverableContent = false,
3606
+ children
3607
+ } = props;
3608
+ const isOpenDelayedRef = React26.useRef(true);
3609
+ const isPointerInTransitRef = React26.useRef(false);
3610
+ const skipDelayTimerRef = React26.useRef(0);
3611
+ React26.useEffect(() => {
3612
+ const skipDelayTimer = skipDelayTimerRef.current;
3613
+ return () => window.clearTimeout(skipDelayTimer);
3614
+ }, []);
3615
+ return /* @__PURE__ */ jsx27(TooltipProviderContextProvider, {
3616
+ scope: __scopeTooltip,
3617
+ isOpenDelayedRef,
3618
+ delayDuration,
3619
+ onOpen: React26.useCallback(() => {
3620
+ window.clearTimeout(skipDelayTimerRef.current);
3621
+ isOpenDelayedRef.current = false;
3622
+ }, []),
3623
+ onClose: React26.useCallback(() => {
3624
+ window.clearTimeout(skipDelayTimerRef.current);
3625
+ skipDelayTimerRef.current = window.setTimeout(() => isOpenDelayedRef.current = true, skipDelayDuration);
3626
+ }, [skipDelayDuration]),
3627
+ isPointerInTransitRef,
3628
+ onPointerInTransitChange: React26.useCallback((inTransit) => {
3629
+ isPointerInTransitRef.current = inTransit;
3630
+ }, []),
3631
+ disableHoverableContent,
3632
+ children
3633
+ });
3634
+ };
3635
+ TooltipProvider.displayName = PROVIDER_NAME;
3636
+ var TOOLTIP_NAME = "Tooltip";
3637
+ var [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);
3638
+ var Tooltip = (props) => {
3639
+ const {
3640
+ __scopeTooltip,
3641
+ children,
3642
+ open: openProp,
3643
+ defaultOpen,
3644
+ onOpenChange,
3645
+ disableHoverableContent: disableHoverableContentProp,
3646
+ delayDuration: delayDurationProp
3647
+ } = props;
3648
+ const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);
3649
+ const popperScope = usePopperScope(__scopeTooltip);
3650
+ const [trigger, setTrigger] = React26.useState(null);
3651
+ const contentId = useId();
3652
+ const openTimerRef = React26.useRef(0);
3653
+ const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;
3654
+ const delayDuration = delayDurationProp ?? providerContext.delayDuration;
3655
+ const wasOpenDelayedRef = React26.useRef(false);
3656
+ const [open, setOpen] = useControllableState({
3657
+ prop: openProp,
3658
+ defaultProp: defaultOpen ?? false,
3659
+ onChange: (open2) => {
3660
+ if (open2) {
3661
+ providerContext.onOpen();
3662
+ document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));
3663
+ } else {
3664
+ providerContext.onClose();
3665
+ }
3666
+ onOpenChange?.(open2);
3667
+ },
3668
+ caller: TOOLTIP_NAME
3669
+ });
3670
+ const stateAttribute = React26.useMemo(() => {
3671
+ return open ? wasOpenDelayedRef.current ? "delayed-open" : "instant-open" : "closed";
3672
+ }, [open]);
3673
+ const handleOpen = React26.useCallback(() => {
3674
+ window.clearTimeout(openTimerRef.current);
3675
+ openTimerRef.current = 0;
3676
+ wasOpenDelayedRef.current = false;
3677
+ setOpen(true);
3678
+ }, [setOpen]);
3679
+ const handleClose = React26.useCallback(() => {
3680
+ window.clearTimeout(openTimerRef.current);
3681
+ openTimerRef.current = 0;
3682
+ setOpen(false);
3683
+ }, [setOpen]);
3684
+ const handleDelayedOpen = React26.useCallback(() => {
3685
+ window.clearTimeout(openTimerRef.current);
3686
+ openTimerRef.current = window.setTimeout(() => {
3687
+ wasOpenDelayedRef.current = true;
3688
+ setOpen(true);
3689
+ openTimerRef.current = 0;
3690
+ }, delayDuration);
3691
+ }, [delayDuration, setOpen]);
3692
+ React26.useEffect(() => {
3693
+ return () => {
3694
+ if (openTimerRef.current) {
3695
+ window.clearTimeout(openTimerRef.current);
3696
+ openTimerRef.current = 0;
3697
+ }
3698
+ };
3699
+ }, []);
3700
+ return /* @__PURE__ */ jsx27(Root22, { ...popperScope, children: /* @__PURE__ */ jsx27(TooltipContextProvider, {
3701
+ scope: __scopeTooltip,
3702
+ contentId,
3703
+ open,
3704
+ stateAttribute,
3705
+ trigger,
3706
+ onTriggerChange: setTrigger,
3707
+ onTriggerEnter: React26.useCallback(() => {
3708
+ if (providerContext.isOpenDelayedRef.current)
3709
+ handleDelayedOpen();
3710
+ else
3711
+ handleOpen();
3712
+ }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),
3713
+ onTriggerLeave: React26.useCallback(() => {
3714
+ if (disableHoverableContent) {
3715
+ handleClose();
3716
+ } else {
3717
+ window.clearTimeout(openTimerRef.current);
3718
+ openTimerRef.current = 0;
3719
+ }
3720
+ }, [handleClose, disableHoverableContent]),
3721
+ onOpen: handleOpen,
3722
+ onClose: handleClose,
3723
+ disableHoverableContent,
3724
+ children
3725
+ }) });
3726
+ };
3727
+ Tooltip.displayName = TOOLTIP_NAME;
3728
+ var TRIGGER_NAME = "TooltipTrigger";
3729
+ var TooltipTrigger = React26.forwardRef((props, forwardedRef) => {
3730
+ const { __scopeTooltip, ...triggerProps } = props;
3731
+ const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);
3732
+ const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);
3733
+ const popperScope = usePopperScope(__scopeTooltip);
3734
+ const ref = React26.useRef(null);
3735
+ const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);
3736
+ const isPointerDownRef = React26.useRef(false);
3737
+ const hasPointerMoveOpenedRef = React26.useRef(false);
3738
+ const handlePointerUp = React26.useCallback(() => isPointerDownRef.current = false, []);
3739
+ React26.useEffect(() => {
3740
+ return () => document.removeEventListener("pointerup", handlePointerUp);
3741
+ }, [handlePointerUp]);
3742
+ return /* @__PURE__ */ jsx27(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx27(Primitive5.button, {
3743
+ "aria-describedby": context.open ? context.contentId : undefined,
3744
+ "data-state": context.stateAttribute,
3745
+ ...triggerProps,
3746
+ ref: composedRefs,
3747
+ onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {
3748
+ if (event.pointerType === "touch")
3749
+ return;
3750
+ if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {
3751
+ context.onTriggerEnter();
3752
+ hasPointerMoveOpenedRef.current = true;
3753
+ }
3754
+ }),
3755
+ onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {
3756
+ context.onTriggerLeave();
3757
+ hasPointerMoveOpenedRef.current = false;
3758
+ }),
3759
+ onPointerDown: composeEventHandlers(props.onPointerDown, () => {
3760
+ if (context.open) {
3761
+ context.onClose();
3762
+ }
3763
+ isPointerDownRef.current = true;
3764
+ document.addEventListener("pointerup", handlePointerUp, { once: true });
3765
+ }),
3766
+ onFocus: composeEventHandlers(props.onFocus, () => {
3767
+ if (!isPointerDownRef.current)
3768
+ context.onOpen();
3769
+ }),
3770
+ onBlur: composeEventHandlers(props.onBlur, context.onClose),
3771
+ onClick: composeEventHandlers(props.onClick, context.onClose)
3772
+ }) });
3773
+ });
3774
+ TooltipTrigger.displayName = TRIGGER_NAME;
3775
+ var PORTAL_NAME2 = "TooltipPortal";
3776
+ var [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME2, {
3777
+ forceMount: undefined
3778
+ });
3779
+ var TooltipPortal = (props) => {
3780
+ const { __scopeTooltip, forceMount, children, container } = props;
3781
+ const context = useTooltipContext(PORTAL_NAME2, __scopeTooltip);
3782
+ return /* @__PURE__ */ jsx27(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx27(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx27(Portal, { asChild: true, container, children }) }) });
3783
+ };
3784
+ TooltipPortal.displayName = PORTAL_NAME2;
3785
+ var CONTENT_NAME2 = "TooltipContent";
3786
+ var TooltipContent = React26.forwardRef((props, forwardedRef) => {
3787
+ const portalContext = usePortalContext(CONTENT_NAME2, props.__scopeTooltip);
3788
+ const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
3789
+ const context = useTooltipContext(CONTENT_NAME2, props.__scopeTooltip);
3790
+ return /* @__PURE__ */ jsx27(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx27(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx27(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });
3791
+ });
3792
+ var TooltipContentHoverable = React26.forwardRef((props, forwardedRef) => {
3793
+ const context = useTooltipContext(CONTENT_NAME2, props.__scopeTooltip);
3794
+ const providerContext = useTooltipProviderContext(CONTENT_NAME2, props.__scopeTooltip);
3795
+ const ref = React26.useRef(null);
3796
+ const composedRefs = useComposedRefs(forwardedRef, ref);
3797
+ const [pointerGraceArea, setPointerGraceArea] = React26.useState(null);
3798
+ const { trigger, onClose } = context;
3799
+ const content = ref.current;
3800
+ const { onPointerInTransitChange } = providerContext;
3801
+ const handleRemoveGraceArea = React26.useCallback(() => {
3802
+ setPointerGraceArea(null);
3803
+ onPointerInTransitChange(false);
3804
+ }, [onPointerInTransitChange]);
3805
+ const handleCreateGraceArea = React26.useCallback((event, hoverTarget) => {
3806
+ const currentTarget = event.currentTarget;
3807
+ const exitPoint = { x: event.clientX, y: event.clientY };
3808
+ const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
3809
+ const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);
3810
+ const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());
3811
+ const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);
3812
+ setPointerGraceArea(graceArea);
3813
+ onPointerInTransitChange(true);
3814
+ }, [onPointerInTransitChange]);
3815
+ React26.useEffect(() => {
3816
+ return () => handleRemoveGraceArea();
3817
+ }, [handleRemoveGraceArea]);
3818
+ React26.useEffect(() => {
3819
+ if (trigger && content) {
3820
+ const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);
3821
+ const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);
3822
+ trigger.addEventListener("pointerleave", handleTriggerLeave);
3823
+ content.addEventListener("pointerleave", handleContentLeave);
3824
+ return () => {
3825
+ trigger.removeEventListener("pointerleave", handleTriggerLeave);
3826
+ content.removeEventListener("pointerleave", handleContentLeave);
3827
+ };
3828
+ }
3829
+ }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);
3830
+ React26.useEffect(() => {
3831
+ if (pointerGraceArea) {
3832
+ const handleTrackPointerGrace = (event) => {
3833
+ const target = event.target;
3834
+ const pointerPosition = { x: event.clientX, y: event.clientY };
3835
+ const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);
3836
+ const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);
3837
+ if (hasEnteredTarget) {
3838
+ handleRemoveGraceArea();
3839
+ } else if (isPointerOutsideGraceArea) {
3840
+ handleRemoveGraceArea();
3841
+ onClose();
3842
+ }
3843
+ };
3844
+ document.addEventListener("pointermove", handleTrackPointerGrace);
3845
+ return () => document.removeEventListener("pointermove", handleTrackPointerGrace);
3846
+ }
3847
+ }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);
3848
+ return /* @__PURE__ */ jsx27(TooltipContentImpl, { ...props, ref: composedRefs });
3849
+ });
3850
+ var [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });
3851
+ var Slottable = createSlottable("TooltipContent");
3852
+ var TooltipContentImpl = React26.forwardRef((props, forwardedRef) => {
3853
+ const {
3854
+ __scopeTooltip,
3855
+ children,
3856
+ "aria-label": ariaLabel,
3857
+ onEscapeKeyDown,
3858
+ onPointerDownOutside,
3859
+ ...contentProps
3860
+ } = props;
3861
+ const context = useTooltipContext(CONTENT_NAME2, __scopeTooltip);
3862
+ const popperScope = usePopperScope(__scopeTooltip);
3863
+ const { onClose } = context;
3864
+ React26.useEffect(() => {
3865
+ document.addEventListener(TOOLTIP_OPEN, onClose);
3866
+ return () => document.removeEventListener(TOOLTIP_OPEN, onClose);
3867
+ }, [onClose]);
3868
+ React26.useEffect(() => {
3869
+ if (context.trigger) {
3870
+ const handleScroll = (event) => {
3871
+ const target = event.target;
3872
+ if (target?.contains(context.trigger))
3873
+ onClose();
3874
+ };
3875
+ window.addEventListener("scroll", handleScroll, { capture: true });
3876
+ return () => window.removeEventListener("scroll", handleScroll, { capture: true });
3877
+ }
3878
+ }, [context.trigger, onClose]);
3879
+ return /* @__PURE__ */ jsx27(DismissableLayer, {
3880
+ asChild: true,
3881
+ disableOutsidePointerEvents: false,
3882
+ onEscapeKeyDown,
3883
+ onPointerDownOutside,
3884
+ onFocusOutside: (event) => event.preventDefault(),
3885
+ onDismiss: onClose,
3886
+ children: /* @__PURE__ */ jsxs6(Content, {
3887
+ "data-state": context.stateAttribute,
3888
+ ...popperScope,
3889
+ ...contentProps,
3890
+ ref: forwardedRef,
3891
+ style: {
3892
+ ...contentProps.style,
3893
+ ...{
3894
+ "--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
3895
+ "--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
3896
+ "--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
3897
+ "--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
3898
+ "--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
3899
+ }
3900
+ },
3901
+ children: [
3902
+ /* @__PURE__ */ jsx27(Slottable, { children }),
3903
+ /* @__PURE__ */ jsx27(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx27(Root3, { id: context.contentId, role: "tooltip", children: ariaLabel || children }) })
3904
+ ]
3905
+ })
3906
+ });
3907
+ });
3908
+ TooltipContent.displayName = CONTENT_NAME2;
3909
+ var ARROW_NAME2 = "TooltipArrow";
3910
+ var TooltipArrow = React26.forwardRef((props, forwardedRef) => {
3911
+ const { __scopeTooltip, ...arrowProps } = props;
3912
+ const popperScope = usePopperScope(__scopeTooltip);
3913
+ const visuallyHiddenContentContext = useVisuallyHiddenContentContext(ARROW_NAME2, __scopeTooltip);
3914
+ return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx27(Arrow2, { ...popperScope, ...arrowProps, ref: forwardedRef });
3915
+ });
3916
+ TooltipArrow.displayName = ARROW_NAME2;
3917
+ function getExitSideFromRect(point, rect) {
3918
+ const top = Math.abs(rect.top - point.y);
3919
+ const bottom = Math.abs(rect.bottom - point.y);
3920
+ const right = Math.abs(rect.right - point.x);
3921
+ const left = Math.abs(rect.left - point.x);
3922
+ switch (Math.min(top, bottom, right, left)) {
3923
+ case left:
3924
+ return "left";
3925
+ case right:
3926
+ return "right";
3927
+ case top:
3928
+ return "top";
3929
+ case bottom:
3930
+ return "bottom";
3931
+ default:
3932
+ throw new Error("unreachable");
3933
+ }
3934
+ }
3935
+ function getPaddedExitPoints(exitPoint, exitSide, padding = 5) {
3936
+ const paddedExitPoints = [];
3937
+ switch (exitSide) {
3938
+ case "top":
3939
+ paddedExitPoints.push({ x: exitPoint.x - padding, y: exitPoint.y + padding }, { x: exitPoint.x + padding, y: exitPoint.y + padding });
3940
+ break;
3941
+ case "bottom":
3942
+ paddedExitPoints.push({ x: exitPoint.x - padding, y: exitPoint.y - padding }, { x: exitPoint.x + padding, y: exitPoint.y - padding });
3943
+ break;
3944
+ case "left":
3945
+ paddedExitPoints.push({ x: exitPoint.x + padding, y: exitPoint.y - padding }, { x: exitPoint.x + padding, y: exitPoint.y + padding });
3946
+ break;
3947
+ case "right":
3948
+ paddedExitPoints.push({ x: exitPoint.x - padding, y: exitPoint.y - padding }, { x: exitPoint.x - padding, y: exitPoint.y + padding });
3949
+ break;
3950
+ }
3951
+ return paddedExitPoints;
3952
+ }
3953
+ function getPointsFromRect(rect) {
3954
+ const { top, right, bottom, left } = rect;
3955
+ return [
3956
+ { x: left, y: top },
3957
+ { x: right, y: top },
3958
+ { x: right, y: bottom },
3959
+ { x: left, y: bottom }
3960
+ ];
3961
+ }
3962
+ function isPointInPolygon(point, polygon) {
3963
+ const { x, y } = point;
3964
+ let inside = false;
3965
+ for (let i = 0, j = polygon.length - 1;i < polygon.length; j = i++) {
3966
+ const ii = polygon[i];
3967
+ const jj = polygon[j];
3968
+ const xi = ii.x;
3969
+ const yi = ii.y;
3970
+ const xj = jj.x;
3971
+ const yj = jj.y;
3972
+ const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
3973
+ if (intersect)
3974
+ inside = !inside;
3975
+ }
3976
+ return inside;
3977
+ }
3978
+ function getHull(points) {
3979
+ const newPoints = points.slice();
3980
+ newPoints.sort((a, b) => {
3981
+ if (a.x < b.x)
3982
+ return -1;
3983
+ else if (a.x > b.x)
3984
+ return 1;
3985
+ else if (a.y < b.y)
3986
+ return -1;
3987
+ else if (a.y > b.y)
3988
+ return 1;
3989
+ else
3990
+ return 0;
3991
+ });
3992
+ return getHullPresorted(newPoints);
3993
+ }
3994
+ function getHullPresorted(points) {
3995
+ if (points.length <= 1)
3996
+ return points.slice();
3997
+ const upperHull = [];
3998
+ for (let i = 0;i < points.length; i++) {
3999
+ const p = points[i];
4000
+ while (upperHull.length >= 2) {
4001
+ const q = upperHull[upperHull.length - 1];
4002
+ const r = upperHull[upperHull.length - 2];
4003
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))
4004
+ upperHull.pop();
4005
+ else
4006
+ break;
4007
+ }
4008
+ upperHull.push(p);
4009
+ }
4010
+ upperHull.pop();
4011
+ const lowerHull = [];
4012
+ for (let i = points.length - 1;i >= 0; i--) {
4013
+ const p = points[i];
4014
+ while (lowerHull.length >= 2) {
4015
+ const q = lowerHull[lowerHull.length - 1];
4016
+ const r = lowerHull[lowerHull.length - 2];
4017
+ if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))
4018
+ lowerHull.pop();
4019
+ else
4020
+ break;
4021
+ }
4022
+ lowerHull.push(p);
4023
+ }
4024
+ lowerHull.pop();
4025
+ if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {
4026
+ return upperHull;
4027
+ } else {
4028
+ return upperHull.concat(lowerHull);
4029
+ }
4030
+ }
4031
+ var Provider = TooltipProvider;
4032
+ var Root32 = Tooltip;
4033
+ var Trigger = TooltipTrigger;
4034
+ var Portal2 = TooltipPortal;
4035
+ var Content2 = TooltipContent;
4036
+ var Arrow22 = TooltipArrow;
4037
+
4038
+ // src/components/tooltip/tooltip.tsx
4039
+ import { jsx as jsx28, jsxs as jsxs7 } from "react/jsx-runtime";
4040
+
4041
+ function TooltipProvider2({
4042
+ delayDuration = 0,
4043
+ ...props
4044
+ }) {
4045
+ return /* @__PURE__ */ jsx28(Provider, {
4046
+ "data-slot": "tooltip-provider",
4047
+ delayDuration,
4048
+ ...props
4049
+ });
4050
+ }
4051
+ function Tooltip2({ ...props }) {
4052
+ return /* @__PURE__ */ jsx28(TooltipProvider2, {
4053
+ children: /* @__PURE__ */ jsx28(Root32, {
4054
+ "data-slot": "tooltip",
4055
+ ...props
4056
+ })
4057
+ });
4058
+ }
4059
+ function TooltipTrigger2({ ...props }) {
4060
+ return /* @__PURE__ */ jsx28(Trigger, {
4061
+ "data-slot": "tooltip-trigger",
4062
+ ...props
4063
+ });
4064
+ }
4065
+ function TooltipContent2({
4066
+ className,
4067
+ sideOffset = 0,
4068
+ children,
4069
+ ...props
4070
+ }) {
4071
+ return /* @__PURE__ */ jsx28(Portal2, {
4072
+ children: /* @__PURE__ */ jsxs7(Content2, {
4073
+ "data-slot": "tooltip-content",
4074
+ sideOffset,
4075
+ className: cn("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance", className),
4076
+ ...props,
4077
+ children: [
4078
+ children,
4079
+ /* @__PURE__ */ jsx28(Arrow22, {
4080
+ className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"
4081
+ })
4082
+ ]
4083
+ })
4084
+ });
4085
+ }
4086
+
4087
+ // src/components/docskit/tooltip.client.tsx
4088
+ import { jsx as jsx29, jsxs as jsxs8 } from "react/jsx-runtime";
4089
+
4090
+ function NoteTooltip({ children, name }) {
4091
+ let note = useNotesContext(name);
4092
+ if (!note) {
4093
+ note = { name, type: "prose", children: name };
4094
+ }
4095
+ return /* @__PURE__ */ jsx29(TooltipProvider2, {
4096
+ delayDuration: 100,
4097
+ children: /* @__PURE__ */ jsxs8(Tooltip2, {
4098
+ children: [
4099
+ /* @__PURE__ */ jsx29(TooltipTrigger2, {
4100
+ asChild: true,
4101
+ children: /* @__PURE__ */ jsx29("span", {
4102
+ className: "underline decoration-dotted underline-offset-4 cursor-help",
4103
+ children
4104
+ })
4105
+ }),
4106
+ note.type === "code" ? /* @__PURE__ */ jsx29(TooltipContent2, {
4107
+ className: cn("min-w-44 max-w-96 whitespace-normal", "p-0 [&>div]:!my-0 border-none rounded-none bg-transparent", "[&>span>svg]:invisible"),
4108
+ children: note?.children
4109
+ }) : note.type === "image" ? /* @__PURE__ */ jsx29(TooltipContent2, {
4110
+ className: cn("min-w-44 max-w-96 whitespace-normal", "p-0 [&>*]:first:mt-0 [&>*]:last:mb-0 border-none bg-transparent", "[&>span>svg]:invisible"),
4111
+ children: note?.children
4112
+ }) : /* @__PURE__ */ jsx29(TooltipContent2, {
4113
+ className: cn("min-w-44 max-w-96 whitespace-normal", "p-4"),
4114
+ children: /* @__PURE__ */ jsx29("div", {
4115
+ className: "[&>:first-child]:mt-0 [&>:last-child]:mb-0",
4116
+ children: note?.children
4117
+ })
4118
+ })
4119
+ ]
4120
+ })
4121
+ });
4122
+ }
4123
+
4124
+ // src/components/docskit/tooltip.tsx
4125
+ import { jsx as jsx30 } from "react/jsx-runtime";
4126
+ var tooltip = {
4127
+ name: "tooltip",
4128
+ Inline: ({ children, annotation }) => {
4129
+ const { query } = annotation;
4130
+ return /* @__PURE__ */ jsx30(NoteTooltip, {
4131
+ name: query,
4132
+ children
4133
+ });
4134
+ }
4135
+ };
4136
+
4137
+ // src/components/docskit/word-wrap.tsx
4138
+ import { InnerLine as InnerLine7, InnerPre, InnerToken } from "codehike/code";
4139
+ import { jsx as jsx31 } from "react/jsx-runtime";
4140
+ var wordWrap = {
4141
+ name: "word-wrap",
4142
+ Pre: (props) => /* @__PURE__ */ jsx31(InnerPre, {
4143
+ merge: props,
4144
+ className: "whitespace-pre-wrap"
4145
+ }),
4146
+ Line: (props) => /* @__PURE__ */ jsx31(InnerLine7, {
4147
+ merge: props,
4148
+ children: /* @__PURE__ */ jsx31("div", {
4149
+ style: {
4150
+ textIndent: `${-props.indentation}ch`,
4151
+ marginLeft: `${props.indentation}ch`
4152
+ },
4153
+ children: props.children
4154
+ })
4155
+ }),
4156
+ Token: (props) => /* @__PURE__ */ jsx31(InnerToken, {
4157
+ merge: props,
4158
+ style: { textIndent: 0 }
4159
+ })
4160
+ };
4161
+
4162
+ // src/components/docskit/code.handlers.tsx
4163
+ function getHandlers(options) {
4164
+ return [
4165
+ line,
4166
+ options.lineNumbers && lineNumbers,
4167
+ mark,
4168
+ diff,
4169
+ link,
4170
+ callout,
4171
+ ...collapse,
4172
+ expandable,
4173
+ hover,
4174
+ tooltip,
4175
+ options.wordWrap && wordWrap
4176
+ ].filter(Boolean);
4177
+ }
4178
+
4179
+ // src/components/docskit/code.icon.tsx
4180
+ var import_seti_icons = __toESM(require_lib(), 1);
4181
+ import { TerminalIcon } from "lucide-react";
4182
+ import { jsx as jsx32 } from "react/jsx-runtime";
4183
+ function CodeIcon({
4184
+ title,
4185
+ lang,
4186
+ className
4187
+ }) {
4188
+ if (title?.toLowerCase() === "terminal output" || title?.toLowerCase() === "terminal" || lang === "sh" || lang === "shell" || lang === "bash") {
4189
+ return /* @__PURE__ */ jsx32(TerminalIcon, {
4190
+ size: 16,
4191
+ className,
4192
+ style: { marginTop: -3.5 }
4193
+ });
4194
+ }
4195
+ const ext = lang === "rust" ? "rs" : lang === "typescript" ? "ts" : lang;
4196
+ const filename = `x.${ext}`;
4197
+ const { svg } = getIcon(filename);
4198
+ const __html = svg.replace(/svg/, `svg fill='currentColor' style='margin: -4px; height: 24px; width: 24px;'`);
4199
+ return /* @__PURE__ */ jsx32("span", {
4200
+ className,
4201
+ children: /* @__PURE__ */ jsx32("span", {
4202
+ dangerouslySetInnerHTML: { __html },
4203
+ style: { display: "contents" }
4204
+ })
4205
+ });
4206
+ }
4207
+ var getIcon = import_seti_icons.themeIcons({
4208
+ white: "#d4d7d6",
4209
+ grey: "#4d5a5e",
4210
+ "grey-light": "#6d8086",
4211
+ blue: "#519aba",
4212
+ green: "#8dc149",
4213
+ orange: "#e37933",
4214
+ pink: "#f55385",
4215
+ purple: "#a074c4",
4216
+ red: "#cc3e44",
4217
+ yellow: "#cbcb41",
4218
+ ignore: "#41535b"
4219
+ });
4220
+
4221
+ // src/components/file-change-row/file-change-row.tsx
4222
+ import { jsx as jsx33, jsxs as jsxs9, Fragment as Fragment3 } from "react/jsx-runtime";
4223
+
4224
+ function StackedChevrons({ isOpen, className }) {
4225
+ return /* @__PURE__ */ jsxs9("div", {
4226
+ className: cn("flex flex-col items-center -space-y-1 transition-opacity", className),
4227
+ children: [
4228
+ /* @__PURE__ */ jsx33(ChevronUp, {
4229
+ className: cn("size-3 transition-colors", isOpen ? "text-dk-tab-active-foreground" : "text-dk-tab-inactive-foreground")
4230
+ }),
4231
+ /* @__PURE__ */ jsx33(ChevronDown, {
4232
+ className: cn("size-3 transition-colors", isOpen ? "text-dk-tab-active-foreground" : "text-dk-tab-inactive-foreground")
4233
+ })
4234
+ ]
4235
+ });
4236
+ }
4237
+ function getLangFromFilename(filename) {
4238
+ const ext = filename.split(".").pop()?.toLowerCase() || "";
4239
+ const extMap = {
4240
+ ts: "typescript",
4241
+ tsx: "tsx",
4242
+ js: "javascript",
4243
+ jsx: "jsx",
4244
+ json: "json",
4245
+ html: "html",
4246
+ css: "css",
4247
+ scss: "scss",
4248
+ md: "markdown",
4249
+ py: "python",
4250
+ rs: "rust",
4251
+ go: "go",
4252
+ yaml: "yaml",
4253
+ yml: "yaml"
4254
+ };
4255
+ return extMap[ext] || ext;
4256
+ }
4257
+ function FileChangeRow({
4258
+ path,
4259
+ filename,
4260
+ additions,
4261
+ deletions,
4262
+ codeblock,
4263
+ handlers: extraHandlers,
4264
+ showCopy = true,
4265
+ children,
4266
+ defaultOpen = false,
4267
+ className
4268
+ }) {
4269
+ const [isOpen, setIsOpen] = useState12(defaultOpen);
4270
+ const [highlighted, setHighlighted] = useState12(null);
4271
+ const lang = getLangFromFilename(filename);
4272
+ const hasAdditions = additions !== undefined && additions > 0;
4273
+ const hasDeletions = deletions !== undefined && deletions > 0;
4274
+ useEffect9(() => {
4275
+ if (!codeblock)
4276
+ return;
4277
+ let cancelled = false;
4278
+ const codeWithLang = { ...codeblock, lang: codeblock.lang || lang || "txt" };
4279
+ highlight(codeWithLang, theme).then((result) => {
4280
+ if (!cancelled)
4281
+ setHighlighted(result);
4282
+ });
4283
+ return () => {
4284
+ cancelled = true;
4285
+ };
4286
+ }, [codeblock?.value, codeblock?.lang, codeblock?.meta, lang, codeblock]);
4287
+ const options = flagsToOptions("");
4288
+ const handlers = getHandlers(options);
4289
+ if (extraHandlers) {
4290
+ handlers.push(...extraHandlers);
4291
+ }
4292
+ return /* @__PURE__ */ jsx33(Collapsible, {
4293
+ open: isOpen,
4294
+ onOpenChange: setIsOpen,
4295
+ className,
4296
+ children: /* @__PURE__ */ jsxs9("div", {
4297
+ className: "group rounded overflow-hidden border border-dk-border",
4298
+ children: [
4299
+ /* @__PURE__ */ jsx33(CollapsibleTrigger2, {
4300
+ asChild: true,
4301
+ children: /* @__PURE__ */ jsxs9("button", {
4302
+ type: "button",
4303
+ className: cn("flex items-center gap-2 px-3 py-0 cursor-pointer w-full text-left", "h-9 shrink-0 font-mono text-sm", "bg-dk-tabs-background", isOpen && "border-b border-dk-border", "text-dk-tab-inactive-foreground", "hover:bg-dk-background/50 transition-colors"),
4304
+ children: [
4305
+ /* @__PURE__ */ jsx33("div", {
4306
+ className: "size-4 shrink-0 opacity-60",
4307
+ children: /* @__PURE__ */ jsx33(CodeIcon, {
4308
+ title: filename,
4309
+ lang
4310
+ })
4311
+ }),
4312
+ /* @__PURE__ */ jsxs9("div", {
4313
+ className: "flex-1 min-w-0 flex items-center gap-1",
4314
+ children: [
4315
+ path && /* @__PURE__ */ jsx33("span", {
4316
+ className: "text-dk-tab-inactive-foreground truncate",
4317
+ children: path
4318
+ }),
4319
+ /* @__PURE__ */ jsx33("span", {
4320
+ className: "text-dk-tab-active-foreground font-medium truncate",
4321
+ children: filename
4322
+ })
4323
+ ]
4324
+ }),
4325
+ /* @__PURE__ */ jsxs9("div", {
4326
+ className: "flex items-center gap-2 text-sm shrink-0",
4327
+ children: [
4328
+ hasAdditions && /* @__PURE__ */ jsxs9("span", {
4329
+ className: "text-green-500 font-medium",
4330
+ children: [
4331
+ "+",
4332
+ additions
4333
+ ]
4334
+ }),
4335
+ hasDeletions && /* @__PURE__ */ jsxs9("span", {
4336
+ className: "text-red-500 font-medium",
4337
+ children: [
4338
+ "-",
4339
+ deletions
4340
+ ]
4341
+ })
4342
+ ]
4343
+ }),
4344
+ /* @__PURE__ */ jsx33(StackedChevrons, {
4345
+ isOpen,
4346
+ className: "ml-1"
4347
+ })
4348
+ ]
4349
+ })
4350
+ }),
4351
+ /* @__PURE__ */ jsx33(CollapsibleContent2, {
4352
+ className: "relative",
4353
+ children: codeblock && highlighted ? /* @__PURE__ */ jsxs9(Fragment3, {
4354
+ children: [
4355
+ /* @__PURE__ */ jsx33(Pre, {
4356
+ code: highlighted,
4357
+ className: "overflow-auto px-0 py-3 m-0 rounded-none !bg-dk-background selection:bg-dk-selection selection:text-current max-h-full",
4358
+ style: highlighted.style,
4359
+ handlers
4360
+ }),
4361
+ showCopy && /* @__PURE__ */ jsx33(CopyButton, {
4362
+ text: highlighted.code,
4363
+ variant: "floating",
4364
+ className: "absolute right-3 top-3 z-10 text-dk-tab-inactive-foreground"
4365
+ })
4366
+ ]
4367
+ }) : children
4368
+ })
4369
+ ]
4370
+ })
4371
+ });
4372
+ }
4373
+ function FileChangeList({
4374
+ title = "Changed files",
4375
+ count: count2,
4376
+ children,
4377
+ defaultOpen = true,
4378
+ className
4379
+ }) {
4380
+ const [isOpen, setIsOpen] = useState12(defaultOpen);
4381
+ return /* @__PURE__ */ jsxs9(Collapsible, {
4382
+ open: isOpen,
4383
+ onOpenChange: setIsOpen,
4384
+ className,
4385
+ children: [
4386
+ /* @__PURE__ */ jsx33(CollapsibleTrigger2, {
4387
+ asChild: true,
4388
+ children: /* @__PURE__ */ jsxs9("button", {
4389
+ type: "button",
4390
+ className: "flex items-center gap-2 text-sm font-medium text-foreground hover:text-foreground/80 transition-colors py-2",
4391
+ children: [
4392
+ /* @__PURE__ */ jsx33(StackedChevrons, {
4393
+ isOpen
4394
+ }),
4395
+ /* @__PURE__ */ jsx33("span", {
4396
+ children: count2 !== undefined ? `${count2} ${title}` : title
4397
+ })
4398
+ ]
4399
+ })
4400
+ }),
4401
+ /* @__PURE__ */ jsx33(CollapsibleContent2, {
4402
+ children: /* @__PURE__ */ jsx33("div", {
4403
+ className: "space-y-3 mt-2",
4404
+ children
4405
+ })
4406
+ })
4407
+ ]
4408
+ });
4409
+ }
4410
+ export {
4411
+ getLangFromFilename,
4412
+ StackedChevrons,
4413
+ FileChangeRow,
4414
+ FileChangeList
4415
+ };