diff --git a/.commitlintrc.js b/.commitlintrc.js new file mode 100644 index 00000000..8e5db28f --- /dev/null +++ b/.commitlintrc.js @@ -0,0 +1,50 @@ +module.exports = { + extends: ['@commitlint/config-conventional'], + rules: { + 'type-enum': [ + 2, + 'always', + [ + 'feat', // new feature + 'fix', // bug fix + 'docs', // documentation update + 'style', // code formatting, no logic changes + 'refactor', // code refactoring + 'perf', // performance optimization + 'test', // add tests + 'chore', // build process or auxiliary tool changes + 'ci', // CI/CD related changes + 'build', // build system or external dependency changes + 'revert' // revert commit + ] + ], + 'scope-enum': [ + 2, + 'always', + [ + 'search', // search functionality + 'theme', // theme related + 'css', // style files + 'js', // JavaScript files + 'content', // content files + 'build', // build related + 'deps', // dependency updates + 'config', // configuration files + 'docs', // documentation + 'layout', // layout templates + 'widget', // components + 'gulp', // Gulp tasks + 'hexo', // Hexo related + 'markdown', // Markdown processing + 'seo', // SEO optimization + 'a11y', // accessibility + 'perf' // performance related + ] + ], + 'subject-case': [2, 'never', ['start-case', 'pascal-case', 'upper-case']], + 'subject-empty': [2, 'never'], + 'subject-full-stop': [2, 'never', '.'], + 'type-case': [2, 'always', 'lower-case'], + 'type-empty': [2, 'never'] + } +}; diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 8d509fcc..00000000 --- a/.editorconfig +++ /dev/null @@ -1,7 +0,0 @@ -root = true - -[*.md] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 16e06e6c..46f879a2 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,6 +1,6 @@ # These are supported funding model platforms -github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +github: Fechin # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username @@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username -custom: ['https://buymeacoffee.com/randy8080'] +custom: ["https://coff.ee/cheatsheets.zip"] diff --git a/.github/ISSUE_TEMPLATE/cheatsheet-request.md b/.github/ISSUE_TEMPLATE/cheatsheet-request.md index 3c6baf47..238bd5db 100644 --- a/.github/ISSUE_TEMPLATE/cheatsheet-request.md +++ b/.github/ISSUE_TEMPLATE/cheatsheet-request.md @@ -5,5 +5,3 @@ title: 'Cheatsheet request: ' labels: request assignees: Fechin --- - - diff --git a/.gitignore b/.gitignore index b65ab763..7303891d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,32 +8,82 @@ ehthumbs.db Thumbs.db nohup.out +*.tmp +*.temp -# Python files # +# Environment files # ###################### -.python-version .env +.env.local +.env.development.local +.env.test.local +.env.production.local +.python-version .venv .ipynb_checkpoints + +# Logs # +###################### *.log +logs/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* # Editor files # ###################### -.idea -.vscode +.idea/ +.vscode/ +*.swp +*.swo +*~ +.vim/ +.emacs.d/ +.sublime-* -# Node files # +# Node.js # ###################### node_modules/ dist/ -npm-debug.log* -yarn-debug.log* -yarn-error.log* +build/ +coverage/ +.nyc_output/ +.cache/ +.parcel-cache/ +.next/ +.nuxt/ +.vuepress/dist/ +.serverless/ +.fusebox/ +.dynamodb/ +.tern-port package-lock.json +# Testing # +###################### +.jest/ +.coverage/ +junit.xml +test-results/ -# Other files # +# Build artifacts # ###################### themes/coo/source/css/style.css public/ db.json +*.tgz +*.tar.gz + +# Security # +###################### +.npmrc +.yarnrc +.pnpm-store/ + +# Misc # +###################### +.eslintcache +.stylelintcache +.prettierignore diff --git a/.gitmessage b/.gitmessage new file mode 100644 index 00000000..f4490a9e --- /dev/null +++ b/.gitmessage @@ -0,0 +1,36 @@ +# [optional scope]: +# +# [optional body] +# +# [optional footer(s)] +# +# Commit Types: +# feat: New feature +# fix: Bug fix +# docs: Documentation update +# style: Code formatting, no logic changes +# refactor: Code refactoring, neither new feature nor bug fix +# perf: Performance optimization +# test: Add tests +# chore: Build process or auxiliary tool changes +# ci: CI/CD related changes +# build: Build system or external dependency changes +# revert: Revert commit +# +# Scope Examples: +# search, theme, css, js, content, build, deps, config, docs +# layout, widget, gulp, hexo, markdown, seo, a11y, perf +# +# Examples: +# feat(search): add fuzzy search with highlighting +# fix(css): resolve mobile layout overflow issue +# docs(readme): update installation instructions +# chore(deps): upgrade tailwindcss to v3.4.0 +# perf(js): optimize search performance with debouncing +# style(css): format tailwind classes according to prettier +# +# Guidelines: +# - Use imperative mood: "add" not "added" or "adds" +# - Start with lowercase +# - No period at the end +# - Keep description concise, under 50 characters \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 00000000..a78cc751 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1 @@ +npx commitlint --edit $1 diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..2312dc58 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npx lint-staged diff --git a/.lintstagedrc.js b/.lintstagedrc.js new file mode 100644 index 00000000..63a8475a --- /dev/null +++ b/.lintstagedrc.js @@ -0,0 +1,10 @@ +module.exports = { + // JavaScript files + '*.{js,mjs}': ['eslint --fix', 'prettier --write'], + + // CSS files + '*.css': ['stylelint --fix', 'prettier --write'], + + // All other files that Prettier supports + '*.{md,json,yml,yaml}': ['prettier --write'] +}; diff --git a/.markdownlint.json b/.markdownlint.json deleted file mode 100644 index 919784c2..00000000 --- a/.markdownlint.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "MD003": false, - "MD013": false, - "MD014": false, - "MD024": false, - "MD033": false, - "MD040": false, - "MD010": { - "code_blocks": true, - "spaces_per_tab": 2 - } -} \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..c3eb805c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,44 @@ +# Dependencies +node_modules/ +pnpm-lock.yaml +package-lock.json + +# Build outputs +public/ +dist/ +.hexo/ + +# Generated files +db.json +themes/coo/source/css/style.css + +# Third-party libraries +themes/coo/source/js/fuse_*.js +*.min.js +*.min.css + +# Large asset files +source/assets/image/ +source/assets/icon/ +*.png +*.jpg +*.jpeg +*.gif +*.svg +*.ico + +# Logs +*.log +npm-debug.log* + +# OS generated files +.DS_Store +Thumbs.db + +# IDE files +.vscode/ +.idea/ + +# Temporary files +*.tmp +*.temp diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 00000000..44f5ca43 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,42 @@ +module.exports = { + // Basic configuration + semi: true, + trailingComma: 'none', + singleQuote: true, + printWidth: 100, + tabWidth: 2, + useTabs: false, + endOfLine: 'lf', + + // Plugin configuration + plugins: ['prettier-plugin-tailwindcss'], + + // File-specific configuration + overrides: [ + { + files: '*.md', + options: { + proseWrap: 'preserve', + printWidth: 80 + } + }, + { + files: '*.yml', + options: { + singleQuote: false + } + }, + { + files: '*.json', + options: { + trailingComma: 'none' + } + }, + { + files: ['themes/coo/source/css/*.css'], + options: { + printWidth: 120 + } + } + ] +}; diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 00000000..514a5451 --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,45 @@ +module.exports = { + extends: ['stylelint-config-standard'], + rules: { + // Tailwind CSS compatibility + 'at-rule-no-unknown': [ + true, + { + ignoreAtRules: ['tailwind', 'apply', 'variants', 'responsive', 'screen', 'layer'] + } + ], + // Disable @apply deprecation warning, as this is a Tailwind CSS feature + 'at-rule-no-deprecated': null, + // Allow duplicate selectors, as this is common in generated CSS + 'no-descending-specificity': null, + 'no-duplicate-selectors': null, + // Allow camelCase class names + 'selector-class-pattern': null, + // Allow camelCase ID selectors + 'selector-id-pattern': null, + // Allow unknown properties (Tailwind generated CSS variables) + 'property-no-unknown': null, + // Allow unknown type selectors (custom elements) + 'selector-type-no-unknown': null, + // Allow unknown declaration values + 'declaration-property-value-no-unknown': null, + // Allow duplicate custom properties + 'declaration-block-no-duplicate-custom-properties': null, + // Allow multiple declarations on single line + 'declaration-block-single-line-max-declarations': null, + // Allow decimal precision + 'number-max-precision': null, + // Allow unknown media feature values + 'media-feature-name-value-no-unknown': null, + // Allow non-kebab-case keyframe names + 'keyframes-name-pattern': null, + // Allow empty source files + 'no-empty-source': null + }, + ignoreFiles: [ + 'node_modules/**/*', + 'public/**/*', + 'themes/coo/source/css/highlightjs/**/*', + '**/*.min.css' + ] +}; diff --git a/Dockerfile b/Dockerfile index 24a2b673..6c70e86e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,24 @@ # Stage 1: build the application -FROM nginx:alpine AS build +FROM node:19 AS build-app +WORKDIR /app +COPY . . +RUN npm install -g pnpm +RUN pnpm install +RUN pnpm run build + +# Stage 2: Build nginx +FROM nginx:alpine AS build-nginx +WORKDIR /usr/share/nginx/html/ +COPY --from=build-app /app/public /usr/share/nginx/html/ RUN rm -rf /etc/nginx/conf.d/* COPY nginx.conf /etc/nginx/ -COPY public /usr/share/nginx/html/ EXPOSE 80 -# Stage 2: final image +# Stage 3: final image FROM alpine:latest RUN apk add --no-cache nginx && mkdir -p /run/nginx -COPY --from=build /usr/share/nginx/html/ /usr/share/nginx/html/ -COPY --from=build /etc/nginx/nginx.conf /etc/nginx/nginx.conf +COPY --from=build-nginx /usr/share/nginx/html/ /usr/share/nginx/html/ +COPY --from=build-nginx /etc/nginx/nginx.conf /etc/nginx/nginx.conf EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file +HEALTHCHECK --interval=1s --timeout=3s CMD wget -q -O - http://localhost:80 || exit 1 +CMD ["nginx", "-g", "daemon off;"] diff --git a/LICENSE b/LICENSE index d5ed7958..f288702d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,674 @@ -MIT License - -Copyright (c) 2021 @Fechin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index 91c1abb2..f00f032e 100644 --- a/README.md +++ b/README.md @@ -1,217 +1,350 @@ # 📖 Reference - Cheat Sheets for Developers [![love](https://badgen.net/badge/make%20with/love/pink)](#) -[![License](https://badgen.net/badge/license/MIT/blue)](https://github.com/Fechin/reference/blob/main/LICENSE) +[![License](https://badgen.net/badge/license/GPL-3.0/blue)](https://github.com/Fechin/reference/blob/main/LICENSE) [![Follow us on Twitter](https://img.shields.io/twitter/follow/FechinLi?style=social)](https://twitter.com/FechinLi) +Reference is a collection of cheat sheets contributed by open source angels. It shares a quick reference cheat sheet for +developers in a nice layout. \[ [中文版](https://github.com/jaywcjlove/reference) | ... \] -Reference is a collection of cheat sheets contributed by open source angels. It shares a quick reference cheat sheet for developers in a nice layout. \[ [中文版](https://github.com/jaywcjlove/reference) | ... \] - -We encourage you to share your own cheat sheets with the community and make Reference even better. If you notice a cheat sheet that could be improved, feel free to submit a [pull request](#-contributing). - - - +We encourage you to share your own cheat sheets with the community and make Reference even better. If you notice a cheat +sheet that could be improved, feel free to submit a [pull request](#-contributing). ## 👀 Live Demonstration -You can view the cheat sheets live at [https://cheatsheets.zip](https://cheatsheets.zip/) +Note: The original domain for this project was quickref.me, which was acquired by a US-based company. Since then, +cheatsheets.zip is the primary and maintained domain (All within the bounds of the agreements). -[![Quick reference](https://cheatsheets.zip/assets/image/preview.png)](https://cheatsheets.zip) +You can view the most up-to-date cheat sheets live at [https://cheatsheets.zip](https://cheatsheets.zip/). +[![Quick reference](https://cheatsheets.zip/assets/image/preview.png?9nd3)](https://cheatsheets.zip) ## 📚 Cheat Sheets List Reference provides cheat sheets for the following: -
Programming -- [Kubernetes](https://cheatsheets.zip/kubernetes.html): This page contains a list of commonly used kubectl commands and flags. -- [ES6](https://cheatsheets.zip/es6.html): A quick reference cheat sheet of what's new in JavaScript for ES2015, ES2016, ES2017, ES2018 and beyond -- [MATLAB](https://cheatsheets.zip/matlab.html): This quick reference cheat sheet provides an example introduction to using the [MATLAB](https://mathworks.cn/) scientific computing language to get started quickly +- [Bash](https://cheatsheets.zip/bash.html): This is a quick reference cheat sheet to getting started with Linux bash + shell scripting. - [C](https://cheatsheets.zip/c.html): C quick reference cheat sheet that provides basic syntax and methods. -- [INI](https://cheatsheets.zip/ini.html): This is a quick reference cheat sheet for understanding and writing INI-format configuration files. -- [LaTeX](https://cheatsheets.zip/latex.html): This cheat sheet summarizes a reference list of [LaTeX](https://www.latex-project.org/) commonly used display math notation and some application examples of [KaTeX](https://katex.org/). -- [Rust](https://cheatsheets.zip/rust.html): The Rust quick reference cheat sheet that aims at providing help on writing basic syntax and methods. -- [C#](https://cheatsheets.zip/cs.html): C# quick reference cheat sheet that provides basic syntax and methods. -- [Laravel](https://cheatsheets.zip/laravel.html): [Laravel](https://laravel.com/docs/8.x/) is an expressive and progressive web application framework for PHP. -This cheat sheet provides a reference for common commands and features for Laravel 8. -- [Dart](https://cheatsheets.zip/dart.html): A Dart cheat sheet with the most important concepts, functions, methods, and more. A complete quick reference for beginners. -- [JSON](https://cheatsheets.zip/json.html): This is a quick reference cheat sheet for understanding and writing JSON format configuration files. -- [HTML](https://cheatsheets.zip/html.html): This HTML quick reference cheat sheet lists the common HTML and HTML5 tags in readable layout. -- [GraphQL](https://cheatsheets.zip/graphql.html): This quick reference cheat sheet provides a brief overview of GraphQL. - [C++](https://cheatsheets.zip/cpp.html): C++ quick reference cheat sheet that provides basic syntax and methods. -- [Java](https://cheatsheets.zip/java.html): This cheat sheet is a crash course for Java beginners and help review the basic syntax of the Java language. -- [PHP](https://cheatsheets.zip/php.html): This [PHP](https://www.php.net/manual/en/) cheat sheet provides a reference for quickly looking up the correct syntax for the code you use most frequently. -- [Docker](https://cheatsheets.zip/docker.html): This is a quick reference cheat sheet for [Docker](https://docs.docker.com/get-started/). And you can find the most common Docker commands here. -- [TOML](https://cheatsheets.zip/toml.html): This is a quick reference cheat sheet to the TOML format configuration file syntax. -- [YAML](https://cheatsheets.zip/yaml.html): This is a quick reference cheat sheet for understanding and writing YAML format configuration files. -- [CSS 3](https://cheatsheets.zip/css.html): This is a quick reference cheat sheet for CSS goodness, listing selector syntax, properties, units and other useful bits of information. -- [jQuery](https://cheatsheets.zip/jquery.html): This [jQuery](https://jquery.com/) cheat sheet is a great reference for both beginners and experienced developers. -- [JavaScript](https://cheatsheets.zip/javascript.html): A JavaScript cheat sheet with the most important concepts, functions, methods, and more. A complete quick reference for beginners. -- [Python](https://cheatsheets.zip/python.html): The [Python](https://www.python.org/) cheat sheet is a one-page reference sheet for the Python 3 programming language. -- [Sass](https://cheatsheets.zip/sass.html): This is a quick reference cheat sheet that lists the most useful features of [SASS](https://sass-lang.com). -- [Go](https://cheatsheets.zip/go.html): This cheat sheet provided basic syntax and methods to help you using [Go](https://go.dev/). +- [C#](https://cheatsheets.zip/cs.html): C# quick reference cheat sheet that provides basic syntax and methods. +- [CSS 3](https://cheatsheets.zip/css.html): This is a quick reference cheat sheet for CSS goodness, listing selector + syntax, properties, units and other useful bits of information. +- [Dart](https://cheatsheets.zip/dart.html): A Dart cheat sheet with the most important concepts, functions, methods, + and more. A complete quick reference for beginners. +- [Docker](https://cheatsheets.zip/docker.html): This is a quick reference cheat sheet for + [Docker](https://docs.docker.com/get-started/). And you can find the most common Docker commands here. +- [ES6](https://cheatsheets.zip/es6.html): A quick reference cheat sheet of what’s new in JavaScript for ES2015, ES2016, + ES2017, ES2018 and beyond +- [Go](https://cheatsheets.zip/go.html): This cheat sheet provided basic syntax and methods to help you using + [Go](https://go.dev/). +- [GraphQL](https://cheatsheets.zip/graphql.html): This quick reference cheat sheet provides a brief overview of + GraphQL. +- [Hook](https://cheatsheets.zip/hook.html): The [Hook](https://github.com/hook-lang/hook/) cheat sheet is a one-page + reference sheet for the Hook programming language. +- [HTML](https://cheatsheets.zip/html.html): This HTML quick reference cheat sheet lists the common HTML and HTML5 tags + in readable layout. +- [INI](https://cheatsheets.zip/ini.html): This is a quick reference cheat sheet for understanding and writing + INI-format configuration files. +- [Java](https://cheatsheets.zip/java.html): This cheat sheet is a crash course for Java beginners and help review the + basic syntax of the Java language. +- [JavaScript](https://cheatsheets.zip/javascript.html): A JavaScript cheat sheet with the most important concepts, + functions, methods, and more. A complete quick reference for beginners. +- [jQuery](https://cheatsheets.zip/jquery.html): This [jQuery](https://jquery.com/) cheat sheet is a great reference for + both beginners and experienced developers. +- [Kubernetes](https://cheatsheets.zip/kubernetes.html): This page contains a list of commonly used kubectl commands and + flags. +- [LaTeX](https://cheatsheets.zip/latex.html): This cheat sheet summarizes a reference list of + [LaTeX](https://www.latex-project.org/) commonly used display math notation and some application examples of + [KaTeX](https://katex.org/). +- [Laravel](https://cheatsheets.zip/laravel.html): [Laravel](https://laravel.com/docs/8.x/) is an expressive and + progressive web application framework for PHP. This cheat sheet provides a reference for common commands and features + for Laravel 8. +- [MATLAB](https://cheatsheets.zip/matlab.html): This quick reference cheat sheet provides an example introduction to + using the [MATLAB](https://mathworks.cn/) scientific computing language to get started quickly - [Markdown](https://cheatsheets.zip/markdown.html): This is a quick reference cheat sheet to the Markdown syntax. -- [Bash](https://cheatsheets.zip/bash.html): This is a quick reference cheat sheet to getting started with linux bash shell scripting. +- [PHP](https://cheatsheets.zip/php.html): This [PHP](https://www.php.net/manual/en/) cheat sheet provides a reference + for quickly looking up the correct syntax for the code you use most frequently. +- [Python](https://cheatsheets.zip/python.html): The [Python](https://www.python.org/) cheat sheet is a one-page + reference sheet for the Python 3 programming language. +- [Rust](https://cheatsheets.zip/rust.html): The Rust quick reference cheat sheet that aims at providing help on writing + basic syntax and methods. +- [Sass](https://cheatsheets.zip/sass.html): This is a quick reference cheat sheet that lists the most useful features + of [SASS](https://sass-lang.com). +- [TOML](https://cheatsheets.zip/toml.html): This is a quick reference cheat sheet to the TOML format configuration file + syntax. +- [VHDL](https://cheatsheets.zip/vhdl.html): VHDL (VHSIC Hardware Description Language) cheat sheet - A comprehensive reference for digital hardware design and simulation. +- [YAML](https://cheatsheets.zip/yaml.html): This is a quick reference cheat sheet for understanding and writing YAML + format configuration files.
Toolkit -- [ChatGPT](https://cheatsheets.zip/chatgpt.html): This cheat sheet lists out prompts and tips from all over the world on how to use ChatGPT effectively -- [VSCode](https://cheatsheets.zip/vscode.html): This VSCode (Visual Studio Code) quick reference cheat sheet shows its keyboard shortcuts and commands. -- [Mitmproxy](https://cheatsheets.zip/mitmproxy.html): [mitmproxy](https://mitmproxy.org/) is a free and open source interactive HTTPS proxy. This is a quick reference cheat sheet to the mitmproxy. -- [XPath](https://cheatsheets.zip/xpath.html): This is an [XPath](https://en.wikipedia.org/wiki/XPath) selectors cheat sheet, which lists commonly used XPath positioning methods and CSS selectors -- [Emacs](https://cheatsheets.zip/emacs.html): [Emacs](https://www.gnu.org/software/emacs) is the extensible, customizable, self-documenting real time display text editor. -This reference was made for Emacs 27. -- [Emmet](https://cheatsheets.zip/emmet.html): [Emmet](https://emmet.io/) is a web-developer’s toolkit for boosting HTML & CSS code writing, which allows you to write large HTML code blocks at speed of light using well-known CSS selectors. -- [RegEX](https://cheatsheets.zip/regex.html): A quick reference for regular expressions (regex), including symbols, ranges, grouping, assertions and some sample patterns to get you started. -- [Vim](https://cheatsheets.zip/vim.html): A useful collection of [Vim](http://www.vim.org/) 8.2 quick reference cheat sheets to help you learn vim editor faster. +- [ChatGPT](https://cheatsheets.zip/chatgpt.html): This cheat sheet lists out prompts and tips from all over the world + on how to use ChatGPT effectively +- [VSCode](https://cheatsheets.zip/vscode.html): This VSCode (Visual Studio Code) quick reference cheat sheet shows its + keyboard shortcuts and commands. +- [Mitmproxy](https://cheatsheets.zip/mitmproxy.html): [Mitmproxy](https://mitmproxy.org/) is a free and open source + interactive HTTPS proxy. This is a quick reference cheat sheet to the Mitmproxy. +- [XPath](https://cheatsheets.zip/xpath.html): This is an [XPath](https://en.wikipedia.org/wiki/XPath) selectors cheat + sheet, which lists commonly used XPath positioning methods and CSS selectors +- [Emacs](https://cheatsheets.zip/emacs.html): [Emacs](https://www.gnu.org/software/emacs) is the extensible, + customizable, self-documenting real time display text editor. This reference was made for Emacs 27. +- [Emmet](https://cheatsheets.zip/emmet.html): [Emmet](https://emmet.io/) is a web-developer’s toolkit for boosting HTML + & CSS code writing, which allows you to write large HTML code blocks at speed of light using well-known CSS selectors. +- [RegEX](https://cheatsheets.zip/regex.html): A quick reference for regular expressions (regex), including symbols, + ranges, grouping, assertions and some sample patterns to get you started. +- [Vim](https://cheatsheets.zip/vim.html): A useful collection of [Vim](http://www.vim.org/) 8.2 quick reference cheat + sheets to help you learn vim editor faster.
Linux Command -- [Curl](https://cheatsheets.zip/curl.html): This [Curl](https://github.com/curl/curl) cheat sheet contains commands and examples of some common Curl tricks. -- [PM2](https://cheatsheets.zip/pm2.html): [PM2] is a daemon process manager that will help you manage and keep your application online. Getting started with PM2 is straightforward, it is offered as a simple and intuitive CLI. -- [Chmod](https://cheatsheets.zip/chmod.html): This quick reference cheat sheet provides a brief overview of file permissions, and the operation of the chmod command -- [Tmux](https://cheatsheets.zip/tmux.html): The tmux cheat sheet quick reference of most commonly used shortcuts and commands +- [Curl](https://cheatsheets.zip/curl.html): This [Curl](https://github.com/curl/curl) cheat sheet contains commands and + examples of some common Curl tricks. +- [PM2](https://cheatsheets.zip/pm2.html): [PM2] is a daemon process manager that will help you manage and keep your + application online. Getting started with PM2 is straightforward, it is offered as a simple and intuitive CLI. +- [Chmod](https://cheatsheets.zip/chmod.html): This quick reference cheat sheet provides a brief overview of file + permissions, and the operation of the chmod command +- [Tmux](https://cheatsheets.zip/tmux.html): The tmux cheat sheet quick reference of most commonly used shortcuts and + commands - [Lsof](https://cheatsheets.zip/lsof.html): This quick reference cheat sheet provides various for using lsof command. - [SSH](https://cheatsheets.zip/ssh.html): This quick reference cheat sheet provides various for using SSH. -- [Netstat](https://cheatsheets.zip/netstat.html): This quick reference cheat sheet provides various for using netstat command. +- [Netstat](https://cheatsheets.zip/netstat.html): This quick reference cheat sheet provides various for using netstat + command. - [Screen](https://cheatsheets.zip/screen.html): This is a quick reference guide cheat sheet for the screen command. -- [Awk](https://cheatsheets.zip/awk.html): This is a one page quick reference cheat sheet to the [GNU awk](https://www.gnu.org/software/gawk/manual/gawk.html), which covers commonly used awk expressions and commands. -- [Find](https://cheatsheets.zip/find.html): This is a quick reference list of cheat sheet for linux find command, contains common options and examples. -- [Sed](https://cheatsheets.zip/sed.html): [Sed](https://www.gnu.org/software/sed/manual/sed.html) is a stream editor, this sed cheat sheet contains sed commands and some common sed tricks. -- [Cron](https://cheatsheets.zip/cron.html): [Cron](https://en.wikipedia.org/wiki/Cron) is most suitable for scheduling repetitive tasks. Scheduling one-time tasks can be accomplished using the associated at utility. -- [Git](https://cheatsheets.zip/git.html): This cheat sheet summarizes commonly used Git command line instructions for quick reference. -- [Grep](https://cheatsheets.zip/grep.html): This cheat sheet is intended to be a quick reminder for the main concepts involved in using the command line program grep and assumes you already understand its usage. -- [Netcat](https://cheatsheets.zip/nc.html): This cheat sheet provides various for using Netcat on both Linux and Unix. +- [Awk](https://cheatsheets.zip/awk.html): This is a one page quick reference cheat sheet to the + [GNU awk](https://www.gnu.org/software/gawk/manual/gawk.html), which covers commonly used awk expressions and + commands. +- [Find](https://cheatsheets.zip/find.html): This is a quick reference list of cheat sheet for Linux find command, + contains common options and examples. +- [Sed](https://cheatsheets.zip/sed.html): [Sed](https://www.gnu.org/software/sed/manual/sed.html) is a stream editor, + this sed cheat sheet contains sed commands and some common sed tricks. +- [Cron](https://cheatsheets.zip/cron.html): [Cron](https://en.wikipedia.org/wiki/Cron) is most suitable for scheduling + repetitive tasks. Scheduling one-time tasks can be accomplished using the associated at utility. +- [Git](https://cheatsheets.zip/git.html): This cheat sheet summarizes commonly used Git command line instructions for + quick reference. +- [Grep](https://cheatsheets.zip/grep.html): This cheat sheet is intended to be a quick reminder for the main concepts + involved in using the command line program grep and assumes you already understand its usage. +- [Netcat](https://cheatsheets.zip/nc.html): This cheat sheet provides various for using netcat on both Linux and Unix. - [Taskset](https://cheatsheets.zip/taskset): This quick reference cheat sheet for tasket command. +- [GnuPG](https://cheatsheets.zip/gnupg): A cheatsheet for GnuPG, the encryption and signing software.
Python -- [Numpy](https://cheatsheets.zip/numpy.html): [NumPy](https://numpy.org/) is the fundamental package for scientific computing with Python. This cheat sheet is a quick reference for NumPy beginners. +- [NumPy](https://cheatsheets.zip/numpy.html): [NumPy](https://numpy.org/) is the fundamental package for scientific + computing with Python. This cheat sheet is a quick reference for NumPy beginners. +- [Pandas](https://cheatsheets.zip/pandas.html): [Pandas](https://pandas.pydata.org/) is a powerful data analysis and + manipulation library for Python. This quick reference cheat sheet provides an overview of essential Pandas functions, + methods, and DataFrame operations.
Database -- [Neo4j](https://cheatsheets.zip/neo4j.html): A Neo4j cheat sheet with getting started resources and information on how to query the database with Cypher. -- [PostgreSQL](https://cheatsheets.zip/postgres.html): The [PostgreSQL](https://www.postgresql.org/docs/current/) cheat sheet provides you with the common PostgreSQL commands and statements. -- [Redis](https://cheatsheets.zip/redis.html): This is a [redis](https://redis.io/) quick reference cheat sheet that lists examples of redis commands -- [MySQL](https://cheatsheets.zip/mysql.html): The SQL cheat sheet provides you with the most commonly used SQL statements for your reference. +- [MySQL](https://cheatsheets.zip/mysql.html): The SQL cheat sheet provides you with the most commonly used SQL + statements for your reference. +- [Neo4j](https://cheatsheets.zip/neo4j.html): A Neo4j cheat sheet with getting started resources and information on how + to query the database with Cypher. +- [PostgreSQL](https://cheatsheets.zip/postgres.html): The [PostgreSQL](https://www.postgresql.org/docs/current/) cheat + sheet provides you with the common PostgreSQL commands and statements. +- [Redis](https://cheatsheets.zip/redis.html): This is a [Redis](https://redis.io/) quick reference cheat sheet that + lists examples of redis commands
Keyboard Shortcuts -- [Adobe Photoshop](https://cheatsheets.zip/adobe-photoshop.html): A visual cheat-sheet for the 283 keyboard shortcuts found in Adobe Photoshop -- [Apex Legends](https://cheatsheets.zip/apex-legends.html): A visual cheat-sheet for the 27 default keyboard shortcuts found in Apex Legends +- [Adobe Photoshop](https://cheatsheets.zip/adobe-photoshop.html): A visual cheat-sheet for the 283 keyboard shortcuts + found in Adobe Photoshop +- [Apex Legends](https://cheatsheets.zip/apex-legends.html): A visual cheat-sheet for the 27 default keyboard shortcuts + found in Apex Legends - [Figma](https://cheatsheets.zip/figma.html): A visual cheat-sheet for the 119 keyboard shortcuts found in Figma -- [Microsoft Teams](https://cheatsheets.zip/microsoft-teams.html): A visual cheat-sheet for the 38 keyboard shortcuts found in Microsoft Teams -- [TablePlus](https://cheatsheets.zip/table-plus.html): A visual cheat-sheet for the 34 keyboard shortcuts found in TablePlus -- [Bear](https://cheatsheets.zip/bear-notes.html): A visual cheat-sheet for the 66 keyboard shortcuts found in Bear. This application is MacOS-only. -- [Feedly](https://cheatsheets.zip/feedly.html): A visual cheat-sheet for the 25 keyboard shortcuts found on the Feedly app -- [FileZilla](https://cheatsheets.zip/filezilla.html): A visual cheat-sheet for the 30 keyboard shortcuts found on the FileZilla program +- [Microsoft Teams](https://cheatsheets.zip/microsoft-teams.html): A visual cheat-sheet for the 38 keyboard shortcuts + found in Microsoft Teams +- [TablePlus](https://cheatsheets.zip/table-plus.html): A visual cheat-sheet for the 34 keyboard shortcuts found in + TablePlus +- [Bear](https://cheatsheets.zip/bear-notes.html): A visual cheat-sheet for the 66 keyboard shortcuts found in Bear. + This application is MacOS-only. +- [Feedly](https://cheatsheets.zip/feedly.html): A visual cheat-sheet for the 25 keyboard shortcuts found on the Feedly + app +- [FileZilla](https://cheatsheets.zip/filezilla.html): A visual cheat-sheet for the 30 keyboard shortcuts found on the + FileZilla program - [Reddit](https://cheatsheets.zip/reddit.html): A visual cheat-sheet for the 17 keyboard shortcuts found on Reddit.com - [Slack](https://cheatsheets.zip/slack.html): A visual cheat-sheet for the 62 keyboard shortcuts found in Slack -- [SoundCloud](https://cheatsheets.zip/soundcloud.html): A visual cheat-sheet for the 22 keyboard shortcuts found on SoundCloud +- [SoundCloud](https://cheatsheets.zip/soundcloud.html): A visual cheat-sheet for the 22 keyboard shortcuts found on + SoundCloud - [Twitter](https://cheatsheets.zip/twitter.html): A visual cheat-sheet for the 26 keyboard shortcuts found on Twitter -- [Android Studio](https://cheatsheets.zip/android-studio.html): A visual cheat-sheet for the 130 keyboard shortcuts found in the Andriod Studio software +- [Android Studio](https://cheatsheets.zip/android-studio.html): A visual cheat-sheet for the 130 keyboard shortcuts + found in the Android Studio software - [Github](https://cheatsheets.zip/github.html): A visual cheat-sheet for the 80 keyboard shortcuts found on Github.com -- [Shopify](https://cheatsheets.zip/shopify.html): A visual cheat-sheet for the 50 keyboard shortcuts found on the Shopify website -- [Zoom](https://cheatsheets.zip/zoom.html): A visual cheat-sheet for the 32 keyboard shortcuts found in Zoom. These shortcuts are for MacOS, for Windows visit /zoom-windows. -- [Adobe XD](https://cheatsheets.zip/adobe-xd.html): A visual cheat-sheet for the 97 keyboard shortcuts found in Adobe XD +- [Shopify](https://cheatsheets.zip/shopify.html): A visual cheat-sheet for the 50 keyboard shortcuts found on the + Shopify website +- [Zoom](https://cheatsheets.zip/zoom.html): A visual cheat-sheet for the 32 keyboard shortcuts found in Zoom. These + shortcuts are for MacOS, for Windows visit /zoom-windows. +- [Adobe XD](https://cheatsheets.zip/adobe-xd.html): A visual cheat-sheet for the 97 keyboard shortcuts found in Adobe + XD - [Firefox](https://cheatsheets.zip/firefox.html): A visual cheat-sheet for the 116 keyboard shortcuts found in Firefox -- [PhpStorm](https://cheatsheets.zip/phpstorm.html): A visual cheat-sheet for the 96 keyboard shortcuts found in JetBrains PhpStorm +- [PhpStorm](https://cheatsheets.zip/phpstorm.html): A visual cheat-sheet for the 96 keyboard shortcuts found in + JetBrains PhpStorm - [Postman](https://cheatsheets.zip/postman.html): A visual cheat-sheet for the 23 keyboard shortcuts found in Postman - [Webflow](https://cheatsheets.zip/webflow.html): A visual cheat-sheet for the 41 keyboard shortcuts found in Webflow -- [Adobe Lightroom CC](https://cheatsheets.zip/adobe-lightroom.html): A visual cheat-sheet for the 251 keyboard shortcuts found in Adobe Lightroom CC -- [1Password](https://cheatsheets.zip/1password.html): A cheat sheet for 1password's keyboard shortcuts in Mac, Windows, iOS, Linux. -- [Affinity Designer](https://cheatsheets.zip/affinity-designer.html): A visual cheat-sheet for the 108 keyboard shortcuts found in Affinity Designer -- [Pocket](https://cheatsheets.zip/pocket.html): A visual cheat-sheet for the 36 keyboard shortcuts found on Pocket for Web +- [Adobe Lightroom CC](https://cheatsheets.zip/adobe-lightroom.html): A visual cheat-sheet for the 251 keyboard + shortcuts found in Adobe Lightroom CC +- [1Password](https://cheatsheets.zip/1password.html): A cheat sheet for 1password's keyboard shortcuts in Mac, Windows, + iOS, Linux. +- [Affinity Designer](https://cheatsheets.zip/affinity-designer.html): A visual cheat-sheet for the 108 keyboard + shortcuts found in Affinity Designer +- [Pocket](https://cheatsheets.zip/pocket.html): A visual cheat-sheet for the 36 keyboard shortcuts found on Pocket for + Web - [Trello](https://cheatsheets.zip/trello.html): A visual cheat-sheet for the 29 keyboard shortcuts found on Trello -- [Audacity](https://cheatsheets.zip/audacity.html): A visual cheat-sheet for the 135 default keyboard shortcuts found in Audacity -- [Framer X](https://cheatsheets.zip/framer-x.html): A visual cheat-sheet for the 45 keyboard shortcuts found in Framer X. This application is MacOS-only. -- [Google Drive](https://cheatsheets.zip/google-drive.html): A visual cheat-sheet for the 54 keyboard shortcuts found in Google Drive on the web +- [Audacity](https://cheatsheets.zip/audacity.html): A visual cheat-sheet for the 135 default keyboard shortcuts found + in Audacity +- [Framer X](https://cheatsheets.zip/framer-x.html): A visual cheat-sheet for the 45 keyboard shortcuts found in Framer + X. This application is MacOS-only. +- [Google Drive](https://cheatsheets.zip/google-drive.html): A visual cheat-sheet for the 54 keyboard shortcuts found in + Google Drive on the web - [PuTTy](https://cheatsheets.zip/putty.html): A visual cheat-sheet for the 32 keyboard shortcuts found on the PuTTy app -- [Sequel Pro](https://cheatsheets.zip/sequel-pro.html): A visual cheat-sheet for the 71 keyboard shortcuts found in Sequel Pro. This application is MacOS-only. -- [Apple Music](https://cheatsheets.zip/apple-music.html): A visual cheat-sheet for the 62 keyboard shortcuts found in the Apple Music app. This application is MacOS-only. +- [Sequel Pro](https://cheatsheets.zip/sequel-pro.html): A visual cheat-sheet for the 71 keyboard shortcuts found in + Sequel Pro. This application is MacOS-only. +- [Apple Music](https://cheatsheets.zip/apple-music.html): A visual cheat-sheet for the 62 keyboard shortcuts found in + the Apple Music app. This application is MacOS-only. - [Blender](https://cheatsheets.zip/blender.html): A visual cheat-sheet for the 187 keyboard shortcuts found in Blender -- [Obsidian](https://cheatsheets.zip/obsidian.html): A visual cheat-sheet for the 17 keyboard shortcuts found in the Obsidian knowledge base app. -- [Telegram Desktop](https://cheatsheets.zip/telegram.html): A visual cheat-sheet for the 37 keyboard shortcuts found on the Telegram Desktop app -- [YouTube](https://cheatsheets.zip/youtube.html): A visual cheat-sheet for the 18 keyboard shortcuts found on YouTube.com -- [Airtable](https://cheatsheets.zip/airtable.html): A visual cheat-sheet for the 36 keyboard shortcuts found in Airtable -- [Bitbucket](https://cheatsheets.zip/bitbucket.html): A visual cheat-sheet for the 35 keyboard shortcuts found on Bitbucket -- [Fortnite](https://cheatsheets.zip/fortnite.html): A visual cheat-sheet for the 26 default keyboard shortcuts found in Fortnite +- [Obsidian](https://cheatsheets.zip/obsidian.html): A visual cheat-sheet for the 17 keyboard shortcuts found in the + Obsidian knowledge base app. +- [Telegram Desktop](https://cheatsheets.zip/telegram.html): A visual cheat-sheet for the 37 keyboard shortcuts found on + the Telegram Desktop app +- [YouTube](https://cheatsheets.zip/youtube.html): A visual cheat-sheet for the 18 keyboard shortcuts found on + YouTube.com +- [Airtable](https://cheatsheets.zip/airtable.html): A visual cheat-sheet for the 36 keyboard shortcuts found in + Airtable +- [Bitbucket](https://cheatsheets.zip/bitbucket.html): A visual cheat-sheet for the 35 keyboard shortcuts found on + Bitbucket +- [Fortnite](https://cheatsheets.zip/fortnite.html): A visual cheat-sheet for the 26 default keyboard shortcuts found in + Fortnite - [Gmail](https://cheatsheets.zip/gmail.html): A visual cheat-sheet for the 90 keyboard shortcuts found on Gmail -- [Sketch](https://cheatsheets.zip/sketch.html): A visual cheat-sheet for the 149 keyboard shortcuts found in Sketch. This application is MacOS-only. +- [Sketch](https://cheatsheets.zip/sketch.html): A visual cheat-sheet for the 149 keyboard shortcuts found in Sketch. + This application is MacOS-only. - [Spotify](https://cheatsheets.zip/spotify.html): A visual cheat-sheet for the 23 keyboard shortcuts found in Spotify -- [Brave Browser](https://cheatsheets.zip/brave.html): A visual cheat-sheet for the 64 keyboard shortcuts found in the Brave browser -- [KanbanMail](https://cheatsheets.zip/kanbanmail.html): A visual cheat-sheet for the 29 keyboard shortcuts found in KanbanMail -- [Microsoft Outlook](https://cheatsheets.zip/outlook.html): A visual cheat-sheet for the 210 keyboard shortcuts found in Microsoft Outlook -- [Principle](https://cheatsheets.zip/principle.html): A visual cheat-sheet for the 30 keyboard shortcuts found in Principle. This application is MacOS-only. +- [Brave Browser](https://cheatsheets.zip/brave.html): A visual cheat-sheet for the 64 keyboard shortcuts found in the + Brave browser +- [KanbanMail](https://cheatsheets.zip/kanbanmail.html): A visual cheat-sheet for the 29 keyboard shortcuts found in + KanbanMail +- [Microsoft Outlook](https://cheatsheets.zip/outlook.html): A visual cheat-sheet for the 210 keyboard shortcuts found + in Microsoft Outlook +- [Principle](https://cheatsheets.zip/principle.html): A visual cheat-sheet for the 30 keyboard shortcuts found in + Principle. This application is MacOS-only. - [Skype](https://cheatsheets.zip/skype.html): A visual cheat-sheet for the 31 keyboard shortcuts found in Skype -- [Arduino IDE](https://cheatsheets.zip/arduino.html): A visual cheat-sheet for the 12 keyboard shortcuts found in the Arduino IDE +- [Arduino IDE](https://cheatsheets.zip/arduino.html): A visual cheat-sheet for the 12 keyboard shortcuts found in the + Arduino IDE - [Asana](https://cheatsheets.zip/asana.html): A visual cheat-sheet for the 40 keyboard shortcuts found in Asana -- [Code Editor for iOS](https://cheatsheets.zip/code-editor-ios.html): A visual cheat-sheet for the 43 keyboard shortcuts found in the Code Editor for iOS app. This application is MacOS-only. +- [Code Editor for iOS](https://cheatsheets.zip/code-editor-ios.html): A visual cheat-sheet for the 43 keyboard + shortcuts found in the Code Editor for iOS app. This application is MacOS-only. - [Jira](https://cheatsheets.zip/jira.html): A visual cheat-sheet for the 44 keyboard shortcuts found in Jira - [Quip.com](https://cheatsheets.zip/quip.html): A visual cheat-sheet for the 52 keyboard shortcuts found in Quip -- [WordPress](https://cheatsheets.zip/wordpress.html): A visual cheat-sheet for the 34 keyboard shortcuts found in the WordPress visual editor -- [Chrome Developer Tools](https://cheatsheets.zip/chrome-devtools.html): A visual cheat-sheet for the 56 keyboard shortcuts found in Chrome's Developer Tools +- [WordPress](https://cheatsheets.zip/wordpress.html): A visual cheat-sheet for the 34 keyboard shortcuts found in the + WordPress visual editor +- [Chrome Developer Tools](https://cheatsheets.zip/chrome-devtools.html): A visual cheat-sheet for the 56 keyboard + shortcuts found in Chrome's Developer Tools - [GIMP](https://cheatsheets.zip/gimp.html): A visual cheat-sheet for the 97 keyboard shortcuts found in GIMP -- [Google Chrome](https://cheatsheets.zip/google-chrome.html): A visual cheat-sheet for the 65 keyboard shortcuts found in Google Chrome +- [Google Chrome](https://cheatsheets.zip/google-chrome.html): A visual cheat-sheet for the 65 keyboard shortcuts found + in Google Chrome - [Todoist](https://cheatsheets.zip/todoist.html): A visual cheat-sheet for the 37 keyboard shortcuts found in Todoist -- [TickTick](https://cheatsheets.zip/ticktick.html): A visual cheat-sheet for the 25 keyboard shortcuts found in the TickTick desktop app +- [TickTick](https://cheatsheets.zip/ticktick.html): A visual cheat-sheet for the 25 keyboard shortcuts found in the + TickTick desktop app - [VLC Player](https://cheatsheets.zip/vlc.html): A visual cheat-sheet for the 82 keyboard shortcuts found in VLC Player - [Missive](https://cheatsheets.zip/missive.html): A visual cheat-sheet for the 83 keyboard shortcuts found in Missive -- [Origami Studio](https://cheatsheets.zip/origami.html): A visual cheat-sheet for the 71 keyboard shortcuts found in Origami Studio. This application is MacOS-only. -- [Sublime Text](https://cheatsheets.zip/sublime-text.html): A visual cheat-sheet for the 49 keyboard shortcuts found in Sublime Text -- [Transmit](https://cheatsheets.zip/transmit.html): A visual cheat-sheet for the 62 keyboard shortcuts found in Transmit. This application is MacOS-only. -- [Affinity Photo](https://cheatsheets.zip/affinity-photo.html): A visual cheat-sheet for the 177 keyboard shortcuts found in Affinity Photo -- [Monday.com](https://cheatsheets.zip/monday.html): A visual cheat-sheet for the 24 keyboard shortcuts found on Monday.com -- [Proto.io](https://cheatsheets.zip/proto-io.html): A visual cheat-sheet for the 48 keyboard shortcuts found in Proto.io -- [Superhuman](https://cheatsheets.zip/superhuman.html): A visual cheat-sheet for the 105 keyboard shortcuts found in Superhuman. This application is MacOS-only. -- [Vivaldi Browser](https://cheatsheets.zip/vivaldi.html): A visual cheat-sheet for the 69 default keyboard shortcuts found in the Vivaldi browser -- [Finder](https://cheatsheets.zip/finder.html): A visual cheat-sheet for the 55 keyboard shortcuts found in Finder. This application is part of MacOS. +- [Origami Studio](https://cheatsheets.zip/origami.html): A visual cheat-sheet for the 71 keyboard shortcuts found in + Origami Studio. This application is MacOS-only. +- [Sublime Text](https://cheatsheets.zip/sublime-text.html): A visual cheat-sheet for the 49 keyboard shortcuts found in + Sublime Text +- [Transmit](https://cheatsheets.zip/transmit.html): A visual cheat-sheet for the 62 keyboard shortcuts found in + Transmit. This application is MacOS-only. +- [Affinity Photo](https://cheatsheets.zip/affinity-photo.html): A visual cheat-sheet for the 177 keyboard shortcuts + found in Affinity Photo +- [Monday.com](https://cheatsheets.zip/monday.html): A visual cheat-sheet for the 24 keyboard shortcuts found on + Monday.com +- [Proto.io](https://cheatsheets.zip/proto-io.html): A visual cheat-sheet for the 48 keyboard shortcuts found in + Proto.io +- [Superhuman](https://cheatsheets.zip/superhuman.html): A visual cheat-sheet for the 105 keyboard shortcuts found in + Superhuman. This application is MacOS-only. +- [Vivaldi Browser](https://cheatsheets.zip/vivaldi.html): A visual cheat-sheet for the 69 default keyboard shortcuts + found in the Vivaldi browser +- [Finder](https://cheatsheets.zip/finder.html): A visual cheat-sheet for the 55 keyboard shortcuts found in Finder. + This application is part of MacOS. - [GitLab](https://cheatsheets.zip/gitlab.html): A visual cheat-sheet for the 58 keyboard shortcuts found in GitLab -- [Guitar Pro](https://cheatsheets.zip/guitar-pro.html): A visual cheat-sheet for the 129 keyboard shortcuts found in Guitar Pro -- [Roam Research](https://cheatsheets.zip/roam.html): A visual cheat-sheet for the 45 keyboard shortcuts found on Roam Research -- [SketchUp Pro](https://cheatsheets.zip/sketchup.html): A visual cheat-sheet for the 135 default keyboard shortcuts found in SketchUp Pro -- [Unity 3D](https://cheatsheets.zip/unity-3d.html): A visual cheat-sheet for the 50 keyboard shortcuts found in Unity 3D -- [IntelliJ IDEA](https://cheatsheets.zip/idea.html): IntelliJ IDEA is a very good Java IDE, most of its commands have shortcuts to keep your hands from leaving the keyboard -- [WebStorm](https://cheatsheets.zip/webstorm.html): This quick reference cheat sheet lists the default keyboard shortcuts for WebStorm running on Windows/Linux or Mac +- [Guitar Pro](https://cheatsheets.zip/guitar-pro.html): A visual cheat-sheet for the 129 keyboard shortcuts found in + Guitar Pro +- [Roam Research](https://cheatsheets.zip/roam.html): A visual cheat-sheet for the 45 keyboard shortcuts found on Roam + Research +- [SketchUp Pro](https://cheatsheets.zip/sketchup.html): A visual cheat-sheet for the 135 default keyboard shortcuts + found in SketchUp Pro +- [Unity 3D](https://cheatsheets.zip/unity-3d.html): A visual cheat-sheet for the 50 keyboard shortcuts found in Unity + 3D +- [IntelliJ IDEA](https://cheatsheets.zip/idea.html): IntelliJ IDEA is a very good Java IDE, most of its commands have + shortcuts to keep your hands from leaving the keyboard +- [WebStorm](https://cheatsheets.zip/webstorm.html): This quick reference cheat sheet lists the default keyboard + shortcuts for WebStorm running on Windows/Linux or Mac
-Other +Shaders -- [Google Search](https://cheatsheets.zip/google-search.html): This quick reference cheat sheet lists of Google advanced search operators. -- [ASCII Code](https://cheatsheets.zip/ascii-code.html): This cheat sheet is a complete list of ASCII Code Table with their numbers and names. -- [Aspect Ratio](https://cheatsheets.zip/aspect-ratio.html): This cheat sheet lists some common aspect ratios and their pixel resolutions. Always confirm your final delivery ratio when shooting. -- [HTML Characters Entities](https://cheatsheets.zip/html-char.html): This cheat sheet is a complete list of HTML entities with their numbers and names. Also included is a full list of ASCII characters that can be represented in HTML. -- [ISO 639-1 Language Code](https://cheatsheets.zip/iso-639-1.html): This is a list of the ISO language codes that conform to the ISO 639-1 standard, it provide reference for multi-language website. -- [Resolutions](https://cheatsheets.zip/resolutions.html): This cheat sheet lists screen sizes, viewport size and CSS media queries for popular Phones, Tablets, Laptops and Watches -- [HTTP Status Code](https://cheatsheets.zip/http-status-code.html): The http status codes cheat sheet. a quick reference to every HTTP status code. -- [Emoji](https://cheatsheets.zip/emoji.html): Some of the emoji codes are not super easy to remember, so here is a little cheat sheet. -- [CheatSheets](https://cheatsheets.zip/quickref.html): This is the magic syntax variant manual that you can use on CheatSheets.zip, It's a good practice for contributors. -- [MIME types](https://cheatsheets.zip/mime.html): This cheat sheet lists some common MIME types for the Web. You can look in the [IANA/MIME Media Types registry](http://www.iana.org/assignments/media-types/index.html) which contains all registered MIME types. +- [Unity Shader Graph](https://cheatsheets.zip/unity-shader-graph.html): This is a visual cheat-sheet for the Unity + Shader Graph. This tool is used to create custom shaders material in Unity, a popular game engine.
+
+Game + +- [Minecraft Java](https://cheatsheets.zip/minecraft-java.html): A comprehensive reference for Minecraft Java Edition (1.20.x) commands. +- [Minecraft Bedrock](https://cheatsheets.zip/minecraft-bedrock.html): A comprehensive reference for Minecraft Bedrock Edition (1.20.x) commands. +
+ +
+Other + +- [ASCII Code](https://cheatsheets.zip/ascii-code.html): This cheat sheet is a complete list of ASCII Code Table with + their numbers and names. +- [Aspect Ratio](https://cheatsheets.zip/aspect-ratio.html): This cheat sheet lists some common aspect ratios and their + pixel resolutions. Always confirm your final delivery ratio when shooting. +- [CheatSheets](https://cheatsheets.zip/quickref.html): This is the magic syntax variant manual that you can use on + CheatSheets.zip, It’s a good practice for contributors. +- [Emoji](https://cheatsheets.zip/emoji.html): Some of the emoji codes are not super easy to remember, so here is a + little cheat sheet. +- [Google Search](https://cheatsheets.zip/google-search.html): This quick reference cheat sheet lists of Google advanced + search operators. +- [HTML Characters Entities](https://cheatsheets.zip/html-char.html): This cheat sheet is a complete list of HTML + entities with their numbers and names. Also included is a full list of ASCII characters that can be represented in + HTML. +- [ISO 639-1 Language Code](https://cheatsheets.zip/iso-639-1.html): This is a list of the ISO language codes that + conform to the ISO 639-1 standard, it provide reference for multi-language website. +- [HTTP Status Code](https://cheatsheets.zip/http-status-code.html): The http status codes cheat sheet. A quick + reference to every HTTP status code. +- [MIME types](https://cheatsheets.zip/mime.html): This cheat sheet lists some common MIME types for the Web. You can + look in the [IANA/MIME Media Types registry](http://www.iana.org/assignments/media-types/index.html) which contains + all registered MIME types. +- [Resolutions](https://cheatsheets.zip/resolutions.html): This cheat sheet lists screen sizes, viewport size and CSS + media queries for popular Phones, Tablets, Laptops and Watches + +
## 🗂️ Directory structure + ``` . ├── source @@ -233,56 +366,56 @@ This reference was made for Emacs 27. └── coo # Theme files ``` - - - ## 🤝 Contributing -We would like to extend our gratitude to you for considering a contribution to Reference. Your support is what makes CheatSheets.zip a truly amazing resource. Please feel free to [submit issues](https://github.com/Fechin/reference/issues/new?assignee=Fechin) and enhancement requests. +We would like to extend our gratitude to you for considering a contribution to Reference. Your support is what makes +this project a truly resource. Please note that the primary domain for accessing the most up-to-date content is +[cheatsheets.zip](https://cheatsheets.zip). Feel free to +[submit issues](https://github.com/Fechin/reference/issues/new?assignee=Fechin) and enhancement requests. -For consistency, we encourage you to refer to the [https://cheatsheets.zip/quickref](https://cheatsheets.zip/quickref) when creating or editing cheat sheets. To get started with development, follow these steps: +For consistency, we encourage you to refer to the [https://cheatsheets.zip/quickref](https://cheatsheets.zip/quickref) +when creating or editing cheat sheets. To get started with development, follow these steps: 1. Clone Github repo `git clone https://github.com/Fechin/reference.git` -2. Install `npm` package manager (Read [installation guide](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)) +2. Install `npm` package manager (Read + [installation guide](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)) 3. Run `npm install` in the root folder to install dependencies. -4. Run `npm run dev` to start a dev server. This serves the project and live reloads when any files are changed, then visit http://127.0.0.1:4000 preview. +4. Run `npm run dev` to start a dev server. This serves the project and live reloads when any files are changed, then + visit http://127.0.0.1:4000 preview. 5. Submit a pull request and wait for it to be reviewed and merged. - - -To create or edit a cheat sheet, you'll need to create or edit a markdown file in `source/_posts/{filename}.md`. The file should include a front matter section with the following format: - +To create or edit a cheat sheet, you'll need to create or edit a markdown file in `source/_posts/{filename}.md`. The +file should include a front matter section with the following format: ```markdown --- title: CheatSheets date: 2020-11-25 18:28:43 icon: icon-style -background: bg-emerald-600 +background: bg-indigo-600 tags: categories: - Other intro: This is a reference of styles that you can use on quickref cheat sheets! --- ``` -Only the `title` and `intro` fields are required, and the other options can be left blank. +Only the `title` and `intro` fields are required, and the other options can be left blank. - ## 🐦 Follow us on Twitter [![Follow us on Twitter](https://img.shields.io/twitter/follow/FechinLi?color=%234a99e9&style=for-the-badge)](https://twitter.com/FechinLi) -Stay up-to-date with our project by following us on Twitter! Get all the latest news and updates right in your feed. It's the perfect way to stay in the loop. - - +Stay up-to-date with our project by following us on Twitter! Get all the latest news and updates right in your feed. +It's the perfect way to stay in the loop. + ## 📃 License -The project is licensed under the [MIT](https://github.com/Fechin/reference/blob/main/LICENSE) License and is maintained by [Fechin](https://github.com/Fechin). - +The project is licensed under the [GPL-3.0](https://github.com/Fechin/reference/blob/main/LICENSE) License and is +maintained by [Fechin](https://github.com/Fechin). diff --git a/_config.yml b/_config.yml index aa43e0b6..503960db 100644 --- a/_config.yml +++ b/_config.yml @@ -4,12 +4,12 @@ # Site title: CheatSheets.zip -subtitle: 'Quick Reference Cheat Sheet' -description: 'Share quick reference and cheat sheet for developers' -keywords: reference,cheatsheet,code table,snippets,linux -author: CheatSheets.zip +subtitle: "Ultimate Cheat for Developers" +description: "Share quick reference and cheat sheet for developers" +keywords: cheat,sheet,cheatsheets,reference,programming,code table,snippets,linux,command,shortcuts,developers +author: Fechin language: en -timezone: '' +timezone: "UTC" # URL ## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' @@ -39,12 +39,13 @@ titlecase: false # Transform title into titlecase external_link: enable: true # Open external links in new tab field: site # Apply to the whole site - exclude: '' + exclude: "" filename_case: 1 render_drafts: false post_asset_folder: false relative_link: false future: true +syntax_highlighter: # empty to disable built-in syntax highlighting highlight: enable: false @@ -53,19 +54,35 @@ highlight: # per_page: Posts displayed per page. (0 = disable pagination) # order_by: Posts order. (Order by date descending by default) index_generator: - path: '' + path: "" per_page: 0 order_by: -date # Category & Tag default_category: uncategorized -category_map: -tag_map: +category_map: {} +tag_map: {} # Metadata elements ## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta meta_generator: false +# SEO configuration +seo: + # Default image for social sharing + default_image: "/assets/image/preview.png" + # Author information + author_name: "Fechin" + author_url: "https://cheatsheets.zip" + # Social media configuration + social: + twitter: "Fechin" + github: "Fechin/reference" + # Site type + site_type: "Educational Technology Platform" + # Target audience + target_audience: "Developers, Programmers, System Administrators" + # Date / Time format ## Hexo uses Moment.js to parse and display date ## You can customize the date format as defined in @@ -73,7 +90,7 @@ meta_generator: false date_format: YYYY-MM-DD time_format: HH:mm:ss ## Use post's date for updated date unless set in front-matter -updated_option: 'date' +updated_option: "date" # Pagination ## Set per_page to 0 to disable pagination @@ -82,10 +99,10 @@ pagination_dir: page # Include / Exclude file(s) ## include:/exclude: options only apply to the 'source/' folder -include: +include: [] exclude: - ".github" -ignore: +ignore: [] # Extensions ## Plugins: https://hexo.io/plugins/ @@ -96,7 +113,14 @@ nofollow: enable: true field: site exclude: - - 'exclude1.com' + - "tableconvert.com" + - "dorefer.com" + - "fionaai.com" + - "github.com" + - "gospinwheel.com" + - "colorscreen.co" + - "sshkeygenerator.com" + - "x.com" excerpt: depth: 2 @@ -104,11 +128,9 @@ excerpt: more_excludes: [] hideWholePostExcerpts: true - # Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: -# - type: cjh_google_url_submitter - type: cjh_bing_url_submitter - type: cjh_baidu_url_submitter @@ -123,7 +145,6 @@ sitemap: tags: false categories: false - # Markdown-it configuration ## Docs: https://github.com/celsomiranda/hexo-renderer-markdown-it/wiki markdown: @@ -133,12 +154,19 @@ markdown: breaks: false linkify: false typographer: false - quotes: '“”‘’' + quotes: "“”‘’" + langPrefix: "hljs language-" anchors: level: 2 - collisionSuffix: '' + collisionSuffix: "" permalink: true permalinkClass: h-anchor - permalinkSymbol: '#' + permalinkSymbol: "#" case: 1 - separator: '-' + separator: "-" + +# Browsersync configuration +browsersync: + ui: false # disable ui + notify: false # disable notification + logLevel: silent # set log level to silent diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..5aadb949 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,65 @@ +const js = require('@eslint/js'); +const globals = require('globals'); + +module.exports = [ + js.configs.recommended, + { + languageOptions: { + ecmaVersion: 2022, + sourceType: 'module', + globals: { + ...globals.browser, + ...globals.node + } + }, + rules: { + 'no-unused-vars': 'warn', + 'no-console': 'off' + } + }, + { + files: ['**/*.js'], + languageOptions: { + sourceType: 'script', + globals: { + ...globals.node, + ...globals.browser + } + } + }, + { + files: ['source/sw.js'], + languageOptions: { + globals: { + ...globals.serviceworker + } + } + }, + { + files: ['themes/coo/scripts/**/*.js'], + languageOptions: { + globals: { + ...globals.node, + hexo: 'readonly' + } + } + }, + { + files: ['themes/coo/source/js/main.js'], + languageOptions: { + globals: { + ...globals.browser, + Fuse: 'readonly' + } + } + }, + { + ignores: [ + 'node_modules/**', + 'public/**', + 'db.json', + '.deploy_git/**', + 'themes/coo/source/js/fuse_*.js' + ] + } +]; diff --git a/gulpfile.js b/gulpfile.js index 1539b723..4d50af7e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -6,32 +6,39 @@ const terser = require('gulp-terser'); // Compress js files gulp.task('js', function () { - return gulp.src(['./public/js/main.js']) - .pipe(terser({ - compress: true - })) - .pipe(gulp.dest('./public/js')); + return gulp + .src(['./public/js/main.js']) + .pipe( + terser({ + compress: true + }) + ) + .pipe(gulp.dest('./public/js')); }); - // Build html files gulp.task('html', function () { - return gulp.src('./public/**/*.html') - .pipe(htmlclean()) - .pipe(htmlmin({ - removeComments: true, - minifyJS: true, - minifyCSS: true, - minifyURLs: true, - })) - .pipe(version({ - 'append': { - 'key': '_v', - 'cover': 1, - 'to': ['css', 'js', 'png', 'jpg', 'woff2'] - } - })) - .pipe(gulp.dest('./public')); + return gulp + .src('./public/**/*.html') + .pipe(htmlclean()) + .pipe( + htmlmin({ + removeComments: true, + minifyJS: true, + minifyCSS: true, + minifyURLs: true + }) + ) + .pipe( + version({ + append: { + key: '_v', + cover: 1, + to: ['css', 'js', 'png', 'jpg', 'woff2'] + } + }) + ) + .pipe(gulp.dest('./public')); }); -gulp.task('default', gulp.parallel('js', 'html')); \ No newline at end of file +gulp.task('default', gulp.parallel('js', 'html')); diff --git a/package.json b/package.json index a92f3ee9..847b17f0 100644 --- a/package.json +++ b/package.json @@ -11,67 +11,95 @@ "build:rm-db.json": "rm db.json || exit 0", "build:css": "npx postcss themes/coo/source/css/style.tailwindcss -o themes/coo/source/css/style.css", "build:generate": "npx hexo generate", - "build:gulp": "npx gulp --max-old-space-size=4096" + "build:gulp": "npx gulp --max-old-space-size=4096", + "format": "prettier --write .", + "format:check": "prettier --check .", + "lint": "eslint themes/coo/source/js/**/*.js --fix", + "lint:check": "eslint themes/coo/source/js/**/*.js", + "lint:css": "stylelint **/*.css --fix", + "test": "run-s lint:check format:check", + "audit": "pnpm audit --audit-level moderate", + "audit:fix": "pnpm audit --fix", + "security:check": "pnpm audit && pnpm outdated", + "deps:check": "npx npm-check-updates", + "deps:update": "npx npm-check-updates -u && pnpm install", + "prepare": "husky", + "commit": "cz" }, "hexo": { - "version": "5.4.2" + "version": "7.3.0" }, "dependencies": { - "eslint": "^8.27.0", - "gulp": "^4.0.2", - "gulp-cli": "^2.3.0", + "gulp": "^5.0.1", + "gulp-cli": "^3.1.0", "gulp-ext-replace": "^0.3.0", "gulp-htmlclean": "^2.7.22", "gulp-htmlmin": "^5.0.1", "gulp-minify-css": "^1.2.4", - "gulp-postcss": "^9.0.1", + "gulp-postcss": "^10.0.0", "gulp-uglify-es": "^3.0.0", "gulp-version-number": "^0.2.4", - "hexo": "^5.4.0", + "hexo": "^7.3.0", "hexo-browsersync": "^0.3.0", - "hexo-cli": "^4.3.0", - "hexo-excerpt": "^1.2.1", + "hexo-excerpt": "^1.3.1", "hexo-filter-nofollow": "^2.0.2", - "hexo-generator-index": "^2.0.0", - "hexo-generator-sitemap": "^2.2.0", - "hexo-log": "^3.0.0", - "hexo-pagination": "^2.0.0", + "hexo-fs": "^5.0.0", + "hexo-generator-index": "^4.0.0", + "hexo-generator-sitemap": "^3.0.1", + "hexo-log": "^4.1.0", + "hexo-pagination": "^4.0.0", "hexo-related-popular-posts": "^5.0.1", "hexo-renderer-ejs": "^2.0.0", "hexo-renderer-markdown-it": "^5.0.0", - "hexo-renderer-stylus": "^2.0.1", - "hexo-server": "^2.0.0", - "markdown-it-abbr": "^1.0.4", - "markdown-it-anchor": "^8.4.1", - "markdown-it-attrs": "^4.1.0", + "hexo-renderer-stylus": "^3.0.1", + "hexo-server": "^3.0.0", + "hexo-util": "^3.3.0", + "highlight.js": "^11.11.1", + "markdown-it-abbr": "^2.0.0", + "markdown-it-anchor": "^9.2.0", + "markdown-it-attrs": "^4.3.1", "markdown-it-checkbox": "^1.1.0", - "markdown-it-emoji": "^2.0.0", - "markdown-it-footnote": "^3.0.3", + "markdown-it-emoji": "^3.0.0", + "markdown-it-footnote": "^4.0.0", "markdown-it-highlight-lines": "^1.0.2", - "markdown-it-highlightjs": "^3.5.0", - "markdown-it-ins": "^3.0.1", - "markdown-it-multimd-table": "^4.1.1", + "markdown-it-highlightjs": "^4.2.0", + "markdown-it-ins": "^4.0.0", "markdown-it-shortcode-tag": "^1.1.0", - "markdown-it-sub": "^1.0.0", - "markdown-it-sup": "^1.0.0", + "markdown-it-sub": "^2.0.0", + "markdown-it-sup": "^2.0.0", "markdown-it-task-lists": "^2.1.1" }, "devDependencies": { - "autoprefixer": "^10.4.0", + "@commitlint/cli": "^19.8.1", + "@commitlint/config-conventional": "^19.8.1", + "autoprefixer": "^10.4.21", + "commitizen": "^4.3.1", + "cssnano": "^7.0.7", + "cz-conventional-changelog": "^3.3.0", + "eslint": "^9.29.0", + "eslint-config-prettier": "^10.1.5", "gulp-clean-css": "^4.3.0", "gulp-filesize": "^0.0.6", "gulp-javascript-obfuscator": "^1.1.6", - "gulp-replace": "^1.1.3", - "gulp-rev": "^9.0.0", + "gulp-replace": "^1.1.4", + "gulp-rev": "^11.0.0", "gulp-terser": "^2.1.0", - "npm-run-all": "^4.1.5", - "postcss": "^8.4.4", - "postcss-cli": "^9.1.0", - "postcss-import": "^14.0.2", - "postcss-minify": "^1.1.0", - "sync-request": "^6.1.0", - "tailwindcss": "^3.0.1", - "tailwindcss-animate": "^1.0.5", - "tailwindcss-cli": "^0.1.2" + "husky": "^9.1.7", + "lint-staged": "^16.1.2", + "npm-run-all2": "^8.0.4", + "postcss": "^8.5.6", + "postcss-cli": "^11.0.1", + "postcss-import": "^16.1.1", + "prettier": "^3.5.3", + "prettier-plugin-tailwindcss": "^0.6.12", + "stylelint": "^16.20.0", + "stylelint-config-standard": "^38.0.0", + "tailwindcss": "^3.4.14", + "tailwindcss-animate": "^1.0.7" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..7f57be41 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,10592 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + gulp: + specifier: ^5.0.1 + version: 5.0.1 + gulp-cli: + specifier: ^3.1.0 + version: 3.1.0 + gulp-ext-replace: + specifier: ^0.3.0 + version: 0.3.0 + gulp-htmlclean: + specifier: ^2.7.22 + version: 2.7.22 + gulp-htmlmin: + specifier: ^5.0.1 + version: 5.0.1 + gulp-minify-css: + specifier: ^1.2.4 + version: 1.2.4 + gulp-postcss: + specifier: ^10.0.0 + version: 10.0.0(jiti@2.4.2)(postcss@8.5.6) + gulp-uglify-es: + specifier: ^3.0.0 + version: 3.0.0 + gulp-version-number: + specifier: ^0.2.4 + version: 0.2.4 + hexo: + specifier: ^7.3.0 + version: 7.3.0(chokidar@3.6.0) + hexo-browsersync: + specifier: ^0.3.0 + version: 0.3.0 + hexo-excerpt: + specifier: ^1.3.1 + version: 1.3.1 + hexo-filter-nofollow: + specifier: ^2.0.2 + version: 2.0.2 + hexo-fs: + specifier: ^5.0.0 + version: 5.0.0 + hexo-generator-index: + specifier: ^4.0.0 + version: 4.0.0 + hexo-generator-sitemap: + specifier: ^3.0.1 + version: 3.0.1(chokidar@3.6.0) + hexo-log: + specifier: ^4.1.0 + version: 4.1.0 + hexo-pagination: + specifier: ^4.0.0 + version: 4.0.0 + hexo-related-popular-posts: + specifier: ^5.0.1 + version: 5.0.1 + hexo-renderer-ejs: + specifier: ^2.0.0 + version: 2.0.0 + hexo-renderer-markdown-it: + specifier: ^5.0.0 + version: 5.0.0 + hexo-renderer-stylus: + specifier: ^3.0.1 + version: 3.0.1 + hexo-server: + specifier: ^3.0.0 + version: 3.0.0 + hexo-util: + specifier: ^3.3.0 + version: 3.3.0 + highlight.js: + specifier: ^11.11.1 + version: 11.11.1 + markdown-it-abbr: + specifier: ^2.0.0 + version: 2.0.0 + markdown-it-anchor: + specifier: ^9.2.0 + version: 9.2.0(@types/markdown-it@14.1.2)(markdown-it@13.0.2) + markdown-it-attrs: + specifier: ^4.3.1 + version: 4.3.1(markdown-it@13.0.2) + markdown-it-checkbox: + specifier: ^1.1.0 + version: 1.1.0 + markdown-it-emoji: + specifier: ^3.0.0 + version: 3.0.0 + markdown-it-footnote: + specifier: ^4.0.0 + version: 4.0.0 + markdown-it-highlight-lines: + specifier: ^1.0.2 + version: 1.0.2 + markdown-it-highlightjs: + specifier: ^4.2.0 + version: 4.2.0 + markdown-it-ins: + specifier: ^4.0.0 + version: 4.0.0 + markdown-it-shortcode-tag: + specifier: ^1.1.0 + version: 1.1.0 + markdown-it-sub: + specifier: ^2.0.0 + version: 2.0.0 + markdown-it-sup: + specifier: ^2.0.0 + version: 2.0.0 + markdown-it-task-lists: + specifier: ^2.1.1 + version: 2.1.1 + devDependencies: + '@commitlint/cli': + specifier: ^19.8.1 + version: 19.8.1(@types/node@24.0.3)(typescript@5.8.3) + '@commitlint/config-conventional': + specifier: ^19.8.1 + version: 19.8.1 + autoprefixer: + specifier: ^10.4.21 + version: 10.4.21(postcss@8.5.6) + commitizen: + specifier: ^4.3.1 + version: 4.3.1(@types/node@24.0.3)(typescript@5.8.3) + cssnano: + specifier: ^7.0.7 + version: 7.0.7(postcss@8.5.6) + cz-conventional-changelog: + specifier: ^3.3.0 + version: 3.3.0(@types/node@24.0.3)(typescript@5.8.3) + eslint: + specifier: ^9.29.0 + version: 9.29.0(jiti@2.4.2) + eslint-config-prettier: + specifier: ^10.1.5 + version: 10.1.5(eslint@9.29.0(jiti@2.4.2)) + gulp-clean-css: + specifier: ^4.3.0 + version: 4.3.0 + gulp-filesize: + specifier: ^0.0.6 + version: 0.0.6 + gulp-javascript-obfuscator: + specifier: ^1.1.6 + version: 1.1.6 + gulp-replace: + specifier: ^1.1.4 + version: 1.1.4 + gulp-rev: + specifier: ^11.0.0 + version: 11.0.0(gulp@5.0.1) + gulp-terser: + specifier: ^2.1.0 + version: 2.1.0 + husky: + specifier: ^9.1.7 + version: 9.1.7 + lint-staged: + specifier: ^16.1.2 + version: 16.1.2 + npm-run-all2: + specifier: ^8.0.4 + version: 8.0.4 + postcss: + specifier: ^8.5.6 + version: 8.5.6 + postcss-cli: + specifier: ^11.0.1 + version: 11.0.1(jiti@2.4.2)(postcss@8.5.6) + postcss-import: + specifier: ^16.1.1 + version: 16.1.1(postcss@8.5.6) + prettier: + specifier: ^3.5.3 + version: 3.5.3 + prettier-plugin-tailwindcss: + specifier: ^0.6.12 + version: 0.6.12(prettier@3.5.3) + stylelint: + specifier: ^16.20.0 + version: 16.20.0(typescript@5.8.3) + stylelint-config-standard: + specifier: ^38.0.0 + version: 38.0.0(stylelint@16.20.0(typescript@5.8.3)) + tailwindcss: + specifier: ^3.4.14 + version: 3.4.17 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.17) + +packages: + + '@adobe/css-tools@4.3.3': + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@commitlint/cli@19.8.1': + resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.8.1': + resolution: {integrity: sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.8.1': + resolution: {integrity: sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.8.1': + resolution: {integrity: sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.8.1': + resolution: {integrity: sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==} + engines: {node: '>=v18'} + + '@commitlint/format@19.8.1': + resolution: {integrity: sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.8.1': + resolution: {integrity: sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==} + engines: {node: '>=v18'} + + '@commitlint/lint@19.8.1': + resolution: {integrity: sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==} + engines: {node: '>=v18'} + + '@commitlint/load@19.8.1': + resolution: {integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==} + engines: {node: '>=v18'} + + '@commitlint/message@19.8.1': + resolution: {integrity: sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==} + engines: {node: '>=v18'} + + '@commitlint/parse@19.8.1': + resolution: {integrity: sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==} + engines: {node: '>=v18'} + + '@commitlint/read@19.8.1': + resolution: {integrity: sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.8.1': + resolution: {integrity: sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==} + engines: {node: '>=v18'} + + '@commitlint/rules@19.8.1': + resolution: {integrity: sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.8.1': + resolution: {integrity: sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.8.1': + resolution: {integrity: sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==} + engines: {node: '>=v18'} + + '@commitlint/types@19.8.1': + resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} + engines: {node: '>=v18'} + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@4.0.3': + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.1': + resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.3': + resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.14.0': + resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.15.0': + resolution: {integrity: sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.29.0': + resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.2': + resolution: {integrity: sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@gulpjs/messages@1.1.0': + resolution: {integrity: sha512-Ys9sazDatyTgZVb4xPlDufLweJ/Os2uHWOv+Caxvy2O85JcnT4M3vc73bi8pdLWlv3fdWQz3pdI9tVwo8rQQSg==} + engines: {node: '>=10.13.0'} + + '@gulpjs/to-absolute-glob@4.0.0': + resolution: {integrity: sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==} + engines: {node: '>=10.13.0'} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@javascript-obfuscator/escodegen@2.3.0': + resolution: {integrity: sha512-QVXwMIKqYMl3KwtTirYIA6gOCiJ0ZDtptXqAv/8KWLG9uQU2fZqTVy7a/A5RvcoZhbDoFfveTxuGxJ5ibzQtkw==} + engines: {node: '>=6.0'} + + '@javascript-obfuscator/estraverse@5.4.0': + resolution: {integrity: sha512-CZFX7UZVN9VopGbjTx4UXaXsi9ewoM1buL0kY7j1ftYdSs7p2spv9opxFjHlQ/QGTgh4UqufYqJJ0WKLml7b6w==} + engines: {node: '>=4.0'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@keyv/serialize@1.0.3': + resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@types/conventional-commits-parser@5.0.1': + resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} + + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/expect@1.20.4': + resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/node@24.0.3': + resolution: {integrity: sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==} + + '@types/validator@13.15.2': + resolution: {integrity: sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==} + + '@types/vinyl@2.0.12': + resolution: {integrity: sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + a-sync-waterfall@1.0.1: + resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + + ansi-colors@1.1.0: + resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==} + engines: {node: '>=0.10.0'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + + ansi-gray@0.1.1: + resolution: {integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==} + engines: {node: '>=0.10.0'} + + ansi-regex@0.2.1: + resolution: {integrity: sha512-sGwIGMjhYdW26/IhwK2gkWWI8DRCVO6uj3hYgHT+zD+QL1pa37tM3ujhyfcJIYSbsxp7Gxhy7zrRW/1AHm4BmA==} + engines: {node: '>=0.10.0'} + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@1.1.0: + resolution: {integrity: sha512-f2PKUkN5QngiSemowa6Mrk9MPCdtFiOSmibjZ+j1qhLGHHYsqZwmBMRF3IRMVXo8sybDqx2fJl2d/8OphBoWkA==} + engines: {node: '>=0.10.0'} + + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + ansi-wrap@0.1.0: + resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} + engines: {node: '>=0.10.0'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@1.3.2: + resolution: {integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + arr-diff@2.0.0: + resolution: {integrity: sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==} + engines: {node: '>=0.10.0'} + + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-differ@1.0.0: + resolution: {integrity: sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==} + engines: {node: '>=0.10.0'} + + array-differ@3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + + array-each@1.0.1: + resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} + engines: {node: '>=0.10.0'} + + array-find-index@1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-slice@1.1.0: + resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} + engines: {node: '>=0.10.0'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + array-unique@0.2.1: + resolution: {integrity: sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==} + engines: {node: '>=0.10.0'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asn1@0.1.11: + resolution: {integrity: sha512-Fh9zh3G2mZ8qM/kwsiKwL2U2FmXxVsboP4x1mXjnhKHv3SmzaBZoYvxEQJz/YS2gnCgd8xlAVWcZnQyC9qZBsA==} + engines: {node: '>=0.4.9'} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@0.1.5: + resolution: {integrity: sha512-brU24g7ryhRwGCI2y+1dGQmQXiZF7TtIj583S96y0jjdajIe6wn8BuXyELYhvD22dtIxDQVFk04YTJwwdwOYJw==} + engines: {node: '>=0.8'} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + assert@2.0.0: + resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-done@2.0.0: + resolution: {integrity: sha512-j0s3bzYq9yKIVLKGE/tWlCpa3PfFLcrDZLTSVdnnCTGagXuXBJO4SsY9Xdk/fQBirCkH4evW5xOeJXqlAQFdsw==} + engines: {node: '>= 10.13.0'} + + async-each-series@0.1.1: + resolution: {integrity: sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==} + engines: {node: '>=0.8.0'} + + async-each@1.0.6: + resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} + + async-settle@2.0.0: + resolution: {integrity: sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==} + engines: {node: '>= 10.13.0'} + + async@0.9.2: + resolution: {integrity: sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==} + + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + aws-sign2@0.5.0: + resolution: {integrity: sha512-oqUX0DM5j7aPWPCnpWebiyNIj2wiNI87ZxnOMoGv0aE4TGlBy2N+5iWc6dQ/NOKZaBD2W6PVz8jtOGkWzSC5EA==} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + axios@0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + + bach@2.0.1: + resolution: {integrity: sha512-A7bvGMGiTOxGMpNupYl9HQTf0FFDNF4VCmks4PJpFyN1AX2pdKuxuwdvUz2Hu388wcgp+OvGFNsumBfFNkR7eg==} + engines: {node: '>=10.13.0'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + base64url@0.0.6: + resolution: {integrity: sha512-Nm33N5/uniFmlIxqu7wyfwUkAVhKdlY4wFHAnT6P+TJxPoaIASuAN7uyS1wUPsRTiv8yCT93p5P54txD7PRkVg==} + + base64url@1.0.6: + resolution: {integrity: sha512-YJUNcKuU8Df1LhS3s9OzoYCAOZYHgAUGnDlPgXFCaJZwRzZLcnQ7uM9KRY6EFaJRvzxZqw2w+wCDigwpe+4XUw==} + hasBin: true + + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + beeper@1.1.1: + resolution: {integrity: sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA==} + engines: {node: '>=0.10.0'} + + binary-extensions@1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + binaryextensions@2.3.0: + resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==} + engines: {node: '>=0.8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bl@0.9.5: + resolution: {integrity: sha512-njlCs8XLBIK7LCChTWfzWuIAxkpmmLXcL7/igCofFT1B039Sz0IPnAmosN5QaO22lU4qr8LcUz2ojUlE6pLkRQ==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boom@0.4.2: + resolution: {integrity: sha512-OvfN8y1oAxxphzkl2SnCS+ztV/uVKTATtgLjWYg/7KwcNyf3rzpHxNQJZCKtsZd4+MteKczhWbSjtEX4bGgU9g==} + engines: {node: '>=0.8.0'} + deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@1.8.5: + resolution: {integrity: sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==} + engines: {node: '>=0.10.0'} + + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-sync-client@2.29.3: + resolution: {integrity: sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==} + engines: {node: '>=8.0.0'} + + browser-sync-ui@2.29.3: + resolution: {integrity: sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==} + + browser-sync@2.29.3: + resolution: {integrity: sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==} + engines: {node: '>= 8.0.0'} + hasBin: true + + browserslist@4.25.0: + resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-recipes@1.3.4: + resolution: {integrity: sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferstreams@1.0.1: + resolution: {integrity: sha512-LZmiIfQprMLS6/k42w/PTc7awhU8AdNNcUerxTgr01WlP9agR2SgMv0wjlYYFD6eDOi8WvofrTX8RayjR/AeUQ==} + engines: {node: '>= 0.10.0'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + + cacheable@1.10.0: + resolution: {integrity: sha512-SSgQTAnhd7WlJXnGlIi4jJJOiHzgnM5wRMEPaXAU4kECTAMpBoYKoZ9i5zHmclIEZbxcu3j7yY/CF8DTmwIsHg==} + + cachedir@2.3.0: + resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + engines: {node: '>=6'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase-keys@1.0.0: + resolution: {integrity: sha512-hwNYKTjJTlDabjJp2xn0h8bRmOpObvXVgYbQmR+Xob/EeBDtYea3xttjr5hqiWqLWtI3/6xO7x1ZAktQ9up+ag==} + engines: {node: '>=0.10.0'} + + camelcase-keys@2.1.0: + resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==} + engines: {node: '>=0.10.0'} + + camelcase@1.2.1: + resolution: {integrity: sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==} + engines: {node: '>=0.10.0'} + + camelcase@2.1.1: + resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} + engines: {node: '>=0.10.0'} + + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001723: + resolution: {integrity: sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + caseless@0.8.0: + resolution: {integrity: sha512-RtOAnto0D6IIVC+dU+vHyH0tXs6BfZ/s0kaaT5+6loiwoi9O3+J5iASBkliQHrd8GSRNGERS7f8pgaRc895bAg==} + + chalk@0.5.1: + resolution: {integrity: sha512-bIKA54hP8iZhyDT81TOsJiQvR1gW+ZYSXFaZUAvoD4wCHdbHY2actmpTE4x344ZlFqHbvoxKOaESULTZN2gstg==} + engines: {node: '>=0.10.0'} + + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chance@1.1.9: + resolution: {integrity: sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.1.0: + resolution: {integrity: sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==} + engines: {node: '>=18.17'} + + chokidar@1.7.0: + resolution: {integrity: sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + + class-validator@0.14.1: + resolution: {integrity: sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==} + + clean-css@3.4.28: + resolution: {integrity: sha512-aTWyttSdI2mYi07kWqHi24NUU9YlELFKGOAgFzZjDN1064DMAOy2FBuoyGmkKRlXkbpXd0EVHmiVkbKhKoirTw==} + engines: {node: '>=0.10.0'} + hasBin: true + + clean-css@4.2.3: + resolution: {integrity: sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==} + engines: {node: '>= 4.0'} + + clean-css@4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} + engines: {node: '>= 4.0'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table@0.3.11: + resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} + engines: {node: '>= 0.2.0'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-buffer@1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} + + clone-stats@0.0.1: + resolution: {integrity: sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==} + + clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + cloneable-readable@1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colors@1.0.3: + resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} + engines: {node: '>=0.1.90'} + + columnify@1.6.0: + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + engines: {node: '>=8.0.0'} + + combined-stream@0.0.7: + resolution: {integrity: sha512-qfexlmLp9MyrkajQVyjEDb0Vj+KhRgR/rxLiVhaihlT+ZkX0lReqtH6Ack40CvMDERR4b5eFp3CreskpBs1Pig==} + engines: {node: '>= 0.8'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + commander@10.0.0: + resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} + engines: {node: '>=14'} + + commander@14.0.0: + resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} + engines: {node: '>=20'} + + commander@2.17.1: + resolution: {integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==} + + commander@2.19.0: + resolution: {integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@2.8.1: + resolution: {integrity: sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ==} + engines: {node: '>= 0.6.x'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commitizen@4.3.1: + resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} + engines: {node: '>= 12'} + hasBin: true + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.0: + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@1.4.11: + resolution: {integrity: sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==} + engines: {'0': node >= 0.8} + + connect-history-api-fallback@1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + + connect-injector@0.4.4: + resolution: {integrity: sha512-hdBG8nXop42y2gWCqOV8y1O3uVk4cIU+SoxLCPyCUKRImyPiScoNiSulpHjoktRU1BdI0UzoUdxUa87thrcmHw==} + engines: {node: '>= 0.8.0'} + + connect@3.6.6: + resolution: {integrity: sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==} + engines: {node: '>= 0.10.0'} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + + conventional-commit-types@3.0.0: + resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + + copy-props@4.0.0: + resolution: {integrity: sha512-bVWtw1wQLzzKiYROtvNlbJgxgBYt2bMJpkCbKmXM3xyijvcjjWXEk5nyrrT3bgJ7ODb19ZohE2T0Y3FgNPyoTw==} + engines: {node: '>= 10.13.0'} + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + cosmiconfig-typescript-loader@6.1.0: + resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + cryptiles@0.2.2: + resolution: {integrity: sha512-gvWSbgqP+569DdslUiCelxIv3IYK5Lgmq1UrRnk+s1WxQOQ16j3GPDcjdtgL5Au65DU/xQi6q3xPtf5Kta+3IQ==} + engines: {node: '>=0.8.0'} + deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). + + css-declaration-sorter@7.2.0: + resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + + css-functions-list@3.2.3: + resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} + engines: {node: '>=12 || >=16'} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@7.0.7: + resolution: {integrity: sha512-jW6CG/7PNB6MufOrlovs1TvBTEVmhY45yz+bd0h6nw3h6d+1e+/TX+0fflZ+LzvZombbT5f+KC063w9VoHeHow==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + cssnano-utils@5.0.1: + resolution: {integrity: sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + cssnano@7.0.7: + resolution: {integrity: sha512-evKu7yiDIF7oS+EIpwFlMF730ijRyLFaM2o5cTxRGJR9OKHKkc+qP443ZEVR9kZG0syaAJJCPJyfv5pbrxlSng==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + ctype@0.5.3: + resolution: {integrity: sha512-T6CEkoSV4q50zW3TlTHMbzy1E5+zlnNcY+yb7tWVYlTwPhx9LpnfAkd4wecpWknDyptp4k97LUZeInlf6jdzBg==} + engines: {node: '>= 0.4'} + + cuid@2.1.8: + resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==} + deprecated: Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead. + + currently-unhandled@0.4.1: + resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} + engines: {node: '>=0.10.0'} + + cz-conventional-changelog@3.3.0: + resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} + engines: {node: '>= 10'} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + dateformat@1.0.12: + resolution: {integrity: sha512-5sFRfAAmbHdIts+eKjR9kYJoF0ViCMVX9yqLu5A7S/v+nd077KgCITOMiirmyCBiZpKLDXbBOkYm6tu7rX/TKg==} + hasBin: true + + dateformat@2.2.0: + resolution: {integrity: sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.2: + resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + + delayed-stream@0.0.5: + resolution: {integrity: sha512-v+7uBd1pqe5YtgPacIIbZ8HuHeLFVNe4mUEyFDXL6KiqzEykjbw+5mXZXpGFgNVasdL4jWKgaKIXrEHiynN1LA==} + engines: {node: '>=0.4.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dependency-graph@1.0.0: + resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} + engines: {node: '>=4'} + + destroy@1.0.4: + resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + dev-ip@1.0.1: + resolution: {integrity: sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==} + engines: {node: '>= 0.8.0'} + hasBin: true + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + doublearray@0.0.2: + resolution: {integrity: sha512-aw55FtZzT6AmiamEj2kvmR6BuFqvYgKZUkfQ7teqVRNqD5UE0rw8IeW/3gieHNKQ5sPuDKlljWEn4bzv5+1bHw==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer2@0.0.2: + resolution: {integrity: sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==} + + each-props@3.0.0: + resolution: {integrity: sha512-IYf1hpuWrdzse/s/YJOrFmU15lyhSzxelNVAHTEG3DtP4QsLTWZUzcUL3HMXmKQxXpa4EIrBPpwRgj0aehdvAw==} + engines: {node: '>= 10.13.0'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + easy-extender@2.3.4: + resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==} + engines: {node: '>= 4.0.0'} + + easy-transform-stream@1.0.1: + resolution: {integrity: sha512-ktkaa6XR7COAR3oj02CF3IOgz2m1hCaY3SfzvKT4Svt2MhHw9XCt+ncJNWfe2TGz31iqzNGZ8spdKQflj+Rlog==} + engines: {node: '>=14.16'} + + eazy-logger@4.1.0: + resolution: {integrity: sha512-+mn7lRm+Zf1UT/YaH8WXtpU6PIV2iOjzP6jgKoiaq/VNrjYKp+OHZGe2znaLgDeFkw8cL9ffuaUm+nNnzcYyGw==} + engines: {node: '>= 0.8.0'} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.169: + resolution: {integrity: sha512-q7SQx6mkLy0GTJK9K9OiWeaBMV4XQtBSdf6MJUzDB/H/5tFXfIiX38Lci1Kl6SsgiEhz1SQI1ejEOU5asWEhwQ==} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + engine.io-client@6.6.3: + resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + engine.io@6.6.4: + resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} + engines: {node: '>=10.2.0'} + + entities@2.0.3: + resolution: {integrity: sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es6-object-assign@1.1.0: + resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@10.1.5: + resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-scope@7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.29.0: + resolution: {integrity: sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + expand-brackets@0.1.5: + resolution: {integrity: sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==} + engines: {node: '>=0.10.0'} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + expand-range@1.8.2: + resolution: {integrity: sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==} + engines: {node: '>=0.10.0'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extglob@0.3.2: + resolution: {integrity: sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==} + engines: {node: '>=0.10.0'} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fancy-log@1.3.3: + resolution: {integrity: sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==} + engines: {node: '>= 0.10'} + + fancy-log@2.0.0: + resolution: {integrity: sha512-9CzxZbACXMUXW13tS0tI8XsGGmxWzO2DmYrGuBJOJ8k8q2K7hwfJA5qHjuPPe8wtsco33YR9wc+Rlr5wYFvhSA==} + engines: {node: '>=10.13.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-equals@3.0.3: + resolution: {integrity: sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-levenshtein@3.0.0: + resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@10.1.1: + resolution: {integrity: sha512-zcmsHjg2B2zjuBgjdnB+9q0+cWcgWfykIcsDkWDB4GTPtl1eXUA+gTI6sO0u01AqK3cliHryTU55/b2Ow1hfZg==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + filename-regex@2.0.1: + resolution: {integrity: sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==} + engines: {node: '>=0.10.0'} + + filesize@2.0.4: + resolution: {integrity: sha512-XyVEXpwElavSK0SKn51E3960lTRfglsQA9goJN4QR+oyqStts1Wygs1FW3TFQrxJoGm4mcq3hTxDMN3Vs1cYwg==} + engines: {node: '>= 0.4.0'} + + fill-range@2.2.4: + resolution: {integrity: sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==} + engines: {node: '>=0.10.0'} + + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.1.0: + resolution: {integrity: sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==} + engines: {node: '>= 0.8'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + find-node-modules@2.1.3: + resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@1.1.2: + resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} + engines: {node: '>=0.10.0'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + findup-sync@4.0.0: + resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} + engines: {node: '>= 8'} + + findup-sync@5.0.0: + resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} + engines: {node: '>= 10.13.0'} + + fined@2.0.0: + resolution: {integrity: sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==} + engines: {node: '>= 10.13.0'} + + first-chunk-stream@5.0.0: + resolution: {integrity: sha512-WdHo4ejd2cG2Dl+sLkW79SctU7mUQDfr4s1i26ffOZRs5mgv+BRttIM9gwcq0rDbemo0KlpVPaa3LBVLqPXzcQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + flagged-respawn@2.0.0: + resolution: {integrity: sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==} + engines: {node: '>= 10.13.0'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flat-cache@6.1.10: + resolution: {integrity: sha512-B6/v1f0NwjxzmeOhzfXPGWpKBVA207LS7lehaVKQnFrVktcFRfkzjZZ2gwj2i1TkEUMQht7ZMJbABUT5N+V1Nw==} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + for-own@0.1.5: + resolution: {integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==} + engines: {node: '>=0.10.0'} + + for-own@1.0.0: + resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} + engines: {node: '>=0.10.0'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forever-agent@0.5.2: + resolution: {integrity: sha512-PDG5Ef0Dob/JsZUxUltJOhm/Y9mlteAE+46y3M9RBz/Rd3QVENJ75aGRhN56yekTUboaBIkd8KVWX2NjF6+91A==} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@0.2.0: + resolution: {integrity: sha512-LkinaG6JazVhYj2AKi67NOIAhqXcBOQACraT0WdhWW4ZO3kTiS0X7C1nJ1jFZf6wak4bVHIA/oOzWkh2ThAipg==} + engines: {node: '>= 0.8'} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fs-extra@3.0.1: + resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-mkdirp-stream@2.0.1: + resolution: {integrity: sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==} + engines: {node: '>=10.13.0'} + + fs-path@0.0.24: + resolution: {integrity: sha512-kKxBYWJVCidJpBkp2pj9yn9myAoe+fwk/w8PfZQS4RfjB0oY9pkD4MQQQBq/NQib6Yq9EhGZgzUv/NORK/k+5A==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: Upgrade to fsevents v2 to mitigate potential security issues + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + ga-analytics@0.0.7: + resolution: {integrity: sha512-Pd9rC+/37LZK4NC43NrMle7gQxElviZxhXjS5fgJvS7lMr1XWZ7of1mdx9JF/zMviv2EbeNLSG4blvQ0c582ZQ==} + hasBin: true + + gapitoken@0.1.5: + resolution: {integrity: sha512-DmqSnPk0Zy5H2yEe/4FeY6rWsIO2s8Dpnn4EqrN0ZfVI4D1QoCHKfy9Vz0YxMLW25Jivp33MDCyWS6nnwBAGEw==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stdin@4.0.1: + resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==} + engines: {node: '>=0.10.0'} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + glob-base@0.3.0: + resolution: {integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==} + engines: {node: '>=0.10.0'} + + glob-parent@2.0.0: + resolution: {integrity: sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-stream@8.0.3: + resolution: {integrity: sha512-fqZVj22LtFJkHODT+M4N1RJQ3TjnnQhfE9GwZI8qXscYarnhpip70poMldRnP8ipQ/w0B621kOhfc53/J9bd/A==} + engines: {node: '>=10.13.0'} + + glob-watcher@6.0.0: + resolution: {integrity: sha512-wGM28Ehmcnk2NqRORXFOTOR064L4imSw3EeOqU5bIwUf62eXGwg89WivH6VMahL8zlQHeodzvHpXplrqzrz3Nw==} + engines: {node: '>= 10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + glogg@1.0.2: + resolution: {integrity: sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==} + engines: {node: '>= 0.10'} + + glogg@2.2.0: + resolution: {integrity: sha512-eWv1ds/zAlz+M1ioHsyKJomfY7jbDDPpwSkv14KQj89bycx1nvK5/2Cj/T9g7kzJcX5Bc7Yv22FjfBZS/jl94A==} + engines: {node: '>= 10.13.0'} + + googleapis@1.1.5: + resolution: {integrity: sha512-eoy/QAkhohkjziIpqybTsUtPxMDmtVjK4uJSCerU7RcrVu9qae7tJIvRsyMgHJ7fF90FV/j8Wv2ESsGzZqUwxA==} + engines: {node: '>=0.10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graceful-readlink@1.0.1: + resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==} + + gulp-clean-css@4.3.0: + resolution: {integrity: sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg==} + + gulp-cli@3.1.0: + resolution: {integrity: sha512-zZzwlmEsTfXcxRKiCHsdyjZZnFvXWM4v1NqBJSYbuApkvVKivjcmOS2qruAJ+PkEHLFavcDKH40DPc1+t12a9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + gulp-ext-replace@0.3.0: + resolution: {integrity: sha512-lWElR/wZrgUFcdyhtfgMMHet6r8n2NQlNJC/7kjbIL8uD3yCPBwA9dp8SkLY1ZGW7gURrmsMSDBakDsjVCyxzw==} + + gulp-filesize@0.0.6: + resolution: {integrity: sha512-4HoiH9M5HuczHvBNnjCQJNUh7GbxGxg7aQE69zaof0i4lnhSBMWVciBstjIjaYfz2n93PtQNEZ6zfAXay85rmg==} + + gulp-htmlclean@2.7.22: + resolution: {integrity: sha512-MsY0s/WsxGtBrobfU0gTvKpTSG2N+Cf2VnUGoZFpy5lYzeEcF7qxu5zx3Synve8pJQCzZh8xkbzD5UR5MJIvVQ==} + engines: {node: '>= 0.8.0'} + + gulp-htmlmin@5.0.1: + resolution: {integrity: sha512-ASlyDPZOSKjHYUifYV0rf9JPDflN9IRIb8lw2vRqtYMC4ljU3zAmnnaVXwFQ3H+CfXxZSUesZ2x7jrnPJu93jA==} + engines: {node: '>= 6.0'} + + gulp-javascript-obfuscator@1.1.6: + resolution: {integrity: sha512-oiROhi7Zlu/0fM2h20jBFPaDOZicilT6kN+97Si82yieeFqr6l70o2R3gZ2Ah0u8v5IqGa+Pt8c2q3UnkMuk2A==} + + gulp-minify-css@1.2.4: + resolution: {integrity: sha512-byBqFQM/HrZoUVYihu/03iYH4m7U5TjSGhr6/7JvpMHh9+woewsCtEp6Noif2VXB+idDoM4ECd9sw+St+KFqsg==} + deprecated: Please use gulp-clean-css + + gulp-plugin-extras@0.3.0: + resolution: {integrity: sha512-I/kOBSpo61QsGQZcqozZYEnDseKvpudUafVVWDLYgBFAUJ37kW5R8Sjw9cMYzpGyPUfEYOeoY4p+dkfLqgyJUQ==} + engines: {node: '>=18'} + + gulp-postcss@10.0.0: + resolution: {integrity: sha512-z1RF2RJEX/BvFsKN11PXai8lRmihZTiHnlJf7Zu8uHaA/Q7Om4IeN8z1NtMAW5OiLwUY02H0DIFl9tHl0CNSgA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.0.0 + + gulp-replace@1.1.4: + resolution: {integrity: sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==} + engines: {node: '>=10'} + + gulp-rev@11.0.0: + resolution: {integrity: sha512-KJSyw0qMQBL0xB3YhYrdinelbnWnYHDxj3jqVL2Xvn8bUA1lh7py5/2Z6fUgIWiX+F1XyKYVxI8yy9asIAvZJA==} + engines: {node: '>=18'} + peerDependencies: + gulp: '>=4' + peerDependenciesMeta: + gulp: + optional: true + + gulp-terser@2.1.0: + resolution: {integrity: sha512-lQ3+JUdHDVISAlUIUSZ/G9Dz/rBQHxOiYDQ70IVWFQeh4b33TC1MCIU+K18w07PS3rq/CVc34aQO4SUbdaNMPQ==} + engines: {node: '>=10'} + + gulp-uglify-es@3.0.0: + resolution: {integrity: sha512-dQ3czMFFojNgCajcrYl0oa98+YayaQ8kXRdaacpZRZ3iw2sdVURfdt8y8Ki1ogZGQqw8BUawnB7V6NkanxqnDg==} + + gulp-util@2.2.20: + resolution: {integrity: sha512-9rtv4sj9EtCWYGD15HQQvWtRBtU9g1t0+w29tphetHxjxEAuBKQJkhGqvlLkHEtUjEgoqIpsVwPKU1yMZAa+wA==} + engines: {node: '>= 0.9'} + deprecated: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5 + + gulp-util@3.0.8: + resolution: {integrity: sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==} + engines: {node: '>=0.10'} + deprecated: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5 + + gulp-version-number@0.2.4: + resolution: {integrity: sha512-ssGbyFFdIufR0TpSE35LSb2B1rAEzJR9pdjI0rMiuK78C3KN4TA1YsphsKj69dEBvdsXloa/0NaSCqeqHkPZHA==} + engines: {node: '>= 0.9'} + + gulp@5.0.1: + resolution: {integrity: sha512-PErok3DZSA5WGMd6XXV3IRNO0mlB+wW3OzhFJLEec1jSERg2j1bxJ6e5Fh6N6fn3FH2T9AP4UYNb/pYlADB9sA==} + engines: {node: '>=10.13.0'} + hasBin: true + + gulplog@1.0.0: + resolution: {integrity: sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==} + engines: {node: '>= 0.10'} + + gulplog@2.2.0: + resolution: {integrity: sha512-V2FaKiOhpR3DRXZuYdRLn/qiY0yI5XmqbTKrYbdemJ+xOh2d2MOweI/XFgMzd/9+1twdvMwllnZbWZNJ+BOm4A==} + engines: {node: '>= 10.13.0'} + + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + + has-ansi@0.1.0: + resolution: {integrity: sha512-1YsTg1fk2/6JToQhtZkArMkurq8UoWU1Qe0aR3VUHjgij4nOylSWLWAtBXoZ4/dXOmugfLGm1c+QhuD0JyedFA==} + engines: {node: '>=0.10.0'} + hasBin: true + + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-gulplog@0.1.0: + resolution: {integrity: sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==} + engines: {node: '>= 0.10'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + hasha@3.0.0: + resolution: {integrity: sha512-w0Kz8lJFBoyaurBiNrIvxPqr/gJ6fOfSkpAPOepN3oECqGJag37xPbOv57izi/KP8auHgNYxn5fXtAb+1LsJ6w==} + engines: {node: '>=4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hawk@1.1.1: + resolution: {integrity: sha512-am8sVA2bCJIw8fuuVcKvmmNnGFUGW8spTkVtj2fXTEZVkfN42bwFZFtDem57eFi+NSxurJB8EQ7Jd3uCHLn8Vw==} + engines: {node: '>=0.8.0'} + deprecated: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hexo-browsersync@0.3.0: + resolution: {integrity: sha512-5grkDUG/jci1LgImUFHTGMhXRYFKYuBVVf1L62UAhd/IC/L3EfGtKXyPVqvxyVb4Pc5STY5tQR46xoBJLlWJNw==} + engines: {node: '>= 0.10.0'} + + hexo-cli@4.3.2: + resolution: {integrity: sha512-druJeBgLpG9ncDS5AhBHdAXk0G4CFj8Qes09pApyZ6bR+nJW1JYiDMuilhudaKDdq+1l49jWXVTidkcb7p0Jbw==} + engines: {node: '>=14'} + hasBin: true + + hexo-excerpt@1.3.1: + resolution: {integrity: sha512-IIK3SxqUxMPJyU2DlN6jKLIpz8fb3QZw6i+FIk6D8T3ncyhPCxnaxAiuj23jdyhsBzyQEpSERcK8SDlHXhYZDQ==} + + hexo-filter-nofollow@2.0.2: + resolution: {integrity: sha512-roIkEIkGOR22EPMoy8iKrufDoAH25LOT5ZeVXVLavEpM757Y96kfUhyathryMLXr326EURffgkZAKsVf3EDl0A==} + engines: {node: '>= 8.6.0'} + + hexo-front-matter@4.2.1: + resolution: {integrity: sha512-sJJI0GNmejYiwBvgnGRKn5V3sbODB4dNPr8jyw2Qp0PRHr4Uuyv8iyxw6WfK3+T7yvzYvJOh+tZ7jnwr2BYARA==} + engines: {node: '>=14'} + + hexo-fs@0.2.3: + resolution: {integrity: sha512-rLB1rMVUW3csAljvJgHfyjemL0BrmcUZfBf9hJe6S0pA53igFa3ON0PFwomvoLs1Wdmjs9Awnw9Tru4PjWFSlQ==} + engines: {node: '>=6.9.0'} + + hexo-fs@4.1.3: + resolution: {integrity: sha512-Q92zQ5PlVDouvSWFLXQoFSTLIUIODikUJs2BfAXQglyOEjN1dOQn1Z5Nimk/7GHof17R5h/uObCQLnZAjzI2tg==} + engines: {node: '>=14'} + + hexo-fs@5.0.0: + resolution: {integrity: sha512-oBkg1QgXyb4JxipaH+yCV/7E7XOUASTK6x1pocWvLw6U2mB6VfLENgYg61ft9Qn6JCiKSzs7FU4vyTUy6gIPvQ==} + engines: {node: '>=18'} + + hexo-generator-index@4.0.0: + resolution: {integrity: sha512-KeM7mOCKWINGFAk1E+CkjMMgqFIv8oaRbGxR7ipkQAp44o4aopkVftma4sdIplOq9WQEWfVYDUK5gEv9J3nzUg==} + engines: {node: '>=18'} + + hexo-generator-sitemap@3.0.1: + resolution: {integrity: sha512-n+0KLNmq6TLbiZPTQF6NY5MbEem/O+DFx0lgQZNQcU4tdjXIZRrQJs+KRKeT66NTkdlYTqb4WwCxswLqQz0crA==} + engines: {node: '>=12.13.0'} + + hexo-i18n@2.0.0: + resolution: {integrity: sha512-dkUXecEtChaQMdTHN4WR13c8GwKqjbSOZPJS9qDqV6Ebnb77Wa/nQzWFckhP0dCps3a9lUQBd8hYGOMbOosiQQ==} + engines: {node: '>=14'} + + hexo-log@4.1.0: + resolution: {integrity: sha512-i2Sgxk8Cgx5viSjq5qW5N/rBFfwoCKQcH8qnnW1fawCapcdEAhIsq+Y3vbrs9bssyDlyU6Vqm4oQmosREaNI7Q==} + engines: {node: '>=14'} + + hexo-pagination@3.0.0: + resolution: {integrity: sha512-8oo1iozloZo7TojPVYg4IxL3SJKCBdSJ908fTlIxIK7TWJIKdYnQlW31+12DBJ0NhVZA/lZisPObGF08wT8fKw==} + engines: {node: '>=14'} + + hexo-pagination@4.0.0: + resolution: {integrity: sha512-jNG6AX3EHzY3FRfdzB46tZ833CUX4WudZue3yv6kKaVCCWR61iwFL9LD6xQadvwHBuT1oHy444dJClWORG4sxg==} + engines: {node: '>=18'} + + hexo-related-popular-posts@5.0.1: + resolution: {integrity: sha512-X+7leZ708sXq1bgayful2HaGU22XAGPDZjqzpFUoeP8mXmJL51E2p66gqs7Xu+rygu4MMJQJvRK/fzGbHa8eqQ==} + engines: {node: '>=8.10.0'} + + hexo-renderer-ejs@2.0.0: + resolution: {integrity: sha512-qCjE1IdwgDgv65qyb0KMVCwCdSVAkH0vwAe9XihjvaKWkmb9dtt8DgErOdqCXn0HReSyWiEVP2BrLRj3gyHwOQ==} + engines: {node: '>=12'} + + hexo-renderer-markdown-it@5.0.0: + resolution: {integrity: sha512-9A4Dpy80hk7+SQ3RGqpWCV1LxnV1gjHSj4N0oGmXIfl/yjy+jMKLRAXIDVonxaD72rg4kzW4ZSqYZBIcgxTAeg==} + engines: {node: '>=10.13.0'} + + hexo-renderer-stylus@3.0.1: + resolution: {integrity: sha512-cFm8ZwShBBeFcQwOXc8EK7lIZnSYVD6OJykdL4GBw99hxc4eD5Hlsi32nRzE8sgKv00jhX1s9Da3GVVFMPAVQg==} + engines: {node: '>=14'} + + hexo-server@3.0.0: + resolution: {integrity: sha512-u4s0ty9Aew6jV+a9oMrXBwhrRpUQ0U8PWM/88a5aHgDru58VY81mVrxOFxs788NAsWQ8OvsJtF5m7mnXoRnSIA==} + engines: {node: '>=12.13.0'} + + hexo-util@2.7.0: + resolution: {integrity: sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==} + engines: {node: '>=12.4.0'} + + hexo-util@3.3.0: + resolution: {integrity: sha512-YvGngXijE2muEh5L/VI4Fmjqb+/yAkmY+VuyhWVoRwQu1X7bmWodsfYRXX7CUYhi5LqsvH8FAe/yBW1+f6ZX4Q==} + engines: {node: '>=14'} + + hexo@7.3.0: + resolution: {integrity: sha512-dOe8mzBKrvjubW5oBmyhcnQDpC+M2xmAMLae5K+o+SkHxyvAhShkS2VQZoTsOLIJKY6xilv7dzCjCvE7ol/NHQ==} + engines: {node: '>=14'} + hasBin: true + + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} + engines: {node: '>=12.0.0'} + + hoek@0.9.1: + resolution: {integrity: sha512-ZZ6eGyzGjyMTmpSPYVECXy9uNfqBR7x5CavhUaLOeD6W0vWK1mp/b7O3f86XE0Mtfo9rZ6Bh3fnuw9Xr8MF9zA==} + engines: {node: '>=0.8.0'} + deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hookified@1.9.1: + resolution: {integrity: sha512-u3pxtGhKjcSXnGm1CX6aXS9xew535j3lkOCegbA6jdyh0BaAjTbXI4aslKstCr6zUNtoCxFGFKwjbSHdGrMB8g==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + html-minifier@3.5.21: + resolution: {integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==} + engines: {node: '>=4'} + hasBin: true + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + htmlclean@3.0.8: + resolution: {integrity: sha512-pxe6KHAQFvn407iNVNs8jpQ43BSy0w2VJ7DOUrbl/wOOy33RgDR1IcOplYqseQBBcdJLEozzeL9RziGCdK2Zsg==} + engines: {node: '>= 0.8.0'} + + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + htmlparser2@7.2.0: + resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} + + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http-signature@0.10.1: + resolution: {integrity: sha512-coK8uR5rq2IMj+Hen+sKPA5ldgbCc1/spPdKCL1Fw6h+D0s/2LzMcRK0Cqufs1h0ryx/niwBHGFu8HC3hwU+lA==} + engines: {node: '>=0.8'} + + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + immutable@3.8.2: + resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} + engines: {node: '>=0.10.0'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@1.2.2: + resolution: {integrity: sha512-Z1vqf6lDC3f4N2mWqRywY6odjRatPNGDZgUr4DY9MLC14+Fp2/y+CI/RnNGlb8hD6ckscE/8DlZUwHUaiDBshg==} + engines: {node: '>=0.10.0'} + hasBin: true + + indent-string@2.1.0: + resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} + engines: {node: '>=0.10.0'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + + interpret@3.1.1: + resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==} + engines: {node: '>=10.13.0'} + + inversify@6.0.1: + resolution: {integrity: sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ==} + + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-dotfile@1.0.3: + resolution: {integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==} + engines: {node: '>=0.10.0'} + + is-equal-shallow@0.1.3: + resolution: {integrity: sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==} + engines: {node: '>=0.10.0'} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@1.0.0: + resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finite@1.1.0: + resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@2.0.1: + resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + + is-negated-glob@1.0.0: + resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} + engines: {node: '>=0.10.0'} + + is-number-like@1.0.8: + resolution: {integrity: sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==} + + is-number@2.1.0: + resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} + engines: {node: '>=0.10.0'} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@4.0.0: + resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-posix-bracket@0.1.1: + resolution: {integrity: sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==} + engines: {node: '>=0.10.0'} + + is-primitive@2.0.0: + resolution: {integrity: sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==} + engines: {node: '>=0.10.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-valid-glob@1.0.0: + resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} + engines: {node: '>=0.10.0'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + istextorbinary@3.3.0: + resolution: {integrity: sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + javascript-obfuscator@4.1.1: + resolution: {integrity: sha512-gt+KZpIIrrxXHEQGD8xZrL8mTRwRY0U76/xz/YX0gZdPrSqQhT/c7dYLASlLlecT3r+FxE7je/+C0oLnTDCx4A==} + engines: {node: '>=12.22.0'} + hasBin: true + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + js-string-escape@1.0.1: + resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} + engines: {node: '>= 0.8'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml-js-types@1.0.1: + resolution: {integrity: sha512-5tpfyORs8OQ43alNERbWfYRCtWgykvzYgY46fUhrQi2+kS7N0NuuFYLZ/IrfmVm5muLTndeMublgraXiFRjEPw==} + peerDependencies: + js-yaml: 4.x + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-parse-even-better-errors@4.0.0: + resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} + engines: {node: ^18.17.0 || >=20.5.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + jsonfile@3.0.1: + resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + jwa@1.0.2: + resolution: {integrity: sha512-3InPmrUtackTvLXsoN6NtvgNMYDUd+dFQJ3od4GmMonXIPpxV9AYl4LyH/7Pb9GwaXtBpwVgAu8ue+uVrG65Lg==} + + jws@3.0.0: + resolution: {integrity: sha512-Me6ywrnys7VjF8S0ipMSOrQGe5UFeIOg6oLLey7Dqpbtl6ZBRwLeOZ5VAHFmvcxlyPFtey2XAaYKmzG6bjt7lA==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyv@5.3.4: + resolution: {integrity: sha512-ypEvQvInNpUe+u+w8BIcPkQvEqXquyyibWE/1NB5T2BTzIpS5cGEV1LZskDzPSTvNAaT4+5FutvzlvnkxOSKlw==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + known-css-properties@0.36.0: + resolution: {integrity: sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==} + + kuromoji@0.1.2: + resolution: {integrity: sha512-V0dUf+C2LpcPEXhoHLMAop/bOht16Dyr+mDiIE39yX3vqau7p80De/koFqpiTcL1zzdZlc3xuHZ8u5gjYRfFaQ==} + + last-run@2.0.0: + resolution: {integrity: sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ==} + engines: {node: '>= 10.13.0'} + + lead@4.0.0: + resolution: {integrity: sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==} + engines: {node: '>=10.13.0'} + + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + libphonenumber-js@1.12.9: + resolution: {integrity: sha512-VWwAdNeJgN7jFOD+wN4qx83DTPMVPPAUyx9/TUkBXKLiNkuWWk6anV0439tgdtwaJDrEdqkvdN22iA6J4bUCZg==} + + liftoff@5.0.1: + resolution: {integrity: sha512-wwLXMbuxSF8gMvubFcFRp56lkFV69twvbU5vDPbaw+Q+/rF8j0HKjGbIdlSi+LuJm9jf7k9PB+nTxnsLMPcv2Q==} + engines: {node: '>=10.13.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + limiter@1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@3.0.3: + resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} + + linkify-it@4.0.1: + resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + + lint-staged@16.1.2: + resolution: {integrity: sha512-sQKw2Si2g9KUZNY3XNvRuDq4UJqpHwF0/FQzZR2M7I5MvtpWvibikCjUVJzZdGE0ByurEl3KQNvsGetd1ty1/Q==} + engines: {node: '>=20.17'} + hasBin: true + + listr2@8.3.3: + resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} + engines: {node: '>=18.0.0'} + + load-json-file@1.1.0: + resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} + engines: {node: '>=0.10.0'} + + localtunnel@2.0.2: + resolution: {integrity: sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==} + engines: {node: '>=8.3.0'} + hasBin: true + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash._basecopy@3.0.1: + resolution: {integrity: sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==} + + lodash._basetostring@3.0.1: + resolution: {integrity: sha512-mTzAr1aNAv/i7W43vOR/uD/aJ4ngbtsRaCubp2BfZhlGU/eORUjg/7F6X0orNMdv33JOrdgGybtvMN/po3EWrA==} + + lodash._basevalues@3.0.0: + resolution: {integrity: sha512-H94wl5P13uEqlCg7OcNNhMQ8KvWSIyqXzOPusRgHC9DK3o54P6P3xtbXlVbRABG4q5gSmp7EDdJ0MSuW9HX6Mg==} + + lodash._escapehtmlchar@2.4.1: + resolution: {integrity: sha512-eHm2t2Lg476lq5v4FVmm3B5mCaRlDyTE8fnMfPCEq2o46G4au0qNXIKh7YWhjprm1zgSMLcMSs1XHMgkw02PbQ==} + + lodash._escapestringchar@2.4.1: + resolution: {integrity: sha512-iZ6Os4iipaE43pr9SBks+UpZgAjJgRC+lGf7onEoByMr1+Nagr1fmR7zCM6Q4RGMB/V3a57raEN0XZl7Uub3/g==} + + lodash._getnative@3.9.1: + resolution: {integrity: sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==} + + lodash._htmlescapes@2.4.1: + resolution: {integrity: sha512-g79hNmMOBVyV+4oKIHM7MWy9Awtk3yqf0Twlawr6f+CmG44nTwBh9I5XiLUnk39KTfYoDBpS66glQGgQCnFIuA==} + + lodash._isiterateecall@3.0.9: + resolution: {integrity: sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==} + + lodash._isnative@2.4.1: + resolution: {integrity: sha512-BOlKGKNHhCHswGOWtmVb5zBygyxN7EmTuzVOSQI6QSoGhG+kvv71gICFS1TBpnqvT1n53txK8CDK3u5D2/GZxQ==} + + lodash._objecttypes@2.4.1: + resolution: {integrity: sha512-XpqGh1e7hhkOzftBfWE7zt+Yn9mVHFkDhicVttvKLsoCMLVVL+xTQjfjB4X4vtznauxv0QZ5ZAeqjvat0dh62Q==} + + lodash._reescape@3.0.0: + resolution: {integrity: sha512-Sjlavm5y+FUVIF3vF3B75GyXrzsfYV8Dlv3L4mEpuB9leg8N6yf/7rU06iLPx9fY0Mv3khVp9p7Dx0mGV6V5OQ==} + + lodash._reevaluate@3.0.0: + resolution: {integrity: sha512-OrPwdDc65iJiBeUe5n/LIjd7Viy99bKwDdk7Z5ljfZg0uFRFlfQaCy9tZ4YMAag9WAZmlVpe1iZrkIMMSMHD3w==} + + lodash._reinterpolate@2.4.1: + resolution: {integrity: sha512-QGEOOjJi7W9LIgDAMVgtGBb8Qgo8ieDlSOCoZjtG45ZNRvDJZjwVMTYlfTIWdNRUiR1I9BjIqQ3Zaf1+DYM94g==} + + lodash._reinterpolate@3.0.0: + resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} + + lodash._reunescapedhtml@2.4.1: + resolution: {integrity: sha512-CfmZRU1Mk4E/5jh+Wu8lc7tuc3VkuwWZYVIgdPDH9NRSHgiL4Or3AA4JCIpgrkVzHOM+jKu2OMkAVquruhRHDQ==} + + lodash._root@3.0.1: + resolution: {integrity: sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==} + + lodash._shimkeys@2.4.1: + resolution: {integrity: sha512-lBrglYxLD/6KAJ8IEa5Lg+YHgNAL7FyKqXg4XOUI+Du/vtniLs1ZqS+yHNKPkK54waAgkdUnDOYaWf+rv4B+AA==} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.defaults@2.4.1: + resolution: {integrity: sha512-5wTIPWwGGr07JFysAZB8+7JB2NjJKXDIwogSaRX5zED85zyUAQwtOqUk8AsJkkigUcL3akbHYXd5+BPtTGQPZw==} + + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.escape@2.4.1: + resolution: {integrity: sha512-PiEStyvZ8gz37qBE+HqME1Yc/ewb/59AMOu8pG7Ztani86foPTxgzckQvMdphmXPY6V5f20Ex/CaNBqHG4/ycQ==} + + lodash.escape@3.2.0: + resolution: {integrity: sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ==} + + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + + lodash.isarray@3.0.4: + resolution: {integrity: sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==} + + lodash.isfinite@3.3.2: + resolution: {integrity: sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==} + + lodash.isobject@2.4.1: + resolution: {integrity: sha512-sTebg2a1PoicYEZXD5PBdQcTlIJ6hUslrlWr7iV0O7n+i4596s2NQ9I5CaZ5FbXSfya/9WQsrYLANUJv9paYVA==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.keys@2.4.1: + resolution: {integrity: sha512-ZpJhwvUXHSNL5wYd1RM6CUa2ZuqorG9ngoJ9Ix5Cce+uX7I5O/E06FCJdhSZ33b5dVyeQDnIlWH7B2s5uByZ7g==} + + lodash.keys@3.1.2: + resolution: {integrity: sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==} + + lodash.map@4.6.0: + resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.restparam@3.6.1: + resolution: {integrity: sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.template@2.4.1: + resolution: {integrity: sha512-5yLOQwlS69xbaez3g9dA1i0GMAj8pLDHp8lhA4V7M1vRam1lqD76f0jg5EV+65frbqrXo1WH9ZfKalfYBzJ5yQ==} + deprecated: This package is deprecated. Use https://socket.dev/npm/package/eta instead. + + lodash.template@3.6.2: + resolution: {integrity: sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==} + deprecated: This package is deprecated. Use https://socket.dev/npm/package/eta instead. + + lodash.templatesettings@2.4.1: + resolution: {integrity: sha512-vY3QQ7GxbeLe8XfTvoYDbaMHO5iyTDJS1KIZrxp00PRMmyBKr8yEcObHSl2ppYTwd8MgqPXAarTvLA14hx8ffw==} + + lodash.templatesettings@3.1.1: + resolution: {integrity: sha512-TcrlEr31tDYnWkHFWDCV3dHYroKEXpJZ2YJYvJdhN+y4AkWMDZ5I4I8XDtUKqSAyG81N7w+I1mFEJtcED+tGqQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash.values@2.4.1: + resolution: {integrity: sha512-fQwubKvj2Nox2gy6YnjFm8C1I6MIlzKUtBB+Pj7JGtloGqDDL5CPRr4DUUFWPwXWwAl2k3f4C3Aw8H1qAPB9ww==} + + lodash@2.4.2: + resolution: {integrity: sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==} + engines: {'0': node, '1': rhino} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + log-util@1.2.0: + resolution: {integrity: sha512-CT1wy00y2gFBDTsdkz6QG+r6i2RzElvJI4QbWLAPPe91l8Z/Qy9YMfb6PQttjnsw7USNlDPjuQ++jTtgYX9gew==} + + longest@2.0.1: + resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} + engines: {node: '>=0.10.0'} + + loud-rejection@1.6.0: + resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} + engines: {node: '>=0.10.0'} + + lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-stream@0.0.7: + resolution: {integrity: sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + + markdown-it-abbr@1.0.4: + resolution: {integrity: sha512-ZeA4Z4SaBbYysZap5iZcxKmlPL6bYA8grqhzJIHB1ikn7njnzaP8uwbtuXc4YXD5LicI4/2Xmc0VwmSiFV04gg==} + + markdown-it-abbr@2.0.0: + resolution: {integrity: sha512-of7C8pXSjXjDojW4neNP+jD7inUYH/DO0Ca+K/4FUEccg0oHAEX/nfscw0jfz66PJbYWOAT9U8mjO21X5p6aAw==} + + markdown-it-anchor@9.2.0: + resolution: {integrity: sha512-sa2ErMQ6kKOA4l31gLGYliFQrMKkqSO0ZJgGhDHKijPf0pNFM9vghjAh3gn26pS4JDRs7Iwa9S36gxm3vgZTzg==} + peerDependencies: + '@types/markdown-it': '*' + markdown-it: '*' + + markdown-it-attrs@4.3.1: + resolution: {integrity: sha512-/ko6cba+H6gdZ0DOw7BbNMZtfuJTRp9g/IrGIuz8lYc/EfnmWRpaR3CFPnNbVz0LDvF8Gf1hFGPqrQqq7De0rg==} + engines: {node: '>=6'} + peerDependencies: + markdown-it: '>= 9.0.0' + + markdown-it-checkbox@1.1.0: + resolution: {integrity: sha512-NkZVjnXo5G+cLNdi7DPZxICypBuxFE9F8sx3YGMZn+Cfizr8EZ/1TFUKl7ZnefF6cr1aFHbnQ5iA3rc4cp7EyA==} + + markdown-it-cjk-breaks@1.1.3: + resolution: {integrity: sha512-/gX3LueMp+5FdUkqcFPK5nHI6t85uq1rMv8yhrmCOZhU90XqybQj8OT1hVrxrdseajaHLPBK43xLzEKPosgTDA==} + + markdown-it-container@3.0.0: + resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==} + + markdown-it-deflist@2.1.0: + resolution: {integrity: sha512-3OuqoRUlSxJiuQYu0cWTLHNhhq2xtoSFqsZK8plANg91+RJQU1ziQ6lA2LzmFAEes18uPBsHZpcX6We5l76Nzg==} + + markdown-it-emoji@1.4.0: + resolution: {integrity: sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==} + + markdown-it-emoji@3.0.0: + resolution: {integrity: sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==} + + markdown-it-footnote@3.0.3: + resolution: {integrity: sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==} + + markdown-it-footnote@4.0.0: + resolution: {integrity: sha512-WYJ7urf+khJYl3DqofQpYfEYkZKbmXmwxQV8c8mO/hGIhgZ1wOe7R4HLFNwqx7TjILbnC98fuyeSsin19JdFcQ==} + + markdown-it-highlight-lines@1.0.2: + resolution: {integrity: sha512-9Pyt/B+Ca3QBSXDS/znmojy/k6HDe8FJlJwIj/BKgvxE3MQWK9GHQCJJT5Lb1er23svZT99kJ/YRhLpDK+5GUQ==} + + markdown-it-highlightjs@4.2.0: + resolution: {integrity: sha512-NC7pXE8KkOl6xWJVRNt8p6wgJVznXKsE0HgYGdk6DD2tn1l4L9f0ALf3VIoGVkotNU1uGQatSxfBF1zZPUMmuQ==} + + markdown-it-ins@3.0.1: + resolution: {integrity: sha512-32SSfZqSzqyAmmQ4SHvhxbFqSzPDqsZgMHDwxqPzp+v+t8RsmqsBZRG+RfRQskJko9PfKC2/oxyOs4Yg/CfiRw==} + + markdown-it-ins@4.0.0: + resolution: {integrity: sha512-sWbjK2DprrkINE4oYDhHdCijGT+MIDhEupjSHLXe5UXeVr5qmVxs/nTUVtgi0Oh/qtF+QKV0tNWDhQBEPxiMew==} + + markdown-it-mark@3.0.1: + resolution: {integrity: sha512-HyxjAu6BRsdt6Xcv6TKVQnkz/E70TdGXEFHRYBGLncRE9lBFwDNLVtFojKxjJWgJ+5XxUwLaHXy+2sGBbDn+4A==} + + markdown-it-shortcode-tag@1.1.0: + resolution: {integrity: sha512-6qVQHmfVYMYlO2HebbF6ydXoTpOl3jPJvw6RyPnWaGJLSXdxlIJ7ihyzzbXNNHkZlQPfoDehDQYMfqeOv1KwgQ==} + engines: {node: '>=4.0'} + + markdown-it-sub@1.0.0: + resolution: {integrity: sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q==} + + markdown-it-sub@2.0.0: + resolution: {integrity: sha512-iCBKgwCkfQBRg2vApy9vx1C1Tu6D8XYo8NvevI3OlwzBRmiMtsJ2sXupBgEA7PPxiDwNni3qIUkhZ6j5wofDUA==} + + markdown-it-sup@1.0.0: + resolution: {integrity: sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==} + + markdown-it-sup@2.0.0: + resolution: {integrity: sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA==} + + markdown-it-task-lists@2.1.1: + resolution: {integrity: sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==} + + markdown-it@11.0.1: + resolution: {integrity: sha512-aU1TzmBKcWNNYvH9pjq6u92BML+Hz3h5S/QpfTFwiQF852pLT+9qHsrhM9JYipkOXZxGn+sGH8oyJE9FD9WezQ==} + hasBin: true + + markdown-it@13.0.2: + resolution: {integrity: sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + math-random@1.0.4: + resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==} + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + meow@2.0.0: + resolution: {integrity: sha512-X7rkdgy5Wxxp2MhCiAOkC3lqfkrJkt3iXvW4BY0rYQIn3GMvYvBTsAPEmHHTjTeVzBelrRcQa2F80rYfigz2+A==} + engines: {node: '>=0.10.0'} + + meow@3.7.0: + resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==} + engines: {node: '>=0.10.0'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + micro-memoize@4.1.3: + resolution: {integrity: sha512-DzRMi8smUZXT7rCGikRwldEh6eO6qzKiPPopcr1+2EY3AYKpy5fu159PKWwIS9A6IWnrvPKDMcuFtyrroZa8Bw==} + + micromatch@2.3.11: + resolution: {integrity: sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==} + engines: {node: '>=0.10.0'} + + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.12.0: + resolution: {integrity: sha512-5aMAW7I4jZoZB27fXRuekqc4DVvJ7+hM8UcWrNj2mqibE54gXgPSonBYBdQW5hyaVNGmiYjY0ZMqn9fBefWYvA==} + engines: {node: '>= 0.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@1.0.2: + resolution: {integrity: sha512-echfutj/t5SoTL4WZpqjA1DCud1XO0WQF3/GJ48YBmc4ZMhCK77QA6Z/w6VTQERLKuJ4drze3kw2TUT8xZXVNw==} + engines: {node: '>= 0.8.0'} + + mime-types@2.0.14: + resolution: {integrity: sha512-2ZHUEstNkIf2oTWgtODr6X0Cc4Ns/RN/hktdozndiEhhAC2wxXejF1FH0XLHTEImE9h6gr/tcnr3YOnSGsxc7Q==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.4.1: + resolution: {integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==} + hasBin: true + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@0.2.4: + resolution: {integrity: sha512-Pkrrm8NjyQ8yVt8Am9M+yUt74zE3iokhzbG1bFVNjLB92vwM71hf40RkEsryg98BujhVOncKm/C1xROxZ030LQ==} + + minimist@1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mitt@1.2.0: + resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} + + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@2.1.3: + resolution: {integrity: sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==} + engines: {node: '>=10'} + hasBin: true + + modify-filename@2.0.0: + resolution: {integrity: sha512-VX9/MdgUN9StpSLImJ0+AyV2dxJJtyojIwRHF/Ja942tW7FTzxXI186jDSTk4k5wj2+59a4bRzFnJUgMSi+ygg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + moize@6.1.6: + resolution: {integrity: sha512-vSKdIUO61iCmTqhdoIDrqyrtp87nWZUmBPniNjO0fX49wEYmyDO4lvlnFXiGcaH1JLE/s/9HbiK4LSHsbiUY6Q==} + + moment-timezone@0.5.48: + resolution: {integrity: sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==} + + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + + morgan@1.10.0: + resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} + engines: {node: '>= 0.8.0'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multimatch@5.0.0: + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} + + multipipe@0.1.2: + resolution: {integrity: sha512-7ZxrUybYv9NonoXgwoOqtStIu18D1c3eFZj27hqgf5kBrBF8Q+tE8V0MW8dKM5QLkQPh1JhhbKgHLY9kifov4Q==} + + mute-stdout@2.0.0: + resolution: {integrity: sha512-32GSKM3Wyc8dg/p39lWPKYu8zci9mJFzV1Np9Of0ZEpe6Fhssn/FbI7ywAMd40uX+p3ZKh3T5EeCFv81qS3HmQ==} + engines: {node: '>= 10.13.0'} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nan@2.22.2: + resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} + + nano-spawn@1.0.2: + resolution: {integrity: sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg==} + engines: {node: '>=20.17'} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + nib@1.2.0: + resolution: {integrity: sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==} + peerDependencies: + stylus: '*' + + no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + node-uuid@1.4.8: + resolution: {integrity: sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==} + deprecated: Use uuid module instead + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + now-and-later@3.0.0: + resolution: {integrity: sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==} + engines: {node: '>= 10.13.0'} + + npm-normalize-package-bin@4.0.0: + resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-run-all2@8.0.4: + resolution: {integrity: sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==} + engines: {node: ^20.5.0 || >=22.0.0, npm: '>= 10'} + hasBin: true + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nunjucks@3.2.4: + resolution: {integrity: sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==} + engines: {node: '>= 6.9.0'} + hasBin: true + peerDependencies: + chokidar: ^3.3.0 + peerDependenciesMeta: + chokidar: + optional: true + + o-stream@0.3.0: + resolution: {integrity: sha512-gbzl6qCJZ609x/M2t25HqCYQagFzWYCtQ84jcuObGr+V8D1Am4EVubkF4J+XFs6ukfiv96vNeiBb8FrbbMZYiQ==} + + oauth-sign@0.5.0: + resolution: {integrity: sha512-jXeZq5EriUSGdNIePO45lhemfuCBKi5DARdE30v173MPCLymq2DxR477J/RuCXLphNx7OVAqXVyj3JoUaiHpNw==} + + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + + object-assign@1.0.0: + resolution: {integrity: sha512-LpUkixU1BUMQ6bwUHbOue4IGGbdRbxi+IEZw7zHniw78erlxrKGHbhfLbHIsI35LGbGqys6QOrjVmLnD2ie+1A==} + engines: {node: '>=0.10.0'} + + object-assign@3.0.0: + resolution: {integrity: sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==} + engines: {node: '>=0.10.0'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + + object.defaults@1.1.0: + resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + engines: {node: '>=0.10.0'} + + object.omit@2.0.1: + resolution: {integrity: sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==} + engines: {node: '>=0.10.0'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + opencollective-postinstall@2.0.3: + resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} + hasBin: true + + openurl@1.1.1: + resolution: {integrity: sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==} + + opn@5.3.0: + resolution: {integrity: sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==} + engines: {node: '>=4'} + + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + + parse-glob@3.0.4: + resolution: {integrity: sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==} + engines: {node: '>=0.10.0'} + + parse-json@2.2.0: + resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} + engines: {node: '>=0.10.0'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + path-exists@2.1.0: + resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} + engines: {node: '>=0.10.0'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + + path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@1.1.0: + resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} + engines: {node: '>=0.10.0'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + plugin-error@1.0.1: + resolution: {integrity: sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==} + engines: {node: '>= 0.10'} + + plugin-error@2.0.1: + resolution: {integrity: sha512-zMakqvIDyY40xHOvzXka0kUvf40nYIuwRE8dWhti2WtjQZ31xAgBZBhxsK7vK3QbRXS1Xms/LO7B5cuAsfB2Gg==} + engines: {node: '>=10.13.0'} + + portscanner@2.2.0: + resolution: {integrity: sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==} + engines: {node: '>=0.4', npm: '>=1.0.0'} + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-calc@10.1.1: + resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + postcss-cli@11.0.1: + resolution: {integrity: sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + postcss: ^8.0.0 + + postcss-colormin@7.0.3: + resolution: {integrity: sha512-xZxQcSyIVZbSsl1vjoqZAcMYYdnJsIyG8OvqShuuqf12S88qQboxxEy0ohNCOLwVPXTU+hFHvJPACRL2B5ohTA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-convert-values@7.0.5: + resolution: {integrity: sha512-0VFhH8nElpIs3uXKnVtotDJJNX0OGYSZmdt4XfSfvOMrFw1jKfpwpZxfC4iN73CTM/MWakDEmsHQXkISYj4BXw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-comments@7.0.4: + resolution: {integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-duplicates@7.0.2: + resolution: {integrity: sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-empty@7.0.1: + resolution: {integrity: sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-overridden@7.0.1: + resolution: {integrity: sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-import@16.1.1: + resolution: {integrity: sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-load-config@5.1.0: + resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + + postcss-merge-longhand@7.0.5: + resolution: {integrity: sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-merge-rules@7.0.5: + resolution: {integrity: sha512-ZonhuSwEaWA3+xYbOdJoEReKIBs5eDiBVLAGpYZpNFPzXZcEE5VKR7/qBEQvTZpiwjqhhqEQ+ax5O3VShBj9Wg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-font-values@7.0.1: + resolution: {integrity: sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-gradients@7.0.1: + resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-params@7.0.3: + resolution: {integrity: sha512-vUKV2+f5mtjewYieanLX0xemxIp1t0W0H/D11u+kQV/MWdygOO7xPMkbK+r9P6Lhms8MgzKARF/g5OPXhb8tgg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-selectors@7.0.5: + resolution: {integrity: sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-normalize-charset@7.0.1: + resolution: {integrity: sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-display-values@7.0.1: + resolution: {integrity: sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-positions@7.0.1: + resolution: {integrity: sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-repeat-style@7.0.1: + resolution: {integrity: sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-string@7.0.1: + resolution: {integrity: sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-timing-functions@7.0.1: + resolution: {integrity: sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-unicode@7.0.3: + resolution: {integrity: sha512-EcoA29LvG3F+EpOh03iqu+tJY3uYYKzArqKJHxDhUYLa2u58aqGq16K6/AOsXD9yqLN8O6y9mmePKN5cx6krOw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-url@7.0.1: + resolution: {integrity: sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-whitespace@7.0.1: + resolution: {integrity: sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-ordered-values@7.0.2: + resolution: {integrity: sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reduce-initial@7.0.3: + resolution: {integrity: sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reduce-transforms@7.0.1: + resolution: {integrity: sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reporter@7.1.0: + resolution: {integrity: sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==} + engines: {node: '>=10'} + peerDependencies: + postcss: ^8.1.0 + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-svgo@7.0.2: + resolution: {integrity: sha512-5Dzy66JlnRM6pkdOTF8+cGsB1fnERTE8Nc+Eed++fOWo1hdsBptCsbG8UuJkgtZt75bRtMJIrPeZmtfANixdFA==} + engines: {node: ^18.12.0 || ^20.9.0 || >= 18} + peerDependencies: + postcss: ^8.4.32 + + postcss-unique-selectors@7.0.4: + resolution: {integrity: sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + preserve@0.2.0: + resolution: {integrity: sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==} + engines: {node: '>=0.10.0'} + + prettier-plugin-tailwindcss@0.6.12: + resolution: {integrity: sha512-OuTQKoqNwV7RnxTPwXWzOFXy6Jc4z8oeRZYGuMpRyG3WbuR3jjXdQFK8qFBMBx8UHWdHrddARz2fgUenild6aw==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + + qs@2.3.3: + resolution: {integrity: sha512-f5M0HQqZWkzU8GELTY8LyMrGkr3bPjKoFtTkwUEqJQbcljbeK8M7mliP9Ia2xoOI6oMerp+QPS7oYJtpGmWe/A==} + + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randomatic@3.1.1: + resolution: {integrity: sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==} + engines: {node: '>= 0.10.0'} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-package-json-fast@4.0.0: + resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==} + engines: {node: ^18.17.0 || >=20.5.0} + + read-pkg-up@1.0.1: + resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} + engines: {node: '>=0.10.0'} + + read-pkg@1.1.0: + resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} + engines: {node: '>=0.10.0'} + + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + + redent@1.0.0: + resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==} + engines: {node: '>=0.10.0'} + + reflect-metadata@0.1.13: + resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + + regex-cache@0.4.4: + resolution: {integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==} + engines: {node: '>=0.10.0'} + + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + repeating@1.1.3: + resolution: {integrity: sha512-Nh30JLeMHdoI+AsQ5eblhZ7YlTsM9wiJQe/AHIunlK3KWzvXhXb36IJ7K1IOeRjIOtzMjdUHjwXUFxKJoPTSOg==} + engines: {node: '>=0.10.0'} + hasBin: true + + repeating@2.0.1: + resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} + engines: {node: '>=0.10.0'} + + replace-ext@0.0.1: + resolution: {integrity: sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==} + engines: {node: '>= 0.4'} + + replace-ext@1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} + + replace-ext@2.0.0: + resolution: {integrity: sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==} + engines: {node: '>= 10'} + + replace-homedir@2.0.0: + resolution: {integrity: sha512-bgEuQQ/BHW0XkkJtawzrfzHFSN70f/3cNOiHa2QsYxqrjaC30X1k74FJ6xswVBP0sr0SpGIdVFuPwfrYziVeyw==} + engines: {node: '>= 10.13.0'} + + replacestream@4.0.3: + resolution: {integrity: sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==} + + request@2.51.0: + resolution: {integrity: sha512-6pfShjLfn6ThOlPHyQo7nBxEwTa2PzvqHruxQS51TrADjWj3qetRZ2Ae5gRzMF7N2fKG5Ww7su+Z6jA3sFv0Gw==} + engines: {node: '>=0.8.0'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-options@2.0.0: + resolution: {integrity: sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==} + engines: {node: '>= 10.13.0'} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resp-modifier@6.0.2: + resolution: {integrity: sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==} + engines: {node: '>= 0.8.0'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rev-hash@4.1.0: + resolution: {integrity: sha512-e0EGnaveLY2IYpYwHNdh43WZ2M84KgW3Z/T4F6+Z/BlZI/T1ZbxTWj36xgYgUPOieGXYo2q225jTeUXn+LWYjw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + rev-path@3.0.0: + resolution: {integrity: sha512-2fUuv6IC7Z+Vj+DXEunJYJDZuwSsaJJHeLar3n2PGvHSH7j5+Xpd/Xh7PenekH4WQhxFuHtsGwd1dCh/HvT6Gw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rx@4.1.0: + resolution: {integrity: sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + + semver-greatest-satisfied-range@2.0.0: + resolution: {integrity: sha512-lH3f6kMbwyANB7HuOWRMlLCa2itaCrZJ+SAqqkSZrZKO/cAsk2EOyaKHUtNkVLFyFW9pct22SFesFp3Z7zpA0g==} + engines: {node: '>= 10.13.0'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + send@0.16.2: + resolution: {integrity: sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==} + engines: {node: '>= 0.8.0'} + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.13.2: + resolution: {integrity: sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + server-destroy@1.0.1: + resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + + sntp@0.2.4: + resolution: {integrity: sha512-bDLrKa/ywz65gCl+LmOiIhteP1bhEsAAzhfMedPoiHP3dyYnAevlaJshdqb9Yu0sRifyP/fRqSt8t+5qGIWlGQ==} + engines: {node: '>=0.8.0'} + deprecated: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues. + + socket.io-adapter@2.5.5: + resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} + + socket.io-client@4.8.1: + resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + socket.io@4.8.1: + resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} + engines: {node: '>=10.2.0'} + + sort-keys@5.1.0: + resolution: {integrity: sha512-aSbHV0DaBcr7u0PVHXzM6NbZNAtrr9sF6+Qfs9UUVG7Ll3jQ6hHi8F/xqIIcn2rvIVbr0v/2zyjSdwSV47AgLQ==} + engines: {node: '>=12'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.4.4: + resolution: {integrity: sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==} + engines: {node: '>=0.8.0'} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + sparkles@1.0.1: + resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==} + engines: {node: '>= 0.10'} + + sparkles@2.1.0: + resolution: {integrity: sha512-r7iW1bDw8R/cFifrD3JnQJX0K1jqT0kprL48BiBpLZLJPmAm34zsVBsK5lc7HirZYZqMW65dOXZgbAGt/I6frg==} + engines: {node: '>= 10.13.0'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + + statuses@1.3.1: + resolution: {integrity: sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==} + engines: {node: '>= 0.6'} + + statuses@1.4.0: + resolution: {integrity: sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==} + engines: {node: '>= 0.6'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stream-buffers@0.2.6: + resolution: {integrity: sha512-ZRpmWyuCdg0TtNKk8bEqvm13oQvXMmzXDsfD4cBgcx5LouborvU5pm3JMkdTP3HcszyUI08AM1dHMXA5r2g6Sg==} + engines: {node: '>= 0.3.0'} + + stream-composer@1.0.2: + resolution: {integrity: sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==} + + stream-exhaust@1.0.2: + resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==} + + stream-throttle@0.1.3: + resolution: {integrity: sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==} + engines: {node: '>= 0.10.0'} + hasBin: true + + streamx@2.22.1: + resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-template@0.2.1: + resolution: {integrity: sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==} + + string-template@1.0.0: + resolution: {integrity: sha512-SLqR3GBUXuoPP5MmYtD7ompvXiG87QjT6lzOszyXjTM86Uu7At7vNnt2xgyTLq5o9T4IxTYFyGxcULqpsmsfdg==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringstream@0.0.6: + resolution: {integrity: sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==} + + stringz@2.1.0: + resolution: {integrity: sha512-KlywLT+MZ+v0IRepfMxRtnSvDCMc3nR1qqCs3m/qIbSOWkNZYT8XHQA31rS3TnKp0c5xjZu3M4GY/2aRKSi/6A==} + + strip-ansi@0.3.0: + resolution: {integrity: sha512-DerhZL7j6i6/nEnVG0qViKXI0OKouvvpsAiaj7c+LfqZZZxdwZtv8+UiA/w4VUJpT8UzX0pR1dcHOii1GbmruQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom-buf@3.0.1: + resolution: {integrity: sha512-iJaWw2WroigLHzQysdc5WWeUc99p7ea7AEgB6JkY8CMyiO1yTVAA1gIlJJgORElUIR+lcZJkNl1OGChMhvc2Cw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + strip-bom-stream@5.0.0: + resolution: {integrity: sha512-Yo472mU+3smhzqeKlIxClre4s4pwtYZEvDNQvY/sJpnChdaxmKuwU28UVx/v1ORKNMxkmj1GBuvxJQyBk6wYMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + strip-bom@2.0.0: + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} + engines: {node: '>=0.10.0'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-indent@1.0.1: + resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} + engines: {node: '>=0.10.0'} + hasBin: true + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stylehacks@7.0.5: + resolution: {integrity: sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + stylelint-config-recommended@16.0.0: + resolution: {integrity: sha512-4RSmPjQegF34wNcK1e1O3Uz91HN8P1aFdFzio90wNK9mjgAI19u5vsU868cVZboKzCaa5XbpvtTzAAGQAxpcXA==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.16.0 + + stylelint-config-standard@38.0.0: + resolution: {integrity: sha512-uj3JIX+dpFseqd/DJx8Gy3PcRAJhlEZ2IrlFOc4LUxBX/PNMEQ198x7LCOE2Q5oT9Vw8nyc4CIL78xSqPr6iag==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.18.0 + + stylelint@16.20.0: + resolution: {integrity: sha512-B5Myu9WRxrgKuLs3YyUXLP2H0mrbejwNxPmyADlACWwFsrL8Bmor/nTSh4OMae5sHjOz6gkSeccQH34gM4/nAw==} + engines: {node: '>=18.12.0'} + hasBin: true + + stylus@0.62.0: + resolution: {integrity: sha512-v3YCf31atbwJQIMtPNX8hcQ+okD4NQaTuKGUWfII8eaqn+3otrbttGL1zSMZAAtiPsBztQnujVBugg/cXFUpyg==} + hasBin: true + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@0.2.0: + resolution: {integrity: sha512-tdCZ28MnM7k7cJDJc7Eq80A9CsRFAAOZUy41npOZCs++qSjfIy7o5Rh46CBk+Dk5FbKJ33X3Tqg4YrV07N5RaA==} + engines: {node: '>=0.10.0'} + hasBin: true + + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + sver@1.8.4: + resolution: {integrity: sha512-71o1zfzyawLfIWBOmw8brleKyvnbn73oVHNCsu51uPMz/HWiKkkXsI31JjHW5zqXEqnPYkIiHd8ZmL7FCimLEA==} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true + + teex@1.0.1: + resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + + terser@5.43.0: + resolution: {integrity: sha512-CqNNxKSGKSZCunSvwKLTs8u8sGGlp27sxNZ4quGh0QeNuyHM0JSEM/clM9Mf4zUp6J+tO2gUXhgXT2YMMkwfKQ==} + engines: {node: '>=10'} + hasBin: true + + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + textextensions@3.3.0: + resolution: {integrity: sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==} + engines: {node: '>=8'} + + thenby@1.3.4: + resolution: {integrity: sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through2@0.5.1: + resolution: {integrity: sha512-zexCrAOTbjkBCXGyozn7hhS3aEaqdrc59mAD2E3dKYzV1vFuEGQ1hEDJN2oQMQFwy4he2zyLqPZV+AlfS8ZWJA==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through2@3.0.1: + resolution: {integrity: sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tildify@2.0.0: + resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} + engines: {node: '>=8'} + + time-stamp@1.1.0: + resolution: {integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==} + engines: {node: '>=0.10.0'} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + titlecase@1.1.3: + resolution: {integrity: sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==} + hasBin: true + + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + + to-through@3.0.0: + resolution: {integrity: sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==} + engines: {node: '>=10.13.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + + trim-newlines@1.0.0: + resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==} + engines: {node: '>=0.10.0'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel-agent@0.4.3: + resolution: {integrity: sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + typedarray@0.0.7: + resolution: {integrity: sha512-ueeb9YybpjhivjbHP2LdFDAjbS948fGEPj+ACAMs4xCMmh72OCOMQWBQKlaN4ZNQ04yfLSDLSx1tGRIoWimObQ==} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@1.0.40: + resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} + hasBin: true + + uberproto@1.2.0: + resolution: {integrity: sha512-pGtPAQmLwh+R9w81WVHzui1FfedpQWQpiaIIfPCwhtsBez4q6DYbJFfyXPVHPUTNFnedAvNEnkoFiLuhXIR94w==} + + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + + uglify-js@3.4.10: + resolution: {integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==} + engines: {node: '>=0.8.0'} + hasBin: true + + unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} + + underscore@1.13.7: + resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} + + undertaker-registry@2.0.0: + resolution: {integrity: sha512-+hhVICbnp+rlzZMgxXenpvTxpuvA67Bfgtt+O9WOE5jo7w/dyiF1VmoZVIHvP2EkUjsyKyTwYKlLhA+j47m1Ew==} + engines: {node: '>= 10.13.0'} + + undertaker@2.0.0: + resolution: {integrity: sha512-tO/bf30wBbTsJ7go80j0RzA2rcwX6o7XPBpeFcb+jzoeb4pfMM2zUeSDIkY1AWqeZabWxaQZ/h8N9t35QKDLPQ==} + engines: {node: '>=10.13.0'} + + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + + undici@7.10.0: + resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==} + engines: {node: '>=20.18.1'} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + + v8flags@4.0.1: + resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==} + engines: {node: '>= 10.13.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validator@13.15.15: + resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} + engines: {node: '>= 0.10'} + + value-or-function@4.0.0: + resolution: {integrity: sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==} + engines: {node: '>= 10.13.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + vinyl-bufferstream@1.0.1: + resolution: {integrity: sha512-yCCIoTf26Q9SQ0L9cDSavSL7Nt6wgQw8TU1B/bb9b9Z4A3XTypXCGdc5BvXl4ObQvVY8JrDkFnWa/UqBqwM2IA==} + + vinyl-contents@2.0.0: + resolution: {integrity: sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==} + engines: {node: '>=10.13.0'} + + vinyl-file@5.0.0: + resolution: {integrity: sha512-MvkPF/yA1EX7c6p+juVIvp9+Lxp70YUfNKzEWeHMKpUNVSnTZh2coaOqLxI0pmOe2V9nB+OkgFaMDkodaJUyGw==} + engines: {node: '>=14.16'} + + vinyl-fs@4.0.2: + resolution: {integrity: sha512-XRFwBLLTl8lRAOYiBqxY279wY46tVxLaRhSwo3GzKEuLz1giffsOquWWboD/haGf5lx+JyTigCFfe7DWHoARIA==} + engines: {node: '>=10.13.0'} + + vinyl-sourcemap@2.0.0: + resolution: {integrity: sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==} + engines: {node: '>=10.13.0'} + + vinyl-sourcemaps-apply@0.2.1: + resolution: {integrity: sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==} + + vinyl@0.2.3: + resolution: {integrity: sha512-4gFk9xrecazOTuFKcUYrE1TjHSYL63dio72D+q0d1mHF51FEcxTT2RHFpHbN5TNJgmPYHuVsBdhvXEOCDcytSA==} + engines: {node: '>= 0.9'} + + vinyl@0.5.3: + resolution: {integrity: sha512-P5zdf3WB9uzr7IFoVQ2wZTmUwHL8cMZWJGzLBNCHNZ3NB6HTMsYABtt7z8tAGIINLXyAob9B9a1yzVGMFOYKEA==} + engines: {node: '>= 0.9'} + + vinyl@2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} + + vinyl@3.0.1: + resolution: {integrity: sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA==} + engines: {node: '>=10.13.0'} + + warehouse@5.0.1: + resolution: {integrity: sha512-5BQEQP56bPY+cqocTho4syazuGgSoyKd0y3PsS2j8tGN10HH+CEfJSIY+KUw9D0k4jaVEFMXLz0KqCiUzTYb8A==} + engines: {node: '>=14'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xmlhttprequest-ssl@2.1.2: + resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} + engines: {node: '>=0.4.0'} + + xtend@3.0.0: + resolution: {integrity: sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==} + engines: {node: '>=0.4'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.1.1: + resolution: {integrity: sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + + zlibjs@0.3.1: + resolution: {integrity: sha512-+J9RrgTKOmlxFSDHo0pI1xM6BLVUv+o0ZT9ANtCxGkjIVCCUdx9alUF8Gm+dGLKbkkkidWIHFDZHDMpfITt4+w==} + +snapshots: + + '@adobe/css-tools@4.3.3': {} + + '@alloc/quick-lru@5.2.0': {} + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-validator-identifier@7.27.1': {} + + '@commitlint/cli@19.8.1(@types/node@24.0.3)(typescript@5.8.3)': + dependencies: + '@commitlint/format': 19.8.1 + '@commitlint/lint': 19.8.1 + '@commitlint/load': 19.8.1(@types/node@24.0.3)(typescript@5.8.3) + '@commitlint/read': 19.8.1 + '@commitlint/types': 19.8.1 + tinyexec: 1.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + ajv: 8.17.1 + + '@commitlint/ensure@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.8.1': {} + + '@commitlint/format@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + chalk: 5.4.1 + + '@commitlint/is-ignored@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + semver: 7.7.2 + + '@commitlint/lint@19.8.1': + dependencies: + '@commitlint/is-ignored': 19.8.1 + '@commitlint/parse': 19.8.1 + '@commitlint/rules': 19.8.1 + '@commitlint/types': 19.8.1 + + '@commitlint/load@19.8.1(@types/node@24.0.3)(typescript@5.8.3)': + dependencies: + '@commitlint/config-validator': 19.8.1 + '@commitlint/execute-rule': 19.8.1 + '@commitlint/resolve-extends': 19.8.1 + '@commitlint/types': 19.8.1 + chalk: 5.4.1 + cosmiconfig: 9.0.0(typescript@5.8.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@24.0.3)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@19.8.1': {} + + '@commitlint/parse@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.8.1': + dependencies: + '@commitlint/top-level': 19.8.1 + '@commitlint/types': 19.8.1 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 1.0.1 + + '@commitlint/resolve-extends@19.8.1': + dependencies: + '@commitlint/config-validator': 19.8.1 + '@commitlint/types': 19.8.1 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@19.8.1': + dependencies: + '@commitlint/ensure': 19.8.1 + '@commitlint/message': 19.8.1 + '@commitlint/to-lines': 19.8.1 + '@commitlint/types': 19.8.1 + + '@commitlint/to-lines@19.8.1': {} + + '@commitlint/top-level@19.8.1': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.8.1': + dependencies: + '@types/conventional-commits-parser': 5.0.1 + chalk: 5.4.1 + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-tokenizer@3.0.4': {} + + '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@dual-bundle/import-meta-resolve@4.1.0': {} + + '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0(jiti@2.4.2))': + dependencies: + eslint: 9.29.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.1': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.3': {} + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.15.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.29.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.3.2': + dependencies: + '@eslint/core': 0.15.0 + levn: 0.4.1 + + '@gulpjs/messages@1.1.0': {} + + '@gulpjs/to-absolute-glob@4.0.0': + dependencies: + is-negated-glob: 1.0.0 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@javascript-obfuscator/escodegen@2.3.0': + dependencies: + '@javascript-obfuscator/estraverse': 5.4.0 + esprima: 4.0.1 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + + '@javascript-obfuscator/estraverse@5.4.0': {} + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@keyv/serialize@1.0.3': + dependencies: + buffer: 6.0.3 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@socket.io/component-emitter@3.1.2': {} + + '@trysound/sax@0.2.0': {} + + '@types/conventional-commits-parser@5.0.1': + dependencies: + '@types/node': 24.0.3 + + '@types/cors@2.8.19': + dependencies: + '@types/node': 24.0.3 + + '@types/estree@1.0.8': {} + + '@types/expect@1.20.4': {} + + '@types/json-schema@7.0.15': {} + + '@types/linkify-it@5.0.0': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdurl@2.0.0': {} + + '@types/minimatch@3.0.5': {} + + '@types/node@24.0.3': + dependencies: + undici-types: 7.8.0 + + '@types/validator@13.15.2': {} + + '@types/vinyl@2.0.12': + dependencies: + '@types/expect': 1.20.4 + '@types/node': 24.0.3 + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + a-sync-waterfall@1.0.1: {} + + abbrev@2.0.0: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + acorn@8.8.2: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + amdefine@1.0.1: {} + + ansi-colors@1.1.0: + dependencies: + ansi-wrap: 0.1.0 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + + ansi-gray@0.1.1: + dependencies: + ansi-wrap: 0.1.0 + + ansi-regex@0.2.1: {} + + ansi-regex@2.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@1.1.0: {} + + ansi-styles@2.2.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + ansi-wrap@0.1.0: {} + + any-promise@1.3.0: {} + + anymatch@1.3.2: + dependencies: + micromatch: 2.3.11 + normalize-path: 2.1.1 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + archy@1.0.0: {} + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + arr-diff@2.0.0: + dependencies: + arr-flatten: 1.1.0 + + arr-diff@4.0.0: {} + + arr-flatten@1.1.0: {} + + arr-union@3.1.0: {} + + array-differ@1.0.0: {} + + array-differ@3.0.0: {} + + array-each@1.0.1: {} + + array-find-index@1.0.2: {} + + array-ify@1.0.0: {} + + array-slice@1.1.0: {} + + array-union@2.1.0: {} + + array-uniq@1.0.3: {} + + array-unique@0.2.1: {} + + array-unique@0.3.2: {} + + arrify@2.0.1: {} + + asap@2.0.6: {} + + asn1@0.1.11: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@0.1.5: {} + + assert-plus@1.0.0: {} + + assert@2.0.0: + dependencies: + es6-object-assign: 1.1.0 + is-nan: 1.3.2 + object-is: 1.1.6 + util: 0.12.5 + + assign-symbols@1.0.0: {} + + astral-regex@2.0.0: {} + + async-done@2.0.0: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + stream-exhaust: 1.0.2 + + async-each-series@0.1.1: {} + + async-each@1.0.6: {} + + async-settle@2.0.0: + dependencies: + async-done: 2.0.0 + + async@0.9.2: {} + + async@2.6.4: + dependencies: + lodash: 4.17.21 + + async@3.2.6: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + atob@2.1.2: {} + + autoprefixer@10.4.21(postcss@8.5.6): + dependencies: + browserslist: 4.25.0 + caniuse-lite: 1.0.30001723 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + aws-sign2@0.5.0: {} + + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + axios@0.21.4(debug@4.3.2): + dependencies: + follow-redirects: 1.15.9(debug@4.3.2) + transitivePeerDependencies: + - debug + + b4a@1.6.7: {} + + bach@2.0.1: + dependencies: + async-done: 2.0.0 + async-settle: 2.0.0 + now-and-later: 3.0.0 + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + bare-events@2.5.4: + optional: true + + base64-js@1.5.1: {} + + base64id@2.0.0: {} + + base64url@0.0.6: {} + + base64url@1.0.6: + dependencies: + concat-stream: 1.4.11 + meow: 2.0.0 + + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + + batch@0.6.1: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + beeper@1.1.1: {} + + binary-extensions@1.13.1: {} + + binary-extensions@2.3.0: {} + + binaryextensions@2.3.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + optional: true + + bl@0.9.5: + dependencies: + readable-stream: 1.0.34 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bl@5.1.0: + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird@3.7.2: {} + + boolbase@1.0.0: {} + + boom@0.4.2: + dependencies: + hoek: 0.9.1 + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@1.8.5: + dependencies: + expand-range: 1.8.2 + preserve: 0.2.0 + repeat-element: 1.1.4 + + braces@2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-sync-client@2.29.3: + dependencies: + etag: 1.8.1 + fresh: 0.5.2 + mitt: 1.2.0 + + browser-sync-ui@2.29.3: + dependencies: + async-each-series: 0.1.1 + chalk: 4.1.2 + connect-history-api-fallback: 1.6.0 + immutable: 3.8.2 + server-destroy: 1.0.1 + socket.io-client: 4.8.1 + stream-throttle: 0.1.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + browser-sync@2.29.3: + dependencies: + browser-sync-client: 2.29.3 + browser-sync-ui: 2.29.3 + bs-recipes: 1.3.4 + chalk: 4.1.2 + chokidar: 3.6.0 + connect: 3.6.6 + connect-history-api-fallback: 1.6.0 + dev-ip: 1.0.1 + easy-extender: 2.3.4 + eazy-logger: 4.1.0 + etag: 1.8.1 + fresh: 0.5.2 + fs-extra: 3.0.1 + http-proxy: 1.18.1 + immutable: 3.8.2 + localtunnel: 2.0.2 + micromatch: 4.0.8 + opn: 5.3.0 + portscanner: 2.2.0 + raw-body: 2.5.2 + resp-modifier: 6.0.2 + rx: 4.1.0 + send: 0.16.2 + serve-index: 1.9.1 + serve-static: 1.13.2 + server-destroy: 1.0.1 + socket.io: 4.8.1 + ua-parser-js: 1.0.40 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + browserslist@4.25.0: + dependencies: + caniuse-lite: 1.0.30001723 + electron-to-chromium: 1.5.169 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.25.0) + + bs-recipes@1.3.4: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bufferstreams@1.0.1: + dependencies: + readable-stream: 1.1.14 + + bytes@3.1.2: {} + + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + + cacheable@1.10.0: + dependencies: + hookified: 1.9.1 + keyv: 5.3.4 + + cachedir@2.3.0: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camel-case@3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + camelcase-css@2.0.1: {} + + camelcase-keys@1.0.0: + dependencies: + camelcase: 1.2.1 + map-obj: 1.0.1 + + camelcase-keys@2.1.0: + dependencies: + camelcase: 2.1.1 + map-obj: 1.0.1 + + camelcase@1.2.1: {} + + camelcase@2.1.1: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.25.0 + caniuse-lite: 1.0.30001723 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001723: {} + + caseless@0.12.0: {} + + caseless@0.8.0: {} + + chalk@0.5.1: + dependencies: + ansi-styles: 1.1.0 + escape-string-regexp: 1.0.5 + has-ansi: 0.1.0 + strip-ansi: 0.3.0 + supports-color: 0.2.0 + + chalk@1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.4.1: {} + + chance@1.1.9: {} + + char-regex@1.0.2: {} + + chardet@0.7.0: {} + + charenc@0.0.2: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + + cheerio@1.1.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + encoding-sniffer: 0.2.1 + htmlparser2: 10.0.0 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 7.10.0 + whatwg-mimetype: 4.0.0 + + chokidar@1.7.0: + dependencies: + anymatch: 1.3.2 + async-each: 1.0.6 + glob-parent: 2.0.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 2.0.1 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + + class-validator@0.14.1: + dependencies: + '@types/validator': 13.15.2 + libphonenumber-js: 1.12.9 + validator: 13.15.15 + + clean-css@3.4.28: + dependencies: + commander: 2.8.1 + source-map: 0.4.4 + + clean-css@4.2.3: + dependencies: + source-map: 0.6.1 + + clean-css@4.2.4: + dependencies: + source-map: 0.6.1 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cli-table@0.3.11: + dependencies: + colors: 1.0.3 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cli-width@3.0.0: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-buffer@1.0.0: {} + + clone-stats@0.0.1: {} + + clone-stats@1.0.0: {} + + clone@1.0.4: {} + + clone@2.1.2: {} + + cloneable-readable@1.1.3: + dependencies: + inherits: 2.0.4 + process-nextick-args: 2.0.1 + readable-stream: 2.3.8 + + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-support@1.1.3: {} + + colord@2.9.3: {} + + colorette@2.0.20: {} + + colors@1.0.3: {} + + columnify@1.6.0: + dependencies: + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + combined-stream@0.0.7: + dependencies: + delayed-stream: 0.0.5 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + command-exists@1.2.9: {} + + commander@10.0.0: {} + + commander@14.0.0: {} + + commander@2.17.1: {} + + commander@2.19.0: {} + + commander@2.20.3: {} + + commander@2.8.1: + dependencies: + graceful-readlink: 1.0.1 + + commander@4.1.1: {} + + commander@5.1.0: {} + + commander@7.2.0: {} + + commitizen@4.3.1(@types/node@24.0.3)(typescript@5.8.3): + dependencies: + cachedir: 2.3.0 + cz-conventional-changelog: 3.3.0(@types/node@24.0.3)(typescript@5.8.3) + dedent: 0.7.0 + detect-indent: 6.1.0 + find-node-modules: 2.1.3 + find-root: 1.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + inquirer: 8.2.5 + is-utf8: 0.2.1 + lodash: 4.17.21 + minimist: 1.2.7 + strip-bom: 4.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - '@types/node' + - typescript + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + component-emitter@1.3.1: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.0: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.0.2 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + concat-stream@1.4.11: + dependencies: + inherits: 2.0.4 + readable-stream: 1.1.14 + typedarray: 0.0.7 + + connect-history-api-fallback@1.6.0: {} + + connect-injector@0.4.4: + dependencies: + debug: 2.6.9 + q: 1.5.1 + stream-buffers: 0.2.6 + uberproto: 1.2.0 + transitivePeerDependencies: + - supports-color + + connect@3.6.6: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.0 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-commit-types@3.0.0: {} + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + + convert-source-map@2.0.0: {} + + cookie@0.7.2: {} + + copy-descriptor@0.1.1: {} + + copy-props@4.0.0: + dependencies: + each-props: 3.0.0 + is-plain-object: 5.0.0 + + core-util-is@1.0.2: {} + + core-util-is@1.0.3: {} + + cors@2.8.5: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig-typescript-loader@6.1.0(@types/node@24.0.3)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3): + dependencies: + '@types/node': 24.0.3 + cosmiconfig: 9.0.0(typescript@5.8.3) + jiti: 2.4.2 + typescript: 5.8.3 + + cosmiconfig@9.0.0(typescript@5.8.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.8.3 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypt@0.0.2: {} + + cryptiles@0.2.2: + dependencies: + boom: 0.4.2 + + css-declaration-sorter@7.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + css-functions-list@3.2.3: {} + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + cssnano-preset-default@7.0.7(postcss@8.5.6): + dependencies: + browserslist: 4.25.0 + css-declaration-sorter: 7.2.0(postcss@8.5.6) + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 10.1.1(postcss@8.5.6) + postcss-colormin: 7.0.3(postcss@8.5.6) + postcss-convert-values: 7.0.5(postcss@8.5.6) + postcss-discard-comments: 7.0.4(postcss@8.5.6) + postcss-discard-duplicates: 7.0.2(postcss@8.5.6) + postcss-discard-empty: 7.0.1(postcss@8.5.6) + postcss-discard-overridden: 7.0.1(postcss@8.5.6) + postcss-merge-longhand: 7.0.5(postcss@8.5.6) + postcss-merge-rules: 7.0.5(postcss@8.5.6) + postcss-minify-font-values: 7.0.1(postcss@8.5.6) + postcss-minify-gradients: 7.0.1(postcss@8.5.6) + postcss-minify-params: 7.0.3(postcss@8.5.6) + postcss-minify-selectors: 7.0.5(postcss@8.5.6) + postcss-normalize-charset: 7.0.1(postcss@8.5.6) + postcss-normalize-display-values: 7.0.1(postcss@8.5.6) + postcss-normalize-positions: 7.0.1(postcss@8.5.6) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) + postcss-normalize-string: 7.0.1(postcss@8.5.6) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) + postcss-normalize-unicode: 7.0.3(postcss@8.5.6) + postcss-normalize-url: 7.0.1(postcss@8.5.6) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) + postcss-ordered-values: 7.0.2(postcss@8.5.6) + postcss-reduce-initial: 7.0.3(postcss@8.5.6) + postcss-reduce-transforms: 7.0.1(postcss@8.5.6) + postcss-svgo: 7.0.2(postcss@8.5.6) + postcss-unique-selectors: 7.0.4(postcss@8.5.6) + + cssnano-utils@5.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + cssnano@7.0.7(postcss@8.5.6): + dependencies: + cssnano-preset-default: 7.0.7(postcss@8.5.6) + lilconfig: 3.1.3 + postcss: 8.5.6 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + + ctype@0.5.3: {} + + cuid@2.1.8: {} + + currently-unhandled@0.4.1: + dependencies: + array-find-index: 1.0.2 + + cz-conventional-changelog@3.3.0(@types/node@24.0.3)(typescript@5.8.3): + dependencies: + chalk: 2.4.2 + commitizen: 4.3.1(@types/node@24.0.3)(typescript@5.8.3) + conventional-commit-types: 3.0.0 + lodash.map: 4.6.0 + longest: 2.0.1 + word-wrap: 1.2.5 + optionalDependencies: + '@commitlint/load': 19.8.1(@types/node@24.0.3)(typescript@5.8.3) + transitivePeerDependencies: + - '@types/node' + - typescript + + dargs@8.1.0: {} + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + dateformat@1.0.12: + dependencies: + get-stdin: 4.0.1 + meow: 3.7.0 + + dateformat@2.2.0: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.2: + dependencies: + ms: 2.1.2 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decode-uri-component@0.2.2: {} + + dedent@0.7.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.7 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + + delayed-stream@0.0.5: {} + + delayed-stream@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + dependency-graph@1.0.0: {} + + destroy@1.0.4: {} + + destroy@1.2.0: {} + + detect-file@1.0.0: {} + + detect-indent@6.1.0: {} + + dev-ip@1.0.1: {} + + didyoumean@1.2.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + doublearray@0.0.2: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer2@0.0.2: + dependencies: + readable-stream: 1.1.14 + + each-props@3.0.0: + dependencies: + is-plain-object: 5.0.0 + object.defaults: 1.1.0 + + eastasianwidth@0.2.0: {} + + easy-extender@2.3.4: + dependencies: + lodash: 4.17.21 + + easy-transform-stream@1.0.1: {} + + eazy-logger@4.1.0: + dependencies: + chalk: 4.1.2 + + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + ee-first@1.1.1: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.169: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + encoding-sniffer@0.2.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + engine.io-client@6.6.3: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + xmlhttprequest-ssl: 2.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + engine.io-parser@5.2.3: {} + + engine.io@6.6.4: + dependencies: + '@types/cors': 2.8.19 + '@types/node': 24.0.3 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.7.2 + cors: 2.8.5 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + entities@2.0.3: {} + + entities@2.2.0: {} + + entities@3.0.1: {} + + entities@4.5.0: {} + + entities@6.0.1: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es6-object-assign@1.1.0: {} + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@10.1.5(eslint@9.29.0(jiti@2.4.2)): + dependencies: + eslint: 9.29.0(jiti@2.4.2) + + eslint-scope@7.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.3.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.29.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.1 + '@eslint/config-helpers': 0.2.3 + '@eslint/core': 0.14.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.29.0 + '@eslint/plugin-kit': 0.3.2 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + expand-brackets@0.1.5: + dependencies: + is-posix-bracket: 0.1.1 + + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + expand-range@1.8.2: + dependencies: + fill-range: 2.2.4 + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extglob@0.3.2: + dependencies: + is-extglob: 1.0.0 + + extglob@2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + extsprintf@1.3.0: {} + + fancy-log@1.3.3: + dependencies: + ansi-gray: 0.1.1 + color-support: 1.1.3 + parse-node-version: 1.0.1 + time-stamp: 1.1.0 + + fancy-log@2.0.0: + dependencies: + color-support: 1.1.3 + + fast-deep-equal@3.1.3: {} + + fast-equals@3.0.3: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-levenshtein@3.0.0: + dependencies: + fastest-levenshtein: 1.0.16 + + fast-uri@3.0.6: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.4.6(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@10.1.1: + dependencies: + flat-cache: 6.1.10 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-uri-to-path@1.0.0: + optional: true + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + filename-regex@2.0.1: {} + + filesize@2.0.4: {} + + fill-range@2.2.4: + dependencies: + is-number: 2.1.0 + isobject: 2.1.0 + randomatic: 3.1.1 + repeat-element: 1.1.4 + repeat-string: 1.6.1 + + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.1.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.3.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-node-modules@2.1.3: + dependencies: + findup-sync: 4.0.0 + merge: 2.1.1 + + find-root@1.1.0: {} + + find-up@1.1.2: + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + findup-sync@4.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.8 + resolve-dir: 1.0.1 + + findup-sync@5.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.8 + resolve-dir: 1.0.1 + + fined@2.0.0: + dependencies: + expand-tilde: 2.0.2 + is-plain-object: 5.0.0 + object.defaults: 1.1.0 + object.pick: 1.3.0 + parse-filepath: 1.0.2 + + first-chunk-stream@5.0.0: {} + + flagged-respawn@2.0.0: {} + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flat-cache@6.1.10: + dependencies: + cacheable: 1.10.0 + flatted: 3.3.3 + hookified: 1.9.1 + + flatted@3.3.3: {} + + follow-redirects@1.15.9(debug@4.3.2): + optionalDependencies: + debug: 4.3.2 + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + for-in@1.0.2: {} + + for-own@0.1.5: + dependencies: + for-in: 1.0.2 + + for-own@1.0.0: + dependencies: + for-in: 1.0.2 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forever-agent@0.5.2: {} + + forever-agent@0.6.1: {} + + form-data@0.2.0: + dependencies: + async: 0.9.2 + combined-stream: 0.0.7 + mime-types: 2.0.14 + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fraction.js@4.3.7: {} + + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + + fresh@0.5.2: {} + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@3.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 3.0.1 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-mkdirp-stream@2.0.1: + dependencies: + graceful-fs: 4.2.11 + streamx: 2.22.1 + + fs-path@0.0.24: + dependencies: + async: 0.9.2 + + fs.realpath@1.0.0: {} + + fsevents@1.2.13: + dependencies: + bindings: 1.5.0 + nan: 2.22.2 + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + ga-analytics@0.0.7: + dependencies: + cli-table: 0.3.11 + commander: 2.20.3 + googleapis: 1.1.5 + lodash: 2.4.2 + moment: 2.30.1 + + gapitoken@0.1.5: + dependencies: + jws: 3.0.0 + request: 2.88.2 + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stdin@4.0.1: {} + + get-value@2.0.6: {} + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + glob-base@0.3.0: + dependencies: + glob-parent: 2.0.0 + is-glob: 2.0.1 + + glob-parent@2.0.0: + dependencies: + is-glob: 2.0.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-stream@8.0.3: + dependencies: + '@gulpjs/to-absolute-glob': 4.0.0 + anymatch: 3.1.3 + fastq: 1.19.1 + glob-parent: 6.0.2 + is-glob: 4.0.3 + is-negated-glob: 1.0.0 + normalize-path: 3.0.0 + streamx: 2.22.1 + + glob-watcher@6.0.0: + dependencies: + async-done: 2.0.0 + chokidar: 3.6.0 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@14.0.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globjoin@0.1.4: {} + + glogg@1.0.2: + dependencies: + sparkles: 1.0.1 + + glogg@2.2.0: + dependencies: + sparkles: 2.1.0 + + googleapis@1.1.5: + dependencies: + async: 0.9.2 + gapitoken: 0.1.5 + request: 2.51.0 + string-template: 0.2.1 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graceful-readlink@1.0.1: {} + + gulp-clean-css@4.3.0: + dependencies: + clean-css: 4.2.3 + plugin-error: 1.0.1 + through2: 3.0.1 + vinyl-sourcemaps-apply: 0.2.1 + + gulp-cli@3.1.0: + dependencies: + '@gulpjs/messages': 1.1.0 + chalk: 4.1.2 + copy-props: 4.0.0 + gulplog: 2.2.0 + interpret: 3.1.1 + liftoff: 5.0.1 + mute-stdout: 2.0.0 + replace-homedir: 2.0.0 + semver-greatest-satisfied-range: 2.0.0 + string-width: 4.2.3 + v8flags: 4.0.1 + yargs: 16.2.0 + + gulp-ext-replace@0.3.0: + dependencies: + through2: 2.0.5 + + gulp-filesize@0.0.6: + dependencies: + filesize: 2.0.4 + gulp-util: 2.2.20 + map-stream: 0.0.7 + + gulp-htmlclean@2.7.22: + dependencies: + htmlclean: 3.0.8 + plugin-error: 1.0.1 + through2: 2.0.5 + + gulp-htmlmin@5.0.1: + dependencies: + html-minifier: 3.5.21 + plugin-error: 1.0.1 + through2: 2.0.5 + + gulp-javascript-obfuscator@1.1.6: + dependencies: + javascript-obfuscator: 4.1.1 + plugin-error: 1.0.1 + through2: 2.0.5 + vinyl: 2.2.1 + + gulp-minify-css@1.2.4: + dependencies: + clean-css: 3.4.28 + gulp-util: 3.0.8 + object-assign: 4.1.1 + readable-stream: 2.3.8 + vinyl-bufferstream: 1.0.1 + vinyl-sourcemaps-apply: 0.2.1 + + gulp-plugin-extras@0.3.0: + dependencies: + '@types/vinyl': 2.0.12 + chalk: 5.4.1 + easy-transform-stream: 1.0.1 + + gulp-postcss@10.0.0(jiti@2.4.2)(postcss@8.5.6): + dependencies: + fancy-log: 2.0.0 + plugin-error: 2.0.1 + postcss: 8.5.6 + postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.5.6) + vinyl-sourcemaps-apply: 0.2.1 + transitivePeerDependencies: + - jiti + - tsx + + gulp-replace@1.1.4: + dependencies: + '@types/node': 24.0.3 + '@types/vinyl': 2.0.12 + istextorbinary: 3.3.0 + replacestream: 4.0.3 + yargs-parser: 22.0.0 + + gulp-rev@11.0.0(gulp@5.0.1): + dependencies: + gulp-plugin-extras: 0.3.0 + modify-filename: 2.0.0 + rev-hash: 4.1.0 + rev-path: 3.0.0 + sort-keys: 5.1.0 + vinyl: 3.0.1 + vinyl-file: 5.0.0 + optionalDependencies: + gulp: 5.0.1 + + gulp-terser@2.1.0: + dependencies: + plugin-error: 1.0.1 + terser: 5.43.0 + through2: 4.0.2 + vinyl-sourcemaps-apply: 0.2.1 + + gulp-uglify-es@3.0.0: + dependencies: + o-stream: 0.3.0 + plugin-error: 1.0.1 + terser: 5.43.0 + vinyl: 2.2.1 + vinyl-sourcemaps-apply: 0.2.1 + + gulp-util@2.2.20: + dependencies: + chalk: 0.5.1 + dateformat: 1.0.12 + lodash._reinterpolate: 2.4.1 + lodash.template: 2.4.1 + minimist: 0.2.4 + multipipe: 0.1.2 + through2: 0.5.1 + vinyl: 0.2.3 + + gulp-util@3.0.8: + dependencies: + array-differ: 1.0.0 + array-uniq: 1.0.3 + beeper: 1.1.1 + chalk: 1.1.3 + dateformat: 2.2.0 + fancy-log: 1.3.3 + gulplog: 1.0.0 + has-gulplog: 0.1.0 + lodash._reescape: 3.0.0 + lodash._reevaluate: 3.0.0 + lodash._reinterpolate: 3.0.0 + lodash.template: 3.6.2 + minimist: 1.2.8 + multipipe: 0.1.2 + object-assign: 3.0.0 + replace-ext: 0.0.1 + through2: 2.0.5 + vinyl: 0.5.3 + + gulp-version-number@0.2.4: + dependencies: + fs-path: 0.0.24 + map-stream: 0.0.7 + + gulp@5.0.1: + dependencies: + glob-watcher: 6.0.0 + gulp-cli: 3.1.0 + undertaker: 2.0.0 + vinyl-fs: 4.0.2 + + gulplog@1.0.0: + dependencies: + glogg: 1.0.2 + + gulplog@2.2.0: + dependencies: + glogg: 2.2.0 + + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + + has-ansi@0.1.0: + dependencies: + ansi-regex: 0.2.1 + + has-ansi@2.0.0: + dependencies: + ansi-regex: 2.1.1 + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-gulplog@0.1.0: + dependencies: + sparkles: 1.0.1 + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + + hasha@3.0.0: + dependencies: + is-stream: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hawk@1.1.1: + dependencies: + boom: 0.4.2 + cryptiles: 0.2.2 + hoek: 0.9.1 + sntp: 0.2.4 + + he@1.2.0: {} + + hexo-browsersync@0.3.0: + dependencies: + browser-sync: 2.29.3 + connect-injector: 0.4.4 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + hexo-cli@4.3.2: + dependencies: + abbrev: 2.0.0 + bluebird: 3.7.2 + command-exists: 1.2.9 + hexo-fs: 4.1.3 + hexo-log: 4.1.0 + hexo-util: 3.3.0 + minimist: 1.2.8 + picocolors: 1.1.1 + resolve: 1.22.10 + tildify: 2.0.0 + + hexo-excerpt@1.3.1: + dependencies: + css-select: 4.3.0 + dom-serializer: 1.4.1 + domutils: 2.8.0 + htmlparser2: 6.1.0 + lodash.defaults: 4.2.0 + + hexo-filter-nofollow@2.0.2: {} + + hexo-front-matter@4.2.1: + dependencies: + js-yaml: 4.1.0 + + hexo-fs@0.2.3: + dependencies: + bluebird: 3.7.2 + chokidar: 1.7.0 + escape-string-regexp: 1.0.5 + graceful-fs: 4.2.11 + transitivePeerDependencies: + - supports-color + + hexo-fs@4.1.3: + dependencies: + bluebird: 3.7.2 + chokidar: 3.6.0 + graceful-fs: 4.2.11 + hexo-util: 3.3.0 + + hexo-fs@5.0.0: + dependencies: + bluebird: 3.7.2 + chokidar: 4.0.3 + graceful-fs: 4.2.11 + hexo-util: 3.3.0 + + hexo-generator-index@4.0.0: + dependencies: + hexo-pagination: 3.0.0 + + hexo-generator-sitemap@3.0.1(chokidar@3.6.0): + dependencies: + hexo-util: 2.7.0 + micromatch: 4.0.8 + nunjucks: 3.2.4(chokidar@3.6.0) + transitivePeerDependencies: + - chokidar + + hexo-i18n@2.0.0: + dependencies: + sprintf-js: 1.1.3 + + hexo-log@4.1.0: + dependencies: + picocolors: 1.1.1 + + hexo-pagination@3.0.0: {} + + hexo-pagination@4.0.0: {} + + hexo-related-popular-posts@5.0.1: + dependencies: + cheerio: 1.1.0 + columnify: 1.6.0 + ga-analytics: 0.0.7 + hasha: 3.0.0 + hexo-fs: 0.2.3 + kuromoji: 0.1.2 + log-util: 1.2.0 + mkdirp: 0.5.6 + moment: 2.30.1 + transitivePeerDependencies: + - supports-color + + hexo-renderer-ejs@2.0.0: + dependencies: + ejs: 3.1.10 + + hexo-renderer-markdown-it@5.0.0: + dependencies: + hexo-util: 2.7.0 + markdown-it: 11.0.1 + markdown-it-abbr: 1.0.4 + markdown-it-cjk-breaks: 1.1.3 + markdown-it-container: 3.0.0 + markdown-it-deflist: 2.1.0 + markdown-it-emoji: 1.4.0 + markdown-it-footnote: 3.0.3 + markdown-it-ins: 3.0.1 + markdown-it-mark: 3.0.1 + markdown-it-sub: 1.0.0 + markdown-it-sup: 1.0.0 + + hexo-renderer-stylus@3.0.1: + dependencies: + nib: 1.2.0(stylus@0.62.0) + stylus: 0.62.0 + transitivePeerDependencies: + - supports-color + + hexo-server@3.0.0: + dependencies: + bluebird: 3.7.2 + compression: 1.8.0 + connect: 3.7.0 + mime: 3.0.0 + morgan: 1.10.0 + open: 8.4.2 + picocolors: 1.1.1 + serve-static: 1.16.2 + transitivePeerDependencies: + - supports-color + + hexo-util@2.7.0: + dependencies: + bluebird: 3.7.2 + camel-case: 4.1.2 + cross-spawn: 7.0.6 + deepmerge: 4.3.1 + highlight.js: 11.11.1 + htmlparser2: 7.2.0 + prismjs: 1.30.0 + strip-indent: 3.0.0 + + hexo-util@3.3.0: + dependencies: + camel-case: 4.1.2 + cross-spawn: 7.0.6 + deepmerge: 4.3.1 + highlight.js: 11.11.1 + htmlparser2: 9.1.0 + prismjs: 1.30.0 + strip-indent: 3.0.0 + + hexo@7.3.0(chokidar@3.6.0): + dependencies: + abbrev: 2.0.0 + archy: 1.0.0 + bluebird: 3.7.2 + hexo-cli: 4.3.2 + hexo-front-matter: 4.2.1 + hexo-fs: 4.1.3 + hexo-i18n: 2.0.0 + hexo-log: 4.1.0 + hexo-util: 3.3.0 + js-yaml: 4.1.0 + js-yaml-js-types: 1.0.1(js-yaml@4.1.0) + micromatch: 4.0.8 + moize: 6.1.6 + moment: 2.30.1 + moment-timezone: 0.5.48 + nunjucks: 3.2.4(chokidar@3.6.0) + picocolors: 1.1.1 + pretty-hrtime: 1.0.3 + resolve: 1.22.10 + strip-ansi: 6.0.1 + text-table: 0.2.0 + tildify: 2.0.0 + titlecase: 1.1.3 + warehouse: 5.0.1 + transitivePeerDependencies: + - chokidar + + highlight.js@11.11.1: {} + + hoek@0.9.1: {} + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hookified@1.9.1: {} + + hosted-git-info@2.8.9: {} + + html-minifier@3.5.21: + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.4 + commander: 2.17.1 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.4.10 + + html-tags@3.3.1: {} + + htmlclean@3.0.8: {} + + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + htmlparser2@7.2.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 3.0.1 + + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.4.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9(debug@4.3.2) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-signature@0.10.1: + dependencies: + asn1: 0.1.11 + assert-plus: 0.1.5 + ctype: 0.5.3 + + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + husky@9.1.7: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + immutable@3.8.2: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + indent-string@1.2.2: + dependencies: + get-stdin: 4.0.1 + minimist: 1.2.8 + repeating: 1.1.3 + + indent-string@2.1.0: + dependencies: + repeating: 2.0.1 + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.1: {} + + inquirer@8.2.5: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + + interpret@3.1.1: {} + + inversify@6.0.1: {} + + is-absolute@1.0.0: + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-arrayish@0.2.1: {} + + is-binary-path@1.0.1: + dependencies: + binary-extensions: 1.13.1 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-buffer@1.1.6: {} + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-descriptor@0.1.7: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-docker@2.2.1: {} + + is-dotfile@1.0.3: {} + + is-equal-shallow@0.1.3: + dependencies: + is-primitive: 2.0.0 + + is-extendable@0.1.1: {} + + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + + is-extglob@1.0.0: {} + + is-extglob@2.1.1: {} + + is-finite@1.1.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.3.0 + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@2.0.1: + dependencies: + is-extglob: 1.0.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-interactive@1.0.0: {} + + is-nan@1.3.2: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + is-negated-glob@1.0.0: {} + + is-number-like@1.0.8: + dependencies: + lodash.isfinite: 3.3.2 + + is-number@2.1.0: + dependencies: + kind-of: 3.2.2 + + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + + is-number@4.0.0: {} + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-posix-bracket@0.1.1: {} + + is-primitive@2.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-relative@1.0.0: + dependencies: + is-unc-path: 1.0.0 + + is-stream@1.1.0: {} + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-typedarray@1.0.0: {} + + is-unc-path@1.0.0: + dependencies: + unc-path-regex: 0.1.2 + + is-unicode-supported@0.1.0: {} + + is-utf8@0.2.1: {} + + is-valid-glob@1.0.0: {} + + is-windows@1.0.2: {} + + is-wsl@1.1.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isexe@3.1.1: {} + + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + + isobject@3.0.1: {} + + isstream@0.1.2: {} + + istextorbinary@3.3.0: + dependencies: + binaryextensions: 2.3.0 + textextensions: 3.3.0 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + javascript-obfuscator@4.1.1: + dependencies: + '@javascript-obfuscator/escodegen': 2.3.0 + '@javascript-obfuscator/estraverse': 5.4.0 + acorn: 8.8.2 + assert: 2.0.0 + chalk: 4.1.2 + chance: 1.1.9 + class-validator: 0.14.1 + commander: 10.0.0 + eslint-scope: 7.1.1 + eslint-visitor-keys: 3.3.0 + fast-deep-equal: 3.1.3 + inversify: 6.0.1 + js-string-escape: 1.0.1 + md5: 2.3.0 + mkdirp: 2.1.3 + multimatch: 5.0.0 + opencollective-postinstall: 2.0.3 + process: 0.11.10 + reflect-metadata: 0.1.13 + source-map-support: 0.5.21 + string-template: 1.0.0 + stringz: 2.1.0 + tslib: 2.5.0 + + jiti@1.21.7: {} + + jiti@2.4.2: {} + + js-string-escape@1.0.1: {} + + js-tokens@4.0.0: {} + + js-yaml-js-types@1.0.1(js-yaml@4.1.0): + dependencies: + esprima: 4.0.1 + js-yaml: 4.1.0 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@0.1.1: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@4.0.0: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: {} + + jsonfile@3.0.1: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + jwa@1.0.2: + dependencies: + base64url: 0.0.6 + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + + jws@3.0.0: + dependencies: + base64url: 1.0.6 + jwa: 1.0.2 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + keyv@5.3.4: + dependencies: + '@keyv/serialize': 1.0.3 + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@6.0.3: {} + + known-css-properties@0.36.0: {} + + kuromoji@0.1.2: + dependencies: + async: 2.6.4 + doublearray: 0.0.2 + zlibjs: 0.3.1 + + last-run@2.0.0: {} + + lead@4.0.0: {} + + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + libphonenumber-js@1.12.9: {} + + liftoff@5.0.1: + dependencies: + extend: 3.0.2 + findup-sync: 5.0.0 + fined: 2.0.0 + flagged-respawn: 2.0.0 + is-plain-object: 5.0.0 + rechoir: 0.8.0 + resolve: 1.22.10 + + lilconfig@3.1.3: {} + + limiter@1.1.5: {} + + lines-and-columns@1.2.4: {} + + linkify-it@3.0.3: + dependencies: + uc.micro: 1.0.6 + + linkify-it@4.0.1: + dependencies: + uc.micro: 1.0.6 + + lint-staged@16.1.2: + dependencies: + chalk: 5.4.1 + commander: 14.0.0 + debug: 4.4.1 + lilconfig: 3.1.3 + listr2: 8.3.3 + micromatch: 4.0.8 + nano-spawn: 1.0.2 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.8.0 + transitivePeerDependencies: + - supports-color + + listr2@8.3.3: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.0 + + load-json-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 2.2.0 + pify: 2.3.0 + pinkie-promise: 2.0.1 + strip-bom: 2.0.0 + + localtunnel@2.0.2: + dependencies: + axios: 0.21.4(debug@4.3.2) + debug: 4.3.2 + openurl: 1.1.1 + yargs: 17.1.1 + transitivePeerDependencies: + - supports-color + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash._basecopy@3.0.1: {} + + lodash._basetostring@3.0.1: {} + + lodash._basevalues@3.0.0: {} + + lodash._escapehtmlchar@2.4.1: + dependencies: + lodash._htmlescapes: 2.4.1 + + lodash._escapestringchar@2.4.1: {} + + lodash._getnative@3.9.1: {} + + lodash._htmlescapes@2.4.1: {} + + lodash._isiterateecall@3.0.9: {} + + lodash._isnative@2.4.1: {} + + lodash._objecttypes@2.4.1: {} + + lodash._reescape@3.0.0: {} + + lodash._reevaluate@3.0.0: {} + + lodash._reinterpolate@2.4.1: {} + + lodash._reinterpolate@3.0.0: {} + + lodash._reunescapedhtml@2.4.1: + dependencies: + lodash._htmlescapes: 2.4.1 + lodash.keys: 2.4.1 + + lodash._root@3.0.1: {} + + lodash._shimkeys@2.4.1: + dependencies: + lodash._objecttypes: 2.4.1 + + lodash.camelcase@4.3.0: {} + + lodash.defaults@2.4.1: + dependencies: + lodash._objecttypes: 2.4.1 + lodash.keys: 2.4.1 + + lodash.defaults@4.2.0: {} + + lodash.escape@2.4.1: + dependencies: + lodash._escapehtmlchar: 2.4.1 + lodash._reunescapedhtml: 2.4.1 + lodash.keys: 2.4.1 + + lodash.escape@3.2.0: + dependencies: + lodash._root: 3.0.1 + + lodash.isarguments@3.1.0: {} + + lodash.isarray@3.0.4: {} + + lodash.isfinite@3.3.2: {} + + lodash.isobject@2.4.1: + dependencies: + lodash._objecttypes: 2.4.1 + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.keys@2.4.1: + dependencies: + lodash._isnative: 2.4.1 + lodash._shimkeys: 2.4.1 + lodash.isobject: 2.4.1 + + lodash.keys@3.1.2: + dependencies: + lodash._getnative: 3.9.1 + lodash.isarguments: 3.1.0 + lodash.isarray: 3.0.4 + + lodash.map@4.6.0: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.restparam@3.6.1: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.template@2.4.1: + dependencies: + lodash._escapestringchar: 2.4.1 + lodash._reinterpolate: 2.4.1 + lodash.defaults: 2.4.1 + lodash.escape: 2.4.1 + lodash.keys: 2.4.1 + lodash.templatesettings: 2.4.1 + lodash.values: 2.4.1 + + lodash.template@3.6.2: + dependencies: + lodash._basecopy: 3.0.1 + lodash._basetostring: 3.0.1 + lodash._basevalues: 3.0.0 + lodash._isiterateecall: 3.0.9 + lodash._reinterpolate: 3.0.0 + lodash.escape: 3.2.0 + lodash.keys: 3.1.2 + lodash.restparam: 3.6.1 + lodash.templatesettings: 3.1.1 + + lodash.templatesettings@2.4.1: + dependencies: + lodash._reinterpolate: 2.4.1 + lodash.escape: 2.4.1 + + lodash.templatesettings@3.1.1: + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.escape: 3.2.0 + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash.values@2.4.1: + dependencies: + lodash.keys: 2.4.1 + + lodash@2.4.2: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + + log-util@1.2.0: + dependencies: + chalk: 1.1.3 + dateformat: 2.2.0 + + longest@2.0.1: {} + + loud-rejection@1.6.0: + dependencies: + currently-unhandled: 0.4.1 + signal-exit: 3.0.7 + + lower-case@1.1.4: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lru-cache@10.4.3: {} + + map-cache@0.2.2: {} + + map-obj@1.0.1: {} + + map-stream@0.0.7: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + + markdown-it-abbr@1.0.4: {} + + markdown-it-abbr@2.0.0: {} + + markdown-it-anchor@9.2.0(@types/markdown-it@14.1.2)(markdown-it@13.0.2): + dependencies: + '@types/markdown-it': 14.1.2 + markdown-it: 13.0.2 + + markdown-it-attrs@4.3.1(markdown-it@13.0.2): + dependencies: + markdown-it: 13.0.2 + + markdown-it-checkbox@1.1.0: + dependencies: + underscore: 1.13.7 + + markdown-it-cjk-breaks@1.1.3: + dependencies: + eastasianwidth: 0.2.0 + + markdown-it-container@3.0.0: {} + + markdown-it-deflist@2.1.0: {} + + markdown-it-emoji@1.4.0: {} + + markdown-it-emoji@3.0.0: {} + + markdown-it-footnote@3.0.3: {} + + markdown-it-footnote@4.0.0: {} + + markdown-it-highlight-lines@1.0.2: {} + + markdown-it-highlightjs@4.2.0: + dependencies: + highlight.js: 11.11.1 + + markdown-it-ins@3.0.1: {} + + markdown-it-ins@4.0.0: {} + + markdown-it-mark@3.0.1: {} + + markdown-it-shortcode-tag@1.1.0: {} + + markdown-it-sub@1.0.0: {} + + markdown-it-sub@2.0.0: {} + + markdown-it-sup@1.0.0: {} + + markdown-it-sup@2.0.0: {} + + markdown-it-task-lists@2.1.1: {} + + markdown-it@11.0.1: + dependencies: + argparse: 1.0.10 + entities: 2.0.3 + linkify-it: 3.0.3 + mdurl: 1.0.1 + uc.micro: 1.0.6 + + markdown-it@13.0.2: + dependencies: + argparse: 2.0.1 + entities: 3.0.1 + linkify-it: 4.0.1 + mdurl: 1.0.1 + uc.micro: 1.0.6 + + math-intrinsics@1.1.0: {} + + math-random@1.0.4: {} + + mathml-tag-names@2.1.3: {} + + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + + mdn-data@2.12.2: {} + + mdurl@1.0.1: {} + + memorystream@0.3.1: {} + + meow@12.1.1: {} + + meow@13.2.0: {} + + meow@2.0.0: + dependencies: + camelcase-keys: 1.0.0 + indent-string: 1.2.2 + minimist: 1.2.8 + object-assign: 1.0.0 + + meow@3.7.0: + dependencies: + camelcase-keys: 2.1.0 + decamelize: 1.2.0 + loud-rejection: 1.6.0 + map-obj: 1.0.1 + minimist: 1.2.8 + normalize-package-data: 2.5.0 + object-assign: 4.1.1 + read-pkg-up: 1.0.1 + redent: 1.0.0 + trim-newlines: 1.0.0 + + merge2@1.4.1: {} + + merge@2.1.1: {} + + micro-memoize@4.1.3: {} + + micromatch@2.3.11: + dependencies: + arr-diff: 2.0.0 + array-unique: 0.2.1 + braces: 1.8.5 + expand-brackets: 0.1.5 + extglob: 0.3.2 + filename-regex: 2.0.1 + is-extglob: 1.0.0 + is-glob: 2.0.1 + kind-of: 3.2.2 + normalize-path: 2.1.1 + object.omit: 2.0.1 + parse-glob: 3.0.4 + regex-cache: 0.4.4 + + micromatch@3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.12.0: {} + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@1.0.2: {} + + mime-types@2.0.14: + dependencies: + mime-db: 1.12.0 + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.4.1: {} + + mime@1.6.0: {} + + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.2 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@0.2.4: {} + + minimist@1.2.7: {} + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mitt@1.2.0: {} + + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@2.1.3: {} + + modify-filename@2.0.0: {} + + moize@6.1.6: + dependencies: + fast-equals: 3.0.3 + micro-memoize: 4.1.3 + + moment-timezone@0.5.48: + dependencies: + moment: 2.30.1 + + moment@2.30.1: {} + + morgan@1.10.0: + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.3.0 + on-headers: 1.0.2 + transitivePeerDependencies: + - supports-color + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + multimatch@5.0.0: + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + + multipipe@0.1.2: + dependencies: + duplexer2: 0.0.2 + + mute-stdout@2.0.0: {} + + mute-stream@0.0.8: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nan@2.22.2: + optional: true + + nano-spawn@1.0.2: {} + + nanoid@3.3.11: {} + + nanomatch@1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + nib@1.2.0(stylus@0.62.0): + dependencies: + stylus: 0.62.0 + + no-case@2.3.2: + dependencies: + lower-case: 1.1.4 + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-releases@2.0.19: {} + + node-uuid@1.4.8: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@2.1.1: + dependencies: + remove-trailing-separator: 1.1.0 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + now-and-later@3.0.0: + dependencies: + once: 1.4.0 + + npm-normalize-package-bin@4.0.0: {} + + npm-run-all2@8.0.4: + dependencies: + ansi-styles: 6.2.1 + cross-spawn: 7.0.6 + memorystream: 0.3.1 + picomatch: 4.0.2 + pidtree: 0.6.0 + read-package-json-fast: 4.0.0 + shell-quote: 1.8.3 + which: 5.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nunjucks@3.2.4(chokidar@3.6.0): + dependencies: + a-sync-waterfall: 1.0.1 + asap: 2.0.6 + commander: 5.1.0 + optionalDependencies: + chokidar: 3.6.0 + + o-stream@0.3.0: {} + + oauth-sign@0.5.0: {} + + oauth-sign@0.9.0: {} + + object-assign@1.0.0: {} + + object-assign@3.0.0: {} + + object-assign@4.1.1: {} + + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + + object-hash@3.0.0: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + + object.defaults@1.1.0: + dependencies: + array-each: 1.0.1 + array-slice: 1.1.0 + for-own: 1.0.0 + isobject: 3.0.1 + + object.omit@2.0.1: + dependencies: + for-own: 0.1.5 + is-extendable: 0.1.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + opencollective-postinstall@2.0.3: {} + + openurl@1.1.1: {} + + opn@5.3.0: + dependencies: + is-wsl: 1.1.0 + + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-tmpdir@1.0.2: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.1 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + package-json-from-dist@1.0.1: {} + + param-case@2.1.1: + dependencies: + no-case: 2.3.2 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-filepath@1.0.2: + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + + parse-glob@3.0.4: + dependencies: + glob-base: 0.3.0 + is-dotfile: 1.0.3 + is-extglob: 1.0.0 + is-glob: 2.0.1 + + parse-json@2.2.0: + dependencies: + error-ex: 1.3.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-node-version@1.0.1: {} + + parse-passwd@1.0.0: {} + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.3.0 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + pascalcase@0.1.1: {} + + path-exists@2.1.0: + dependencies: + pinkie-promise: 2.0.1 + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-root-regex@0.1.2: {} + + path-root@0.1.1: + dependencies: + path-root-regex: 0.1.2 + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@1.1.0: + dependencies: + graceful-fs: 4.2.11 + pify: 2.3.0 + pinkie-promise: 2.0.1 + + path-type@4.0.0: {} + + performance-now@2.1.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + pirates@4.0.7: {} + + plugin-error@1.0.1: + dependencies: + ansi-colors: 1.1.0 + arr-diff: 4.0.0 + arr-union: 3.1.0 + extend-shallow: 3.0.2 + + plugin-error@2.0.1: + dependencies: + ansi-colors: 1.1.0 + + portscanner@2.2.0: + dependencies: + async: 2.6.4 + is-number-like: 1.0.8 + + posix-character-classes@0.1.1: {} + + possible-typed-array-names@1.1.0: {} + + postcss-calc@10.1.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-cli@11.0.1(jiti@2.4.2)(postcss@8.5.6): + dependencies: + chokidar: 3.6.0 + dependency-graph: 1.0.0 + fs-extra: 11.3.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.5.6) + postcss-reporter: 7.1.0(postcss@8.5.6) + pretty-hrtime: 1.0.3 + read-cache: 1.0.0 + slash: 5.1.0 + tinyglobby: 0.2.14 + yargs: 17.7.2 + transitivePeerDependencies: + - jiti + - tsx + + postcss-colormin@7.0.3(postcss@8.5.6): + dependencies: + browserslist: 4.25.0 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-convert-values@7.0.5(postcss@8.5.6): + dependencies: + browserslist: 4.25.0 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@7.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-discard-duplicates@7.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-discard-empty@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-discard-overridden@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-import@15.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-import@16.1.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.0.1(postcss@8.5.6): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.6 + + postcss-load-config@4.0.2(postcss@8.5.6): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.0 + optionalDependencies: + postcss: 8.5.6 + + postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.5.6): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.0 + optionalDependencies: + jiti: 2.4.2 + postcss: 8.5.6 + + postcss-merge-longhand@7.0.5(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.5(postcss@8.5.6) + + postcss-merge-rules@7.0.5(postcss@8.5.6): + dependencies: + browserslist: 4.25.0 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-minify-font-values@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@7.0.1(postcss@8.5.6): + dependencies: + colord: 2.9.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-minify-params@7.0.3(postcss@8.5.6): + dependencies: + browserslist: 4.25.0 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@7.0.5(postcss@8.5.6): + dependencies: + cssesc: 3.0.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-nested@6.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-normalize-charset@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-normalize-display-values@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@7.0.3(postcss@8.5.6): + dependencies: + browserslist: 4.25.0 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@7.0.2(postcss@8.5.6): + dependencies: + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@7.0.3(postcss@8.5.6): + dependencies: + browserslist: 4.25.0 + caniuse-api: 3.0.0 + postcss: 8.5.6 + + postcss-reduce-transforms@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + postcss-reporter@7.1.0(postcss@8.5.6): + dependencies: + picocolors: 1.1.1 + postcss: 8.5.6 + thenby: 1.3.4 + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 + + postcss-unique-selectors@7.0.4(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.1.2: {} + + prelude-ls@1.2.1: {} + + preserve@0.2.0: {} + + prettier-plugin-tailwindcss@0.6.12(prettier@3.5.3): + dependencies: + prettier: 3.5.3 + + prettier@3.5.3: {} + + pretty-hrtime@1.0.3: {} + + prismjs@1.30.0: {} + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode@2.3.1: {} + + q@1.5.1: {} + + qs@2.3.3: {} + + qs@6.5.3: {} + + queue-microtask@1.2.3: {} + + randomatic@3.1.1: + dependencies: + is-number: 4.0.0 + kind-of: 6.0.3 + math-random: 1.0.4 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-package-json-fast@4.0.0: + dependencies: + json-parse-even-better-errors: 4.0.0 + npm-normalize-package-bin: 4.0.0 + + read-pkg-up@1.0.1: + dependencies: + find-up: 1.1.2 + read-pkg: 1.1.0 + + read-pkg@1.1.0: + dependencies: + load-json-file: 1.1.0 + normalize-package-data: 2.5.0 + path-type: 1.1.0 + + readable-stream@1.0.34: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@1.1.14: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@2.2.1: + dependencies: + graceful-fs: 4.2.11 + micromatch: 3.1.10 + readable-stream: 2.3.8 + transitivePeerDependencies: + - supports-color + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + rechoir@0.8.0: + dependencies: + resolve: 1.22.10 + + redent@1.0.0: + dependencies: + indent-string: 2.1.0 + strip-indent: 1.0.1 + + reflect-metadata@0.1.13: {} + + regex-cache@0.4.4: + dependencies: + is-equal-shallow: 0.1.3 + + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + + relateurl@0.2.7: {} + + remove-trailing-separator@1.1.0: {} + + repeat-element@1.1.4: {} + + repeat-string@1.6.1: {} + + repeating@1.1.3: + dependencies: + is-finite: 1.1.0 + + repeating@2.0.1: + dependencies: + is-finite: 1.1.0 + + replace-ext@0.0.1: {} + + replace-ext@1.0.1: {} + + replace-ext@2.0.0: {} + + replace-homedir@2.0.0: {} + + replacestream@4.0.3: + dependencies: + escape-string-regexp: 1.0.5 + object-assign: 4.1.1 + readable-stream: 2.3.8 + + request@2.51.0: + dependencies: + aws-sign2: 0.5.0 + bl: 0.9.5 + caseless: 0.8.0 + combined-stream: 0.0.7 + forever-agent: 0.5.2 + form-data: 0.2.0 + hawk: 1.1.1 + http-signature: 0.10.1 + json-stringify-safe: 5.0.1 + mime-types: 1.0.2 + node-uuid: 1.4.8 + oauth-sign: 0.5.0 + qs: 2.3.3 + stringstream: 0.0.6 + tough-cookie: 5.1.2 + tunnel-agent: 0.4.3 + + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-options@2.0.0: + dependencies: + value-or-function: 4.0.0 + + resolve-url@0.2.1: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resp-modifier@6.0.2: + dependencies: + debug: 2.6.9 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + ret@0.1.15: {} + + reusify@1.1.0: {} + + rev-hash@4.1.0: {} + + rev-path@3.0.0: + dependencies: + modify-filename: 2.0.0 + + rfdc@1.4.1: {} + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rx@4.1.0: {} + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + + safer-buffer@2.1.2: {} + + sax@1.3.0: {} + + semver-greatest-satisfied-range@2.0.0: + dependencies: + sver: 1.8.4 + + semver@5.7.2: {} + + semver@6.3.1: + optional: true + + semver@7.7.2: {} + + send@0.16.2: + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.6.3 + mime: 1.4.1 + ms: 2.0.0 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.4.0 + transitivePeerDependencies: + - supports-color + + send@0.19.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.13.2: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.16.2 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + + server-destroy@1.0.1: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.3: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + slash@3.0.0: {} + + slash@5.1.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + + sntp@0.2.4: + dependencies: + hoek: 0.9.1 + + socket.io-adapter@2.5.5: + dependencies: + debug: 4.3.7 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-client@4.8.1: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + engine.io-client: 6.6.3 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + socket.io@4.8.1: + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.7 + engine.io: 6.6.4 + socket.io-adapter: 2.5.5 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + sort-keys@5.1.0: + dependencies: + is-plain-obj: 4.1.0 + + source-map-js@1.2.1: {} + + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-url@0.4.1: {} + + source-map@0.4.4: + dependencies: + amdefine: 1.0.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + sparkles@1.0.1: {} + + sparkles@2.1.0: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + sprintf-js@1.1.3: {} + + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + + statuses@1.3.1: {} + + statuses@1.4.0: {} + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + stream-buffers@0.2.6: {} + + stream-composer@1.0.2: + dependencies: + streamx: 2.22.1 + + stream-exhaust@1.0.2: {} + + stream-throttle@0.1.3: + dependencies: + commander: 2.20.3 + limiter: 1.1.5 + + streamx@2.22.1: + dependencies: + fast-fifo: 1.3.2 + text-decoder: 1.2.3 + optionalDependencies: + bare-events: 2.5.4 + + string-argv@0.3.2: {} + + string-template@0.2.1: {} + + string-template@1.0.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringstream@0.0.6: {} + + stringz@2.1.0: + dependencies: + char-regex: 1.0.2 + + strip-ansi@0.3.0: + dependencies: + ansi-regex: 0.2.1 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom-buf@3.0.1: + dependencies: + is-utf8: 0.2.1 + + strip-bom-stream@5.0.0: + dependencies: + first-chunk-stream: 5.0.0 + strip-bom-buf: 3.0.1 + + strip-bom@2.0.0: + dependencies: + is-utf8: 0.2.1 + + strip-bom@4.0.0: {} + + strip-indent@1.0.1: + dependencies: + get-stdin: 4.0.1 + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + stylehacks@7.0.5(postcss@8.5.6): + dependencies: + browserslist: 4.25.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 + + stylelint-config-recommended@16.0.0(stylelint@16.20.0(typescript@5.8.3)): + dependencies: + stylelint: 16.20.0(typescript@5.8.3) + + stylelint-config-standard@38.0.0(stylelint@16.20.0(typescript@5.8.3)): + dependencies: + stylelint: 16.20.0(typescript@5.8.3) + stylelint-config-recommended: 16.0.0(stylelint@16.20.0(typescript@5.8.3)) + + stylelint@16.20.0(typescript@5.8.3): + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@dual-bundle/import-meta-resolve': 4.1.0 + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.8.3) + css-functions-list: 3.2.3 + css-tree: 3.1.0 + debug: 4.4.1 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 10.1.1 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 7.0.5 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.36.0 + mathml-tag-names: 2.1.3 + meow: 13.2.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 7.0.1(postcss@8.5.6) + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + supports-hyperlinks: 3.2.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + stylus@0.62.0: + dependencies: + '@adobe/css-tools': 4.3.3 + debug: 4.4.1 + glob: 7.2.3 + sax: 1.3.0 + source-map: 0.7.4 + transitivePeerDependencies: + - supports-color + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + + supports-color@0.2.0: {} + + supports-color@2.0.0: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + sver@1.8.4: + optionalDependencies: + semver: 6.3.1 + + svg-tags@1.0.0: {} + + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.1 + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tailwindcss-animate@1.0.7(tailwindcss@3.4.17): + dependencies: + tailwindcss: 3.4.17 + + tailwindcss@3.4.17: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-import: 15.1.0(postcss@8.5.6) + postcss-js: 4.0.1(postcss@8.5.6) + postcss-load-config: 4.0.2(postcss@8.5.6) + postcss-nested: 6.2.0(postcss@8.5.6) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + teex@1.0.1: + dependencies: + streamx: 2.22.1 + + terser@5.43.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-decoder@1.2.3: + dependencies: + b4a: 1.6.7 + + text-extensions@2.4.0: {} + + text-table@0.2.0: {} + + textextensions@3.3.0: {} + + thenby@1.3.4: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through2@0.5.1: + dependencies: + readable-stream: 1.0.34 + xtend: 3.0.0 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through2@3.0.1: + dependencies: + readable-stream: 3.6.2 + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + through@2.3.8: {} + + tildify@2.0.0: {} + + time-stamp@1.1.0: {} + + tinyexec@1.0.1: {} + + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + + titlecase@1.1.3: {} + + tldts-core@6.1.86: {} + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + + to-through@3.0.0: + dependencies: + streamx: 2.22.1 + + toidentifier@1.0.1: {} + + tough-cookie@2.5.0: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.86 + + trim-newlines@1.0.0: {} + + ts-interface-checker@0.1.13: {} + + tslib@2.5.0: {} + + tslib@2.8.1: {} + + tunnel-agent@0.4.3: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl@0.14.5: {} + + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.21.3: {} + + typedarray@0.0.7: {} + + typescript@5.8.3: {} + + ua-parser-js@1.0.40: {} + + uberproto@1.2.0: {} + + uc.micro@1.0.6: {} + + uglify-js@3.4.10: + dependencies: + commander: 2.19.0 + source-map: 0.6.1 + + unc-path-regex@0.1.2: {} + + underscore@1.13.7: {} + + undertaker-registry@2.0.0: {} + + undertaker@2.0.0: + dependencies: + bach: 2.0.1 + fast-levenshtein: 3.0.0 + last-run: 2.0.0 + undertaker-registry: 2.0.0 + + undici-types@7.8.0: {} + + undici@7.10.0: {} + + unicorn-magic@0.1.0: {} + + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + + update-browserslist-db@1.1.3(browserslist@4.25.0): + dependencies: + browserslist: 4.25.0 + escalade: 3.2.0 + picocolors: 1.1.1 + + upper-case@1.1.3: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urix@0.1.0: {} + + use@3.1.1: {} + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.0 + is-typed-array: 1.1.15 + which-typed-array: 1.1.19 + + utils-merge@1.0.1: {} + + uuid@3.4.0: {} + + v8flags@4.0.1: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validator@13.15.15: {} + + value-or-function@4.0.0: {} + + vary@1.1.2: {} + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + vinyl-bufferstream@1.0.1: + dependencies: + bufferstreams: 1.0.1 + + vinyl-contents@2.0.0: + dependencies: + bl: 5.1.0 + vinyl: 3.0.1 + + vinyl-file@5.0.0: + dependencies: + '@types/vinyl': 2.0.12 + strip-bom-buf: 3.0.1 + strip-bom-stream: 5.0.0 + vinyl: 3.0.1 + + vinyl-fs@4.0.2: + dependencies: + fs-mkdirp-stream: 2.0.1 + glob-stream: 8.0.3 + graceful-fs: 4.2.11 + iconv-lite: 0.6.3 + is-valid-glob: 1.0.0 + lead: 4.0.0 + normalize-path: 3.0.0 + resolve-options: 2.0.0 + stream-composer: 1.0.2 + streamx: 2.22.1 + to-through: 3.0.0 + value-or-function: 4.0.0 + vinyl: 3.0.1 + vinyl-sourcemap: 2.0.0 + + vinyl-sourcemap@2.0.0: + dependencies: + convert-source-map: 2.0.0 + graceful-fs: 4.2.11 + now-and-later: 3.0.0 + streamx: 2.22.1 + vinyl: 3.0.1 + vinyl-contents: 2.0.0 + + vinyl-sourcemaps-apply@0.2.1: + dependencies: + source-map: 0.5.7 + + vinyl@0.2.3: + dependencies: + clone-stats: 0.0.1 + + vinyl@0.5.3: + dependencies: + clone: 1.0.4 + clone-stats: 0.0.1 + replace-ext: 0.0.1 + + vinyl@2.2.1: + dependencies: + clone: 2.1.2 + clone-buffer: 1.0.0 + clone-stats: 1.0.0 + cloneable-readable: 1.1.3 + remove-trailing-separator: 1.1.0 + replace-ext: 1.0.1 + + vinyl@3.0.1: + dependencies: + clone: 2.1.2 + remove-trailing-separator: 1.1.0 + replace-ext: 2.0.0 + teex: 1.0.1 + + warehouse@5.0.1: + dependencies: + bluebird: 3.7.2 + cuid: 2.1.8 + graceful-fs: 4.2.11 + hexo-log: 4.1.0 + is-plain-object: 5.0.0 + jsonparse: 1.3.1 + rfdc: 1.4.1 + through2: 4.0.2 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@5.0.0: + dependencies: + isexe: 3.1.1 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + ws@8.17.1: {} + + xmlhttprequest-ssl@2.1.2: {} + + xtend@3.0.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yaml@2.8.0: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs-parser@22.0.0: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.1.1: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.2.1: {} + + zlibjs@0.3.1: {} diff --git a/postcss.config.js b/postcss.config.js index dff409fa..529fd214 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,8 +1,8 @@ module.exports = { - plugins: { - 'postcss-import': {path: 'themes/coo/source/css'}, - 'tailwindcss': {config: './tailwind.config.js'}, - 'autoprefixer': {}, - 'postcss-minify':{}, - } -}; \ No newline at end of file + plugins: { + 'postcss-import': { path: 'themes/coo/source/css' }, + tailwindcss: { config: './tailwind.config.js' }, + autoprefixer: {}, + ...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {}) + } +}; diff --git a/scaffolds/draft.md b/scaffolds/draft.md deleted file mode 100644 index 29457456..00000000 --- a/scaffolds/draft.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: {{ title }} -date: {{ date }} -categories: -tags: ---- diff --git a/scaffolds/page.md b/scaffolds/page.md deleted file mode 100644 index f01ba3cd..00000000 --- a/scaffolds/page.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: {{ title }} -date: {{ date }} ---- diff --git a/scaffolds/post.md b/scaffolds/post.md deleted file mode 100644 index 648dba74..00000000 --- a/scaffolds/post.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: {{ title }} -date: {{ date }} -icon: icon-{{ title }} -background: bg-blue-400 -tags: - - -categories: - - -intro: ---- - - - - - diff --git a/scaffolds/table.md b/scaffolds/table.md deleted file mode 100644 index 29457456..00000000 --- a/scaffolds/table.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: {{ title }} -date: {{ date }} -categories: -tags: ---- diff --git a/source/_posts/1password.md b/source/_posts/1password.md index a5cfce3a..b3b23d0e 100644 --- a/source/_posts/1password.md +++ b/source/_posts/1password.md @@ -4,422 +4,382 @@ date: 2022-11-23 16:23:31.702312 background: bg-[#397fe4] label: tags: - - tools - - + - tools + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A cheat sheet for 1password's keyboard shortcuts in Mac, Windows, iOS, Linux. + A cheat sheet for 1password's keyboard shortcuts in Mac, Windows, iOS, Linux. --- - - -1Password Keyboard Shortcuts for Mac ------------------- - +## 1Password Keyboard Shortcuts for Mac ### Global keyboard shortcuts -| `Shortcut ` | Action | -|-----------------------------|--------------------| -| Enter your own shortcut. | Show 1Password. | -| `Shift` `cmd` `Space ` | Show Quick Access. | -| `Shift` `cmd` `L ` | Lock 1Password. | -| `cmd` `\` | Autofill. | -{.shortcuts} - - - - -### 1Password app {.row-span-2} +| `Shortcut` | Action | +| ------------------------ | ------------------ | +| Enter your own shortcut. | Show 1Password. | +| `Shift` `cmd` `Space` | Show Quick Access. | +| `Shift` `cmd` `L` | Lock 1Password. | +| `cmd` `\` | Autofill. | -| `Shortcut ` | Action | -|-----------------------------|----------------------------------------------------------------------------------------------| -| `cmd` `/` | View keyboard shortcuts. | -| `cmd` `,` | Open preferences. | -| `cmd` `F ` | Search for items. | -| `Option` `cmd` `F ` | Find items in the current list. | -| `Esc ` | Clear the search field. | -| `cmd` `1 ` | Switch to All Accounts. | -| `cmd` `2...9` | Switch accounts and collections. | -| `cmd` `[` | Go back. | -| `cmd` `]` | Go forward. | -| `Down Arrow ` | Focus next row. | -| `Up Arrow ` | Focus previous row. | -| `Right Arrow ` | Focus right section. | -| `Left Arrow ` | Focus left section. | -| `Return or Space ` | Activate focused element. | -| `cmd` `C ` | Copy the username or primary field of the selected. | -| `Shift` `cmd` `C ` | Copy the password of the selected. | -| `Option` `cmd` `C ` | Copy the one-time password of the selected. | -| `Shift` `cmd` `F ` | Open the website for the selected login in your browser and fill your username and password. | -| `cmd` `O ` | Open the selected in a new window. | -| `cmd` `N ` | Create a new item. | -| `cmd` `E ` | Edit the selected. | -| `cmd` `S ` | Save changes to an item. | -| `Esc ` | Cancel an edit. | -| `cmd` `R ` | Reveal or conceal secure fields in the selected. | -| `Option ` | Temporarily reveal all secure fields in the selected.* | -| `Delete ` | Move the selected(s) to the Archive. | -| `cmd` `Delete ` | Delete the selected(s). | -| `Shift` `cmd` `D ` | Collapse or expand the sidebar. | -| `cmd` `+` | Zoom in. | -| `cmd` `-` | Zoom out. | -| `cmd` `0 ` | Revert to actual size. | -| `cmd` `M ` | Minimize the app to the Dock. | -| `cmd` `W ` | Close the current window. | {.shortcuts} +### 1Password app {.row-span-2} +| `Shortcut` | Action | +| ------------------ | -------------------------------------------------------------------------------------------- | +| `cmd` `/` | View keyboard shortcuts. | +| `cmd` `,` | Open preferences. | +| `cmd` `F` | Search for items. | +| `Option` `cmd` `F` | Find items in the current list. | +| `Esc` | Clear the search field. | +| `cmd` `1` | Switch to All Accounts. | +| `cmd` `2...9` | Switch accounts and collections. | +| `cmd` `[` | Go back. | +| `cmd` `]` | Go forward. | +| `Down Arrow` | Focus next row. | +| `Up Arrow` | Focus previous row. | +| `Right Arrow` | Focus right section. | +| `Left Arrow` | Focus left section. | +| `Return or Space` | Activate focused element. | +| `cmd` `C` | Copy the username or primary field of the selected. | +| `Shift` `cmd` `C` | Copy the password of the selected. | +| `Option` `cmd` `C` | Copy the one-time password of the selected. | +| `Shift` `cmd` `F` | Open the website for the selected login in your browser and fill your username and password. | +| `cmd` `O` | Open the selected in a new window. | +| `cmd` `N` | Create a new item. | +| `cmd` `E` | Edit the selected. | +| `cmd` `S` | Save changes to an item. | +| `Esc` | Cancel an edit. | +| `cmd` `R` | Reveal or conceal secure fields in the selected. | +| `Option` | Temporarily reveal all secure fields in the selected.\* | +| `Delete` | Move the selected(s) to the Archive. | +| `cmd` `Delete` | Delete the selected(s). | +| `Shift` `cmd` `D` | Collapse or expand the sidebar. | +| `cmd` `+` | Zoom in. | +| `cmd` `-` | Zoom out. | +| `cmd` `0` | Revert to actual size. | +| `cmd` `M` | Minimize the app to the Dock. | +| `cmd` `W` | Close the current window. | - -### 1Password in the browser {.row-span-2} - -| `Shortcut ` | Action | -|-----------------------------|-------------------------------------------------------------------------------------------| -| `Shift` `cmd` `X ` | Open or close the 1Password pop-up in Chrome, Edge, Brave, or Safari. | -| `cmd` `.` | Open or close the 1Password pop-up in Firefox. | -| `cmd` `F ` | Search for items. | -| `Esc ` | Clear the search field. | -| `cmd` `D ` | Show the list of vaults. | -| `cmd` `Down Arrow ` | Open or close the category menu. | -| `Down Arrow ` | Select the next category, item, or field. | -| `Up Arrow ` | Select the previous category, item, or field. | -| `Right Arrow ` | Select the item details. | -| `Left Arrow ` | Select the item list. | -| `Space ` | Expand item overview banners. | -| `Return ` | Copy the selected detail.Perform the default action for the selected. | -| `cmd` `C ` | Copy the username of the selected. | -| `Shift` `cmd` `C ` | Copy the password of the selected. | -| `Control` `Shift` `cmd` `C` | Copy the one-time password of the selected. | -| `cmd` `Return ` | Open the website for the selected login in a new tab and fill your username and password. | -| `cmd` `O ` | Open the selected in a separate window. | -| `cmd` `I ` | Create a new item. | -| `cmd` `E ` | Edit the selected. | -| `Control` `Option ` | Temporarily reveal all secure fields in the selected. | -| `cmd` `G ` | Show the password generator. | -| `cmd` `C ` | Copy a password from the password generator. | -| `Shift` `cmd` `L ` | Lock 1Password. | -| `Esc ` | Close the 1Password pop-up. | {.shortcuts} +### 1Password in the browser {.row-span-2} +| `Shortcut` | Action | +| --------------------------- | ----------------------------------------------------------------------------------------- | +| `Shift` `cmd` `X` | Open or close the 1Password pop-up in Chrome, Edge, Brave, or Safari. | +| `cmd` `.` | Open or close the 1Password pop-up in Firefox. | +| `cmd` `F` | Search for items. | +| `Esc` | Clear the search field. | +| `cmd` `D` | Show the list of vaults. | +| `cmd` `Down Arrow` | Open or close the category menu. | +| `Down Arrow` | Select the next category, item, or field. | +| `Up Arrow` | Select the previous category, item, or field. | +| `Right Arrow` | Select the item details. | +| `Left Arrow` | Select the item list. | +| `Space` | Expand item overview banners. | +| `Return` | Copy the selected detail.Perform the default action for the selected. | +| `cmd` `C` | Copy the username of the selected. | +| `Shift` `cmd` `C` | Copy the password of the selected. | +| `Control` `Shift` `cmd` `C` | Copy the one-time password of the selected. | +| `cmd` `Return` | Open the website for the selected login in a new tab and fill your username and password. | +| `cmd` `O` | Open the selected in a separate window. | +| `cmd` `I` | Create a new item. | +| `cmd` `E` | Edit the selected. | +| `Control` `Option` | Temporarily reveal all secure fields in the selected. | +| `cmd` `G` | Show the password generator. | +| `cmd` `C` | Copy a password from the password generator. | +| `Shift` `cmd` `L` | Lock 1Password. | +| `Esc` | Close the 1Password pop-up. | - -### Quick Access - -| `Shortcut ` | Action | -|-----------------------------|-------------------------------------------------------------------------------------| -| `Shift` `cmd` `Space` | Open or close Quick Access. | -| `Esc ` | Clear the search field. | -| `cmd` `1...9` | Switch accounts or collections. | -| `Right Arrow ` | View all available actions. | -| `cmd` `C ` | Copy username or primary field. | -| `Shift` `cmd` `C ` | Copy password. | -| `Option` `cmd` `C ` | Copy one-time password. | -| `cmd` `O ` | Open item details in new window. | -| `Option` `Return ` | Open the website for the login in your browser and fill your username and password. | -| `Shift` `Return ` | Fill the item in the currently focused app. | -| `Shift` `cmd` `O ` | Open the item in the app. | {.shortcuts} +### Quick Access +| `Shortcut` | Action | +| --------------------- | ----------------------------------------------------------------------------------- | +| `Shift` `cmd` `Space` | Open or close Quick Access. | +| `Esc` | Clear the search field. | +| `cmd` `1...9` | Switch accounts or collections. | +| `Right Arrow` | View all available actions. | +| `cmd` `C` | Copy username or primary field. | +| `Shift` `cmd` `C` | Copy password. | +| `Option` `cmd` `C` | Copy one-time password. | +| `cmd` `O` | Open item details in new window. | +| `Option` `Return` | Open the website for the login in your browser and fill your username and password. | +| `Shift` `Return` | Fill the item in the currently focused app. | +| `Shift` `cmd` `O` | Open the item in the app. | +{.shortcuts} - -1Password Keyboard Shortcuts for iOS ------------------- +## 1Password Keyboard Shortcuts for iOS ### 1Password app (I) -| `Shortcut ` | Action | -|---------------------------|----------------------------------------------------------| -| `cmd` `,` | Open settings. | -| `cmd` `F ` | Search for items. | -| `cmd` `.` | Clear the search field. | -| `cmd` `1 ` | Switch to All Accounts. | -| `cmd` `2...9` | Switch accounts and collections. | -| `cmd` `[` | Go back. | -| `cmd` `]` | Go forward. | -| `Down Arrow ` | Focus next item. | -{.shortcuts} +| `Shortcut` | Action | +| ------------- | -------------------------------- | +| `cmd` `,` | Open settings. | +| `cmd` `F` | Search for items. | +| `cmd` `.` | Clear the search field. | +| `cmd` `1` | Switch to All Accounts. | +| `cmd` `2...9` | Switch accounts and collections. | +| `cmd` `[` | Go back. | +| `cmd` `]` | Go forward. | +| `Down Arrow` | Focus next item. | +{.shortcuts} ### 1Password app (II) -| `Shortcut ` | Action | -|-----------------------------|----------------------------------------------------------| -| `Up Arrow ` | Focus previous item. | -| `Space ` | Activate focused item. | -| `cmd` `C ` | Copy the username or primary field of the selected. | -| `Shift` `cmd` `C ` | Copy the password of the selected. | -| `Option` `cmd` `C ` | Copy the one-time password of the selected. | -| `cmd` `O ` | Open the selected in a separate window. | -| `cmd` `E ` | Edit the selected. | -{.shortcuts} +| `Shortcut` | Action | +| ------------------ | --------------------------------------------------- | +| `Up Arrow` | Focus previous item. | +| `Space` | Activate focused item. | +| `cmd` `C` | Copy the username or primary field of the selected. | +| `Shift` `cmd` `C` | Copy the password of the selected. | +| `Option` `cmd` `C` | Copy the one-time password of the selected. | +| `cmd` `O` | Open the selected in a separate window. | +| `cmd` `E` | Edit the selected. | +{.shortcuts} ### 1Password app (III) -| `Shortcut ` | Action | -|---------------------------|----------------------------------------------------------| -| `cmd` `S ` | Save changes to an item. | -| `cmd` `.` | Cancel an edit. | -| `cmd` `D ` | Add the selected to your favorites. | -| `Delete ` | Move the selected(s) to the Archive. | -| `cmd` `Delete ` | Delete the selected(s). | -| `Shift` `cmd` `D ` | Collapse or expand the sidebar. | -| `Shift` `cmd` `L ` | Lock 1Password. | -{.shortcuts} - +| `Shortcut` | Action | +| ----------------- | ------------------------------------ | +| `cmd` `S` | Save changes to an item. | +| `cmd` `.` | Cancel an edit. | +| `cmd` `D` | Add the selected to your favorites. | +| `Delete` | Move the selected(s) to the Archive. | +| `cmd` `Delete` | Delete the selected(s). | +| `Shift` `cmd` `D` | Collapse or expand the sidebar. | +| `Shift` `cmd` `L` | Lock 1Password. | +{.shortcuts} -1Password Keyboard Shortcuts for Windows ------------------- +## 1Password Keyboard Shortcuts for Windows ### Global keyboard shortcuts -| `Shortcut ` | Action | -|--------------------------|--------------------| +| `Shortcut` | Action | +| -------------------------- | ------------------ | | `Enter your own shortcut.` | Show 1Password. | -| `Ctrl` `Shift` `Space` | Show Quick Access. | -| `Ctrl` `Shift` `L ` | Lock 1Password. | -| `Ctrl` `\` | Fill in Browser. | -{.shortcuts} - - +| `Ctrl` `Shift` `Space` | Show Quick Access. | +| `Ctrl` `Shift` `L` | Lock 1Password. | +| `Ctrl` `\` | Fill in Browser. | - -### 1Password app {.row-span-2} - -| `Shortcut ` | Action | -|--------------------------|----------------------------------------------------------------------------------------------| -| `Ctrl` `Shift` `/` | View keyboard shortcuts. | -| `Ctrl` `,` | Open settings. | -| `Ctrl` `F ` | Search for items. | -| `Ctrl` `Alt` `F ` | Find items in the current list. | -| `Esc ` | Clear the search field. | -| `Ctrl` `1 ` | Switch to All Accounts. | -| `Ctrl` `2...9` | Switch accounts and collections. | -| `Alt` `Left Arrow ` | Go back. | -| `Alt` `Right Arrow ` | Go forward. | -| `Down Arrow ` | Focus next row. | -| `Up Arrow ` | Focus previous row. | -| `Right Arrow ` | Focus right section. | -| `Left Arrow ` | Focus left section. | -| `Space ` | Activate focused element. | -| `Ctrl` `C ` | Copy the username or primary field of the selected. | -| `Ctrl` `Shift` `C ` | Copy the password of the selected. | -| `Ctrl` `Alt` `C ` | Copy the one-time password of the selected. | -| `Ctrl` `Shift` `F ` | Open the website for the selected login in your browser and fill your username and password. | -| `Ctrl` `O ` | Open the selected in a new window. | -| `Ctrl` `N ` | Create a new item. | -| `Ctrl` `E ` | Edit the selected. | -| `Ctrl` `S ` | Save changes to an item. | -| `Esc ` | Cancel an edit. | -| `Ctrl` `R ` | Reveal or conceal secure fields in the selected. | -| `Ctrl` `Alt ` | Temporarily reveal all secure fields in the selected.* | -| `Delete ` | Move the selected(s) to the Archive. | -| `Ctrl` `Delete ` | Delete the selected(s). | -| `Ctrl` `Shift` `D ` | Collapse or expand the sidebar. | -| `Ctrl` `+` | Zoom in. | -| `Ctrl` `-` | Zoom out. | -| `Ctrl` `0 ` | Revert to actual size. | {.shortcuts} +### 1Password app {.row-span-2} +| `Shortcut` | Action | +| ------------------- | -------------------------------------------------------------------------------------------- | +| `Ctrl` `Shift` `/` | View keyboard shortcuts. | +| `Ctrl` `,` | Open settings. | +| `Ctrl` `F` | Search for items. | +| `Ctrl` `Alt` `F` | Find items in the current list. | +| `Esc` | Clear the search field. | +| `Ctrl` `1` | Switch to All Accounts. | +| `Ctrl` `2...9` | Switch accounts and collections. | +| `Alt` `Left Arrow` | Go back. | +| `Alt` `Right Arrow` | Go forward. | +| `Down Arrow` | Focus next row. | +| `Up Arrow` | Focus previous row. | +| `Right Arrow` | Focus right section. | +| `Left Arrow` | Focus left section. | +| `Space` | Activate focused element. | +| `Ctrl` `C` | Copy the username or primary field of the selected. | +| `Ctrl` `Shift` `C` | Copy the password of the selected. | +| `Ctrl` `Alt` `C` | Copy the one-time password of the selected. | +| `Ctrl` `Shift` `F` | Open the website for the selected login in your browser and fill your username and password. | +| `Ctrl` `O` | Open the selected in a new window. | +| `Ctrl` `N` | Create a new item. | +| `Ctrl` `E` | Edit the selected. | +| `Ctrl` `S` | Save changes to an item. | +| `Esc` | Cancel an edit. | +| `Ctrl` `R` | Reveal or conceal secure fields in the selected. | +| `Ctrl` `Alt` | Temporarily reveal all secure fields in the selected.\* | +| `Delete` | Move the selected(s) to the Archive. | +| `Ctrl` `Delete` | Delete the selected(s). | +| `Ctrl` `Shift` `D` | Collapse or expand the sidebar. | +| `Ctrl` `+` | Zoom in. | +| `Ctrl` `-` | Zoom out. | +| `Ctrl` `0` | Revert to actual size. | - -### 1Password in the browser {.row-span-2} - -| `Shortcut ` | Action | -|---------------------------------------|-------------------------------------------------------------------------------------------| -| `Ctrl` `Shift` `X ` | Open or close the 1Password pop-up in Chrome, Edge, or Brave. | -| `Ctrl` `.` | Open or close the 1Password pop-up in Firefox. | -| `Ctrl` `F ` | Search for items. | -| `Esc ` | Clear the search field. | -| `Ctrl` `D ` | Show the list of vaults. | -| `Ctrl` `Down Arrow ` | Open or close the category menu. | -| `Down Arrow ` | Select the next category, item, or field. | -| `Up Arrow ` | Select the previous category, item, or field. | -| `Right Arrow ` | Select the item details. | -| `Left Arrow ` | Select the item list. | -| `Space ` | Expand item overview banners. | -| `Enter ` | Copy the selected detail.Perform the default action for the selected. | -| `Ctrl` `C ` | Copy the username of the selected. | -| `Ctrl` `Shift` `C ` | Copy the password of the selected. | -| `Ctrl` `Shift` `Win` `C` | Copy the one-time password of the selected. | -| `Ctrl` `Enter ` | Open the website for the selected login in a new tab and fill your username and password. | -| `Ctrl` `O ` | Open the selected in a separate window. | -| `Ctrl` `I ` | Create new item. | -| `Ctrl` `E ` | Edit the selected. | -| `Ctrl` `Alt ` | Temporarily reveal all secure fields in the selected. | -| `Ctrl` `G ` | Show the password generator. | -| `Ctrl` `C ` | Copy a password from the password generator. | -| `Ctrl` `Shift` `L ` | Lock 1Password. | -| `Esc ` | Close the 1Password pop-up. | {.shortcuts} +### 1Password in the browser {.row-span-2} +| `Shortcut` | Action | +| ------------------------ | ----------------------------------------------------------------------------------------- | +| `Ctrl` `Shift` `X` | Open or close the 1Password pop-up in Chrome, Edge, or Brave. | +| `Ctrl` `.` | Open or close the 1Password pop-up in Firefox. | +| `Ctrl` `F` | Search for items. | +| `Esc` | Clear the search field. | +| `Ctrl` `D` | Show the list of vaults. | +| `Ctrl` `Down Arrow` | Open or close the category menu. | +| `Down Arrow` | Select the next category, item, or field. | +| `Up Arrow` | Select the previous category, item, or field. | +| `Right Arrow` | Select the item details. | +| `Left Arrow` | Select the item list. | +| `Space` | Expand item overview banners. | +| `Enter` | Copy the selected detail.Perform the default action for the selected. | +| `Ctrl` `C` | Copy the username of the selected. | +| `Ctrl` `Shift` `C` | Copy the password of the selected. | +| `Ctrl` `Shift` `Win` `C` | Copy the one-time password of the selected. | +| `Ctrl` `Enter` | Open the website for the selected login in a new tab and fill your username and password. | +| `Ctrl` `O` | Open the selected in a separate window. | +| `Ctrl` `I` | Create new item. | +| `Ctrl` `E` | Edit the selected. | +| `Ctrl` `Alt` | Temporarily reveal all secure fields in the selected. | +| `Ctrl` `G` | Show the password generator. | +| `Ctrl` `C` | Copy a password from the password generator. | +| `Ctrl` `Shift` `L` | Lock 1Password. | +| `Esc` | Close the 1Password pop-up. | - -### Quick Access - -| `Shortcut ` | Action | -|------------------------------|-------------------------------------------------------------------------------------| -| `Ctrl` `Shift` `Space` | Open or close Quick Access. | -| `Esc ` | Clear the search field. | -| `Ctrl` `1...9 ` | Switch accounts or collections. | -| `Right Arrow ` | View all available actions. | -| `Ctrl` `C ` | Copy username or primary field. | -| `Ctrl` `Shift` `C ` | Copy password. | -| `Ctrl` `Alt` `C ` | Copy one-time password. | -| `Ctrl` `O ` | Open item details in new window. | -| `Alt` `Enter ` | Open the website for the login in your browser and fill your username and password. | -| `Ctrl` `Shift` `O ` | Open the item in the app. | {.shortcuts} +### Quick Access +| `Shortcut` | Action | +| ---------------------- | ----------------------------------------------------------------------------------- | +| `Ctrl` `Shift` `Space` | Open or close Quick Access. | +| `Esc` | Clear the search field. | +| `Ctrl` `1...9` | Switch accounts or collections. | +| `Right Arrow` | View all available actions. | +| `Ctrl` `C` | Copy username or primary field. | +| `Ctrl` `Shift` `C` | Copy password. | +| `Ctrl` `Alt` `C` | Copy one-time password. | +| `Ctrl` `O` | Open item details in new window. | +| `Alt` `Enter` | Open the website for the login in your browser and fill your username and password. | +| `Ctrl` `Shift` `O` | Open the item in the app. | +{.shortcuts} -1Password Keyboard Shortcuts for Linux ------------------- +## 1Password Keyboard Shortcuts for Linux ### X11 -| `Shortcut ` | Action | -|--------------------------|--------------------| +| `Shortcut` | Action | +| ----------------------- | ------------------ | | Enter your own shortcut | Show 1Password. | -| `Ctrl` `Shift` `Space` | Show Quick Access. | -| `Ctrl` `Shift` `L ` | Lock 1Password. | -| `Ctrl` `\` | Fill in Browser. | -{.shortcuts} - +| `Ctrl` `Shift` `Space` | Show Quick Access. | +| `Ctrl` `Shift` `L` | Lock 1Password. | +| `Ctrl` `\` | Fill in Browser. | - - -### 1Password app {.row-span-4} - -| `Shortcut ` | Action | -|--------------------------|----------------------------------------------------------------------------------------------| -| `Ctrl` `Shift` `/` | View keyboard shortcuts. | -| `Alt ` | Show or hide the app menu in the title bar. | -| `Ctrl` `,` | Open settings. | -| `Ctrl` `F ` | Search for items. | -| `Ctrl` `Alt` `F ` | Find items in the current list. | -| `Esc ` | Clear the search field. | -| `Ctrl` `1 ` | Switch to All Accounts. | -| `Ctrl` `2...9` | Switch accounts and collections. | -| `Alt` `Left Arrow ` | Go back. | -| `Alt` `Right Arrow ` | Go forward. | -| `Down Arrow ` | Focus next row. | -| `Up Arrow ` | Focus previous row. | -| `Right Arrow ` | Focus right section. | -| `Left Arrow ` | Focus left section. | -| `Space ` | Activate focused element. | -| `Ctrl` `C ` | Copy the username or primary field of the selected. | -| `Ctrl` `Shift` `C ` | Copy the password of the selected. | -| `Ctrl` `Alt` `C ` | Copy the one-time password of the selected. | -| `Ctrl` `Shift` `F ` | Open the website for the selected login in your browser and fill your username and password. | -| `Ctrl` `O ` | Open the selected in a new window. | -| `Ctrl` `N ` | Create a new item. | -| `Ctrl` `E ` | Edit the selected. | -| `Ctrl` `S ` | Save changes to an item. | -| `Esc ` | Cancel an edit. | -| `Ctrl` `R ` | Reveal or conceal secure fields in the selected. | -| `Ctrl` `Alt ` | Temporarily reveal all secure fields in the selected. | -| `Delete ` | Move the selected(s) to the Archive. | -| `Ctrl` `Delete ` | Delete the selected(s). | -| `Ctrl` `Shift` `D ` | Collapse or expand the sidebar. | -| `Ctrl` `+` | Zoom in. | -| `Ctrl` `-` | Zoom out. | -| `Ctrl` `0 ` | Revert to actual size. | {.shortcuts} +### 1Password app {.row-span-4} +| `Shortcut` | Action | +| ------------------- | -------------------------------------------------------------------------------------------- | +| `Ctrl` `Shift` `/` | View keyboard shortcuts. | +| `Alt` | Show or hide the app menu in the title bar. | +| `Ctrl` `,` | Open settings. | +| `Ctrl` `F` | Search for items. | +| `Ctrl` `Alt` `F` | Find items in the current list. | +| `Esc` | Clear the search field. | +| `Ctrl` `1` | Switch to All Accounts. | +| `Ctrl` `2...9` | Switch accounts and collections. | +| `Alt` `Left Arrow` | Go back. | +| `Alt` `Right Arrow` | Go forward. | +| `Down Arrow` | Focus next row. | +| `Up Arrow` | Focus previous row. | +| `Right Arrow` | Focus right section. | +| `Left Arrow` | Focus left section. | +| `Space` | Activate focused element. | +| `Ctrl` `C` | Copy the username or primary field of the selected. | +| `Ctrl` `Shift` `C` | Copy the password of the selected. | +| `Ctrl` `Alt` `C` | Copy the one-time password of the selected. | +| `Ctrl` `Shift` `F` | Open the website for the selected login in your browser and fill your username and password. | +| `Ctrl` `O` | Open the selected in a new window. | +| `Ctrl` `N` | Create a new item. | +| `Ctrl` `E` | Edit the selected. | +| `Ctrl` `S` | Save changes to an item. | +| `Esc` | Cancel an edit. | +| `Ctrl` `R` | Reveal or conceal secure fields in the selected. | +| `Ctrl` `Alt` | Temporarily reveal all secure fields in the selected. | +| `Delete` | Move the selected(s) to the Archive. | +| `Ctrl` `Delete` | Delete the selected(s). | +| `Ctrl` `Shift` `D` | Collapse or expand the sidebar. | +| `Ctrl` `+` | Zoom in. | +| `Ctrl` `-` | Zoom out. | +| `Ctrl` `0` | Revert to actual size. | - -### 1Password in the browser {.row-span-4} - -| `Shortcut ` | Action | -|--------------------------------|-------------------------------------------------------------------------------------------| -| `Ctrl` `Shift` `X ` | Open or close the 1Password pop-up in Chrome, Edge, or Brave. | -| `Ctrl` `.` | Open or close the 1Password pop-up in Firefox. | -| `Ctrl` `F ` | Search for items. | -| `Esc ` | Clear the search field. | -| `Ctrl` `D ` | Show the list of vaults. | -| `Ctrl` `Down Arrow ` | Open or close the category menu. | -| `Down Arrow ` | Select the next category, item, or field. | -| `Up Arrow ` | Select the previous category, item, or field. | -| `Right Arrow ` | Select the item details. | -| `Left Arrow ` | Select the item list. | -| `Space ` | Expand item overview banners. | -| `Enter ` | Copy the selected detail.Perform the default action for the selected. | -| `Ctrl` `C ` | Copy the username of the selected. | -| `Ctrl` `Shift` `C ` | Copy the password of the selected. | -| `Ctrl` `Shift` `Super key` `C` | Copy the one-time password of the selected. | -| `Ctrl` `Enter ` | Open the website for the selected login in a new tab and fill your username and password. | -| `Ctrl` `O ` | Open the selected in a separate window. | -| `Ctrl` `I ` | Create new item. | -| `Ctrl` `E ` | Edit the selected. | -| `Ctrl` `Alt ` | Temporarily reveal all secure fields in the selected. | -| `Ctrl` `G ` | Show the password generator. | -| `Ctrl` `C ` | Copy a password from the password generator. | -| `Ctrl` `Shift` `L ` | Lock 1Password. | -| `Esc ` | Close the 1Password pop-up. | {.shortcuts} +### 1Password in the browser {.row-span-4} +| `Shortcut` | Action | +| ------------------------------ | ----------------------------------------------------------------------------------------- | +| `Ctrl` `Shift` `X` | Open or close the 1Password pop-up in Chrome, Edge, or Brave. | +| `Ctrl` `.` | Open or close the 1Password pop-up in Firefox. | +| `Ctrl` `F` | Search for items. | +| `Esc` | Clear the search field. | +| `Ctrl` `D` | Show the list of vaults. | +| `Ctrl` `Down Arrow` | Open or close the category menu. | +| `Down Arrow` | Select the next category, item, or field. | +| `Up Arrow` | Select the previous category, item, or field. | +| `Right Arrow` | Select the item details. | +| `Left Arrow` | Select the item list. | +| `Space` | Expand item overview banners. | +| `Enter` | Copy the selected detail.Perform the default action for the selected. | +| `Ctrl` `C` | Copy the username of the selected. | +| `Ctrl` `Shift` `C` | Copy the password of the selected. | +| `Ctrl` `Shift` `Super key` `C` | Copy the one-time password of the selected. | +| `Ctrl` `Enter` | Open the website for the selected login in a new tab and fill your username and password. | +| `Ctrl` `O` | Open the selected in a separate window. | +| `Ctrl` `I` | Create new item. | +| `Ctrl` `E` | Edit the selected. | +| `Ctrl` `Alt` | Temporarily reveal all secure fields in the selected. | +| `Ctrl` `G` | Show the password generator. | +| `Ctrl` `C` | Copy a password from the password generator. | +| `Ctrl` `Shift` `L` | Lock 1Password. | +| `Esc` | Close the 1Password pop-up. | - +{.shortcuts} ### GNOME -| Shortcut | Action | -|------------------------|--------------------------| +| Shortcut | Action | +| ---------------------- | ------------------------ | | `Ctrl` `P` | 1password --show | | `Ctrl` `Shift` `Space` | 1password --quick-access | | `Ctrl` `Shift` `L` | 1password --lock | -| `Ctrl` `\` | 1password --fill | -{.shortcuts} - - +| `Ctrl` `\` | 1password --fill | - -### KDE Plasma - -| `Trigger ` | Action | -|--------------------------|--------------------------| -| `Ctrl` `P ` | 1password --show | -| `Ctrl` `Shift` `Space` | 1password --quick` `access | -| `Ctrl` `Shift` `L ` | 1password --lock | -| `Ctrl` `\` | 1password --fill | {.shortcuts} +### KDE Plasma +| `Trigger` | Action | +| ---------------------- | ------------------------ | +| `Ctrl` `P` | 1password --show | +| `Ctrl` `Shift` `Space` | 1password --quick-access | +| `Ctrl` `Shift` `L` | 1password --lock | +| `Ctrl` `\` | 1password --fill | - - +{.shortcuts} ### Quick Access -| `Shortcut ` | Action | -|------------------------------|-------------------------------------------------------------------------------------| -| `Ctrl` `Shift` `Space` | Open or close Quick Access. | -| `Esc ` | Clear the search field. | -| `Ctrl` `1...9 ` | Switch accounts or collections. | -| `Right Arrow ` | View all available actions. | -| `Ctrl` `C ` | Copy username or primary field. | -| `Ctrl` `Shift` `C ` | Copy password. | -| `Ctrl` `Alt` `C ` | Copy one-time password. | -| `Ctrl` `O ` | Open item details in new window. | -| `Alt` `Enter ` | Open the website for the login in your browser and fill your username and password. | -| `Ctrl` `Shift` `O ` | Open the item in the app. | -{.shortcuts} - +| `Shortcut` | Action | +| ---------------------- | ----------------------------------------------------------------------------------- | +| `Ctrl` `Shift` `Space` | Open or close Quick Access. | +| `Esc` | Clear the search field. | +| `Ctrl` `1...9` | Switch accounts or collections. | +| `Right Arrow` | View all available actions. | +| `Ctrl` `C` | Copy username or primary field. | +| `Ctrl` `Shift` `C` | Copy password. | +| `Ctrl` `Alt` `C` | Copy one-time password. | +| `Ctrl` `O` | Open item details in new window. | +| `Alt` `Enter` | Open the website for the login in your browser and fill your username and password. | +| `Ctrl` `Shift` `O` | Open the item in the app. | +{.shortcuts} +## Also see -Also see --------- - [Keyboard shortcuts for 1Password](https://support.1password.com/keyboard-shortcuts/) _(support.1password.com)_ diff --git a/source/_posts/adobe-lightroom.md b/source/_posts/adobe-lightroom.md index 05406f5f..4fbb1c58 100644 --- a/source/_posts/adobe-lightroom.md +++ b/source/_posts/adobe-lightroom.md @@ -2,376 +2,368 @@ title: Adobe Lightroom CC date: 2022-11-23 16:23:31.702312 background: bg-[#081c32] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 251 keyboard shortcuts found in Adobe Lightroom CC + A visual cheat-sheet for the 251 keyboard shortcuts found in Adobe Lightroom CC --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### Working with panels {.row-span-2} -Shortcut | Action ----|--- -`Tab` | Show/hide side panels -`Shift` `Tab` | Show/hide all panels -`T` | Show/hide toolbar -`F5` | Show/hide Module Picker -`F6` | Show/hide Filmstrip -`F7` | Show/hide left panels -`F8` | Show/hide right panels -`Alt` `(click a panel)` | Toggle solo mode -`Shift` `(click a panel)` | Open a new panel without closing soloed panel -`Ctrl` `(click a panel)` | Open/close all panels -`Ctrl` `Shift` `0-5` | Open/close left panels, top to bottom -`Ctrl` `0-9` | Open/close right panels, Library and Develop modules, top to bottom -`Ctrl` `1-7` | Open/close right panels, Slideshow, Print, and Web modules, top to bottom -{.shortcuts} +| Shortcut | Action | +| ------------------------- | ------------------------------------------------------------------------- | +| `Tab` | Show/hide side panels | +| `Shift` `Tab` | Show/hide all panels | +| `T` | Show/hide toolbar | +| `F5` | Show/hide Module Picker | +| `F6` | Show/hide Filmstrip | +| `F7` | Show/hide left panels | +| `F8` | Show/hide right panels | +| `Alt` `(click a panel)` | Toggle solo mode | +| `Shift` `(click a panel)` | Open a new panel without closing soloed panel | +| `Ctrl` `(click a panel)` | Open/close all panels | +| `Ctrl` `Shift` `0-5` | Open/close left panels, top to bottom | +| `Ctrl` `0-9` | Open/close right panels, Library and Develop modules, top to bottom | +| `Ctrl` `1-7` | Open/close right panels, Slideshow, Print, and Web modules, top to bottom | +{.shortcuts} ### Navigating modules -Shortcut | Action ----|--- -`Ctrl` `Alt` `1` | Go to Library module -`Ctrl` `Alt` `2` | Go to Develop module -`Ctrl` `Alt` `3` | Go to Slideshow module -`Ctrl` `Alt` `4` | Go to Print module -`Ctrl` `Alt` `5` | Go to Web module -`Ctrl` `Alt` `Left/Right` | Go back/go forward -`Ctrl` `Alt` `Up` | Go back to previous module -{.shortcuts} +| Shortcut | Action | +| ------------------------- | -------------------------- | +| `Ctrl` `Alt` `1` | Go to Library module | +| `Ctrl` `Alt` `2` | Go to Develop module | +| `Ctrl` `Alt` `3` | Go to Slideshow module | +| `Ctrl` `Alt` `4` | Go to Print module | +| `Ctrl` `Alt` `5` | Go to Web module | +| `Ctrl` `Alt` `Left/Right` | Go back/go forward | +| `Ctrl` `Alt` `Up` | Go back to previous module | +{.shortcuts} ### Using a secondary window -Shortcut | Action ----|--- -`F11` | Open secondary window -`Shift` `G` | Enter Grid view -`Shift` `E` | Enter normal Loupe view -`Ctrl` `Shift` `Enter` | Enter locked Loupe view -`Shift` `C` | Enter Compare view -`Shift` `N` | Enter Survey view -`Ctrl` `Alt` `Shift` `Enter` | Enter Slideshow view -`Shift` `F11` | Enter full-screen mode (requires second monitor) -`Shift` `\` | Show/hide Filter bar -`Ctrl` `Shift` `+/-` | Zoom in/out -{.shortcuts} - +| Shortcut | Action | +| ---------------------------- | ------------------------------------------------ | +| `F11` | Open secondary window | +| `Shift` `G` | Enter Grid view | +| `Shift` `E` | Enter normal Loupe view | +| `Ctrl` `Shift` `Enter` | Enter locked Loupe view | +| `Shift` `C` | Enter Compare view | +| `Shift` `N` | Enter Survey view | +| `Ctrl` `Alt` `Shift` `Enter` | Enter Slideshow view | +| `Shift` `F11` | Enter full-screen mode (requires second monitor) | +| `Shift` `\` | Show/hide Filter bar | +| `Ctrl` `Shift` `+/-` | Zoom in/out | +{.shortcuts} ### Working in the Develop module {.row-span-3} -Shortcut | Action ----|--- -`V` | Convert to grayscale -`Ctrl` `U` | Auto tone -`Ctrl` `Shift` `U` | Auto white balance -`Ctrl` `E` | Edit in Photoshop -`Ctrl` `Shift` `C/V` | Copy/paste Develop settings -`Ctrl` `Alt` `V` | Paste settings from previous photo -`Ctrl` `Alt` `Shift` `Left` | Copy After settings to Before -`Ctrl` `Alt` `Shift` `Right` | Copy Before settings to After -`Ctrl` `Alt` `Shift` `Up` | Swap Before and After settings -`Up/Down` | Increase/decrease selected slider in small increments -`Shift` `Up/Down` | Increase/decrease selected slider in larger increments -`./,` | Cycle through Basic panel settings (forward/backward) -`(double-click slider name)` | Reset a slider -`Alt` `(click group name)` | Reset a group of sliders -`Ctrl` `Shift` `R` | Reset all settings -`Ctrl` `Shift` `S` | Sync settings -`Ctrl` `Alt` `S` | Sync settings bypassing Synchronize Settings dialog box -`Ctrl` `(click Sync button)` | Toggle Auto Sync -`Ctrl` `Alt` `Shift` `A` | Enable Auto Sync -`Ctrl` `Alt` `Shift` `M` | Match total exposures -`W` | Select White Balance tool (from any module) -`R` | Select the Crop tool (from any module) -`A` | Constrain aspect ratio when Crop tool is selected -`Shift` `A` | Crop to same aspect ratio as previous crop -`Alt` `(drag)` | Crop from center of photo -`O` | Cycle Crop grid overlay -`Shift` `O` | Cycle Crop grid overlay orientation -`X` | Switch crop between portrait and landscape orientation -`Ctrl` `Alt` `R` | Reset crop -`Shift` `T` | Select the Guided Upright tool -`Q` | Select the Spot Removal tool -`Shift` `T` | Toggle Brush between Clone and Heal modes when Spot Removal tool is selected -`K` | Select the Adjustment Brush tool (from any module) -`M` | Select the Graduated Filter tool -`Shift` `T` | Toggle Mask between Edit and Brush modes when the Graduated/Radial Filter is selected -`]/[` | Increase/decrease brush size -`Shift` `]/[` | Increase/decrease brush feathering -`/` | Switch between local adjustment brush A and B -`Alt` `(drag)` | Temporarily switch from brush A or B to Eraser -`Shift` `(drag)` | Paint a horizontal or vertical line -`H` | Show/hide local adjustment pin -`O` | Show/hide local adjustment mask overlay -`Shift` `O` | Cycle local adjustment mask overlay colors -`Ctrl` `Alt` `Shift` `T` | Select Targeted Adjustment tool to apply a Tone Curve adjustment -`Ctrl` `Alt` `Shift` `H` | Select Targeted Adjustment tool to apply a Hue adjustment -`Ctrl` `Alt` `Shift` `S` | Select Targeted Adjustment tool to apply a Saturation adjustment -`Ctrl` `Alt` `Shift` `L` | Select Targeted Adjustment tool to apply a Luminance adjustment -`Ctrl` `Alt` `Shift` `G` | Select Targeted Adjustment tool to apply a Grayscale Mix adjustment -`Ctrl` `Alt` `Shift` `N` | Deselect Targeted Adjustment tool -`J` | Show clipping -`Ctrl` `]` | Rotate photo right (clockwise) -`Ctrl` `[` | Rotate photo left (counterclockwise) -`Space/Z` | Toggle between Loupe and 1:1 Zoom preview -`Ctrl` `+/-` | Zoom in/out -`Ctrl` `Enter` | Play impromptu slide show -`Y` | View Before and After left/right -`Alt` `Y` | View Before and After top/bottom -`Shift` `Y` | View Before and After in a split screen -`\` | View Before only -`Ctrl` `N` | Create a new snapshot -`Ctrl` `Shift` `N` | Create a new preset -`Ctrl` `Alt` `N` | Create a new preset folder -`Ctrl` `J` | Open Develop view options -{.shortcuts} +| Shortcut | Action | +| ---------------------------- | ------------------------------------------------------------------------------------- | +| `V` | Convert to grayscale | +| `Ctrl` `U` | Auto tone | +| `Ctrl` `Shift` `U` | Auto white balance | +| `Ctrl` `E` | Edit in Photoshop | +| `Ctrl` `Shift` `C/V` | Copy/paste Develop settings | +| `Ctrl` `Alt` `V` | Paste settings from previous photo | +| `Ctrl` `Alt` `Shift` `Left` | Copy After settings to Before | +| `Ctrl` `Alt` `Shift` `Right` | Copy Before settings to After | +| `Ctrl` `Alt` `Shift` `Up` | Swap Before and After settings | +| `Up/Down` | Increase/decrease selected slider in small increments | +| `Shift` `Up/Down` | Increase/decrease selected slider in larger increments | +| `./,` | Cycle through Basic panel settings (forward/backward) | +| `(double-click slider name)` | Reset a slider | +| `Alt` `(click group name)` | Reset a group of sliders | +| `Ctrl` `Shift` `R` | Reset all settings | +| `Ctrl` `Shift` `S` | Sync settings | +| `Ctrl` `Alt` `S` | Sync settings bypassing Synchronize Settings dialog box | +| `Ctrl` `(click Sync button)` | Toggle Auto Sync | +| `Ctrl` `Alt` `Shift` `A` | Enable Auto Sync | +| `Ctrl` `Alt` `Shift` `M` | Match total exposures | +| `W` | Select White Balance tool (from any module) | +| `R` | Select the Crop tool (from any module) | +| `A` | Constrain aspect ratio when Crop tool is selected | +| `Shift` `A` | Crop to same aspect ratio as previous crop | +| `Alt` `(drag)` | Crop from center of photo | +| `O` | Cycle Crop grid overlay | +| `Shift` `O` | Cycle Crop grid overlay orientation | +| `X` | Switch crop between portrait and landscape orientation | +| `Ctrl` `Alt` `R` | Reset crop | +| `Shift` `T` | Select the Guided Upright tool | +| `Q` | Select the Spot Removal tool | +| `Shift` `T` | Toggle Brush between Clone and Heal modes when Spot Removal tool is selected | +| `K` | Select the Adjustment Brush tool (from any module) | +| `M` | Select the Graduated Filter tool | +| `Shift` `T` | Toggle Mask between Edit and Brush modes when the Graduated/Radial Filter is selected | +| `]/[` | Increase/decrease brush size | +| `Shift` `]/[` | Increase/decrease brush feathering | +| `/` | Switch between local adjustment brush A and B | +| `Alt` `(drag)` | Temporarily switch from brush A or B to Eraser | +| `Shift` `(drag)` | Paint a horizontal or vertical line | +| `H` | Show/hide local adjustment pin | +| `O` | Show/hide local adjustment mask overlay | +| `Shift` `O` | Cycle local adjustment mask overlay colors | +| `Ctrl` `Alt` `Shift` `T` | Select Targeted Adjustment tool to apply a Tone Curve adjustment | +| `Ctrl` `Alt` `Shift` `H` | Select Targeted Adjustment tool to apply a Hue adjustment | +| `Ctrl` `Alt` `Shift` `S` | Select Targeted Adjustment tool to apply a Saturation adjustment | +| `Ctrl` `Alt` `Shift` `L` | Select Targeted Adjustment tool to apply a Luminance adjustment | +| `Ctrl` `Alt` `Shift` `G` | Select Targeted Adjustment tool to apply a Grayscale Mix adjustment | +| `Ctrl` `Alt` `Shift` `N` | Deselect Targeted Adjustment tool | +| `J` | Show clipping | +| `Ctrl` `]` | Rotate photo right (clockwise) | +| `Ctrl` `[` | Rotate photo left (counterclockwise) | +| `Space/Z` | Toggle between Loupe and 1:1 Zoom preview | +| `Ctrl` `+/-` | Zoom in/out | +| `Ctrl` `Enter` | Play impromptu slide show | +| `Y` | View Before and After left/right | +| `Alt` `Y` | View Before and After top/bottom | +| `Shift` `Y` | View Before and After in a split screen | +| `\` | View Before only | +| `Ctrl` `N` | Create a new snapshot | +| `Ctrl` `Shift` `N` | Create a new preset | +| `Ctrl` `Alt` `N` | Create a new preset folder | +| `Ctrl` `J` | Open Develop view options | +{.shortcuts} ### Changing view and screen modes -Shortcut | Action ----|--- -`E` | Enter Library Loupe view -`G` | Enter Library Grid view -`C` | Enter Library Compare view -`N` | Enter Library Survey view -`D` | Open selected photo in the Develop module -`L` | Cycle forward through Lights Out modes -`Shift` `L` | Cycle backward through Lights Out modes -`Ctrl` `Shift` `L` | Toggle Lights Dim mode -`F` | Cycle screen modes -`Ctrl` `Shift` `F` | Switch between Normal and full-screen, hide panels -`Ctrl` `Alt` `F` | Go to Normal screen mode -`I` | Cycle info overlay -`Ctrl` `I` | Show/hide info overlay -{.shortcuts} - +| Shortcut | Action | +| ------------------ | -------------------------------------------------- | +| `E` | Enter Library Loupe view | +| `G` | Enter Library Grid view | +| `C` | Enter Library Compare view | +| `N` | Enter Library Survey view | +| `D` | Open selected photo in the Develop module | +| `L` | Cycle forward through Lights Out modes | +| `Shift` `L` | Cycle backward through Lights Out modes | +| `Ctrl` `Shift` `L` | Toggle Lights Dim mode | +| `F` | Cycle screen modes | +| `Ctrl` `Shift` `F` | Switch between Normal and full-screen, hide panels | +| `Ctrl` `Alt` `F` | Go to Normal screen mode | +| `I` | Cycle info overlay | +| `Ctrl` `I` | Show/hide info overlay | +{.shortcuts} ### Managing photos and catalogs -Shortcut | Action ----|--- -`Ctrl` `Shift` `I` | Import photos from disk -`Ctrl` `O` | Open catalog -`Ctrl` `,` | Open Preferences -`Ctrl` `Alt` `,` | Open Catalog Settings -`Ctrl` `Shift` `T` | Create new subfolder (segmented tethered capture) -`Ctrl` `T` | Hide/show tether capture bar -`Ctrl` `Shift` `N` | Create a new folder in the Library module -`Ctrl` `'` | Create virtual copy (Library and Develop module only) -`Ctrl` `R` | Show in Explorer/Finder (Library and Develop module only) -`Right/Left` | Go to next/previous photo in the Filmstrip -`Shift/Ctrl` `Click` | Select multiple folders or collections (in Library, Slideshow, Print, and Web modules) -`F2` | Rename photo (in Library module) -`Delete` | Delete selected photo(s) -`Alt` `Backspace` | Remove selected photo(s) from catalog -`Ctrl` `Alt` `Shift` `Backspace` | Delete selected photo(s) and move to Trash -`Ctrl` `Backspace` | Delete rejected photo(s) -`Ctrl` `E` | Edit in Photoshop -`Ctrl` `Alt` `E` | Open in other editor -`Ctrl` `Shift` `E` | Export selected photo(s) -`Ctrl` `Alt` `Shift` `E` | Export with previous settings -`Ctrl` `Alt` `Shift` `,` | Open plug-in manager -`Ctrl` `P` | Print selected photo -`Ctrl` `Shift` `P` | Open Page Setup dialog box -{.shortcuts} +| Shortcut | Action | +| -------------------------------- | -------------------------------------------------------------------------------------- | +| `Ctrl` `Shift` `I` | Import photos from disk | +| `Ctrl` `O` | Open catalog | +| `Ctrl` `,` | Open Preferences | +| `Ctrl` `Alt` `,` | Open Catalog Settings | +| `Ctrl` `Shift` `T` | Create new subfolder (segmented tethered capture) | +| `Ctrl` `T` | Hide/show tether capture bar | +| `Ctrl` `Shift` `N` | Create a new folder in the Library module | +| `Ctrl` `'` | Create virtual copy (Library and Develop module only) | +| `Ctrl` `R` | Show in Explorer/Finder (Library and Develop module only) | +| `Right/Left` | Go to next/previous photo in the Filmstrip | +| `Shift/Ctrl` `Click` | Select multiple folders or collections (in Library, Slideshow, Print, and Web modules) | +| `F2` | Rename photo (in Library module) | +| `Delete` | Delete selected photo(s) | +| `Alt` `Backspace` | Remove selected photo(s) from catalog | +| `Ctrl` `Alt` `Shift` `Backspace` | Delete selected photo(s) and move to Trash | +| `Ctrl` `Backspace` | Delete rejected photo(s) | +| `Ctrl` `E` | Edit in Photoshop | +| `Ctrl` `Alt` `E` | Open in other editor | +| `Ctrl` `Shift` `E` | Export selected photo(s) | +| `Ctrl` `Alt` `Shift` `E` | Export with previous settings | +| `Ctrl` `Alt` `Shift` `,` | Open plug-in manager | +| `Ctrl` `P` | Print selected photo | +| `Ctrl` `Shift` `P` | Open Page Setup dialog box | +{.shortcuts} ### Comparing photos in the Library module -Shortcut | Action ----|--- -`E/Enter` | Switch to Loupe view -`G/Esc` | Switch to Grid view -`C` | Switch to Compare view -`N` | Switch to Survey view -`Space/E` | Switch from Grid to Loupe view -`Down` | Swap select and candidate photos in Compare view -`Up` | Make next photos select and candidate in Compare view -`Z` | Toggle Zoom view -`Ctrl` `+/-` | Zoom in/out in Loupe view -`PgUp/PgDown` | Scroll up/down zoomed photo in Loupe view -`Home/End` | Go to beginning/end of Grid view -`Ctrl` `Enter` | Play impromptu slide show -`Ctrl` `]` | Rotate photo right (clockwise) -`Ctrl` `[` | Rotate photo left (counterclockwise) -`=/-` | Increase/decrease Grid thumbnail size -`PgUp/PgDown` | Scroll up/down Grid thumbnails -`Ctrl` `Shift` `H` | Toggle cell extras -`Ctrl` `Alt` `Shift` `H` | Show/hide badges -`J` | Cycle Grid views -`Ctrl` `J` | Open Library view options -`Ctrl` `(click)` | Select multiple discrete photos -`Shift` `(click)` | Select multiple contiguous photos -`Ctrl` `A` | Select all photos -`Ctrl` `D` | Deselect all photos -`Ctrl` `Shift` `D` | Select only active photo -`/` | Deselect active photo -`Shift` `Left/Right` | Add previous/next photo to selection -`Ctrl` `Alt` `A` | Select flagged photos -`Ctrl` `Alt` `Shift` `D` | Deselect unflagged photos -`Ctrl` `G` | Group into stack -`Ctrl` `Shift` `G` | Unstack -`S` | Toggle stack -`Shift` `S` | Move to top of stack -`Shift` `[` | Move up in stack -`Shift` `]` | Move down in stack -{.shortcuts} +| Shortcut | Action | +| ------------------------ | ----------------------------------------------------- | +| `E/Enter` | Switch to Loupe view | +| `G/Esc` | Switch to Grid view | +| `C` | Switch to Compare view | +| `N` | Switch to Survey view | +| `Space/E` | Switch from Grid to Loupe view | +| `Down` | Swap select and candidate photos in Compare view | +| `Up` | Make next photos select and candidate in Compare view | +| `Z` | Toggle Zoom view | +| `Ctrl` `+/-` | Zoom in/out in Loupe view | +| `PgUp/PgDown` | Scroll up/down zoomed photo in Loupe view | +| `Home/End` | Go to beginning/end of Grid view | +| `Ctrl` `Enter` | Play impromptu slide show | +| `Ctrl` `]` | Rotate photo right (clockwise) | +| `Ctrl` `[` | Rotate photo left (counterclockwise) | +| `=/-` | Increase/decrease Grid thumbnail size | +| `PgUp/PgDown` | Scroll up/down Grid thumbnails | +| `Ctrl` `Shift` `H` | Toggle cell extras | +| `Ctrl` `Alt` `Shift` `H` | Show/hide badges | +| `J` | Cycle Grid views | +| `Ctrl` `J` | Open Library view options | +| `Ctrl` `(click)` | Select multiple discrete photos | +| `Shift` `(click)` | Select multiple contiguous photos | +| `Ctrl` `A` | Select all photos | +| `Ctrl` `D` | Deselect all photos | +| `Ctrl` `Shift` `D` | Select only active photo | +| `/` | Deselect active photo | +| `Shift` `Left/Right` | Add previous/next photo to selection | +| `Ctrl` `Alt` `A` | Select flagged photos | +| `Ctrl` `Alt` `Shift` `D` | Deselect unflagged photos | +| `Ctrl` `G` | Group into stack | +| `Ctrl` `Shift` `G` | Unstack | +| `S` | Toggle stack | +| `Shift` `S` | Move to top of stack | +| `Shift` `[` | Move up in stack | +| `Shift` `]` | Move down in stack | +{.shortcuts} ### Rating and filtering photos -Shortcut | Action ----|--- -`1-5` | Set star rating -`Shift` `1-5` | Set star rating and go to next photo -`0` | Remove star rating -`Shift` `0` | Remove star rating and go to next photo -`]/[` | Increase/decrease rating by one star -`6` | Assign a red label -`7` | Assign a yellow label -`8` | Assign a green label -`9` | Assign a blue label -`Shift` `6-9` | Assign a color label and go to next photo -`P` | Flag photo as a pick -`Shift` `P` | Flag photo as a pick and go to next photo -`X` | Flag photo as a reject -`Shift` `X` | Flag photo as a reject and go to next photo -`U` | Unflag photo -`Shift` `U` | Unflag photo and go to next photo -`Ctrl` `Up/Down` | Increase/decrease flag status -\` | Cycle flag settings -`Ctrl` `Alt` `R` | Refine photos -`\` | Show/hide Library Filter bar -`Shift` `(click filter labels)` | Open multiple filters in the Filter bar -`Shift` `L` | Toggle filters on/off -`Ctrl` `F` | Find photo in the Library module -{.shortcuts} +| Shortcut | Action | +| ------------------------------- | ------------------------------------------- | +| `1-5` | Set star rating | +| `Shift` `1-5` | Set star rating and go to next photo | +| `0` | Remove star rating | +| `Shift` `0` | Remove star rating and go to next photo | +| `]/[` | Increase/decrease rating by one star | +| `6` | Assign a red label | +| `7` | Assign a yellow label | +| `8` | Assign a green label | +| `9` | Assign a blue label | +| `Shift` `6-9` | Assign a color label and go to next photo | +| `P` | Flag photo as a pick | +| `Shift` `P` | Flag photo as a pick and go to next photo | +| `X` | Flag photo as a reject | +| `Shift` `X` | Flag photo as a reject and go to next photo | +| `U` | Unflag photo | +| `Shift` `U` | Unflag photo and go to next photo | +| `Ctrl` `Up/Down` | Increase/decrease flag status | +| \` | Cycle flag settings | +| `Ctrl` `Alt` `R` | Refine photos | +| `\` | Show/hide Library Filter bar | +| `Shift` `(click filter labels)` | Open multiple filters in the Filter bar | +| `Shift` `L` | Toggle filters on/off | +| `Ctrl` `F` | Find photo in the Library module | +{.shortcuts} ### Working with collections -Shortcut | Action ----|--- -`Ctrl` `N` | Create a new collection in the Library module -`B` | Add to Quick Collection -`Shift` `B` | Add to Quick Collection and go to next photo -`Ctrl` `B` | Show Quick Collection -`Ctrl` `Alt` `B` | Save Quick Collection -`Ctrl` `Shift` `B` | Clear Quick Collection -`Ctrl` `Alt` `Shift` `B` | Set as target collection -{.shortcuts} +| Shortcut | Action | +| ------------------------ | --------------------------------------------- | +| `Ctrl` `N` | Create a new collection in the Library module | +| `B` | Add to Quick Collection | +| `Shift` `B` | Add to Quick Collection and go to next photo | +| `Ctrl` `B` | Show Quick Collection | +| `Ctrl` `Alt` `B` | Save Quick Collection | +| `Ctrl` `Shift` `B` | Clear Quick Collection | +| `Ctrl` `Alt` `Shift` `B` | Set as target collection | +{.shortcuts} ### Working with metadata and keywords in the Library module -Shortcut | Action ----|--- -`Ctrl` `K` | Add keywords -`Ctrl` `Shift` `K` | Edit keywords -`Ctrl` `Alt` `Shift` `K` | Set a keyword shortcut -`Shift` `K` | Add/remove keyword shortcut from selected photo -`Ctrl` `Alt` `K` | Enable painting -`Alt` `1-9` | Add a keyword from a keyword set to selected photo -`Alt` `0` | Cycle forward through keyword sets -`Alt` `Shift` `0` | Cycle backward through keyword sets -`Ctrl` `Alt` `Shift` `C/V` | Copy/paste metadata -`Ctrl` `S` | Save metadata to file -{.shortcuts} +| Shortcut | Action | +| -------------------------- | -------------------------------------------------- | +| `Ctrl` `K` | Add keywords | +| `Ctrl` `Shift` `K` | Edit keywords | +| `Ctrl` `Alt` `Shift` `K` | Set a keyword shortcut | +| `Shift` `K` | Add/remove keyword shortcut from selected photo | +| `Ctrl` `Alt` `K` | Enable painting | +| `Alt` `1-9` | Add a keyword from a keyword set to selected photo | +| `Alt` `0` | Cycle forward through keyword sets | +| `Alt` `Shift` `0` | Cycle backward through keyword sets | +| `Ctrl` `Alt` `Shift` `C/V` | Copy/paste metadata | +| `Ctrl` `S` | Save metadata to file | +{.shortcuts} ### Working in the Slideshow module -Shortcut | Action ----|--- -`Enter` | Play slide show -`Ctrl` `Enter` | Play impromptu slide show -`Space` | Pause slide show -`Alt` `Enter` | Preview slide show -`Esc` | End slide show -`Right` | Go to next slide -`Left` | Go to previous slide -`Ctrl` `]` | Rotate photo right (clockwise) -`Ctrl` `[` | Rotate photo left (counterclockwise) -`Ctrl` `Shift` `H` | Show/hide guides -`Ctrl` `J` | Export PDF slide show -`Ctrl` `Shift` `J` | Export JPEG slide show -`Ctrl` `Alt` `J` | Export video slide show -`Ctrl` `N` | Create a new slide show template -`Ctrl` `Shift` `N` | Create a new slide show template folder -`Ctrl` `S` | Save slide show settings -{.shortcuts} +| Shortcut | Action | +| ------------------ | --------------------------------------- | +| `Enter` | Play slide show | +| `Ctrl` `Enter` | Play impromptu slide show | +| `Space` | Pause slide show | +| `Alt` `Enter` | Preview slide show | +| `Esc` | End slide show | +| `Right` | Go to next slide | +| `Left` | Go to previous slide | +| `Ctrl` `]` | Rotate photo right (clockwise) | +| `Ctrl` `[` | Rotate photo left (counterclockwise) | +| `Ctrl` `Shift` `H` | Show/hide guides | +| `Ctrl` `J` | Export PDF slide show | +| `Ctrl` `Shift` `J` | Export JPEG slide show | +| `Ctrl` `Alt` `J` | Export video slide show | +| `Ctrl` `N` | Create a new slide show template | +| `Ctrl` `Shift` `N` | Create a new slide show template folder | +| `Ctrl` `S` | Save slide show settings | +{.shortcuts} ### Working in the Print module -Shortcut | Action ----|--- -`Ctrl` `P` | Print -`Ctrl` `Alt` `P` | Print one copy -`Ctrl` `Shift` `P` | Open Page Setup dialog box -`Ctrl` `Alt` `Shift` `P` | Open Print Settings dialog box -`Ctrl` `Shift` `Left` | Go to first page -`Ctrl` `Shift` `Right` | Go to last page -`Ctrl` `Left` | Go to previous page -`Ctrl` `Right` | Go to next page -`Ctrl` `Shift` `H` | Show/hide guides -`Ctrl` `R` | Show/hide rulers -`Ctrl` `Shift` `J` | Show/hide page bleed -`Ctrl` `Shift` `M` | Show/hide margins and gutters -`Ctrl` `Shift` `K` | Show/hide image cells -`Ctrl` `Shift` `U` | Show/hide dimensions -`Ctrl` `Enter` | Play impromptu slide show -`Ctrl` `]` | Rotate photo right (clockwise) -`Ctrl` `[` | Rotate photo left (counterclockwise) -`Ctrl` `N` | Create a new print template -`Ctrl` `Shift` `N` | Create a new print template folder -`Ctrl` `S` | Save print settings -{.shortcuts} +| Shortcut | Action | +| ------------------------ | ------------------------------------ | +| `Ctrl` `P` | Print | +| `Ctrl` `Alt` `P` | Print one copy | +| `Ctrl` `Shift` `P` | Open Page Setup dialog box | +| `Ctrl` `Alt` `Shift` `P` | Open Print Settings dialog box | +| `Ctrl` `Shift` `Left` | Go to first page | +| `Ctrl` `Shift` `Right` | Go to last page | +| `Ctrl` `Left` | Go to previous page | +| `Ctrl` `Right` | Go to next page | +| `Ctrl` `Shift` `H` | Show/hide guides | +| `Ctrl` `R` | Show/hide rulers | +| `Ctrl` `Shift` `J` | Show/hide page bleed | +| `Ctrl` `Shift` `M` | Show/hide margins and gutters | +| `Ctrl` `Shift` `K` | Show/hide image cells | +| `Ctrl` `Shift` `U` | Show/hide dimensions | +| `Ctrl` `Enter` | Play impromptu slide show | +| `Ctrl` `]` | Rotate photo right (clockwise) | +| `Ctrl` `[` | Rotate photo left (counterclockwise) | +| `Ctrl` `N` | Create a new print template | +| `Ctrl` `Shift` `N` | Create a new print template folder | +| `Ctrl` `S` | Save print settings | +{.shortcuts} ### Working in the Web module -Shortcut | Action ----|--- -`Ctrl` `R` | Reload web gallery -`Ctrl` `Alt` `P` | Preview in browser -`Ctrl` `Enter` | Play impromptu slide show -`Ctrl` `J` | Export web gallery -`Ctrl` `N` | Create a new web gallery template -`Ctrl` `Shift` `N` | Create a new web gallery template folder -`Ctrl` `S` | Save web gallery settings -{.shortcuts} +| Shortcut | Action | +| ------------------ | ---------------------------------------- | +| `Ctrl` `R` | Reload web gallery | +| `Ctrl` `Alt` `P` | Preview in browser | +| `Ctrl` `Enter` | Play impromptu slide show | +| `Ctrl` `J` | Export web gallery | +| `Ctrl` `N` | Create a new web gallery template | +| `Ctrl` `Shift` `N` | Create a new web gallery template folder | +| `Ctrl` `S` | Save web gallery settings | +{.shortcuts} ### Using help -Shortcut | Action ----|--- -`Ctrl` `/` | Display current module shortcuts -`(click)` | Hide current module shortcuts -`Ctrl` `Alt` `/` | Go to current module Help -`F1` | Open Community Help -{.shortcuts} - +| Shortcut | Action | +| ---------------- | -------------------------------- | +| `Ctrl` `/` | Display current module shortcuts | +| `(click)` | Hide current module shortcuts | +| `Ctrl` `Alt` `/` | Go to current module Help | +| `F1` | Open Community Help | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Adobe Lightroom CC](https://helpx.adobe.com/lightroom/help/keyboard-shortcuts.html) _(helpx.adobe.com)_ +- [Keyboard shortcuts for Adobe Lightroom CC](https://helpx.adobe.com/lightroom/help/keyboard-shortcuts.html) + _(helpx.adobe.com)_ diff --git a/source/_posts/adobe-photoshop.md b/source/_posts/adobe-photoshop.md index 912bfc40..10c66ed6 100644 --- a/source/_posts/adobe-photoshop.md +++ b/source/_posts/adobe-photoshop.md @@ -2,462 +2,456 @@ title: Adobe Photoshop date: 2022-11-23 16:23:31.706034 background: bg-[#071c25] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 283 keyboard shortcuts found in Adobe Photoshop + A visual cheat-sheet for the 283 keyboard shortcuts found in Adobe Photoshop --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### Popular shortcuts -Shortcut | Action ----|--- -`Ctrl` `T` | Free transform -`[` | Decrease brush size -`]` | Increase brush size -`Shift` `[` | Decrease brush hardness -`Shift` `]` | Increase brush hardness -`D` | Default foreground/background colors -`X` | Switch foreground/background colors -`Ctrl` `J` | New layer via copy -`Ctrl` `Shift` `J` | New layer via cut -`Esc` | Cancel any modal dialog window (including the Start Workspace) -`Enter` | Select the first edit field of the tool bar -`Tab` | Navigate between fields -`Shift` `Tab` | Navigate between fields in the opposite direction -`Alt` | Change cancel to reset -`Ctrl` `F` | Invoke the search experience -{.shortcuts} +| Shortcut | Action | +| ------------------ | -------------------------------------------------------------- | +| `Ctrl` `T` | Free transform | +| `[` | Decrease brush size | +| `]` | Increase brush size | +| `Shift` `[` | Decrease brush hardness | +| `Shift` `]` | Increase brush hardness | +| `D` | Default foreground/background colors | +| `X` | Switch foreground/background colors | +| `Ctrl` `J` | New layer via copy | +| `Ctrl` `Shift` `J` | New layer via cut | +| `Esc` | Cancel any modal dialog window (including the Start Workspace) | +| `Enter` | Select the first edit field of the tool bar | +| `Tab` | Navigate between fields | +| `Shift` `Tab` | Navigate between fields in the opposite direction | +| `Alt` | Change cancel to reset | +| `Ctrl` `F` | Invoke the search experience | +{.shortcuts} ### Use function keys -Shortcut | Action ----|--- -`F1` | Start help -`F2` | Cut -`F3` | Copy -`F4` | Paste -`F5` | Show/hide brush panel -`F6` | Show/hide color panel -`F7` | Show/hide layers panel -`F8` | Show/hide info panel -`F9` | Show/hide actions panel -`F12` | Revert -`Shift` `F5` | Fill -`Shift` `F6` | Feather selection -`Shift` `F7` | Inverse selection -{.shortcuts} +| Shortcut | Action | +| ------------ | ----------------------- | +| `F1` | Start help | +| `F2` | Cut | +| `F3` | Copy | +| `F4` | Paste | +| `F5` | Show/hide brush panel | +| `F6` | Show/hide color panel | +| `F7` | Show/hide layers panel | +| `F8` | Show/hide info panel | +| `F9` | Show/hide actions panel | +| `F12` | Revert | +| `Shift` `F5` | Fill | +| `Shift` `F6` | Feather selection | +| `Shift` `F7` | Inverse selection | +{.shortcuts} ### Select tools {.row-span-2} -Shortcut | Action ----|--- -`V` | Move tool -`M` | Rectangular marquee tool -`L` | Lasso tool -`W` | Magic wand tool > quick selection tool -`C` | Crop tool > slice tool > slice select tool -`I` | Eyedropper tool > ruler tool > note tool -`J` | Spot healing brush tool > healing brush tool > patch tool > red eye tool -`B` | Brush tool > pencil tool > color replacement tool > mixer brush tool -`S` | Clone stamp tool > pattern stamp tool -`Y` | History brush tool > Art history brush tool -`E` | Eraser tool > background eraser tool > magic eraser tool -`G` | Gradient tool > paint bucket tool -`O` | Dodge tool > burn tool > sponge tool -`P` | Pen tool > freeform pen tool -`T` | Horizontal type tool > vertical type tool > horizontal type mask tool > vertical type mask tool -`A` | Path selection tool > direct selection tool -`U` | Rectangle tool > rounded rectangle tool > ellipse tool > polygon tool > line tool -`H` | Hand tool -`R` | Rotate view tool -`Z` | Zoom tool -`D` | Default foreground/background colors -`X` | Switch foreground/background colors -`Q` | Toggle standard/quick mask modes -`J` | Content-aware move tool -`C` | Perspective crop tool -`V` | Artboard tool -`R` | Rotate view tool -`/` | Toggle preserve transparency -`,` | Previous brush -`.` | Next brush -`Shift` `,` | First brush -`Shift` `.` | Last brush -{.shortcuts} +| Shortcut | Action | +| ----------- | ----------------------------------------------------------------------------------------------- | +| `V` | Move tool | +| `M` | Rectangular marquee tool | +| `L` | Lasso tool | +| `W` | Magic wand tool > quick selection tool | +| `C` | Crop tool > slice tool > slice select tool | +| `I` | Eyedropper tool > ruler tool > note tool | +| `J` | Spot healing brush tool > healing brush tool > patch tool > red eye tool | +| `B` | Brush tool > pencil tool > color replacement tool > mixer brush tool | +| `S` | Clone stamp tool > pattern stamp tool | +| `Y` | History brush tool > Art history brush tool | +| `E` | Eraser tool > background eraser tool > magic eraser tool | +| `G` | Gradient tool > paint bucket tool | +| `O` | Dodge tool > burn tool > sponge tool | +| `P` | Pen tool > freeform pen tool | +| `T` | Horizontal type tool > vertical type tool > horizontal type mask tool > vertical type mask tool | +| `A` | Path selection tool > direct selection tool | +| `U` | Rectangle tool > rounded rectangle tool > ellipse tool > polygon tool > line tool | +| `H` | Hand tool | +| `R` | Rotate view tool | +| `Z` | Zoom tool | +| `D` | Default foreground/background colors | +| `X` | Switch foreground/background colors | +| `Q` | Toggle standard/quick mask modes | +| `J` | Content-aware move tool | +| `C` | Perspective crop tool | +| `V` | Artboard tool | +| `R` | Rotate view tool | +| `/` | Toggle preserve transparency | +| `,` | Previous brush | +| `.` | Next brush | +| `Shift` `,` | First brush | +| `Shift` `.` | Last brush | +{.shortcuts} ### View images {.row-span-2} -Shortcut | Action ----|--- -`Ctrl` `Tab` | Cycle through open documents -`Ctrl` `Shift` `Tab` | Switch to previous document -`Ctrl` `Shift` `W` | Close a file in Photoshop and open Bridge -`F` | Toggle forward between Standard screen > Full screen with menu bar > Full screen modes -`Shift` `F` | Toggle backwards between Standard screen > Full screen with menu bar > Full screen modes -`Space` `F` | Toggle forward canvas color -`Shift` `Space` `F` | Toggle backwards canvas color -`Space` | Switch to hand tool (when not in text-edit mode) -`Ctrl` `Space` | Switch to zoom in tool -`Alt` `Space` | Switch to zoom out tool -`Shift` `Enter` | Apply zoom percentage, and keep zoom percentage box active -`PgUp/PgDn` | Scroll up or down 1 screen -`Shift` `PgUp/PgDn` | Scroll up or down 10 units -`Home` | Move view to upper-left corner -`End` | Move view to lower-right corner -`\` | Toggle layer mask on/off as rubylith (layer mask must be selected) -{.shortcuts} +| Shortcut | Action | +| -------------------- | ---------------------------------------------------------------------------------------- | +| `Ctrl` `Tab` | Cycle through open documents | +| `Ctrl` `Shift` `Tab` | Switch to previous document | +| `Ctrl` `Shift` `W` | Close a file in Photoshop and open Bridge | +| `F` | Toggle forward between Standard screen > Full screen with menu bar > Full screen modes | +| `Shift` `F` | Toggle backwards between Standard screen > Full screen with menu bar > Full screen modes | +| `Space` `F` | Toggle forward canvas color | +| `Shift` `Space` `F` | Toggle backwards canvas color | +| `Space` | Switch to hand tool (when not in text-edit mode) | +| `Ctrl` `Space` | Switch to zoom in tool | +| `Alt` `Space` | Switch to zoom out tool | +| `Shift` `Enter` | Apply zoom percentage, and keep zoom percentage box active | +| `PgUp/PgDn` | Scroll up or down 1 screen | +| `Shift` `PgUp/PgDn` | Scroll up or down 10 units | +| `Home` | Move view to upper-left corner | +| `End` | Move view to lower-right corner | +| `\` | Toggle layer mask on/off as rubylith (layer mask must be selected) | +{.shortcuts} ### Use Puppet Warp -Shortcut | Action ----|--- -`Esc` | Cancel completely -`Ctrl` `Z` | Undo last pin adjustment -`Ctrl` `A` | Select all pins -`Ctrl` `D` | Deselect all pins -`H` | Temporarily hide pins -{.shortcuts} +| Shortcut | Action | +| ---------- | ------------------------ | +| `Esc` | Cancel completely | +| `Ctrl` `Z` | Undo last pin adjustment | +| `Ctrl` `A` | Select all pins | +| `Ctrl` `D` | Deselect all pins | +| `H` | Temporarily hide pins | +{.shortcuts} ### Use Refine Edge -Shortcut | Action ----|--- -`Ctrl` `Alt` `R` | Open the Refine Edge dialog box -`F` | Cycle forward through preview modes -`Shift` `F` | Cycle backwards through preview modes -`X` | Toggle between original image and selection preview -`P` | Toggle between original selection and refined version -`J` | Toggle radius preview on and off -`Shift` `E` | Toggle between Refine Radius and Erase Refinement tools -{.shortcuts} +| Shortcut | Action | +| ---------------- | ------------------------------------------------------- | +| `Ctrl` `Alt` `R` | Open the Refine Edge dialog box | +| `F` | Cycle forward through preview modes | +| `Shift` `F` | Cycle backwards through preview modes | +| `X` | Toggle between original image and selection preview | +| `P` | Toggle between original selection and refined version | +| `J` | Toggle radius preview on and off | +| `Shift` `E` | Toggle between Refine Radius and Erase Refinement tools | +{.shortcuts} ### Use the Filter Gallery -Shortcut | Action ----|--- -`Ctrl` `Alt` `F` | Reapply last-used filter -`Ctrl` | Change Cancel button to Default -`Alt` | Change Cancel button to Reset -`Ctrl` `Z` | Undo/Redo -`Ctrl` `Shift` `Z` | Step forward -`Ctrl` `Alt` `Z` | Step backward -{.shortcuts} +| Shortcut | Action | +| ------------------ | ------------------------------- | +| `Ctrl` `Alt` `F` | Reapply last-used filter | +| `Ctrl` | Change Cancel button to Default | +| `Alt` | Change Cancel button to Reset | +| `Ctrl` `Z` | Undo/Redo | +| `Ctrl` `Shift` `Z` | Step forward | +| `Ctrl` `Alt` `Z` | Step backward | +{.shortcuts} ### Use the Liquify filter -Shortcut | Action ----|--- -`W` | Forward warp tool -`R` | Reconstruct tool -`C` | Twirl clockwise tool -`S` | Pucker tool -`B` | Bloat tool -`O` | Push left tool -`M` | Mirror tool -`T` | Turbulence tool -`F` | Freeze mask tool -`D` | Thaw mask tool -`Alt` `(tool)` | Reverse direction for Bloat, Pucker, Push Left, and Mirror tools -`Tab` | Cycle through controls on right from top -`Shift` `Tab` | Cycle through controls on right from bottom -`Alt` | Change cancel to reset -{.shortcuts} +| Shortcut | Action | +| -------------- | ---------------------------------------------------------------- | +| `W` | Forward warp tool | +| `R` | Reconstruct tool | +| `C` | Twirl clockwise tool | +| `S` | Pucker tool | +| `B` | Bloat tool | +| `O` | Push left tool | +| `M` | Mirror tool | +| `T` | Turbulence tool | +| `F` | Freeze mask tool | +| `D` | Thaw mask tool | +| `Alt` `(tool)` | Reverse direction for Bloat, Pucker, Push Left, and Mirror tools | +| `Tab` | Cycle through controls on right from top | +| `Shift` `Tab` | Cycle through controls on right from bottom | +| `Alt` | Change cancel to reset | +{.shortcuts} ### Use Vanishing Point -Shortcut | Action ----|--- -`X` | Zoom 2x (temporary) -`Ctrl` `+` | Zoom in -`Ctrl` `-` | Zoom out -`Ctrl` `0` | Fit in view -`Ctrl` `Z` | Undo last action -`Ctrl` `Shift` `Z` | Redo last action -`Ctrl` `D` | Deselect all -`Ctrl` `H` | Hide selection and panes -`Arrows` | Move selection 1 pixel -`Shift` `Arrows` | Move selection 10 pixels -`Ctrl` `C` | Copy -`Ctrl` `V` | Paste -`Ctrl` `Shift` `T` | Repeat last duplicate and move -`Ctrl` `Alt` `T` | Create floating selection from the current selection -`Alt` `Shift` | Constrain selection to a 15 degree rotation -`Backspace` | Delete last node while creating plane -{.shortcuts} +| Shortcut | Action | +| ------------------ | ---------------------------------------------------- | +| `X` | Zoom 2x (temporary) | +| `Ctrl` `+` | Zoom in | +| `Ctrl` `-` | Zoom out | +| `Ctrl` `0` | Fit in view | +| `Ctrl` `Z` | Undo last action | +| `Ctrl` `Shift` `Z` | Redo last action | +| `Ctrl` `D` | Deselect all | +| `Ctrl` `H` | Hide selection and panes | +| `Arrows` | Move selection 1 pixel | +| `Shift` `Arrows` | Move selection 10 pixels | +| `Ctrl` `C` | Copy | +| `Ctrl` `V` | Paste | +| `Ctrl` `Shift` `T` | Repeat last duplicate and move | +| `Ctrl` `Alt` `T` | Create floating selection from the current selection | +| `Alt` `Shift` | Constrain selection to a 15 degree rotation | +| `Backspace` | Delete last node while creating plane | +{.shortcuts} ### Use the Camera Raw dialog box {.row-span-4} -Shortcut | Action ----|--- -`Z` | Zoom tool -`H` | Hand tool -`I` | White balance tool -`S` | Color sampler tool -`C` | Crop tool -`A` | Straighten tool -`B` | Spot removal tool -`E` | Red eye removal tool -`Ctrl` `Alt` `1` | Basic panel -`Ctrl` `Alt` `2` | Tone curve panel -`Ctrl` `Alt` `3` | Detail panel -`Ctrl` `Alt` `4` | HSL/Greyscale panel -`Ctrl` `Alt` `5` | Split toning panel -`Ctrl` `Alt` `6` | Lens corrections panel -`Ctrl` `Alt` `7` | Camera calibration panel -`Ctrl` `Alt` `8` | Presets panel -`Ctrl` `Alt` `9` | Open snapshots panel -`Ctrl` `Alt` `Shift` `T` | Parametric curve targeted adjustment tool -`Ctrl` `Alt` `Shift` `H` | Hue targeted adjustment tool -`Ctrl` `Alt` `Shift` `S` | Saturation targeted adjustment tool -`Ctrl` `Alt` `Shift` `L` | Luminance targeted adjustment tool -`Ctrl` `Alt` `Shift` `G` | Grayscale mix targeted adjustment tool -`T` | Last-used targeted adjustment tool -`K` | Adjustment brush tool -`G` | Graduated filter tool -`Alt` | Temporarily switch from Add to Erase mode for the Adjustment brush tool, or from Erase to Add mode -`Alt` `]/[` | Increase/decrease temporary adjustment brush tool size -`Alt` `Shift` `]/[` | Increase/decrease temporary adjustment brush tool feather -`Alt` `=/-` | Increase/decrease temporary adjustment brush tool size flow in increments of 10 -`N` | Switch to New mode from Add or Erase mode of the Adjustment Brush tool or Graduated filter -`M` | Toggle Auto Mask for Adjustment Brush tool -`Y` | Toggle Show Mask for Adjustment Brush tool -`V` | Toggle pins for Adjustment Brush tool -`L` | Rotate image left -`R` | Rotate image right -`Ctrl` | Temporarily switch to zoom in tool -`Alt` | Temporarily switch to zoom out tool and change the image open button to open copy -`P` | Toggle preview -`F` | Full screen mode -`Shift` | Temporarily activate the White Balance tool and change the open image button to open object -`Arrows` | Move selected point in curves panel 1 pixel -`Shift` `Arrows` | Move selected point in curves panel 10 pixels -`Ctrl` `R` | Open selected images in Camera Raw dialog box from Bridge -`O` | Highlight clipping warning -`U` | Shadows clipping warning -`Ctrl` `1-5` | Add 1-5 star rating (filmstrip mode) -`Ctrl` `./,` | Increase/decrease rating (filmstrip mode) -`Ctrl` `6` | Add red label (filmstrip mode) -`Ctrl` `7` | Add yellow label (filmstrip mode) -`Ctrl` `8` | Add green label (filmstrip mode) -`Ctrl` `9` | Add blue label (filmstrip mode) -`Ctrl` `Shift` `0` | Add purple label (filmstrip mode) -`Ctrl` `K` | Camera Raw preferences -`Ctrl` `Alt` | Delete Adobe Camera Raw preferences (on open) -{.shortcuts} +| Shortcut | Action | +| ------------------------ | -------------------------------------------------------------------------------------------------- | +| `Z` | Zoom tool | +| `H` | Hand tool | +| `I` | White balance tool | +| `S` | Color sampler tool | +| `C` | Crop tool | +| `A` | Straighten tool | +| `B` | Spot removal tool | +| `E` | Red eye removal tool | +| `Ctrl` `Alt` `1` | Basic panel | +| `Ctrl` `Alt` `2` | Tone curve panel | +| `Ctrl` `Alt` `3` | Detail panel | +| `Ctrl` `Alt` `4` | HSL/Greyscale panel | +| `Ctrl` `Alt` `5` | Split toning panel | +| `Ctrl` `Alt` `6` | Lens corrections panel | +| `Ctrl` `Alt` `7` | Camera calibration panel | +| `Ctrl` `Alt` `8` | Presets panel | +| `Ctrl` `Alt` `9` | Open snapshots panel | +| `Ctrl` `Alt` `Shift` `T` | Parametric curve targeted adjustment tool | +| `Ctrl` `Alt` `Shift` `H` | Hue targeted adjustment tool | +| `Ctrl` `Alt` `Shift` `S` | Saturation targeted adjustment tool | +| `Ctrl` `Alt` `Shift` `L` | Luminance targeted adjustment tool | +| `Ctrl` `Alt` `Shift` `G` | Grayscale mix targeted adjustment tool | +| `T` | Last-used targeted adjustment tool | +| `K` | Adjustment brush tool | +| `G` | Graduated filter tool | +| `Alt` | Temporarily switch from Add to Erase mode for the Adjustment brush tool, or from Erase to Add mode | +| `Alt` `]/[` | Increase/decrease temporary adjustment brush tool size | +| `Alt` `Shift` `]/[` | Increase/decrease temporary adjustment brush tool feather | +| `Alt` `=/-` | Increase/decrease temporary adjustment brush tool size flow in increments of 10 | +| `N` | Switch to New mode from Add or Erase mode of the Adjustment Brush tool or Graduated filter | +| `M` | Toggle Auto Mask for Adjustment Brush tool | +| `Y` | Toggle Show Mask for Adjustment Brush tool | +| `V` | Toggle pins for Adjustment Brush tool | +| `L` | Rotate image left | +| `R` | Rotate image right | +| `Ctrl` | Temporarily switch to zoom in tool | +| `Alt` | Temporarily switch to zoom out tool and change the image open button to open copy | +| `P` | Toggle preview | +| `F` | Full screen mode | +| `Shift` | Temporarily activate the White Balance tool and change the open image button to open object | +| `Arrows` | Move selected point in curves panel 1 pixel | +| `Shift` `Arrows` | Move selected point in curves panel 10 pixels | +| `Ctrl` `R` | Open selected images in Camera Raw dialog box from Bridge | +| `O` | Highlight clipping warning | +| `U` | Shadows clipping warning | +| `Ctrl` `1-5` | Add 1-5 star rating (filmstrip mode) | +| `Ctrl` `./,` | Increase/decrease rating (filmstrip mode) | +| `Ctrl` `6` | Add red label (filmstrip mode) | +| `Ctrl` `7` | Add yellow label (filmstrip mode) | +| `Ctrl` `8` | Add green label (filmstrip mode) | +| `Ctrl` `9` | Add blue label (filmstrip mode) | +| `Ctrl` `Shift` `0` | Add purple label (filmstrip mode) | +| `Ctrl` `K` | Camera Raw preferences | +| `Ctrl` `Alt` | Delete Adobe Camera Raw preferences (on open) | +{.shortcuts} ### Use the Black-and-White dialog box -Shortcut | Action ----|--- -`Ctrl` `Shift` `Alt` `B` | Open the Black-and-White dialog box -`Up/Down` | Increase/decrease selected value by 1% -`Shift` `Up/Down` | Increase/decrease selected value by 10% -{.shortcuts} +| Shortcut | Action | +| ------------------------ | --------------------------------------- | +| `Ctrl` `Shift` `Alt` `B` | Open the Black-and-White dialog box | +| `Up/Down` | Increase/decrease selected value by 1% | +| `Shift` `Up/Down` | Increase/decrease selected value by 10% | +{.shortcuts} ### Use Curves -Shortcut | Action ----|--- -`Ctrl` `M` | Open the Curves dialog box -`+` | Select next point on the curve -`-` | Select the previous point on the curve -`Ctrl` `D` | Deselect a point -`Del` | Delete a point on the curve -`Arrows` | Move the selected point 1 pixel -`Shift` `Arrows` | Move the selected point 10 pixels -{.shortcuts} +| Shortcut | Action | +| ---------------- | -------------------------------------- | +| `Ctrl` `M` | Open the Curves dialog box | +| `+` | Select next point on the curve | +| `-` | Select the previous point on the curve | +| `Ctrl` `D` | Deselect a point | +| `Del` | Delete a point on the curve | +| `Arrows` | Move the selected point 1 pixel | +| `Shift` `Arrows` | Move the selected point 10 pixels | +{.shortcuts} ### Transform selections, selection borders, and paths -Shortcut | Action ----|--- -`Alt` | Transform from center or reflect -`Shift` | Constrain -`Ctrl` | Distort -`Enter` | Apply -`Ctrl` `.` | Cancel -`Ctrl` `Alt` `T` | Free transform with duplicate data -`Ctrl` `Shift` `Alt` `T` | Transform again with duplicate data -{.shortcuts} +| Shortcut | Action | +| ------------------------ | ----------------------------------- | +| `Alt` | Transform from center or reflect | +| `Shift` | Constrain | +| `Ctrl` | Distort | +| `Enter` | Apply | +| `Ctrl` `.` | Cancel | +| `Ctrl` `Alt` `T` | Free transform with duplicate data | +| `Ctrl` `Shift` `Alt` `T` | Transform again with duplicate data | +{.shortcuts} ### Edit paths -Shortcut | Action ----|--- -`Ctrl` | Switch from path selection, pen, add anchor point, delete anchor point, or convert point tools to direct selection tool -`Alt` | Switch from pen tool to freeform pen tool to convert point tool when pointer is over anchor or direction point -{.shortcuts} +| Shortcut | Action | +| -------- | ----------------------------------------------------------------------------------------------------------------------- | +| `Ctrl` | Switch from path selection, pen, add anchor point, delete anchor point, or convert point tools to direct selection tool | +| `Alt` | Switch from pen tool to freeform pen tool to convert point tool when pointer is over anchor or direction point | +{.shortcuts} ### Use for painting -Shortcut | Action ----|--- -`Alt` `Shift` `0-9` | Mixer brush changes mix setting -`0-9` | Mixer brush changes wet setting -`00` | Mixer brush changes wet and mix to zero -`Shift` `+/-` | Cycle through blending modes -`Backspace` | Open fill dialog box on background or standard layer -`Alt` `Backspace` | Fill with foreground color -`Ctrl` `Backspace` | Fill with background color -`Ctrl` `Alt` `Backspace` | Fill from history -`Shift` `Backspace` | Displays fill dialog box -`/` | Lock transparent pixels on/off -{.shortcuts} +| Shortcut | Action | +| ------------------------ | ---------------------------------------------------- | +| `Alt` `Shift` `0-9` | Mixer brush changes mix setting | +| `0-9` | Mixer brush changes wet setting | +| `00` | Mixer brush changes wet and mix to zero | +| `Shift` `+/-` | Cycle through blending modes | +| `Backspace` | Open fill dialog box on background or standard layer | +| `Alt` `Backspace` | Fill with foreground color | +| `Ctrl` `Backspace` | Fill with background color | +| `Ctrl` `Alt` `Backspace` | Fill from history | +| `Shift` `Backspace` | Displays fill dialog box | +| `/` | Lock transparent pixels on/off | +{.shortcuts} ### Use for blending modes {.row-span-2} -Shortcut | Action ----|--- -`Ctrl` `-/+` | Cycle through blending modes -`Shift` `Alt` `N` | Normal -`Shift` `Alt` `I` | Dissolve -`Shift` `Alt` `Q` | Behind (brush tool only) -`Shift` `Alt` `R` | Clear (brush tool only) -`Shift` `Alt` `K` | Darken -`Shift` `Alt` `M` | Multiply -`Shift` `Alt` `B` | Color burn -`Shift` `Alt` `A` | Linear burn -`Shift` `Alt` `G` | Lighten -`Shift` `Alt` `S` | Screen -`Shift` `Alt` `D` | Color dodge -`Shift` `Alt` `W` | Linear dodge -`Shift` `Alt` `O` | Overlay -`Shift` `Alt` `F` | Soft light -`Shift` `Alt` `H` | Hard light -`Shift` `Alt` `V` | Vivid light -`Shift` `Alt` `J` | Linear light -`Shift` `Alt` `Z` | Pin light -`Shift` `Alt` `L` | Hard mix -`Shift` `Alt` `E` | Difference -`Shift` `Alt` `X` | Exclusion -`Shift` `Alt` `U` | Hue -`Shift` `Alt` `T` | Saturation -`Shift` `Alt` `C` | Color -`Shift` `Alt` `Y` | Luminosity -`Shift` `Alt` `N` | Set blending mode to Threshold for bitmap images, Normal for all other images -{.shortcuts} +| Shortcut | Action | +| ----------------- | ----------------------------------------------------------------------------- | +| `Ctrl` `-/+` | Cycle through blending modes | +| `Shift` `Alt` `N` | Normal | +| `Shift` `Alt` `I` | Dissolve | +| `Shift` `Alt` `Q` | Behind (brush tool only) | +| `Shift` `Alt` `R` | Clear (brush tool only) | +| `Shift` `Alt` `K` | Darken | +| `Shift` `Alt` `M` | Multiply | +| `Shift` `Alt` `B` | Color burn | +| `Shift` `Alt` `A` | Linear burn | +| `Shift` `Alt` `G` | Lighten | +| `Shift` `Alt` `S` | Screen | +| `Shift` `Alt` `D` | Color dodge | +| `Shift` `Alt` `W` | Linear dodge | +| `Shift` `Alt` `O` | Overlay | +| `Shift` `Alt` `F` | Soft light | +| `Shift` `Alt` `H` | Hard light | +| `Shift` `Alt` `V` | Vivid light | +| `Shift` `Alt` `J` | Linear light | +| `Shift` `Alt` `Z` | Pin light | +| `Shift` `Alt` `L` | Hard mix | +| `Shift` `Alt` `E` | Difference | +| `Shift` `Alt` `X` | Exclusion | +| `Shift` `Alt` `U` | Hue | +| `Shift` `Alt` `T` | Saturation | +| `Shift` `Alt` `C` | Color | +| `Shift` `Alt` `Y` | Luminosity | +| `Shift` `Alt` `N` | Set blending mode to Threshold for bitmap images, Normal for all other images | +{.shortcuts} ### Format type -Shortcut | Action ----|--- -`Ctrl` `Shift` `L/C/R` | Align left, center, or right -`Ctrl` `Shift` `X` | Choose 100% horizontal scale -`Ctrl` `Shift` `Alt` `X` | Choose 100% vertical scale -`Ctrl` `Shift` `Alt` `A` | Choose auto leading -`Ctrl` `Shift` `Q` | Choose 0 for tracking -`Ctrl` `Shift` `J` | Justify paragraph, left aligns last line -`Ctrl` `Shift` `F` | Justify paragraph, justifies all -`Ctrl` `Shift` `Alt` `H` | Toggle paragraph hyphenation on/off -`Ctrl` `Shift` `Alt` `T` | Toggle single/every-line composer on/off -`Ctrl` `Shift` `` | Decrease or increase type size of selected text 2 points or pixels -`Alt` `Up/Down` | Decrease or increase leading 2 points or pixels -`Shift` `Alt` `Up/Down` | Decrease or increase baseline shift 2 points or pixels -`Alt` `Left/Right` | Decrease or increase kerning/tracking 20/1000 ems -{.shortcuts} +| Shortcut | Action | +| ------------------------ | ------------------------------------------------------------------ | +| `Ctrl` `Shift` `L/C/R` | Align left, center, or right | +| `Ctrl` `Shift` `X` | Choose 100% horizontal scale | +| `Ctrl` `Shift` `Alt` `X` | Choose 100% vertical scale | +| `Ctrl` `Shift` `Alt` `A` | Choose auto leading | +| `Ctrl` `Shift` `Q` | Choose 0 for tracking | +| `Ctrl` `Shift` `J` | Justify paragraph, left aligns last line | +| `Ctrl` `Shift` `F` | Justify paragraph, justifies all | +| `Ctrl` `Shift` `Alt` `H` | Toggle paragraph hyphenation on/off | +| `Ctrl` `Shift` `Alt` `T` | Toggle single/every-line composer on/off | +| `Ctrl` `Shift` `` | Decrease or increase type size of selected text 2 points or pixels | +| `Alt` `Up/Down` | Decrease or increase leading 2 points or pixels | +| `Shift` `Alt` `Up/Down` | Decrease or increase baseline shift 2 points or pixels | +| `Alt` `Left/Right` | Decrease or increase kerning/tracking 20/1000 ems | +{.shortcuts} ### Use panels -Shortcut | Action ----|--- -`Shift` `Enter` | Apply value and keep text box active -`Tab` | Show/Hide all panels -`Shift` `Tab` | Show/Hide all panels except the toolbox and options bar -`Enter` | Highlight options bar (select tool first) -`Shift` `Up/Down` | Increase/decrease selected values by 10 -{.shortcuts} +| Shortcut | Action | +| ----------------- | ------------------------------------------------------- | +| `Shift` `Enter` | Apply value and keep text box active | +| `Tab` | Show/Hide all panels | +| `Shift` `Tab` | Show/Hide all panels except the toolbox and options bar | +| `Enter` | Highlight options bar (select tool first) | +| `Shift` `Up/Down` | Increase/decrease selected values by 10 | +{.shortcuts} ### Use adjustment layers -Shortcut | Action ----|--- -`Alt` `3` | Choose red channel for adjustment -`Alt` `4` | Choose green channel for adjustment -`Alt` `5` | Choose blue channel for adjustment -`Alt` `2` | Choose composite channel for adjustment -`Backspace` | Delete adjustment layer -{.shortcuts} +| Shortcut | Action | +| ----------- | --------------------------------------- | +| `Alt` `3` | Choose red channel for adjustment | +| `Alt` `4` | Choose green channel for adjustment | +| `Alt` `5` | Choose blue channel for adjustment | +| `Alt` `2` | Choose composite channel for adjustment | +| `Backspace` | Delete adjustment layer | +{.shortcuts} ### Use the Brush panel -Shortcut | Action ----|--- -`,/.` | Select previous/next brush size -`Shift` `,/.` | Select first/last brush -`Caps Lock` | Display precise cross hair for brushes -`Shift` `Alt` `P` | Toggle airbrush option -{.shortcuts} +| Shortcut | Action | +| ----------------- | -------------------------------------- | +| `,/.` | Select previous/next brush size | +| `Shift` `,/.` | Select first/last brush | +| `Caps Lock` | Display precise cross hair for brushes | +| `Shift` `Alt` `P` | Toggle airbrush option | +{.shortcuts} ### Use the Clone Source panel -Shortcut | Action ----|--- -`Alt` `Shift` | Show Clone Source (overlays iamge) -`Alt` `Shift` `(arrows)` | Nudge Clone Source -`Alt` `Shift` `` | Rotate Clone Source -`Alt` `Shift` `[/]` | Scale (increase or reduce size) Clone Source -{.shortcuts} +| Shortcut | Action | +| ------------------------ | -------------------------------------------- | +| `Alt` `Shift` | Show Clone Source (overlays iamge) | +| `Alt` `Shift` `(arrows)` | Nudge Clone Source | +| `Alt` `Shift` `` | Rotate Clone Source | +| `Alt` `Shift` `[/]` | Scale (increase or reduce size) Clone Source | +{.shortcuts} ### Use the Layers panel -Shortcut | Action ----|--- -`Ctrl` `Shift` `N` | New layer -`Ctrl` `J` | New layer via copy -`Ctrl` `Shift` `J` | New layer via cut -`Ctrl` `G` | Group layers -`Ctrl` `Shift` `G` | Ungroup layers -`Ctrl` `Alt` `G` | Create/release clipping mask -`Ctrl` `Alt` `A` | Select all layers -`Ctrl` `Shift` `E` | Merge visible layers -`Alt` `.` | Select top layer -`Alt` `.` | Select bottom layer -`Shift` `Alt` `[/]` | Add to layer selection in Layers panel -`Alt` `[/]` | Select next layer down/up -`Ctrl` `[/]` | Move target layer down/up -`Ctrl` `Shift` `Alt` `E` | Merge a copy of all visible layers into target layer -`Ctrl` `E` | Merge layers (while layers are highlighted) -`Ctrl` `Shift` `[/]` | Move layer to bottom or top -`/` | Toggle lock transparency for target layer, or last applied lock -`\` | Toggle rubylith mode for layer mask on/off -{.shortcuts} - +| Shortcut | Action | +| ------------------------ | --------------------------------------------------------------- | +| `Ctrl` `Shift` `N` | New layer | +| `Ctrl` `J` | New layer via copy | +| `Ctrl` `Shift` `J` | New layer via cut | +| `Ctrl` `G` | Group layers | +| `Ctrl` `Shift` `G` | Ungroup layers | +| `Ctrl` `Alt` `G` | Create/release clipping mask | +| `Ctrl` `Alt` `A` | Select all layers | +| `Ctrl` `Shift` `E` | Merge visible layers | +| `Alt` `.` | Select top layer | +| `Alt` `.` | Select bottom layer | +| `Shift` `Alt` `[/]` | Add to layer selection in Layers panel | +| `Alt` `[/]` | Select next layer down/up | +| `Ctrl` `[/]` | Move target layer down/up | +| `Ctrl` `Shift` `Alt` `E` | Merge a copy of all visible layers into target layer | +| `Ctrl` `E` | Merge layers (while layers are highlighted) | +| `Ctrl` `Shift` `[/]` | Move layer to bottom or top | +| `/` | Toggle lock transparency for target layer, or last applied lock | +| `\` | Toggle rubylith mode for layer mask on/off | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Adobe Photoshop](https://helpx.adobe.com/photoshop/using/default-keyboard-shortcuts.html) _(helpx.adobe.com)_ +- [Keyboard shortcuts for Adobe Photoshop](https://helpx.adobe.com/photoshop/using/default-keyboard-shortcuts.html) + _(helpx.adobe.com)_ diff --git a/source/_posts/adobe-xd.md b/source/_posts/adobe-xd.md index 60080f96..b8f39aac 100644 --- a/source/_posts/adobe-xd.md +++ b/source/_posts/adobe-xd.md @@ -2,220 +2,213 @@ title: Adobe XD date: 2022-11-23 16:23:31.703379 background: bg-[#400835] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 97 keyboard shortcuts found in Adobe XD + A visual cheat-sheet for the 97 keyboard shortcuts found in Adobe XD --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### Keys for Edit menu -Shortcut | Action ----|--- -`Ctrl` `Z` | Undo -`Ctrl` `Shift` `Z` | Redo -`Ctrl` `X` | Cut -`Ctrl` `C` | Copy -`Ctrl` `V` | Paste -`Ctrl` `Alt` `V` | Paste Appearance (Design mode) or Paste Interaction (Prototype mode) -`Ctrl` `D` | Duplicate -`Del` | Delete -`Ctrl` `A` | Select All -`Ctrl` `Shift` `A` | Deselect All -{.shortcuts} +| Shortcut | Action | +| ------------------ | -------------------------------------------------------------------- | +| `Ctrl` `Z` | Undo | +| `Ctrl` `Shift` `Z` | Redo | +| `Ctrl` `X` | Cut | +| `Ctrl` `C` | Copy | +| `Ctrl` `V` | Paste | +| `Ctrl` `Alt` `V` | Paste Appearance (Design mode) or Paste Interaction (Prototype mode) | +| `Ctrl` `D` | Duplicate | +| `Del` | Delete | +| `Ctrl` `A` | Select All | +| `Ctrl` `Shift` `A` | Deselect All | +{.shortcuts} ### Keys for File menu -Shortcut | Action ----|--- -`Ctrl` `N` | New -`Ctrl` `Shift` `O` | Open... -`Alt` `F4` | Close -`Ctrl` `S` | Save... -`Ctrl` `Shift` `S` | Save As... -`Ctrl` `Shift` `E` | Export Batch -`Ctrl` `E` | Export Selected -`Ctrl` `Shift` `I` | Import -{.shortcuts} +| Shortcut | Action | +| ------------------ | --------------- | +| `Ctrl` `N` | New | +| `Ctrl` `Shift` `O` | Open... | +| `Alt` `F4` | Close | +| `Ctrl` `S` | Save... | +| `Ctrl` `Shift` `S` | Save As... | +| `Ctrl` `Shift` `E` | Export Batch | +| `Ctrl` `E` | Export Selected | +| `Ctrl` `Shift` `I` | Import | +{.shortcuts} ### Keys for Pen/Path -Shortcut | Action ----|--- -`P` | Switch to Pen tool -`Alt` | Asymmetric control point -`Shift` | Snap control point angle -`Shift` | Snap anchor point angle -`Ctrl` `Alt` `U` | Add -`Ctrl` `Alt` `S` | Subtract -`Ctrl` `Alt` `I` | Intersect -`Ctrl` `Alt` `X` | Exclude overlap -`Ctrl` `8` | Convert to path -{.shortcuts} +| Shortcut | Action | +| ---------------- | ------------------------ | +| `P` | Switch to Pen tool | +| `Alt` | Asymmetric control point | +| `Shift` | Snap control point angle | +| `Shift` | Snap anchor point angle | +| `Ctrl` `Alt` `U` | Add | +| `Ctrl` `Alt` `S` | Subtract | +| `Ctrl` `Alt` `I` | Intersect | +| `Ctrl` `Alt` `X` | Exclude overlap | +| `Ctrl` `8` | Convert to path | +{.shortcuts} ### Keys for Layers (Objects), Groups, and Artboards {.row-span-2} -Shortcut | Action ----|--- -`Ctrl` `G` | Group layers -`Ctrl` `Shift` `G` | Ungroup layers -`Ctrl` `K` | Make component -`Ctrl` `L` | Lock/Unlock layer -`Ctrl` `,` | Hide/Show layer -`Ctrl` `Shift` `M` | Mask with shape -`Ctrl` `R` | Make repeat grid -`1-9` | Change layer opacity -`Ctrl` `;` | Show/Hide artboard guides -`Ctrl` `Shift` `;` | Lock artboard guides -{.shortcuts} +| Shortcut | Action | +| ------------------ | ------------------------- | +| `Ctrl` `G` | Group layers | +| `Ctrl` `Shift` `G` | Ungroup layers | +| `Ctrl` `K` | Make component | +| `Ctrl` `L` | Lock/Unlock layer | +| `Ctrl` `,` | Hide/Show layer | +| `Ctrl` `Shift` `M` | Mask with shape | +| `Ctrl` `R` | Make repeat grid | +| `1-9` | Change layer opacity | +| `Ctrl` `;` | Show/Hide artboard guides | +| `Ctrl` `Shift` `;` | Lock artboard guides | +{.shortcuts} ### Keys for Align -Shortcut | Action ----|--- -`Ctrl` `Shift` `Left` | Left -`Shift` `C` | Center (horizontally) -`Ctrl` `Shift` `Right` | Right -`Ctrl` `Shift` `Up` | Top -`Shift` `M` | Middle (vertically) -`Ctrl` `Shift` `Down` | Bottom -{.shortcuts} +| Shortcut | Action | +| ---------------------- | --------------------- | +| `Ctrl` `Shift` `Left` | Left | +| `Shift` `C` | Center (horizontally) | +| `Ctrl` `Shift` `Right` | Right | +| `Ctrl` `Shift` `Up` | Top | +| `Shift` `M` | Middle (vertically) | +| `Ctrl` `Shift` `Down` | Bottom | +{.shortcuts} ### Keys for Arrange -Shortcut | Action ----|--- -`Ctrl` `Shift` `]` | Bring to front -`Ctrl` `]` | Bring forward -`Ctrl` `[` | Send backward -`Ctrl` `Shift` `[` | Send to back -{.shortcuts} +| Shortcut | Action | +| ------------------ | -------------- | +| `Ctrl` `Shift` `]` | Bring to front | +| `Ctrl` `]` | Bring forward | +| `Ctrl` `[` | Send backward | +| `Ctrl` `Shift` `[` | Send to back | +{.shortcuts} ### Keys for Distribute -Shortcut | Action ----|--- -`Ctrl` `Shift` `H` | Horizontal -`Ctrl` `Shift` `V` | Vertical -{.shortcuts} +| Shortcut | Action | +| ------------------ | ---------- | +| `Ctrl` `Shift` `H` | Horizontal | +| `Ctrl` `Shift` `V` | Vertical | +{.shortcuts} ### Keys for Text -Shortcut | Action ----|--- -`Ctrl` `B` | Bold -`Ctrl` `I` | Italic -`Ctrl` `Shift` `.` | Increase font size -`Ctrl` `Shift` `,` | Decrease font size -{.shortcuts} +| Shortcut | Action | +| ------------------ | ------------------ | +| `Ctrl` `B` | Bold | +| `Ctrl` `I` | Italic | +| `Ctrl` `Shift` `.` | Increase font size | +| `Ctrl` `Shift` `,` | Decrease font size | +{.shortcuts} ### Keys for Operations menu -Shortcut | Action ----|--- -`Alt` | From center -`Shift` | Constrain -`Enter` | Edit text -`Shift` | Constrain rotate (15 deg) -`Shift` | Line constrain rotate (45 deg) -`Shift` `Alt` | Constrain from center -`Ctrl` | Direct select -`Ctrl` `Tab` | Switch between Design and Prototype mode -{.shortcuts} +| Shortcut | Action | +| ------------- | ---------------------------------------- | +| `Alt` | From center | +| `Shift` | Constrain | +| `Enter` | Edit text | +| `Shift` | Constrain rotate (15 deg) | +| `Shift` | Line constrain rotate (45 deg) | +| `Shift` `Alt` | Constrain from center | +| `Ctrl` | Direct select | +| `Ctrl` `Tab` | Switch between Design and Prototype mode | +{.shortcuts} ### Keys for Tools menu -Shortcut | Action ----|--- -`V` | Select -`R` | Rectangle -`E` | Ellipse -`Y` | Polygon -`L` | Line -`P` | Pen -`T` | Text -`A` | Artboard -`Z` | Zoom -`Ctrl` `3` | Zoom to selection -`I` | Eyedropper -{.shortcuts} +| Shortcut | Action | +| ---------- | ----------------- | +| `V` | Select | +| `R` | Rectangle | +| `E` | Ellipse | +| `Y` | Polygon | +| `L` | Line | +| `P` | Pen | +| `T` | Text | +| `A` | Artboard | +| `Z` | Zoom | +| `Ctrl` `3` | Zoom to selection | +| `I` | Eyedropper | +{.shortcuts} ### Keys for Interface and Viewing Options -Shortcut | Action ----|--- -`Ctrl` `+` | Zoom in -`Ctrl` `-` | Zoom out -`Ctrl` `0` | Zoom to fit -`Ctrl` `1` | Zoom to 100% -`Ctrl` `2` | Zoom to 200% -`Space` | Pan -`Ctrl` `Shift` `Y` | Assets -`Ctrl` `Y` | Layers -`Ctrl` `Shift` `'` | Show layout grid -`Ctrl` `'` | Show square grid -`Ctrl` `Tab` | Switch between Design and Prototype mode -`Up/Down` | Increase or decrease a value in a field by 1 -`Shift` `Up/Down` | Increase or decrease a value in a field by 10 -{.shortcuts} +| Shortcut | Action | +| ------------------ | --------------------------------------------- | +| `Ctrl` `+` | Zoom in | +| `Ctrl` `-` | Zoom out | +| `Ctrl` `0` | Zoom to fit | +| `Ctrl` `1` | Zoom to 100% | +| `Ctrl` `2` | Zoom to 200% | +| `Space` | Pan | +| `Ctrl` `Shift` `Y` | Assets | +| `Ctrl` `Y` | Layers | +| `Ctrl` `Shift` `'` | Show layout grid | +| `Ctrl` `'` | Show square grid | +| `Ctrl` `Tab` | Switch between Design and Prototype mode | +| `Up/Down` | Increase or decrease a value in a field by 1 | +| `Shift` `Up/Down` | Increase or decrease a value in a field by 10 | +{.shortcuts} ### Keys for Design Specs -Shortcut | Action ----|--- -`Ctrl` `+/-` | Zoom -`Ctrl` `0` | Reset zoom -`(arrows)` | Pan -`Shift` `(arrows)` | Faster pan -`Esc` | Go from Spec view to UX flow view -`Esc` | Remove focus from artboard in UX flow view -{.shortcuts} +| Shortcut | Action | +| ------------------ | ------------------------------------------ | +| `Ctrl` `+/-` | Zoom | +| `Ctrl` `0` | Reset zoom | +| `(arrows)` | Pan | +| `Shift` `(arrows)` | Faster pan | +| `Esc` | Go from Spec view to UX flow view | +| `Esc` | Remove focus from artboard in UX flow view | +{.shortcuts} ### Keys for Vector Editing -Shortcut | Action ----|--- -`Enter` | Start editing selected vector object -`Esc` | Stop editing selected vector object -{.shortcuts} +| Shortcut | Action | +| -------- | ------------------------------------ | +| `Enter` | Start editing selected vector object | +| `Esc` | Stop editing selected vector object | +{.shortcuts} ### Keys for Prototyping -Shortcut | Action ----|--- -`Ctrl` `A` | See all connections in prototype mode -`Ctrl` `Enter` | Preview -`Ctrl` `Shift` `E` | Share prototype online -`Left/Right` | Navigate artboards in preview or shared prototype -{.shortcuts} - +| Shortcut | Action | +| ------------------ | ------------------------------------------------- | +| `Ctrl` `A` | See all connections in prototype mode | +| `Ctrl` `Enter` | Preview | +| `Ctrl` `Shift` `E` | Share prototype online | +| `Left/Right` | Navigate artboards in preview or shared prototype | +{.shortcuts} +## Also see -Also see --------- - [Keyboard shortcuts for Adobe XD](https://helpx.adobe.com/xd/help/keyboard-shortcuts.html) _(helpx.adobe.com)_ diff --git a/source/_posts/affinity-designer.md b/source/_posts/affinity-designer.md index c5db1d87..483ca7ed 100644 --- a/source/_posts/affinity-designer.md +++ b/source/_posts/affinity-designer.md @@ -2,167 +2,155 @@ title: Affinity Designer date: 2022-11-23 16:23:31.702748 background: bg-[#79cdf1] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 108 keyboard shortcuts found in Affinity Designer + A visual cheat-sheet for the 108 keyboard shortcuts found in Affinity Designer --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### Designer Persona {.row-span-2} -Shortcut | Action ----|--- -`Esc` | Cancel operation -`F1` | Help -`0-9` | Change opacity -`Tab` | Toggle UI -`T` | Cycle text tools -`Y` | Transparency tool -`I` | Color picker tool -`P` | Pen tool -`[` | Decrease brush size -`]` | Increase brush size -`A` | Node tool -`F` | Point transform tool -`G` | Fill tool -`H` | View tool -`;` | Toggle snapping -`\` | Clip to canvas -`Z` | Zoom tool -`X` | Toggle active selector -`C` | Corner tool -`V` | Move tool -`B` | Vector brush tool -`N` | Pencil tool -`M` | Cycle shape tool -`,` | Cycle split view -`.` | Reset selection box -`/` | Set fill or stroke to none -`Ctrl` `1` | Zoom to 100% -`Ctrl` `2` | Zoom to 200% -`Ctrl` `3` | Zoom to 400% -`Ctrl` `4` | Zoom to 800% -`Ctrl` `8` | Zoom to actual size -`Ctrl` `9` | Zoom to pixel size -`Ctrl` `0` | Zoom to fit -`Ctrl` `-` | Zoom out -`Ctrl` `=` | Zoom in -`Ctrl` `Tab` | Switch view -`Ctrl` `W` | Close -`Ctrl` `R` | Rulers -`Ctrl` `T` | Character -`Ctrl` `Y` | Redo -`Ctrl` `O` | Open -`Ctrl` `P` | Print -`Ctrl` `[` | Back one -`Ctrl` `]` | Forward one -`Ctrl` `Enter` | Convert to curves -`Ctrl` `A` | Select all -`Ctrl` `S` | Save -`Ctrl` `G` | Group -`Ctrl` `J` | Duplicate -`Ctrl` `L` | Lock -`Ctrl` `;` | Show guides -`Ctrl` `'` | Show grid -`Ctrl` `Z` | Undo -`Ctrl` `X` | Cut -`Ctrl` `C` | Copy -`Ctrl` `V` | Paste -`Ctrl` `N` | New -`Ctrl` `M` | Curves -`Ctrl` `,` | Preferences -`Space` | Hold for view tool -{.shortcuts} - - - -### Pixel Persona +| Shortcut | Action | +| -------------- | -------------------------- | +| `Esc` | Cancel operation | +| `F1` | Help | +| `0-9` | Change opacity | +| `Tab` | Toggle UI | +| `T` | Cycle text tools | +| `Y` | Transparency tool | +| `I` | Color picker tool | +| `P` | Pen tool | +| `[` | Decrease brush size | +| `]` | Increase brush size | +| `A` | Node tool | +| `F` | Point transform tool | +| `G` | Fill tool | +| `H` | View tool | +| `;` | Toggle snapping | +| `\` | Clip to canvas | +| `Z` | Zoom tool | +| `X` | Toggle active selector | +| `C` | Corner tool | +| `V` | Move tool | +| `B` | Vector brush tool | +| `N` | Pencil tool | +| `M` | Cycle shape tool | +| `,` | Cycle split view | +| `.` | Reset selection box | +| `/` | Set fill or stroke to none | +| `Ctrl` `1` | Zoom to 100% | +| `Ctrl` `2` | Zoom to 200% | +| `Ctrl` `3` | Zoom to 400% | +| `Ctrl` `4` | Zoom to 800% | +| `Ctrl` `8` | Zoom to actual size | +| `Ctrl` `9` | Zoom to pixel size | +| `Ctrl` `0` | Zoom to fit | +| `Ctrl` `-` | Zoom out | +| `Ctrl` `=` | Zoom in | +| `Ctrl` `Tab` | Switch view | +| `Ctrl` `W` | Close | +| `Ctrl` `R` | Rulers | +| `Ctrl` `T` | Character | +| `Ctrl` `Y` | Redo | +| `Ctrl` `O` | Open | +| `Ctrl` `P` | Print | +| `Ctrl` `[` | Back one | +| `Ctrl` `]` | Forward one | +| `Ctrl` `Enter` | Convert to curves | +| `Ctrl` `A` | Select all | +| `Ctrl` `S` | Save | +| `Ctrl` `G` | Group | +| `Ctrl` `J` | Duplicate | +| `Ctrl` `L` | Lock | +| `Ctrl` `;` | Show guides | +| `Ctrl` `'` | Show grid | +| `Ctrl` `Z` | Undo | +| `Ctrl` `X` | Cut | +| `Ctrl` `C` | Copy | +| `Ctrl` `V` | Paste | +| `Ctrl` `N` | New | +| `Ctrl` `M` | Curves | +| `Ctrl` `,` | Preferences | +| `Space` | Hold for view tool | -Shortcut | Action ----|--- -`W` | Selection brush -`E` | Erase brush -`I` | Color picker tool -`O` | Cycle dodge or burn brushes -`[` | Decrease brush size -`]` | Increase brush size -`G` | Flood fill tool -`L` | Freehand selection tool -`X` | Toggle active selector -`V` | Move tool -`B` | Cycle brush or pixel tools -`M` | Cycle marquees -`,` | Cycle split view -`.` | Reset selection box {.shortcuts} +### Pixel Persona +| Shortcut | Action | +| -------- | --------------------------- | +| `W` | Selection brush | +| `E` | Erase brush | +| `I` | Color picker tool | +| `O` | Cycle dodge or burn brushes | +| `[` | Decrease brush size | +| `]` | Increase brush size | +| `G` | Flood fill tool | +| `L` | Freehand selection tool | +| `X` | Toggle active selector | +| `V` | Move tool | +| `B` | Cycle brush or pixel tools | +| `M` | Cycle marquees | +| `,` | Cycle split view | +| `.` | Reset selection box | - -### Modifiers and Layer Control {.row-span-2} - -Shortcut | Action ----|--- -`Alt` | Drawing and painting - temporarily switches to the color picker tool -`Shift` | Freehand selection tools - connects clicked points with straight lines -`Shift` | Reverses aspect ratio constraint on scaling -`Ctrl` | Scales from the center of selection -`Alt` | Ignores snapping during an operation -`Ctrl` | Geometric shapes - moves red handles symmetrically -`Shift` | Path text - maintains distance between red handles -`Ctrl` | Path text - moves red handles symmetrically -`Shift` | Pixel brush painting - draws straight line connecting two strokes -`Shift` | Pixel selections - constrains marquee to square or circle -`Ctrl` | Pixel selection - moves underlying layer rather than selection -`Alt` | Pixel selection - removes from selection -`Ctrl` | Pixel tool - erases from current layer or projects -`Shift` | Rotating - constrains rotations to 15 degree intervals -`Shift` | Selecting - scales multiple objects and layers -`Alt` | Selecting - selects object or layer behind current selection -`Ctrl` | Shearing - mirrors shear around center of object -`Shift` | Vector drawing tools - constrains handle angles to 15 degrees -`Alt` | Vector drawing tools - sets node to sharp for creating cusps -`Ctrl` | Vector drawing tools - temporarily switches to node editing from pen {.shortcuts} +### Modifiers and Layer Control {.row-span-2} + +| Shortcut | Action | +| -------- | ---------------------------------------------------------------------- | +| `Alt` | Drawing and painting - temporarily switches to the color picker tool | +| `Shift` | Freehand selection tools - connects clicked points with straight lines | +| `Shift` | Reverses aspect ratio constraint on scaling | +| `Ctrl` | Scales from the center of selection | +| `Alt` | Ignores snapping during an operation | +| `Ctrl` | Geometric shapes - moves red handles symmetrically | +| `Shift` | Path text - maintains distance between red handles | +| `Ctrl` | Path text - moves red handles symmetrically | +| `Shift` | Pixel brush painting - draws straight line connecting two strokes | +| `Shift` | Pixel selections - constrains marquee to square or circle | +| `Ctrl` | Pixel selection - moves underlying layer rather than selection | +| `Alt` | Pixel selection - removes from selection | +| `Ctrl` | Pixel tool - erases from current layer or projects | +| `Shift` | Rotating - constrains rotations to 15 degree intervals | +| `Shift` | Selecting - scales multiple objects and layers | +| `Alt` | Selecting - selects object or layer behind current selection | +| `Ctrl` | Shearing - mirrors shear around center of object | +| `Shift` | Vector drawing tools - constrains handle angles to 15 degrees | +| `Alt` | Vector drawing tools - sets node to sharp for creating cusps | +| `Ctrl` | Vector drawing tools - temporarily switches to node editing from pen | - -### Advanced Text - -Shortcut | Action ----|--- -`Ctrl` `T` | Character panel -`Ctrl` `Shift` `T` | Typography dialog -`Ctrl` `B` | Bold -`Ctrl` `I` | Italic -`Ctrl` `U` | Underline -`Ctrl` `Alt` `L` | Align left -`Ctrl` `Alt` `C` | Align center -`Ctrl` `Alt` `R` | Align right -`Alt` `Shift` `Left` | Tighten spacing more -`Alt` `Shift` `Right` | Loosen spacing more -`Ctrl` `Alt` `Shift` `Up` | Precise raise baseline -`Ctrl` `Alt` `Shift` `Down` | Precise lower baseline -`Ctrl` `Alt` `Down` | Precise increase leading -`Ctrl` `Alt` `Up` | Precise decrease leading {.shortcuts} +### Advanced Text +| Shortcut | Action | +| --------------------------- | ------------------------ | +| `Ctrl` `T` | Character panel | +| `Ctrl` `Shift` `T` | Typography dialog | +| `Ctrl` `B` | Bold | +| `Ctrl` `I` | Italic | +| `Ctrl` `U` | Underline | +| `Ctrl` `Alt` `L` | Align left | +| `Ctrl` `Alt` `C` | Align center | +| `Ctrl` `Alt` `R` | Align right | +| `Alt` `Shift` `Left` | Tighten spacing more | +| `Alt` `Shift` `Right` | Loosen spacing more | +| `Ctrl` `Alt` `Shift` `Up` | Precise raise baseline | +| `Ctrl` `Alt` `Shift` `Down` | Precise lower baseline | +| `Ctrl` `Alt` `Down` | Precise increase leading | +| `Ctrl` `Alt` `Up` | Precise decrease leading | +{.shortcuts} +## Also see - -Also see --------- -- [Keyboard shortcuts for Affinity Designer](https://affinityspotlight.com/article/downloadable-affinity-keyboard-shortcut-cheat-sheets/) _(affinityspotlight.com)_ +- [Keyboard shortcuts for Affinity Designer](https://affinityspotlight.com/article/downloadable-affinity-keyboard-shortcut-cheat-sheets/) + _(affinityspotlight.com)_ diff --git a/source/_posts/affinity-photo.md b/source/_posts/affinity-photo.md index 64e4a241..6aba2dc5 100644 --- a/source/_posts/affinity-photo.md +++ b/source/_posts/affinity-photo.md @@ -2,350 +2,329 @@ title: Affinity Photo date: 2022-11-23 16:23:31.694998 background: bg-[#d578f0] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 177 keyboard shortcuts found in Affinity Photo + A visual cheat-sheet for the 177 keyboard shortcuts found in Affinity Photo --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### Editing {.row-span-2} -Shortcut | Action ----|--- -`Ctrl` `Alt` `I` | Resize document -`Ctrl` `Alt` `C` | Resize canvas -`.` | Reset selection box -`;` | Toggle snapping -`Ctrl` | Erase with pixel tool on current layer -`X` | Switch between Stroke/Fill color selectors -`Shift` `X` | Swap Stroke/Fill colour selectors -`/` | Set no fill on Stroke/Fill color selectors -`O` | Toggle between crop tool overlays -`Shift` `O` | Flip golden spiral overlay (crop tool enabled) -`Esc` | Cancel a sizing, moving, or creating operation -`(arrows)` | Move item -`Shift` `(arrows)` | Move item in 10x measurement units -{.shortcuts} - +| Shortcut | Action | +| ------------------ | ---------------------------------------------- | +| `Ctrl` `Alt` `I` | Resize document | +| `Ctrl` `Alt` `C` | Resize canvas | +| `.` | Reset selection box | +| `;` | Toggle snapping | +| `Ctrl` | Erase with pixel tool on current layer | +| `X` | Switch between Stroke/Fill color selectors | +| `Shift` `X` | Swap Stroke/Fill colour selectors | +| `/` | Set no fill on Stroke/Fill color selectors | +| `O` | Toggle between crop tool overlays | +| `Shift` `O` | Flip golden spiral overlay (crop tool enabled) | +| `Esc` | Cancel a sizing, moving, or creating operation | +| `(arrows)` | Move item | +| `Shift` `(arrows)` | Move item in 10x measurement units | - -### Tools (Tone Mapping Persona) - -Shortcut | Action ----|--- -`H` | View tool -`Z` | Zoom tool -`B` | Overlay paint tool -`E` | Overlay erase tool -`G` | Overlay gradient tool {.shortcuts} +### Tools (Tone Mapping Persona) +| Shortcut | Action | +| -------- | --------------------- | +| `H` | View tool | +| `Z` | Zoom tool | +| `B` | Overlay paint tool | +| `E` | Overlay erase tool | +| `G` | Overlay gradient tool | - -### Files - -Shortcut | Action ----|--- -`Ctrl` `N` | New document -`Ctrl` `Shift` `Alt` `N` | New from clipboard -`Ctrl` `O` | Open document -`Ctrl` `W` | Close document, or close app when no documents are open -`Ctrl` `Tab` | Switch document/view -`Ctrl` `S` | Save -`Ctrl` `Shift` `S` | Save as -`Ctrl` `Shift` `Alt` `S` | Export -`Ctrl` `P` | Print {.shortcuts} +### Files +| Shortcut | Action | +| ------------------------ | ------------------------------------------------------- | +| `Ctrl` `N` | New document | +| `Ctrl` `Shift` `Alt` `N` | New from clipboard | +| `Ctrl` `O` | Open document | +| `Ctrl` `W` | Close document, or close app when no documents are open | +| `Ctrl` `Tab` | Switch document/view | +| `Ctrl` `S` | Save | +| `Ctrl` `Shift` `S` | Save as | +| `Ctrl` `Shift` `Alt` `S` | Export | +| `Ctrl` `P` | Print | - -### Vector Graphics - -Shortcut | Action ----|--- -`Ctrl` | Edit curves as you draw using node editing (from pen) -`Ctrl` `Enter` | Convert to curves {.shortcuts} +### Vector Graphics +| Shortcut | Action | +| -------------- | ----------------------------------------------------- | +| `Ctrl` | Edit curves as you draw using node editing (from pen) | +| `Ctrl` `Enter` | Convert to curves | -### Tools (Export Persona) - -Shortcut | Action ----|--- -`S` | Slice tool -`L` | Layer select tool {.shortcuts} +### Tools (Export Persona) +| Shortcut | Action | +| -------- | ----------------- | +| `S` | Slice tool | +| `L` | Layer select tool | -### Tools (Develop Persona) - -Shortcut | Action ----|--- -`S` | Sampler tool -`W` | White balance tool -`R` | Red eye removal tool -`L` | Blemish removal tool -`B` | Overlay paint tool -`E` | Overlay erase tool -`G` | Overlay gradient tool -`C` | Crop tool -`Z` | Zoom tool -`H` | View tool {.shortcuts} +### Tools (Develop Persona) +| Shortcut | Action | +| -------- | --------------------- | +| `S` | Sampler tool | +| `W` | White balance tool | +| `R` | Red eye removal tool | +| `L` | Blemish removal tool | +| `B` | Overlay paint tool | +| `E` | Overlay erase tool | +| `G` | Overlay gradient tool | +| `C` | Crop tool | +| `Z` | Zoom tool | +| `H` | View tool | -### Tools - -Shortcut | Action ----|--- -`G` | Flood fill tool/gradient cycle -`H` | View tool -`V` | Move tool -`C` | Crop tool -`W` | Selection tools cycle -`P` | Pen and node tool cycle -`Z` | Zoom tool -`S` | Clone tool -`U` | Shape tools cycle -`T` | Text tools cycle -`O` | Dodge, burn, and sponge brush tool cycle -`J` | Retouch tools cycle -`B` | Painting tools cycle -`E` | Erase tools cycle -`M` | Marquee selection tools cycle -`L` | Free hand selection tool {.shortcuts} +### Tools +| Shortcut | Action | +| -------- | ---------------------------------------- | +| `G` | Flood fill tool/gradient cycle | +| `H` | View tool | +| `V` | Move tool | +| `C` | Crop tool | +| `W` | Selection tools cycle | +| `P` | Pen and node tool cycle | +| `Z` | Zoom tool | +| `S` | Clone tool | +| `U` | Shape tools cycle | +| `T` | Text tools cycle | +| `O` | Dodge, burn, and sponge brush tool cycle | +| `J` | Retouch tools cycle | +| `B` | Painting tools cycle | +| `E` | Erase tools cycle | +| `M` | Marquee selection tools cycle | +| `L` | Free hand selection tool | -### Tools (Liquify Persona) - -Shortcut | Action ----|--- -`P` | Liquify push forward tool -`L` | Liquify push left tool -`T` | Liquify twirl tool -`U` | Liquify pinch tool -`B` | Liquify turbulence tool -`C` | Liquify mesh clone tool -`R` | Liquify reconstruct tool -`F` | Liquify freeze tool -`W` | Liquify thaw tool -`Z` | Liquify zoom tool -`H` | Liquify view tool {.shortcuts} +### Tools (Liquify Persona) +| Shortcut | Action | +| -------- | ------------------------- | +| `P` | Liquify push forward tool | +| `L` | Liquify push left tool | +| `T` | Liquify twirl tool | +| `U` | Liquify pinch tool | +| `B` | Liquify turbulence tool | +| `C` | Liquify mesh clone tool | +| `R` | Liquify reconstruct tool | +| `F` | Liquify freeze tool | +| `W` | Liquify thaw tool | +| `Z` | Liquify zoom tool | +| `H` | Liquify view tool | - -### Text {.row-span-3} - -Shortcut | Action ----|--- -`Ctrl` `>` | Bigger text -`Ctrl` `<` | Smaller text -`Ctrl` `Alt` `>` | Precise bigger text -`Ctrl` `Alt` `<` | Precise smaller text -`Alt` `Left` | Tighten -`Alt` `Right` | Loosen -`Alt` `Shift` `Left` | Tighten more -`Alt` `Shift` `Right` | Loosen more -`Ctrl` `B` | Bold -`Ctrl` `I` | Italic -`Ctrl` `U` | Underline -`Ctrl` `T` | Show character -`Ctrl` `Shift` `T` | Show typography -`Ctrl` `Alt` `+` | Superscript -`Ctrl` `Alt` `-` | Subscript -`Ctrl` `Alt` `L` | Align left -`Ctrl` `Alt` `R` | Align right -`Ctrl` `Alt` `C` | Align center -`Ctrl` `Alt` `Shift` `\` | Justify left -`Alt` `Down` | Increase paragraph leading -`Alt` `Up` | Decrease paragraph leading -`Ctrl` `Shift` `Up` | Precise paragraph increase leading -`Ctrl` `Shift` `Down` | Precise paragraph decrease leading -`Alt` `Shift` `Up` | Raise baseline -`Alt` `Shift` `Down` | Lower baseline -`Ctrl` `Alt` `Shift` `Up` | Precise raise baseline -`Ctrl` `Alt` `Shift` `Down` | Precise lower baseline -`Ctrl` `Alt` `Space` | Special characters -`Ctrl` `Enter` | Line break -`Alt` `Space` | Non-breaking space -`Alt` `-` | En dash -`Alt` `Shift` `-` | Em dash -`Ctrl` `Shift` `;` | Spelling options {.shortcuts} +### Text {.row-span-3} +| Shortcut | Action | +| --------------------------- | ---------------------------------- | +| `Ctrl` `>` | Bigger text | +| `Ctrl` `<` | Smaller text | +| `Ctrl` `Alt` `>` | Precise bigger text | +| `Ctrl` `Alt` `<` | Precise smaller text | +| `Alt` `Left` | Tighten | +| `Alt` `Right` | Loosen | +| `Alt` `Shift` `Left` | Tighten more | +| `Alt` `Shift` `Right` | Loosen more | +| `Ctrl` `B` | Bold | +| `Ctrl` `I` | Italic | +| `Ctrl` `U` | Underline | +| `Ctrl` `T` | Show character | +| `Ctrl` `Shift` `T` | Show typography | +| `Ctrl` `Alt` `+` | Superscript | +| `Ctrl` `Alt` `-` | Subscript | +| `Ctrl` `Alt` `L` | Align left | +| `Ctrl` `Alt` `R` | Align right | +| `Ctrl` `Alt` `C` | Align center | +| `Ctrl` `Alt` `Shift` `\` | Justify left | +| `Alt` `Down` | Increase paragraph leading | +| `Alt` `Up` | Decrease paragraph leading | +| `Ctrl` `Shift` `Up` | Precise paragraph increase leading | +| `Ctrl` `Shift` `Down` | Precise paragraph decrease leading | +| `Alt` `Shift` `Up` | Raise baseline | +| `Alt` `Shift` `Down` | Lower baseline | +| `Ctrl` `Alt` `Shift` `Up` | Precise raise baseline | +| `Ctrl` `Alt` `Shift` `Down` | Precise lower baseline | +| `Ctrl` `Alt` `Space` | Special characters | +| `Ctrl` `Enter` | Line break | +| `Alt` `Space` | Non-breaking space | +| `Alt` `-` | En dash | +| `Alt` `Shift` `-` | Em dash | +| `Ctrl` `Shift` `;` | Spelling options | -### Tools (Panorama Persona) - -Shortcut | Action ----|--- -`A` | Transform source image tool -`L` | Add to source image mask tool -`U` | Erase from source image mask tool {.shortcuts} +### Tools (Panorama Persona) +| Shortcut | Action | +| -------- | --------------------------------- | +| `A` | Transform source image tool | +| `L` | Add to source image mask tool | +| `U` | Erase from source image mask tool | - +{.shortcuts} ### Edit -Shortcut | Action ----|--- -`Ctrl` `Z` | Undo -`Ctrl` `Shift` `Z` | Redo -`Ctrl` `Shift` `C` | Copy merged -`Ctrl` `Shift` `V` | Paste style -`Ctrl` `Alt` `V` | Paste FX -`Ctrl` `Shift` `Alt` `V` | Paste without format -`Ctrl` `Alt` `V` | Paste inside -`Shift` `F5` | Fill -`Alt` `Tab` | Inpaint -{.shortcuts} +| Shortcut | Action | +| ------------------------ | -------------------- | +| `Ctrl` `Z` | Undo | +| `Ctrl` `Shift` `Z` | Redo | +| `Ctrl` `Shift` `C` | Copy merged | +| `Ctrl` `Shift` `V` | Paste style | +| `Ctrl` `Alt` `V` | Paste FX | +| `Ctrl` `Shift` `Alt` `V` | Paste without format | +| `Ctrl` `Alt` `V` | Paste inside | +| `Shift` `F5` | Fill | +| `Alt` `Tab` | Inpaint | +{.shortcuts} ### Layer Operations -Shortcut | Action ----|--- -`Ctrl` `Alt` `A` | Select all layers -`Ctrl` `G` | Group -`Ctrl` `Shift` `G` | Ungroup -`Ctrl` `J` | Duplicate -`Ctrl` `I` | Invert -`Ctrl` `Shift` `]` | Move to front -`Ctrl` `]` | Move forward one -`Ctrl` `Shift` `[` | Move to back -`Ctrl` `[` | Move back one -`Ctrl` `Shift` `N` | New layer -`Ctrl` `E` | Merge down -`Ctrl` `Shift` `E` | Merge selected -`Ctrl` `Shift` `Alt` `E` | Merge visible -`F` | Toggle between frequency separation layers -`Ctrl` `Alt` `P` | Edit live projection -{.shortcuts} +| Shortcut | Action | +| ------------------------ | ------------------------------------------ | +| `Ctrl` `Alt` `A` | Select all layers | +| `Ctrl` `G` | Group | +| `Ctrl` `Shift` `G` | Ungroup | +| `Ctrl` `J` | Duplicate | +| `Ctrl` `I` | Invert | +| `Ctrl` `Shift` `]` | Move to front | +| `Ctrl` `]` | Move forward one | +| `Ctrl` `Shift` `[` | Move to back | +| `Ctrl` `[` | Move back one | +| `Ctrl` `Shift` `N` | New layer | +| `Ctrl` `E` | Merge down | +| `Ctrl` `Shift` `E` | Merge selected | +| `Ctrl` `Shift` `Alt` `E` | Merge visible | +| `F` | Toggle between frequency separation layers | +| `Ctrl` `Alt` `P` | Edit live projection | +{.shortcuts} ### Brush -Shortcut | Action ----|--- -`0-9` | Change selected layer content/brush tool's opacity -`[/]` | Increase/decrease brush width -{.shortcuts} +| Shortcut | Action | +| -------- | -------------------------------------------------- | +| `0-9` | Change selected layer content/brush tool's opacity | +| `[/]` | Increase/decrease brush width | +{.shortcuts} ### View -Shortcut | Action ----|--- -`Ctrl` `+` | Zoom in -`Ctrl` `-` | Zoom out -`Ctrl` `0` | Zoom to fit -`Ctrl` `1` | Zoom to 100% -`Ctrl` `2` | Zoom to 200% -`Ctrl` `3` | Zoom to 400% -`Ctrl` `4` | Zoom to 800% -`Ctrl` `8` | Zoom to actual size -`Ctrl` `9` | Zoom to pixel size -`Space` | Hot key panning -`Ctrl` `Space` | Hot key zoom in -`H` | View tool -`Ctrl` `Tab` | Switch between views -`Ctrl` `R` | Show rulers -`Ctrl` `;` | Show guides -`Ctrl` `'` | Show grid -{.shortcuts} +| Shortcut | Action | +| -------------- | -------------------- | +| `Ctrl` `+` | Zoom in | +| `Ctrl` `-` | Zoom out | +| `Ctrl` `0` | Zoom to fit | +| `Ctrl` `1` | Zoom to 100% | +| `Ctrl` `2` | Zoom to 200% | +| `Ctrl` `3` | Zoom to 400% | +| `Ctrl` `4` | Zoom to 800% | +| `Ctrl` `8` | Zoom to actual size | +| `Ctrl` `9` | Zoom to pixel size | +| `Space` | Hot key panning | +| `Ctrl` `Space` | Hot key zoom in | +| `H` | View tool | +| `Ctrl` `Tab` | Switch between views | +| `Ctrl` `R` | Show rulers | +| `Ctrl` `;` | Show guides | +| `Ctrl` `'` | Show grid | +{.shortcuts} ### Pixel Selection / Mask -Shortcut | Action ----|--- -`Ctrl` `A` | Select all -`Ctrl` `D` | Deselect -`Ctrl` `Shift` `I` | Invert pixel selection -`Ctrl` | Add to selection (marquee or free hand selection tools only) -`Alt` | Remove from selection -`Ctrl` `B` | Grow or shrink -`Shift` `F6` | Feather -`Ctrl` `Alt` `R` | Refine edges -`(arrows)` | Move selection in 1 pixel increments -`Shift` `(arrows)` | Move selection in 10 pixel increments -`Q` | Quick mask -`Ctrl` `I` | Invert mask -{.shortcuts} +| Shortcut | Action | +| ------------------ | ------------------------------------------------------------ | +| `Ctrl` `A` | Select all | +| `Ctrl` `D` | Deselect | +| `Ctrl` `Shift` `I` | Invert pixel selection | +| `Ctrl` | Add to selection (marquee or free hand selection tools only) | +| `Alt` | Remove from selection | +| `Ctrl` `B` | Grow or shrink | +| `Shift` `F6` | Feather | +| `Ctrl` `Alt` `R` | Refine edges | +| `(arrows)` | Move selection in 1 pixel increments | +| `Shift` `(arrows)` | Move selection in 10 pixel increments | +| `Q` | Quick mask | +| `Ctrl` `I` | Invert mask | +{.shortcuts} ### Workspace -Shortcut | Action ----|--- -`Ctrl` `Shift` `H` | Show or hide studio panels -`Ctrl` `Alt` `T` | Show or hide toolbar -`Tab` | Toggle UI -`Ctrl` `H` | Hide workspace -{.shortcuts} +| Shortcut | Action | +| ------------------ | -------------------------- | +| `Ctrl` `Shift` `H` | Show or hide studio panels | +| `Ctrl` `Alt` `T` | Show or hide toolbar | +| `Tab` | Toggle UI | +| `Ctrl` `H` | Hide workspace | +{.shortcuts} ### Adjustment and Filter -Shortcut | Action ----|--- -`Ctrl` `L` | Levels adjustment -`Ctrl` `U` | HSL adjustment -`Ctrl` `I` | Invert adjustment -`Ctrl` `M` | Curves adjustment -`Ctrl` `Shift` `Alt` `B` | Black and white adjustment -`Ctrl` `F` | Repeat filter -{.shortcuts} +| Shortcut | Action | +| ------------------------ | -------------------------- | +| `Ctrl` `L` | Levels adjustment | +| `Ctrl` `U` | HSL adjustment | +| `Ctrl` `I` | Invert adjustment | +| `Ctrl` `M` | Curves adjustment | +| `Ctrl` `Shift` `Alt` `B` | Black and white adjustment | +| `Ctrl` `F` | Repeat filter | +{.shortcuts} ### Liquify Persona -Shortcut | Action ----|--- -`Ctrl` `D` | Mask all -`Ctrl` `I` | Invert mask -`Ctrl` `A` | Clear mask -{.shortcuts} +| Shortcut | Action | +| ---------- | ----------- | +| `Ctrl` `D` | Mask all | +| `Ctrl` `I` | Invert mask | +| `Ctrl` `A` | Clear mask | +{.shortcuts} ### Misc -Shortcut | Action ----|--- -`Ctrl` `,` | Preferences -`Ctrl` `Alt` `L` | Liquify persona -`Ctrl` `Alt` `E` | Export persona -`Ctrl` `Alt` `R` | Develop persona -`Ctrl` `Alt` `H` | Hide others (applications) -`Ctrl` `Alt` `M` | Media browser -{.shortcuts} - +| Shortcut | Action | +| ---------------- | -------------------------- | +| `Ctrl` `,` | Preferences | +| `Ctrl` `Alt` `L` | Liquify persona | +| `Ctrl` `Alt` `E` | Export persona | +| `Ctrl` `Alt` `R` | Develop persona | +| `Ctrl` `Alt` `H` | Hide others (applications) | +| `Ctrl` `Alt` `M` | Media browser | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Affinity Photo](https://affinityspotlight.com/article/downloadable-affinity-keyboard-shortcut-cheat-sheets/) _(affinityspotlight.com)_ +- [Keyboard shortcuts for Affinity Photo](https://affinityspotlight.com/article/downloadable-affinity-keyboard-shortcut-cheat-sheets/) + _(affinityspotlight.com)_ diff --git a/source/_posts/ai.md b/source/_posts/ai.md index 99fe5319..750dafc8 100644 --- a/source/_posts/ai.md +++ b/source/_posts/ai.md @@ -9,946 +9,947 @@ tags: - Resources categories: - Other -intro: This is a quick reference list of cheat sheets for the AI Navigation Directory, designed to help you discover exciting AI tools. +intro: + This is a quick reference list of cheat sheets for the AI Navigation Directory, designed to help you discover exciting + AI tools. --- -Getting Started ---------------- - +## Getting Started ### Health & fitness + - [![Favicon](https://icon.horse/icon/buoyhealth.com) Buoy health](https://buoyhealth.com) - [![Favicon](https://icon.horse/icon/mdacne.com) Mdacne](https://mdacne.com) - [![Favicon](https://icon.horse/icon/youper.ai) Youper](https://youper.ai) - [![Favicon](https://icon.horse/icon/endel.io/sleep) Endel × james blake: wind down](https://endel.io/sleep) - [![Favicon](https://icon.horse/icon/nowdialogue.com) Dialogue](https://nowdialogue.com) - [![Favicon](https://icon.horse/icon/maslo.ai) Maslo ai](https://maslo.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Text + - [![Favicon](https://icon.horse/icon/quillbot.com) Quillbot paraphraser](https://quillbot.com) - [![Favicon](https://icon.horse/icon/notion.so/product/ai) Notion ai](https://notion.so/product/ai) - [![Favicon](https://icon.horse/icon/naturalreaders.com) Naturalreader](https://naturalreaders.com) - [![Favicon](https://icon.horse/icon/wordtune.com/read) Wordtune read](https://wordtune.com/read) - [![Favicon](https://icon.horse/icon/uberduck.ai) Underduck](https://uberduck.ai) - [![Favicon](https://icon.horse/icon/aiseo.ai/templates/slogan-generator.html) Slogan generator](https://aiseo.ai/templates/slogan-generator.html) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Writing + - [![Favicon](https://icon.horse/icon/prowritingaid.com) Prowritingaid](https://prowritingaid.com) - [![Favicon](https://icon.horse/icon/sapling.ai) Sapling](https://sapling.ai) - [![Favicon](https://icon.horse/icon/coschedule.com/headline-studio) Headline studio](https://coschedule.com/headline-studio) - [![Favicon](https://icon.horse/icon/trinka.ai) Trinka](https://trinka.ai) - [![Favicon](https://icon.horse/icon/benchmarkemail.com/features/smart-content) Benchmark email](https://benchmarkemail.com/features/smart-content) - [![Favicon](https://icon.horse/icon/sassbook.com/ai-writer) Sassbook ai writer](https://sassbook.com/ai-writer) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Image editing + - [![Favicon](https://icon.horse/icon/remove.bg) Remove.bg](https://remove.bg) - [![Favicon](https://icon.horse/icon/tools.picsart.com/image) Quicktools by picsart](https://tools.picsart.com/image) - [![Favicon](https://icon.horse/icon/befunky.com) Befunky](https://befunky.com) - [![Favicon](https://icon.horse/icon/topazlabs.com/topaz-photo-ai) Topaz photo ai](https://topazlabs.com/topaz-photo-ai) - [![Favicon](https://icon.horse/icon/photoroom.com) Photoroom](https://photoroom.com) - [![Favicon](https://icon.horse/icon/erase.bg) Erase.bg](https://erase.bg) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Productivity + - [![Favicon](https://icon.horse/icon/openai.com/blog/dall-e) Dall-e](https://openai.com/blog/dall-e) - [![Favicon](https://icon.horse/icon/flowrite.com) Flowrite](https://flowrite.com) - [![Favicon](https://icon.horse/icon/golden.com) Golden](https://golden.com) - [![Favicon](https://icon.horse/icon/picturethisai.com) Picturethis](https://picturethisai.com) - [![Favicon](https://icon.horse/icon/wandb.ai/site) Weights & biases](https://wandb.ai/site) - [![Favicon](https://icon.horse/icon/vwo.com/ab-testing-openai-gpt-3) Vwo humans vs ai](https://vwo.com/ab-testing-openai-gpt-3) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Music + - [![Favicon](https://icon.horse/icon/openai.com/blog/musenet) Musenet (openai)](https://openai.com/blog/musenet) - [![Favicon](https://icon.horse/icon/sites.research.google/trc) Tensorflow research cloud](https://sites.research.google/trc) - [![Favicon](https://icon.horse/icon/moises.ai) Moises app](https://moises.ai) - [![Favicon](https://icon.horse/icon/soundraw.io) Soundraw](https://soundraw.io) - [![Favicon](https://icon.horse/icon/theselyricsdonotexist.com) Ai lyrics generator](https://theselyricsdonotexist.com) - [![Favicon](https://icon.horse/icon/phonicmind.com) Phonicmind](https://phonicmind.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Design assistant + - [![Favicon](https://icon.horse/icon/kapwing.com/cartoonify) Cartoonify](https://kapwing.com/cartoonify) - [![Favicon](https://icon.horse/icon/icons8.com/upscaler) Smart upscaler](https://icons8.com/upscaler) - [![Favicon](https://icon.horse/icon/icons8.com/bgremover) Background remover](https://icons8.com/bgremover) - [![Favicon](https://icon.horse/icon/icons8.com/lunacy) Lunacy](https://icons8.com/lunacy) - [![Favicon](https://icon.horse/icon/pixlr.com) Pixlr](https://pixlr.com) - [![Favicon](https://icon.horse/icon/namecheap.com/logo-maker) Launchaco free logo builder](https://namecheap.com/logo-maker) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Image + - [![Favicon](https://icon.horse/icon/icons8.com/swapper) Swapper](https://icons8.com/swapper) - [![Favicon](https://icon.horse/icon/movavi.com/photo-editor) Movavi picverse](https://movavi.com/photo-editor) - [![Favicon](https://icon.horse/icon/clipstudio.net/en) Clipstudio](https://clipstudio.net/en) - [![Favicon](https://icon.horse/icon/looka.com) Looka](https://looka.com) - [![Favicon](https://icon.horse/icon/midjourney.com) Midjourney](https://midjourney.com) - [![Favicon](https://icon.horse/icon/deepai.org/machine-learning-model/text2img) Text to image api](https://deepai.org/machine-learning-model/text2img) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Business + - [![Favicon](https://icon.horse/icon/tools.picsart.com/text/ai-writer) Ai writer by picsart](https://tools.picsart.com/text/ai-writer) - [![Favicon](https://icon.horse/icon/aiseo.ai/tools/paraphrasing-tool.html) Intelligent paraphraser](https://aiseo.ai/tools/paraphrasing-tool.html) - [![Favicon](https://icon.horse/icon/bardeen.ai) Bardeen ai](https://bardeen.ai) - [![Favicon](https://icon.horse/icon/wonsulting.com/resumai) Resumai](https://wonsulting.com/resumai) - [![Favicon](https://icon.horse/icon/durable.co/ai-website-builder) Durable ai site builder](https://durable.co/ai-website-builder) - [![Favicon](https://icon.horse/icon/tally.so/r/npeJgq) Startup pitch generator](https://tally.so/r/npeJgq) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Virtual reality + - [![Favicon](https://icon.horse/icon/myheritage.com/deep-nostalgia) Deep nostalgia™](https://myheritage.com/deep-nostalgia) - [![Favicon](https://icon.horse/icon/resemble.ai/gpt-3) Gpt-3 custom ai voices](https://resemble.ai/gpt-3) - [![Favicon](https://icon.horse/icon/sketchar.io) Ai portraits by sketchar](https://sketchar.io) - [![Favicon](https://icon.horse/icon/anything.world) Anything world](https://anything.world) - [![Favicon](https://icon.horse/icon/aipoly.com) Aipoly](https://aipoly.com) - [![Favicon](https://icon.horse/icon/aws.amazon.com/comprehend) Amazon comprehend](https://aws.amazon.com/comprehend) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Developer tools + - [![Favicon](https://icon.horse/icon/coda.io/@coda/openai-for-coda) Openai for coda](https://coda.io/@coda/openai-for-coda) - [![Favicon](https://icon.horse/icon/case-study-page-nanonets.webflow.io/ocr-api) Nanonets ocr](https://case-study-page-nanonets.webflow.io/ocr-api) - [![Favicon](https://icon.horse/icon/ai.google) Google.ai](https://ai.google) - [![Favicon](https://icon.horse/icon/assemblyai.com) Assemblyai](https://assemblyai.com) - [![Favicon](https://icon.horse/icon/httpie.io) Httpie ai](https://httpie.io) - [![Favicon](https://icon.horse/icon/runpod.io) Runpod](https://runpod.io) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Avatar + - [![Favicon](https://icon.horse/icon/myheritage.com/ai-time-machine) Ai time machine](https://myheritage.com/ai-time-machine) - [![Favicon](https://icon.horse/icon/readyplayer.me) Ready player me](https://readyplayer.me) - [![Favicon](https://icon.horse/icon/openart.ai/photobooth) Openart photo booth](https://openart.ai/photobooth) - [![Favicon](https://icon.horse/icon/hey.reface.ai) Reface ai](https://hey.reface.ai) - [![Favicon](https://icon.horse/icon/socialbook.io/ai-avatar) Pandora avatars](https://socialbook.io/ai-avatar) - [![Favicon](https://icon.horse/icon/livereacting.com/ai-host-for-live-stream) Livereacting ai](https://livereacting.com/ai-host-for-live-stream) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Fun tools + - [![Favicon](https://icon.horse/icon/transformer.huggingface.co) Write with artificial intelligence](https://transformer.huggingface.co) - [![Favicon](https://icon.horse/icon/chai.ml) Chai](https://chai.ml) - [![Favicon](https://icon.horse/icon/pudding.cool/2020/12/judge-my-spotify) How bad is your spotify?](https://pudding.cool/2020/12/judge-my-spotify) - [![Favicon](https://icon.horse/icon/playphrase.me/) Playphrase.me](https://playphrase.me/) - [![Favicon](https://icon.horse/icon/dreamily.ai/editor) Dreamily](https://dreamily.ai/editor) - [![Favicon](https://icon.horse/icon/supermeme.ai) Supermeme.ai](https://supermeme.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Seo + - [![Favicon](https://icon.horse/icon/writer.com) Writer](https://writer.com) - [![Favicon](https://icon.horse/icon/jenni.ai) Jenni](https://jenni.ai) - [![Favicon](https://icon.horse/icon/articleforge.com) Articleforge](https://articleforge.com) - [![Favicon](https://icon.horse/icon/wordhero.co) Wordhero](https://wordhero.co) - [![Favicon](https://icon.horse/icon/ai-writer.com) Ai-writer](https://ai-writer.com) - [![Favicon](https://icon.horse/icon/growthbarseo.com) Growthbar](https://growthbarseo.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Video editing + - [![Favicon](https://icon.horse/icon/wave.video) Wave.video](https://wave.video) - [![Favicon](https://icon.horse/icon/topazlabs.com/topaz-video-ai) Topaz video ai](https://topazlabs.com/topaz-video-ai) - [![Favicon](https://icon.horse/icon/unscreen.com) Unscreen.com](https://unscreen.com) - [![Favicon](https://icon.horse/icon/pictory.ai) Pictory](https://pictory.ai) - [![Favicon](https://icon.horse/icon/typestudio.co/tool/video-to-text) Type studio](https://typestudio.co/tool/video-to-text) - [![Favicon](https://icon.horse/icon/papercup.com) Papercup](https://papercup.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Code assistant + - [![Favicon](https://icon.horse/icon/replit.com/site/ghostwriter) Ghostwriter](https://replit.com/site/ghostwriter) - [![Favicon](https://icon.horse/icon/fig.io/user-manual/ai) Fig ai](https://fig.io/user-manual/ai) - [![Favicon](https://icon.horse/icon/continual.ai) Continual](https://continual.ai) - [![Favicon](https://icon.horse/icon/cheatlayer.com) Cheat layer](https://cheatlayer.com) - [![Favicon](https://icon.horse/icon/kodezi.com) Kodezi ai](https://kodezi.com) - [![Favicon](https://icon.horse/icon/whatthediff.ai) Whatthediff](https://whatthediff.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Mac + - [![Favicon](https://icon.horse/icon/myfonts.com) Whatthefont](https://myfonts.com) - [![Favicon](https://icon.horse/icon/references.design) References.design](https://references.design) - [![Favicon](https://icon.horse/icon/github.com/Swift-AI/Swift-AI) Swift ai](https://github.com/Swift-AI/Swift-AI) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Audio editing + - [![Favicon](https://icon.horse/icon/voicemod.net) Voicemod](https://voicemod.net) - [![Favicon](https://icon.horse/icon/podcastle.ai) Podcastle](https://podcastle.ai) - [![Favicon](https://icon.horse/icon/beatoven.ai) Beatoven.ai](https://beatoven.ai) - [![Favicon](https://icon.horse/icon/altered.ai) Altered](https://altered.ai) - [![Favicon](https://icon.horse/icon/cleanvoice.ai) Cleanvoice ai](https://cleanvoice.ai) - [![Favicon](https://icon.horse/icon/krisp.ai) Krisp](https://krisp.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Copywriting + - [![Favicon](https://icon.horse/icon/inkforall.com) Ink](https://inkforall.com) - [![Favicon](https://icon.horse/icon/boomeranggmail.com/respondable) Respondable](https://boomeranggmail.com/respondable) - [![Favicon](https://icon.horse/icon/frase.io) Frase](https://frase.io) - [![Favicon](https://icon.horse/icon/anyword.com) Anyword](https://anyword.com) - [![Favicon](https://icon.horse/icon/copysmith.ai) Copysmith](https://copysmith.ai) - [![Favicon](https://icon.horse/icon/hypotenuse.ai) Hypotenuse ai](https://hypotenuse.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### General writing + - [![Favicon](https://icon.horse/icon/languagetool.org) Languagetool](https://languagetool.org) - [![Favicon](https://icon.horse/icon/wordtune.com) Wordtune](https://wordtune.com) - [![Favicon](https://icon.horse/icon/kickresume.com) Kickresume](https://kickresume.com) - [![Favicon](https://icon.horse/icon/nichesss.com) Nichess](https://nichesss.com) - [![Favicon](https://icon.horse/icon/wordai.com) Wordai](https://wordai.com) - [![Favicon](https://icon.horse/icon/corrector.app) Corrector app](https://corrector.app) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Summarizer + - [![Favicon](https://icon.horse/icon/otter.ai) Otter ai](https://otter.ai) - [![Favicon](https://icon.horse/icon/tldrthis.com) Tldr this](https://tldrthis.com) - [![Favicon](https://icon.horse/icon/summari.com) Summari](https://summari.com) - [![Favicon](https://icon.horse/icon/tactiq.io) Tactiq](https://tactiq.io) - [![Favicon](https://icon.horse/icon/genei.io) Genei](https://genei.io) - [![Favicon](https://icon.horse/icon/upword.ai) Upword](https://upword.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Video generator + - [![Favicon](https://icon.horse/icon/invideo.io) Invideo](https://invideo.io) - [![Favicon](https://icon.horse/icon/replicate.com/google-research/frame-interpolation) Film](https://replicate.com/google-research/frame-interpolation) - [![Favicon](https://icon.horse/icon/synthesia.io) Synthesia](https://synthesia.io) - [![Favicon](https://icon.horse/icon/movio.la) Movio](https://movio.la) - [![Favicon](https://icon.horse/icon/hourone.ai) Hourone](https://hourone.ai) - [![Favicon](https://icon.horse/icon/colossyan.com) Colossyan](https://colossyan.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Legal assistant + - [![Favicon](https://icon.horse/icon/donotpay.com) Donotpay](https://donotpay.com) - [![Favicon](https://icon.horse/icon/darrow.ai) Darrow ai](https://darrow.ai) - [![Favicon](https://icon.horse/icon/spellbook.legal) Spellbook](https://spellbook.legal) - [![Favicon](https://icon.horse/icon/patentpal.com) Patentpal](https://patentpal.com) - [![Favicon](https://icon.horse/icon/legalrobot.com) Legal robot](https://legalrobot.com) - [![Favicon](https://icon.horse/icon/detangle.ai) Detangle.ai](https://detangle.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Generative art + - [![Favicon](https://icon.horse/icon/hotpot.ai/art-generator) Hotpot art generator](https://hotpot.ai/art-generator) - [![Favicon](https://icon.horse/icon/bannerbear.com) Bannerbear](https://bannerbear.com) - [![Favicon](https://icon.horse/icon/6pen.art) 6pen art](https://6pen.art) - [![Favicon](https://icon.horse/icon/admaker.memorable.io) Memorable ad maker](https://admaker.memorable.io) - [![Favicon](https://icon.horse/icon/withflair.ai) Flair](https://withflair.ai) - [![Favicon](https://icon.horse/icon/designedwithai.com) Designed with ai](https://designedwithai.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Text to speech + - [![Favicon](https://icon.horse/icon/speechify.com) Speechify](https://speechify.com) - [![Favicon](https://icon.horse/icon/fakeyou.com) Fakeyou](https://fakeyou.com) - [![Favicon](https://icon.horse/icon/play.ht) Play.ht](https://play.ht) - [![Favicon](https://icon.horse/icon/wellsaidlabs.com) Wellsaidlabs](https://wellsaidlabs.com) - [![Favicon](https://icon.horse/icon/resemble.ai) Resemble](https://resemble.ai) - [![Favicon](https://icon.horse/icon/aiva.ai) Aiva](https://aiva.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Life assistant + - [![Favicon](https://icon.horse/icon/resumeworded.com/index.php) Resume worded](https://resumeworded.com/index.php) - [![Favicon](https://icon.horse/icon/replika.com) Replika](https://replika.com) - [![Favicon](https://icon.horse/icon/justlearn.com) Justlearn](https://justlearn.com) - [![Favicon](https://icon.horse/icon/thekeys.ai) Thekeys](https://thekeys.ai) - [![Favicon](https://icon.horse/icon/looria.com) Looria](https://looria.com) - [![Favicon](https://icon.horse/icon/woebothealth.com) Woebot health](https://woebothealth.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Image generator + - [![Favicon](https://icon.horse/icon/hotpot.ai) Hotpot.ai](https://hotpot.ai) - [![Favicon](https://icon.horse/icon/generated.photos) Generated photos](https://generated.photos) - [![Favicon](https://icon.horse/icon/imgcreator.zmo.ai) Imgcreator](https://imgcreator.zmo.ai) - [![Favicon](https://icon.horse/icon/getimg.ai) Getimg.ai](https://getimg.ai) - [![Favicon](https://icon.horse/icon/stockai.com) Stock ai](https://stockai.com) - [![Favicon](https://icon.horse/icon/gocharlie.ai) Go charlie](https://gocharlie.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Book -- [![Favicon](https://icon.horse/icon/readthistwice.com/sona) Sona](https://readthistwice.com/sona) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/readthistwice.com/sona) Sona](https://readthistwice.com/sona) +{.icon-list .marker-none} ### Gaming + - [![Favicon](https://icon.horse/icon/play.aidungeon.io) Aidungeon](https://play.aidungeon.io) - [![Favicon](https://icon.horse/icon/beam.eyeware.tech) Eyeware beam](https://beam.eyeware.tech) - [![Favicon](https://icon.horse/icon/litrpgadventures.com) Litrpg adventures](https://litrpgadventures.com) - [![Favicon](https://icon.horse/icon/charisma.ai) Charisma](https://charisma.ai) - [![Favicon](https://icon.horse/icon/hiddendoor.co) Hidden door](https://hiddendoor.co) - [![Favicon](https://icon.horse/icon/ggpredict.io) Ggpredict](https://ggpredict.io) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Image scanning + - [![Favicon](https://icon.horse/icon/experiments.withgoogle.com/thing-translator) Thing translator](https://experiments.withgoogle.com/thing-translator) - [![Favicon](https://icon.horse/icon/poly.cam) Polycam](https://poly.cam) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Sales + - [![Favicon](https://icon.horse/icon/klaviyo.com/product/whats-new/sms-assistant) Klaviyo sms assistant](https://klaviyo.com/product/whats-new/sms-assistant) - [![Favicon](https://icon.horse/icon/instantly.ai) Instantly](https://instantly.ai) - [![Favicon](https://icon.horse/icon/affinity.co) Affinity](https://affinity.co) - [![Favicon](https://icon.horse/icon/trywingman.com) Wingman](https://trywingman.com) - [![Favicon](https://icon.horse/icon/lavender.ai) Lavender](https://lavender.ai) - [![Favicon](https://icon.horse/icon/cresta.com) Cresta](https://cresta.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Audio + - [![Favicon](https://icon.horse/icon/descript.com) Descript](https://descript.com) - [![Favicon](https://icon.horse/icon/lalal.ai) Lalal.ai voice cleaner](https://lalal.ai) - [![Favicon](https://icon.horse/icon/poly.ai) Poly ai](https://poly.ai) - [![Favicon](https://icon.horse/icon/wzrd.ai) Wzrd.ai](https://wzrd.ai) - [![Favicon](https://icon.horse/icon/rythmex.com) Rythmex](https://rythmex.com) - [![Favicon](https://icon.horse/icon/blogaudio.co) Blogaudio](https://blogaudio.co) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Analytics + - [![Favicon](https://icon.horse/icon/paperswithcode.com) Papers with code](https://paperswithcode.com) - [![Favicon](https://icon.horse/icon/explainpaper.com) Explainpaper](https://explainpaper.com) - [![Favicon](https://icon.horse/icon/anania.ai) Anania](https://anania.ai) - [![Favicon](https://icon.horse/icon/voiceops.com) Voiceops](https://voiceops.com) - [![Favicon](https://icon.horse/icon/stormly.com) Stormly 2.0](https://stormly.com) - [![Favicon](https://icon.horse/icon/sahha.ai) Sahha](https://sahha.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Fintech -- [![Favicon](https://icon.horse/icon/novamoney.app.link/PH) Nova money](https://novamoney.app.link/PH) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/novamoney.app.link/PH) Nova money](https://novamoney.app.link/PH) +{.icon-list .marker-none} ### Marketing + - [![Favicon](https://icon.horse/icon/monkeylearn.com) Monkeylearn](https://monkeylearn.com) - [![Favicon](https://icon.horse/icon/wonsulting.com/networkai) Networkai](https://wonsulting.com/networkai) - [![Favicon](https://icon.horse/icon/reply.io) Reply.io](https://reply.io) - [![Favicon](https://icon.horse/icon/outranking.io) Outranking](https://outranking.io) - [![Favicon](https://icon.horse/icon/linkgraph.io/seo-content-assistant) Seo content assistant by searchatlas](https://linkgraph.io/seo-content-assistant) - [![Favicon](https://icon.horse/icon/adcreative.ai) Adcreative.ai](https://adcreative.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Story teller + - [![Favicon](https://icon.horse/icon/novelai.net) Novelai](https://novelai.net) - [![Favicon](https://icon.horse/icon/artflow.ai) Artflow ai](https://artflow.ai) - [![Favicon](https://icon.horse/icon/subtxt.app) Subtxt](https://subtxt.app) - [![Favicon](https://icon.horse/icon/sceneone.app) Scene one](https://sceneone.app) - [![Favicon](https://icon.horse/icon/storypath.app) Story path](https://storypath.app) - [![Favicon](https://icon.horse/icon/whatonearth.xyz) What on earth?](https://whatonearth.xyz) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Low-code/no-code + - [![Favicon](https://icon.horse/icon/vwo.com/testing) Vwo](https://vwo.com/testing) - [![Favicon](https://icon.horse/icon/mutinyhq.com) Mutiny](https://mutinyhq.com) - [![Favicon](https://icon.horse/icon/nanonets.com) Nanonets](https://nanonets.com) - [![Favicon](https://icon.horse/icon/axiom.ai) Axiom](https://axiom.ai) - [![Favicon](https://icon.horse/icon/askviable.com) Viable](https://askviable.com) - [![Favicon](https://icon.horse/icon/durable.co) Durable](https://durable.co) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Art + - [![Favicon](https://icon.horse/icon/wombo.art) Wombo](https://wombo.art) - [![Favicon](https://icon.horse/icon/neural.love) Neural.love art generator](https://neural.love) - [![Favicon](https://icon.horse/icon/promptomania.com) Promptomania](https://promptomania.com) - [![Favicon](https://icon.horse/icon/lexica.art) Lexica](https://lexica.art) - [![Favicon](https://icon.horse/icon/alethea.ai/avatars) Ai avatars](https://alethea.ai/avatars) - [![Favicon](https://icon.horse/icon/diffusionbee.com) Diffusionbee](https://diffusionbee.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Customer communication -- [![Favicon](https://icon.horse/icon/algolia.com/products/recommendations) Algolia recommend](https://algolia.com/products/recommendations) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/algolia.com/products/recommendations) Algolia recommend](https://algolia.com/products/recommendations) +{.icon-list .marker-none} ### Chrome extensions + - [![Favicon](https://icon.horse/icon/sendpulse.com) Sendpulse for slack](https://sendpulse.com) - [![Favicon](https://icon.horse/icon/bizzabo.com) X.ai](https://bizzabo.com) - [![Favicon](https://icon.horse/icon/pipecandy.com) Pipecandy](https://pipecandy.com) - [![Favicon](https://icon.horse/icon/surferseo.com/free-article-outline-generator) Free article outline generator](https://surferseo.com/free-article-outline-generator) - [![Favicon](https://icon.horse/icon/fylehq.com) Fyle](https://fylehq.com) - [![Favicon](https://icon.horse/icon/socialbook.io/cartoonize) Socialbook cartoonizer](https://socialbook.io/cartoonize) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Search engine + - [![Favicon](https://icon.horse/icon/algolia.com) Algolia](https://algolia.com) - [![Favicon](https://icon.horse/icon/everypixel.com) Everypixel](https://everypixel.com) - [![Favicon](https://icon.horse/icon/andisearch.com) Andi](https://andisearch.com) - [![Favicon](https://icon.horse/icon/onemoreai.com) One more ai](https://onemoreai.com) - [![Favicon](https://icon.horse/icon/imaiger.com) Imaiger](https://imaiger.com) - [![Favicon](https://icon.horse/icon/dreamsands.ai) Dreamsands](https://dreamsands.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Research + - [![Favicon](https://icon.horse/icon/elicit.org) Elicit](https://elicit.org) - [![Favicon](https://icon.horse/icon/typeset.io) Scispace](https://typeset.io) - [![Favicon](https://icon.horse/icon/adept.ai) Adept](https://adept.ai) - [![Favicon](https://icon.horse/icon/scholarcy.com) Scholarcy](https://scholarcy.com) - [![Favicon](https://icon.horse/icon/consensus.app) Consensus](https://consensus.app) - [![Favicon](https://icon.horse/icon/akkio.com) Akkio](https://akkio.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Browser extensions -- [![Favicon](https://icon.horse/icon/usemotion.com) Motion task manager](https://usemotion.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/usemotion.com) Motion task manager](https://usemotion.com) +{.icon-list .marker-none} ### Pc -- [![Favicon](https://icon.horse/icon/paperspace.com/gradient) Gradient°](https://paperspace.com/gradient) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/paperspace.com/gradient) Gradient°](https://paperspace.com/gradient) +{.icon-list .marker-none} ### Prompt + - [![Favicon](https://icon.horse/icon/replicate.com/methexis-inc/img2prompt) Img2prompt](https://replicate.com/methexis-inc/img2prompt) - [![Favicon](https://icon.horse/icon/openart.ai) Openart](https://openart.ai) - [![Favicon](https://icon.horse/icon/decktopus.com/blog/chatgpt-prompts-for-your-next-launch) Decktopus](https://decktopus.com/blog/chatgpt-prompts-for-your-next-launch) - [![Favicon](https://icon.horse/icon/promptbase.com) Promptbase](https://promptbase.com) - [![Favicon](https://icon.horse/icon/krea.ai) Krea](https://krea.ai) - [![Favicon](https://icon.horse/icon/pyttipanna.xyz) Pyttipanna](https://pyttipanna.xyz) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Email + - [![Favicon](https://icon.horse/icon/unbounce.com) The landing page analyzer by unbounce](https://unbounce.com) - [![Favicon](https://icon.horse/icon/unbounce.com/smart-copy-everywhere) Smart copy everywhere](https://unbounce.com/smart-copy-everywhere) - [![Favicon](https://icon.horse/icon/breadcrumbs.io/reveal) Breadcrumbs reveal](https://breadcrumbs.io/reveal) - [![Favicon](https://icon.horse/icon/emergingtechbrew.com) Emerging tech brew](https://emergingtechbrew.com) - [![Favicon](https://icon.horse/icon/snazzy.ai) Snazzy ai](https://snazzy.ai) - [![Favicon](https://icon.horse/icon/conduithq.com) Conduit](https://conduithq.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Image improvement + - [![Favicon](https://icon.horse/icon/vanceai.com/image-enlarger) Vanceai image upscaler](https://vanceai.com/image-enlarger) - [![Favicon](https://icon.horse/icon/cloudinary.com) Cloudinary](https://cloudinary.com) - [![Favicon](https://icon.horse/icon/ai.nero.com/image-upscaler) Nero image upscaler](https://ai.nero.com/image-upscaler) - [![Favicon](https://icon.horse/icon/prisma-ai.com/lensa) Lensa](https://prisma-ai.com/lensa) - [![Favicon](https://icon.horse/icon/convert.leiapix.com) Leiapix](https://convert.leiapix.com) - [![Favicon](https://icon.horse/icon/github.com/Sanster/lama-cleaner) Lama cleaner](https://github.com/Sanster/lama-cleaner) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Human resources + - [![Favicon](https://icon.horse/icon/chatbot.com/features) Chatbot](https://chatbot.com/features) - [![Favicon](https://icon.horse/icon/moveworks.com) Moveworks](https://moveworks.com) - [![Favicon](https://icon.horse/icon/findem.ai) Findem](https://findem.ai) - [![Favicon](https://icon.horse/icon/skillroads.com) Skillroads](https://skillroads.com) - [![Favicon](https://icon.horse/icon/qatalog.com) Qatalog](https://qatalog.com) - [![Favicon](https://icon.horse/icon/hellotars.com/ph) Tars](https://hellotars.com/ph) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Website + - [![Favicon](https://icon.horse/icon/getresponse.com/features/website-builder) Getresponse](https://getresponse.com/features/website-builder) - [![Favicon](https://icon.horse/icon/bookmark.com/ai-website-builder) Aida](https://bookmark.com/ai-website-builder) - [![Favicon](https://icon.horse/icon/studio.design) Studio design](https://studio.design) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Branding + - [![Favicon](https://icon.horse/icon/namesnack.com) Namesnack](https://namesnack.com) - [![Favicon](https://icon.horse/icon/namify.tech) Namify](https://namify.tech) - [![Favicon](https://icon.horse/icon/namefruits.com) Namefruits](https://namefruits.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Speech + - [![Favicon](https://icon.horse/icon/speechanalyzer.elsaspeak.com) Elsa speech analyzer](https://speechanalyzer.elsaspeak.com) - [![Favicon](https://icon.horse/icon/resemble.ai/speech-to-speech) Speech-to-speech](https://resemble.ai/speech-to-speech) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Communication -- [![Favicon](https://icon.horse/icon/poised.com) Poised 2.0](https://poised.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/poised.com) Poised 2.0](https://poised.com) +{.icon-list .marker-none} ### Other + - [![Favicon](https://icon.horse/icon/pjreddie.com/darknet/yolo) Yolo](https://pjreddie.com/darknet/yolo) - [![Favicon](https://icon.horse/icon/hownormalami.eu) How normal am i?](https://hownormalami.eu) - [![Favicon](https://icon.horse/icon/toonify.photos) Toonify](https://toonify.photos) - [![Favicon](https://icon.horse/icon/gptcrush.com/resources) Gpt-3 crush](https://gptcrush.com/resources) - [![Favicon](https://icon.horse/icon/handl.ai) Handl](https://handl.ai) - [![Favicon](https://icon.horse/icon/aicheatsheet.comuzi.xyz) Ai cheatsheet](https://aicheatsheet.comuzi.xyz) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Health -- [![Favicon](https://icon.horse/icon/ubiehealth.com) Ubie ai symptom checker](https://ubiehealth.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/ubiehealth.com) Ubie ai symptom checker](https://ubiehealth.com) +{.icon-list .marker-none} ### Aggregator + - [![Favicon](https://icon.horse/icon/gpt3demo.com) Gpt-3 demo](https://gpt3demo.com) - [![Favicon](https://icon.horse/icon/futurepedia.io) Futurepedia](https://futurepedia.io) - [![Favicon](https://icon.horse/icon/library.phygital.plus) Ai library](https://library.phygital.plus) - [![Favicon](https://icon.horse/icon/smokingrobot.ai) Smoking robot ai](https://smokingrobot.ai) - [![Favicon](https://icon.horse/icon/allthingsai.com) All things ai](https://allthingsai.com) - [![Favicon](https://icon.horse/icon/aitogrow.com) Aitogrow](https://aitogrow.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Customer support + - [![Favicon](https://icon.horse/icon/hiverhq.com/harvey-ai-customer-support) Harvey](https://hiverhq.com/harvey-ai-customer-support) - [![Favicon](https://icon.horse/icon/forethought.ai) Forethought](https://forethought.ai) - [![Favicon](https://icon.horse/icon/kore.ai) Kore.ai](https://kore.ai) - [![Favicon](https://icon.horse/icon/regie.ai) Regie](https://regie.ai) - [![Favicon](https://icon.horse/icon/typewise.app) Typewise](https://typewise.app) - [![Favicon](https://icon.horse/icon/quickchat.ai) Quickchat](https://quickchat.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Movies -- [![Favicon](https://icon.horse/icon/taste.io) Taste](https://taste.io) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/taste.io) Taste](https://taste.io) +{.icon-list .marker-none} ### Video + - [![Favicon](https://icon.horse/icon/deepfakesweb.com) Deepfakesweb](https://deepfakesweb.com) - [![Favicon](https://icon.horse/icon/fineshare.com/finecam) Fineshare](https://fineshare.com/finecam) - [![Favicon](https://icon.horse/icon/wisecut.video) Wisecut](https://wisecut.video) - [![Favicon](https://icon.horse/icon/elai.io) Elai](https://elai.io) - [![Favicon](https://icon.horse/icon/move.ai) Move](https://move.ai) - [![Favicon](https://icon.horse/icon/twelvelabs.io) Twelve labs](https://twelvelabs.io) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Email assistant + - [![Favicon](https://icon.horse/icon/missiveapp.com) Missive](https://missiveapp.com) - [![Favicon](https://icon.horse/icon/magicreach.ai) Magicreach](https://magicreach.ai) - [![Favicon](https://icon.horse/icon/ellieai.com) Ellie](https://ellieai.com) - [![Favicon](https://icon.horse/icon/superreply.co) Superreply](https://superreply.co) - [![Favicon](https://icon.horse/icon/chatgptwriter.ai) Chatgpt writer](https://chatgptwriter.ai) - [![Favicon](https://icon.horse/icon/superhuman.com) Superhuman](https://superhuman.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Messaging + - [![Favicon](https://icon.horse/icon/madgicx.com) Madgicx for facebook ads](https://madgicx.com) - [![Favicon](https://icon.horse/icon/bottr.me) Bottr.me](https://bottr.me) - [![Favicon](https://icon.horse/icon/octaneai.com) Octane ai](https://octaneai.com) - [![Favicon](https://icon.horse/icon/gonerdify.com/nerdybot) Nerdify bot](https://gonerdify.com/nerdybot) - [![Favicon](https://icon.horse/icon/fritz.ai/launch) Fritz](https://fritz.ai/launch) - [![Favicon](https://icon.horse/icon/abe.ai) Abe](https://abe.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Generative video + - [![Favicon](https://icon.horse/icon/lumen5.com) Lumen5](https://lumen5.com) - [![Favicon](https://icon.horse/icon/livereacting.com) Livereacting](https://livereacting.com) - [![Favicon](https://icon.horse/icon/reachout.ai) Reachout.ai](https://reachout.ai) - [![Favicon](https://icon.horse/icon/huggingface.co/spaces/camenduru/one-shot-talking-face) One shot talking face](https://huggingface.co/spaces/camenduru/one-shot-talking-face) - [![Favicon](https://icon.horse/icon/boolvideoinvite.carrd.co) Boolvideo](https://boolvideoinvite.carrd.co) - [![Favicon](https://icon.horse/icon/quickvid.ai) Quickvid](https://quickvid.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Safari extensions -- [![Favicon](https://icon.horse/icon/rezi.ai/ai-resume-builder) Rezi 3.0](https://rezi.ai/ai-resume-builder) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/rezi.ai/ai-resume-builder) Rezi 3.0](https://rezi.ai/ai-resume-builder) +{.icon-list .marker-none} ### Transcriber + - [![Favicon](https://icon.horse/icon/fireflies.ai) Fireflies.ai](https://fireflies.ai) - [![Favicon](https://icon.horse/icon/steno.ai) Steno](https://steno.ai) - [![Favicon](https://icon.horse/icon/peech-ai.com) Peech](https://peech-ai.com) - [![Favicon](https://icon.horse/icon/anypod.ai) Anypod](https://anypod.ai) - [![Favicon](https://icon.horse/icon/supertranslate.ai) Supertranslate](https://supertranslate.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Motion capture + - [![Favicon](https://icon.horse/icon/rokoko.com) Rokoko](https://rokoko.com) - [![Favicon](https://icon.horse/icon/cascadeur.com) Cascadeur](https://cascadeur.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Voice + - [![Favicon](https://icon.horse/icon/fineshare.com/finevoice) Fineshare](https://fineshare.com/finevoice) - [![Favicon](https://icon.horse/icon/voice.ai) Voice ai](https://voice.ai) - [![Favicon](https://icon.horse/icon/vocads.com) Vocads survey](https://vocads.com) - [![Favicon](https://icon.horse/icon/whisperapi.com) Whisperapi](https://whisperapi.com) - [![Favicon](https://icon.horse/icon/createaivoiceovers.com) Createaivoiceovers](https://createaivoiceovers.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Machine learning + - [![Favicon](https://icon.horse/icon/h2o.ai) H2o ai](https://h2o.ai) - [![Favicon](https://icon.horse/icon/nocodebooth.com) Nocodebooth](https://nocodebooth.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Social media assistant + - [![Favicon](https://icon.horse/icon/tweethunter.io) Tweet hunter](https://tweethunter.io) - [![Favicon](https://icon.horse/icon/socialbu.com) Socialbu](https://socialbu.com) - [![Favicon](https://icon.horse/icon/predis.ai) Predis](https://predis.ai) - [![Favicon](https://icon.horse/icon/feedhive.com) Feedhive](https://feedhive.com) - [![Favicon](https://icon.horse/icon/audiolabs.io) Audiolabs](https://audiolabs.io) - [![Favicon](https://icon.horse/icon/zaap.ai) Zaap.ai](https://zaap.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Inspiration + - [![Favicon](https://icon.horse/icon/entreresource.com/chatgpt-cheat-sheet) Gpt cheat sheet](https://entreresource.com/chatgpt-cheat-sheet) - [![Favicon](https://icon.horse/icon/trello.com/b/4BPkSY1w/100-ai-prompts-resources-prompt-lovers) 100+ ai prompts](https://trello.com/b/4BPkSY1w/100-ai-prompts-resources-prompt-lovers) - [![Favicon](https://icon.horse/icon/aealexander.com/midjourney-prompt-database) Midjourney prompt database](https://aealexander.com/midjourney-prompt-database) - [![Favicon](https://icon.horse/icon/prompt.noonshot.com) Midjourney prompt tool](https://prompt.noonshot.com) - [![Favicon](https://icon.horse/icon/saaslibrary.dev) Saas library](https://saaslibrary.dev) - [![Favicon](https://icon.horse/icon/ordinarypeopleprompts.com) Ordinary prompts](https://ordinarypeopleprompts.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Stocks -- [![Favicon](https://icon.horse/icon/torto.ai/welcome) Torto.ai](https://torto.ai/welcome) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/torto.ai/welcome) Torto.ai](https://torto.ai/welcome) +{.icon-list .marker-none} ### Voice modulation + - [![Favicon](https://icon.horse/icon/voice.ai/voice-ai-beta/I2p6L) Voice.ai](https://voice.ai/voice-ai-beta/I2p6L) - [![Favicon](https://icon.horse/icon/studio.themetavoice.xyz) Metavoice studio](https://studio.themetavoice.xyz) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Paraphraser + - [![Favicon](https://icon.horse/icon/paraphrasetool.com) Paraphraser](https://paraphrasetool.com) - [![Favicon](https://icon.horse/icon/rephrasely.com) Rephrasely](https://rephrasely.com) - [![Favicon](https://icon.horse/icon/bearly.ai) Bearly](https://bearly.ai) - [![Favicon](https://icon.horse/icon/wordfixerbot.com) Wordfixerbot](https://wordfixerbot.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Amazon -- [![Favicon](https://icon.horse/icon/TheReviewIndex.com/us) Thereviewindex](https://TheReviewIndex.com/us) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/TheReviewIndex.com/us) Thereviewindex](https://TheReviewIndex.com/us) +{.icon-list .marker-none} ### Personalized videos + - [![Favicon](https://icon.horse/icon/windsor.io) Windsor](https://windsor.io) - [![Favicon](https://icon.horse/icon/rephrase.ai) Rephrase](https://rephrase.ai) - [![Favicon](https://icon.horse/icon/trymaverick.com) Maverick](https://trymaverick.com) - [![Favicon](https://icon.horse/icon/bhuman.ai) Bhuman](https://bhuman.ai) - [![Favicon](https://icon.horse/icon/vidyo.ai) Vidyo](https://vidyo.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Spreadsheets + - [![Favicon](https://icon.horse/icon/excelformulabot.com) Excel formula bot](https://excelformulabot.com) - [![Favicon](https://icon.horse/icon/boloforms.com/sheetgod) Sheetgod](https://boloforms.com/sheetgod) - [![Favicon](https://icon.horse/icon/sheetai.app) Sheet ai](https://sheetai.app) - [![Favicon](https://icon.horse/icon/sheetplus.ai) Sheet+](https://sheetplus.ai) - [![Favicon](https://icon.horse/icon/workspace.google.com/marketplace/app/simple_ml_for_sheets/685936641092) Simple ml](https://workspace.google.com/marketplace/app/simple_ml_for_sheets/685936641092) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Ipad -- [![Favicon](https://icon.horse/icon/brain.fm) Brain.fm](https://brain.fm) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/brain.fm) Brain.fm](https://brain.fm) +{.icon-list .marker-none} ### Task management + - [![Favicon](https://icon.horse/icon/levity.ai) Levity](https://levity.ai) - [![Favicon](https://icon.horse/icon/apac.ai) Athena](https://apac.ai) - [![Favicon](https://icon.horse/icon/teacherbot.io) Teacherbot](https://teacherbot.io) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Email marketing -- [![Favicon](https://icon.horse/icon/phrasee.co) Phrasee](https://phrasee.co) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/phrasee.co) Phrasee](https://phrasee.co) +{.icon-list .marker-none} ### Fashion + - [![Favicon](https://icon.horse/icon/ca.la) Cala](https://ca.la) - [![Favicon](https://icon.horse/icon/botika.io) Botika](https://botika.io) - [![Favicon](https://icon.horse/icon/fashionadvisorai.com) Fashionadvisorai](https://fashionadvisorai.com) - [![Favicon](https://icon.horse/icon/visualhound.com) Visualhound](https://visualhound.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Generator -- [![Favicon](https://icon.horse/icon/blocksurvey.io/ai-surveys) Blocksurvey](https://blocksurvey.io/ai-surveys) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/blocksurvey.io/ai-surveys) Blocksurvey](https://blocksurvey.io/ai-surveys) +{.icon-list .marker-none} ### 3d + - [![Favicon](https://icon.horse/icon/deepmotion.com) Deepmotion](https://deepmotion.com) - [![Favicon](https://icon.horse/icon/plask.ai) Plask](https://plask.ai) - [![Favicon](https://icon.horse/icon/captures.lumalabs.ai/imagine) Imagine 3d](https://captures.lumalabs.ai/imagine) - [![Favicon](https://icon.horse/icon/lumalabs.ai) Luma ai](https://lumalabs.ai) - [![Favicon](https://icon.horse/icon/kaedim3d.com) Kaedim](https://kaedim3d.com) - [![Favicon](https://icon.horse/icon/masterpiecestudio.com) Masterpiece studio](https://masterpiecestudio.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Home + - [![Favicon](https://icon.horse/icon/shapescale.com) Shapescale](https://shapescale.com) - [![Favicon](https://icon.horse/icon/github.com/Shinao/SmartMirror) Smartmirror](https://github.com/Shinao/SmartMirror) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Api + - [![Favicon](https://icon.horse/icon/deepgram.com) Deepgram](https://deepgram.com) - [![Favicon](https://icon.horse/icon/banana.dev) Banana](https://banana.dev) - [![Favicon](https://icon.horse/icon/perspectiveapi.com) Perspective](https://perspectiveapi.com) - [![Favicon](https://icon.horse/icon/theneo.io) Theneo](https://theneo.io) - [![Favicon](https://icon.horse/icon/base64.ai) Base64.ai](https://base64.ai) - [![Favicon](https://icon.horse/icon/trueface.ai) Trueface.ai](https://trueface.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Software engineering -- [![Favicon](https://icon.horse/icon/prodi.gy) Prodigy](https://prodi.gy) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/prodi.gy) Prodigy](https://prodi.gy) +{.icon-list .marker-none} ### Open source + - [![Favicon](https://icon.horse/icon/blog.floydhub.com) Floyd](https://blog.floydhub.com) - [![Favicon](https://icon.horse/icon/cloud.mindsdb.com) Mindsdb](https://cloud.mindsdb.com) - [![Favicon](https://icon.horse/icon/evidentlyai.com) Evidently ai](https://evidentlyai.com) - [![Favicon](https://icon.horse/icon/warrior.js.org) Warriorjs](https://warrior.js.org) - [![Favicon](https://icon.horse/icon/datature.io) Datature](https://datature.io) - [![Favicon](https://icon.horse/icon/bot.viseo.io) Viseo bot maker](https://bot.viseo.io) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Chat + - [![Favicon](https://icon.horse/icon/poppylist.com/askpoppy) Ask poppy](https://poppylist.com/askpoppy) - [![Favicon](https://icon.horse/icon/chatbotgpt3.bubbleapps.io/version-test) Gpt chatbot](https://chatbotgpt3.bubbleapps.io/version-test) - [![Favicon](https://icon.horse/icon/voiceflow.com) Voiceflow](https://voiceflow.com) - [![Favicon](https://icon.horse/icon/mobilespoon.net/2023/01/how-to-activate-chatgpt-with-siri-and-save-response.html) Chatgpt for siri](https://mobilespoon.net/2023/01/how-to-activate-chatgpt-with-siri-and-save-response.html) - [![Favicon](https://icon.horse/icon/trudo.ai) Trudo](https://trudo.ai) - [![Favicon](https://icon.horse/icon/unschooler.me) Unschooler](https://unschooler.me) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Playstation -- [![Favicon](https://icon.horse/icon/chatfuel.com) Chatfuel](https://chatfuel.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/chatfuel.com) Chatfuel](https://chatfuel.com) +{.icon-list .marker-none} ### Startup + - [![Favicon](https://icon.horse/icon/rationale.jina.ai) Rationale](https://rationale.jina.ai) - [![Favicon](https://icon.horse/icon/trustfinta.com) Finta](https://trustfinta.com) - [![Favicon](https://icon.horse/icon/ideabuddy.com) Ideabuddy](https://ideabuddy.com) - [![Favicon](https://icon.horse/icon/broadn.io) Broadn](https://broadn.io) - [![Favicon](https://icon.horse/icon/validatorai.com) Validator ai](https://validatorai.com) - [![Favicon](https://icon.horse/icon/namelix.com) Namelix](https://namelix.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Experiments + - [![Favicon](https://icon.horse/icon/alethea.ai) Alethea](https://alethea.ai) - [![Favicon](https://icon.horse/icon/thismodeldoesnotexist.co) This model does not exist](https://thismodeldoesnotexist.co) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Windows -- [![Favicon](https://icon.horse/icon/superannotate.com) Superannotate desktop](https://superannotate.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/superannotate.com) Superannotate desktop](https://superannotate.com) +{.icon-list .marker-none} ### Generative code + - [![Favicon](https://icon.horse/icon/gradio.app) Gradio](https://gradio.app) - [![Favicon](https://icon.horse/icon/obviously.ai) Obviously ai](https://obviously.ai) - [![Favicon](https://icon.horse/icon/sourceai.dev) Sourceai](https://sourceai.dev) - [![Favicon](https://icon.horse/icon/no-code-ai-model-builder.com) No-code ai model builder](https://no-code-ai-model-builder.com) - [![Favicon](https://icon.horse/icon/codesquire.ai) Codesquire](https://codesquire.ai) - [![Favicon](https://icon.horse/icon/aigur.dev) Aigur](https://aigur.dev) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Photography + - [![Favicon](https://icon.horse/icon/portrait.vana.com) Portrait by vana](https://portrait.vana.com) - [![Favicon](https://icon.horse/icon/photorestoration.ai) Photorestoration](https://photorestoration.ai) - [![Favicon](https://icon.horse/icon/ecosnap.vercel.app) Ecosnap](https://ecosnap.vercel.app) - [![Favicon](https://icon.horse/icon/github.com/yemount/pose-animator) Pose animator](https://github.com/yemount/pose-animator) - [![Favicon](https://icon.horse/icon/github.com/ageitgey/show-facebook-computer-vision-tags) Facebook computer vision tags](https://github.com/ageitgey/show-facebook-computer-vision-tags) - [![Favicon](https://icon.horse/icon/dpth.app) Dpth](https://dpth.app) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Healthcare -- [![Favicon](https://icon.horse/icon/whisper.ai) Whisper ai](https://whisper.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/whisper.ai) Whisper ai](https://whisper.ai) +{.icon-list .marker-none} ### Resources + - [![Favicon](https://icon.horse/icon/lablab.ai) Lablab.ai](https://lablab.ai) - [![Favicon](https://icon.horse/icon/aiartapps.com) Ai art apps database](https://aiartapps.com) - [![Favicon](https://icon.horse/icon/experiments.withgoogle.com/collection/ai) Ai experiments](https://experiments.withgoogle.com/collection/ai) - [![Favicon](https://icon.horse/icon/flowgpt.com) Flowgpt](https://flowgpt.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Growth hacking -- [![Favicon](https://icon.horse/icon/depict.ai) Depict.ai](https://depict.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/depict.ai) Depict.ai](https://depict.ai) +{.icon-list .marker-none} ### Kids -- [![Favicon](https://icon.horse/icon/brickit.app) Brickit](https://brickit.app) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/brickit.app) Brickit](https://brickit.app) +{.icon-list .marker-none} ### Search -- [![Favicon](https://icon.horse/icon/open.ai) Open](https://open.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/open.ai) Open](https://open.ai) +{.icon-list .marker-none} ### Speech-to-text + - [![Favicon](https://icon.horse/icon/glasp.co/youtube-summary) Glasp youtube summarizer](https://glasp.co/youtube-summary) - [![Favicon](https://icon.horse/icon/relayed.ai) Relayed](https://relayed.ai) - [![Favicon](https://icon.horse/icon/meeple.ai) Meeple](https://meeple.ai) - [![Favicon](https://icon.horse/icon/app.towords.io) Towords](https://app.towords.io) - [![Favicon](https://icon.horse/icon/usemelville.com) Melville app](https://usemelville.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Articles -- [![Favicon](https://icon.horse/icon/riku.ai/creators) Riku](https://riku.ai/creators) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/riku.ai/creators) Riku](https://riku.ai/creators) +{.icon-list .marker-none} ### Podcast + - [![Favicon](https://icon.horse/icon/snipd.com/ai-podcast-summaries) Snipd podcast summaries](https://snipd.com/ai-podcast-summaries) - [![Favicon](https://icon.horse/icon/sumly.ai) Sumly](https://sumly.ai) - [![Favicon](https://icon.horse/icon/tapesearch.com) Tapesearch](https://tapesearch.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Parenting + - [![Favicon](https://icon.horse/icon/smartivity.in/pages/parentivity_bot) Parentivity](https://smartivity.in/pages/parentivity_bot) - [![Favicon](https://icon.horse/icon/gosesh.com) Sesh](https://gosesh.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Education assistant + - [![Favicon](https://icon.horse/icon/brain-buddy.com) Brain Buddy](https://brain-buddy.com/) - [![Favicon](https://icon.horse/icon/kobra.dev) Kobra](https://kobra.dev) - [![Favicon](https://icon.horse/icon/boldvoice.com) Boldvoice](https://boldvoice.com) @@ -956,375 +957,376 @@ Getting Started - [![Favicon](https://icon.horse/icon/explainlikeimfive.io) Eli5](https://explainlikeimfive.io) - [![Favicon](https://icon.horse/icon/tutorai.me) Tutorai](https://tutorai.me) - [![Favicon](https://icon.horse/icon/yippity.io) Yip](https://yippity.io) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Tracking -- [![Favicon](https://icon.horse/icon/hexowatch.com) Hexowatch](https://hexowatch.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/hexowatch.com) Hexowatch](https://hexowatch.com) +{.icon-list .marker-none} ### Privacy + - [![Favicon](https://icon.horse/icon/playground.ai) Anonymous camera](https://playground.ai) - [![Favicon](https://icon.horse/icon/useguard.com) Guard](https://useguard.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Vehicle -- [![Favicon](https://icon.horse/icon/polymathrobotics.com) Polymath robotics](https://polymathrobotics.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/polymathrobotics.com) Polymath robotics](https://polymathrobotics.com) +{.icon-list .marker-none} ### Twitter + - [![Favicon](https://icon.horse/icon/tribescaler.com) Tribescaler](https://tribescaler.com) - [![Favicon](https://icon.horse/icon/kanyegenerator.com) Kanye tweet generator](https://kanyegenerator.com) - [![Favicon](https://icon.horse/icon/tweetspear.com) Tweetspear](https://tweetspear.com) - [![Favicon](https://icon.horse/icon/tweept3.com) Tweept3](https://tweept3.com) - [![Favicon](https://icon.horse/icon/tweetai.com) Tweetai](https://tweetai.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Dev + - [![Favicon](https://icon.horse/icon/edenai.co) Eden ai](https://edenai.co) - [![Favicon](https://icon.horse/icon/meetmaya.world) Maya ai](https://meetmaya.world) - [![Favicon](https://icon.horse/icon/testkit.app) Testkit](https://testkit.app) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Saas + - [![Favicon](https://icon.horse/icon/yous.ai) Yous](https://yous.ai) - [![Favicon](https://icon.horse/icon/trydocent.ai) Docent](https://trydocent.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Podcasting -- [![Favicon](https://icon.horse/icon/audo.ai) Audo ai](https://audo.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/audo.ai) Audo ai](https://audo.ai) +{.icon-list .marker-none} ### Bot -- [![Favicon](https://icon.horse/icon/hirex.ai) Hirex.ai](https://hirex.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/hirex.ai) Hirex.ai](https://hirex.ai) +{.icon-list .marker-none} ### Finance + - [![Favicon](https://icon.horse/icon/glean.ai) Glean ai](https://glean.ai) - [![Favicon](https://icon.horse/icon/avanz.ai) Avanzai](https://avanz.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Self-improvement -- [![Favicon](https://icon.horse/icon/huberman.rile.yt) Huberman ai](https://huberman.rile.yt) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/huberman.rile.yt) Huberman ai](https://huberman.rile.yt) +{.icon-list .marker-none} ### Robots + - [![Favicon](https://icon.horse/icon/activechat.ai/intents-and-insights) Activechat bot trainer](https://activechat.ai/intents-and-insights) - [![Favicon](https://icon.horse/icon/motion.ai) Motion ai](https://motion.ai) - [![Favicon](https://icon.horse/icon/apitobot.io) Api to bot](https://apitobot.io) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Slack + - [![Favicon](https://icon.horse/icon/thegist.ai) Thegist](https://thegist.ai) - [![Favicon](https://icon.horse/icon/chatbottle.co) Chatbottle](https://chatbottle.co) - [![Favicon](https://icon.horse/icon/cai.tools.sap) Bot builder by recast.ai](https://cai.tools.sap) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Investing -- [![Favicon](https://icon.horse/icon/koble.ai/founderfit) Founderfit by koble](https://koble.ai/founderfit) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/koble.ai/founderfit) Founderfit by koble](https://koble.ai/founderfit) +{.icon-list .marker-none} ### Questions + - [![Favicon](https://icon.horse/icon/therocketbrew.com/jeeves) Jeeves](https://therocketbrew.com/jeeves) - [![Favicon](https://icon.horse/icon/godinabox.co) God in a box](https://godinabox.co) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Construction -- [![Favicon](https://icon.horse/icon/aim.vision) Aim](https://aim.vision) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/aim.vision) Aim](https://aim.vision) +{.icon-list .marker-none} ### Data + - [![Favicon](https://icon.horse/icon/geniussheets.com) Genius sheets](https://geniussheets.com) - [![Favicon](https://icon.horse/icon/askcommand.com) Ask command](https://askcommand.com) - [![Favicon](https://icon.horse/icon/noluai.com) Nolu](https://noluai.com) - [![Favicon](https://icon.horse/icon/uselookup.com) Lookup](https://uselookup.com) - [![Favicon](https://icon.horse/icon/olli.ai) Olli](https://olli.ai) - [![Favicon](https://icon.horse/icon/autopredict.co.uk) Autopredict](https://autopredict.co.uk) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Plugin -- [![Favicon](https://icon.horse/icon/tldrdev.ai) Jetbrains ide plugin](https://tldrdev.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/tldrdev.ai) Jetbrains ide plugin](https://tldrdev.ai) +{.icon-list .marker-none} ### Pet + - [![Favicon](https://icon.horse/icon/digitaldogs.ai) Digital dogs](https://digitaldogs.ai) - [![Favicon](https://icon.horse/icon/aipetavatar.com) Aipetavatar](https://aipetavatar.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Sports -- [![Favicon](https://icon.horse/icon/sportsprediction.ai) Ai sports prediction](https://sportsprediction.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/sportsprediction.ai) Ai sports prediction](https://sportsprediction.ai) +{.icon-list .marker-none} ### User experience + - [![Favicon](https://icon.horse/icon/arcopypaste.app) Clipdrop](https://arcopypaste.app) - [![Favicon](https://icon.horse/icon/getairim.com) Airim 2.0](https://getairim.com) - [![Favicon](https://icon.horse/icon/akin.nz) Akin](https://akin.nz) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Quiz -- [![Favicon](https://icon.horse/icon/quizgecko.com) Quizgecko](https://quizgecko.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/quizgecko.com) Quizgecko](https://quizgecko.com) +{.icon-list .marker-none} ### Sql + - [![Favicon](https://icon.horse/icon/decile.app) Decile](https://decile.app) - [![Favicon](https://icon.horse/icon/aihelperbot.com) Aihelperbot](https://aihelperbot.com) - [![Favicon](https://icon.horse/icon/aiquery.co) Ai query](https://aiquery.co) - [![Favicon](https://icon.horse/icon/ai2sql.io) Ai2sql](https://ai2sql.io) - [![Favicon](https://icon.horse/icon/usechannel.com) Channel](https://usechannel.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Linkedin -- [![Favicon](https://icon.horse/icon/sid.black/tools/linkedin-post-generator) Linkedin posts generator](https://sid.black/tools/linkedin-post-generator) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/sid.black/tools/linkedin-post-generator) Linkedin posts generator](https://sid.black/tools/linkedin-post-generator) +{.icon-list .marker-none} ### Food + - [![Favicon](https://icon.horse/icon/ai-recipes.softr.app) Ai recipe generator](https://ai-recipes.softr.app) - [![Favicon](https://icon.horse/icon/foodai.app) Foodai](https://foodai.app) - [![Favicon](https://icon.horse/icon/whatcaketobake.com) What cake to bake?](https://whatcaketobake.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Tool + - [![Favicon](https://icon.horse/icon/autoname.org) Autoname](https://autoname.org) - [![Favicon](https://icon.horse/icon/assetsai.art) Assetsai](https://assetsai.art) - [![Favicon](https://icon.horse/icon/aibusinesstool.com) Aibusinesstool](https://aibusinesstool.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Emoji -- [![Favicon](https://icon.horse/icon/phben.ch) Ph bench](https://phben.ch) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/phben.ch) Ph bench](https://phben.ch) +{.icon-list .marker-none} ### Newsletters -- [![Favicon](https://icon.horse/icon/subscribe.machinelearnings.co) Machine learnings](https://subscribe.machinelearnings.co) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/subscribe.machinelearnings.co) Machine learnings](https://subscribe.machinelearnings.co) +{.icon-list .marker-none} ### Streaming services -- [![Favicon](https://icon.horse/icon/their.tube) Theirtube](https://their.tube) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/their.tube) Theirtube](https://their.tube) +{.icon-list .marker-none} ### Excel -- [![Favicon](https://icon.horse/icon/formula.dog) Formula dog](https://formula.dog) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/formula.dog) Formula dog](https://formula.dog) +{.icon-list .marker-none} ### Ai detection + - [![Favicon](https://icon.horse/icon/thomas.io/detect-gpt) Detect gpt](https://thomas.io/detect-gpt) - [![Favicon](https://icon.horse/icon/nsfw.m1guelpf.me) Is this image nsfw?](https://nsfw.m1guelpf.me) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### News + - [![Favicon](https://icon.horse/icon/speechkit.io) Speechkit](https://speechkit.io) - [![Favicon](https://icon.horse/icon/useclarity.com) Clarity](https://useclarity.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Vacation -- [![Favicon](https://icon.horse/icon/letsroam.app) Roamr](https://letsroam.app) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/letsroam.app) Roamr](https://letsroam.app) +{.icon-list .marker-none} ### Logo generator -- [![Favicon](https://icon.horse/icon/makelogoai.com) Make logo ai](https://makelogoai.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/makelogoai.com) Make logo ai](https://makelogoai.com) +{.icon-list .marker-none} ### Real estate + - [![Favicon](https://icon.horse/icon/airoomplanner.com) Ai room planner](https://airoomplanner.com) - [![Favicon](https://icon.horse/icon/coolaiid.com) Coolaiid](https://coolaiid.com) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Assistant -- [![Favicon](https://icon.horse/icon/eddyai.com) Eddyai](https://eddyai.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/eddyai.com) Eddyai](https://eddyai.com) +{.icon-list .marker-none} ### Bots -- [![Favicon](https://icon.horse/icon/ai-chatbots.pulse.is) Ai chatbots in messengers](https://ai-chatbots.pulse.is) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/ai-chatbots.pulse.is) Ai chatbots in messengers](https://ai-chatbots.pulse.is) +{.icon-list .marker-none} ### Advertising -- [![Favicon](https://icon.horse/icon/jotapp.tech) Jot](https://jotapp.tech) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/jotapp.tech) Jot](https://jotapp.tech) +{.icon-list .marker-none} ### Gift ideas + - [![Favicon](https://icon.horse/icon/giftastic.ai) Giftastic.ai](https://giftastic.ai) - [![Favicon](https://icon.horse/icon/coolgiftideas.io) Cool gift ideas](https://coolgiftideas.io) - [![Favicon](https://icon.horse/icon/elfhelp.ai) Elf help](https://elfhelp.ai) - {.icon-list .marker-none} - +{.icon-list .marker-none} ### Text-to-speech -- [![Favicon](https://icon.horse/icon/verbatik.com) Verbatik](https://verbatik.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/verbatik.com) Verbatik](https://verbatik.com) +{.icon-list .marker-none} ### Character -- [![Favicon](https://icon.horse/icon/salewhale.chat) Salewhale](https://salewhale.chat) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/salewhale.chat) Salewhale](https://salewhale.chat) +{.icon-list .marker-none} ### Memory -- [![Favicon](https://icon.horse/icon/heyday.xyz) Heyday](https://heyday.xyz) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/heyday.xyz) Heyday](https://heyday.xyz) +{.icon-list .marker-none} ### Feedback -- [![Favicon](https://icon.horse/icon/myess.ai) Myess](https://myess.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/myess.ai) Myess](https://myess.ai) +{.icon-list .marker-none} ### Background -- [![Favicon](https://icon.horse/icon/zoomscape.ai) Zoomscape](https://zoomscape.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/zoomscape.ai) Zoomscape](https://zoomscape.ai) +{.icon-list .marker-none} ### Support -- [![Favicon](https://icon.horse/icon/resolveai.co) Resolveai](https://resolveai.co) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/resolveai.co) Resolveai](https://resolveai.co) +{.icon-list .marker-none} ### Rank -- [![Favicon](https://icon.horse/icon/reviewz.ai) Reviewz](https://reviewz.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/reviewz.ai) Reviewz](https://reviewz.ai) +{.icon-list .marker-none} ### Letter -- [![Favicon](https://icon.horse/icon/recommendme.to) Recommendme](https://recommendme.to) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/recommendme.to) Recommendme](https://recommendme.to) +{.icon-list .marker-none} ### Gift -- [![Favicon](https://icon.horse/icon/text2present.com) Text2present](https://text2present.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/text2present.com) Text2present](https://text2present.com) +{.icon-list .marker-none} ### Dream -- [![Favicon](https://icon.horse/icon/scarlettpanda.com) Scarlettpanda](https://scarlettpanda.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/scarlettpanda.com) Scarlettpanda](https://scarlettpanda.com) +{.icon-list .marker-none} ### Excuse -- [![Favicon](https://icon.horse/icon/excuses.ai) Excuses ai](https://excuses.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/excuses.ai) Excuses ai](https://excuses.ai) +{.icon-list .marker-none} ### Game -- [![Favicon](https://icon.horse/icon/huggingface.co/spaces/huggingface-projects/stable-diffusion-multiplayer) Stable diffusion multiplayer](https://huggingface.co/spaces/huggingface-projects/stable-diffusion-multiplayer) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/huggingface.co/spaces/huggingface-projects/stable-diffusion-multiplayer) Stable diffusion multiplayer](https://huggingface.co/spaces/huggingface-projects/stable-diffusion-multiplayer) +{.icon-list .marker-none} ### Edit -- [![Favicon](https://icon.horse/icon/bigmp4.com) Bigmp4](https://bigmp4.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/bigmp4.com) Bigmp4](https://bigmp4.com) +{.icon-list .marker-none} ### Translation -- [![Favicon](https://icon.horse/icon/bot.petit.today) Languagepro](https://bot.petit.today) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/bot.petit.today) Languagepro](https://bot.petit.today) +{.icon-list .marker-none} ### Startup tools -- [![Favicon](https://icon.horse/icon/releasenote.ai) Releasenote.ai](https://releasenote.ai) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/releasenote.ai) Releasenote.ai](https://releasenote.ai) +{.icon-list .marker-none} ### E-commerce -- [![Favicon](https://icon.horse/icon/recommendix.com/es-ar) Recommendix](https://recommendix.com/es-ar) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/recommendix.com/es-ar) Recommendix](https://recommendix.com/es-ar) +{.icon-list .marker-none} ### Beauty -- [![Favicon](https://icon.horse/icon/hairbyai.com) Hairbyai](https://hairbyai.com) - {.icon-list .marker-none} +- [![Favicon](https://icon.horse/icon/hairbyai.com) Hairbyai](https://hairbyai.com) +{.icon-list .marker-none} ### Photo + - [![Favicon](https://icon.horse/icon/camira.ai) Camira](https://camira.ai) - {.icon-list .marker-none} + +{.icon-list .marker-none} diff --git a/source/_posts/airtable.md b/source/_posts/airtable.md index 9e8db4fe..efd1b2e0 100644 --- a/source/_posts/airtable.md +++ b/source/_posts/airtable.md @@ -2,96 +2,90 @@ title: Airtable date: 2022-11-23 16:23:31.699659 background: bg-[#f1b73f] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 36 keyboard shortcuts found in Airtable + A visual cheat-sheet for the 36 keyboard shortcuts found in Airtable --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### General {.row-span-3} -Shortcut | Action ----|--- -`Ctrl` `Z` | Undo action -`Ctrl` `Shift` `Z` | Redo action -`Ctrl` `P` | Print the current table view or current expanded record (if inside an expanded record) -`Ctrl` `J` | Opens the table switcher in the current base -`Ctrl` `K` | Opens the quick base switcher if on the home screen or inside a base -`Ctrl` `Shift` `K` | Opens the view switcher in the current base -`Ctrl` `Shift` `F` | Opens the filter menu in the current view, press enter to create a new filter -`Ctrl` `Shift` `D` | Opens the grouped records menu in the current view, press enter to collapse or expand all groups -`Ctrl` `Shift` `S` | Opens the sort menu in the current view, press enter to re-apply the most recent sort -`Ctrl` `Shift` `\` | Toggles blocks -`Ctrl` `F` | Opens the find bar, use esc to close it -`Ctrl` `;` | Sets the selected date/datetime field to now -{.shortcuts} +| Shortcut | Action | +| ------------------ | ------------------------------------------------------------------------------------------------ | +| `Ctrl` `Z` | Undo action | +| `Ctrl` `Shift` `Z` | Redo action | +| `Ctrl` `P` | Print the current table view or current expanded record (if inside an expanded record) | +| `Ctrl` `J` | Opens the table switcher in the current base | +| `Ctrl` `K` | Opens the quick base switcher if on the home screen or inside a base | +| `Ctrl` `Shift` `K` | Opens the view switcher in the current base | +| `Ctrl` `Shift` `F` | Opens the filter menu in the current view, press enter to create a new filter | +| `Ctrl` `Shift` `D` | Opens the grouped records menu in the current view, press enter to collapse or expand all groups | +| `Ctrl` `Shift` `S` | Opens the sort menu in the current view, press enter to re-apply the most recent sort | +| `Ctrl` `Shift` `\` | Toggles blocks | +| `Ctrl` `F` | Opens the find bar, use esc to close it | +| `Ctrl` `;` | Sets the selected date/datetime field to now | +{.shortcuts} ### Grid View {.row-span-3} -Shortcut | Action ----|--- -`Ctrl` `C` | Copy a cell or range of cells -`Ctrl` `X` | Cut a cell or range of cells -`Ctrl` `V` | Paste a cell (if you select a range of cells, you can paste the same value into multiple cells at once) -`Space` | Expand the active record, use esc to return to the table -`Shift` `Space` | Expand the active cell, you can then use arrow keys to move to different cells -`PgUp` | Scrolls one screen up -`PgDn` | Scrolls one screen down -`Alt` `PgUp` | Scrolls one screen left -`Alt` `PgDn` | Scrolls one screen right -`Ctrl` `(arrows)` | Jump to the edge of the table -`Ctrl` `Shift` `(arrows)` | Jump to the edge of table and select cells -`Shift` `(arrows)` | Select range of cells, you can also click while holding shift to select cells -`Shift` `Enter` | Insert a record below the selected cell -`Enter` | Edit the selected cell -{.shortcuts} +| Shortcut | Action | +| ------------------------- | ------------------------------------------------------------------------------------------------------- | +| `Ctrl` `C` | Copy a cell or range of cells | +| `Ctrl` `X` | Cut a cell or range of cells | +| `Ctrl` `V` | Paste a cell (if you select a range of cells, you can paste the same value into multiple cells at once) | +| `Space` | Expand the active record, use esc to return to the table | +| `Shift` `Space` | Expand the active cell, you can then use arrow keys to move to different cells | +| `PgUp` | Scrolls one screen up | +| `PgDn` | Scrolls one screen down | +| `Alt` `PgUp` | Scrolls one screen left | +| `Alt` `PgDn` | Scrolls one screen right | +| `Ctrl` `(arrows)` | Jump to the edge of the table | +| `Ctrl` `Shift` `(arrows)` | Jump to the edge of table and select cells | +| `Shift` `(arrows)` | Select range of cells, you can also click while holding shift to select cells | +| `Shift` `Enter` | Insert a record below the selected cell | +| `Enter` | Edit the selected cell | +{.shortcuts} ### Gallery View -Shortcut | Action ----|--- -`Ctrl` `Up/Down` | Scroll to edge of gallery -{.shortcuts} +| Shortcut | Action | +| ---------------- | ------------------------- | +| `Ctrl` `Up/Down` | Scroll to edge of gallery | +{.shortcuts} ### Kanban View -Shortcut | Action ----|--- -`Left` | Scroll kanban board to the left by one stack -`Right` | Scroll kanban board to the right by one stack -`Ctrl` `Left` | Scroll kanban board to the left edge -`Ctrl` `Right` | Scroll kanban board to the right edge -`Ctrl` `Up` | Scroll all stacks to the top -`Ctrl` `Down` | Scroll all stacks to the bottom -{.shortcuts} +| Shortcut | Action | +| -------------- | --------------------------------------------- | +| `Left` | Scroll kanban board to the left by one stack | +| `Right` | Scroll kanban board to the right by one stack | +| `Ctrl` `Left` | Scroll kanban board to the left edge | +| `Ctrl` `Right` | Scroll kanban board to the right edge | +| `Ctrl` `Up` | Scroll all stacks to the top | +| `Ctrl` `Down` | Scroll all stacks to the bottom | +{.shortcuts} ### Expanded Record -Shortcut | Action ----|--- -`Ctrl` `Shift` `<` | Move to the previous record while viewing an expanded record -`Ctrl` `Shift` `>` | Move to the next record while viewing an expanded record -`Esc` | Close expanded record -{.shortcuts} - +| Shortcut | Action | +| ------------------ | ------------------------------------------------------------ | +| `Ctrl` `Shift` `<` | Move to the previous record while viewing an expanded record | +| `Ctrl` `Shift` `>` | Move to the next record while viewing an expanded record | +| `Esc` | Close expanded record | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Airtable](https://support.airtable.com/hc/en-us/articles/204143385-Airtable-keyboard-shortcuts) _(support.airtable.com)_ +- [Keyboard shortcuts for Airtable](https://support.airtable.com/hc/en-us/articles/204143385-Airtable-keyboard-shortcuts) + _(support.airtable.com)_ diff --git a/source/_posts/alan-ai.md b/source/_posts/alan-ai.md index b8740a9a..d0ae0f49 100644 --- a/source/_posts/alan-ai.md +++ b/source/_posts/alan-ai.md @@ -3,76 +3,85 @@ title: Alan AI date: 2023-03-03 6:00:00 background: bg-[#4aa181] tags: - - AI - - AlanAI - - Prompts - - Tips + - AI + - AlanAI + - Prompts + - Tips categories: - - Toolkit -intro: This cheat sheet covers all major script concepts, client API methods, handlers and other tools to create a multimodal conversational experience with Alan AI + - Toolkit +intro: + This cheat sheet covers all major script concepts, client API methods, handlers and other tools to create a multimodal + conversational experience with Alan AI --- -### Legend +### Legend -- ``pattern`` — phrase to invoke a voice/text command or a response to be played -- ``value`` — specified value -- ``params`` — passed parameters -- ``action`` — action to be performed -- ``output`` — data outcome -- ``[...]`` — optional data or parameters +- `pattern` — phrase to invoke a voice/text command or a response to be played +- `value` — specified value +- `params` — passed parameters +- `action` — action to be performed +- `output` — data outcome +- `[...]` — optional data or parameters -Dialog script -------------- +## Dialog script ### Intents & patterns Define a voice/text command to play a response -``` {.wrap} +```{.wrap} intent('pattern'[, 'patternN'], reply('pattern')) ``` Define a voice/text command to play a response or perform an action -``` {.wrap} + +```{.wrap} intent('pattern'[, 'patternN'], p => { action }) ``` Define alternatives -``` {.wrap} + +```{.wrap} intent('phrase1|phrase2') ``` Define optional words and phrases -``` {.wrap} + +```{.wrap} intent('pattern (optional phrase|)') ``` - - ### Response functions Play a response (in case of multiple patterns, a response is picked at random) -``` {.wrap} + +```{.wrap} reply('pattern'[, 'patternN']) ``` Play a response -``` {.wrap} + +```{.wrap} p.play('pattern') ``` -Define voice settings for the assistant reply: ``accent (en, fr, de, it, ru, es)``, ``gender (male/female)``, ``voice type``, ``speaking pitch``, ``speaking rate`` -``` {.wrap} +Define voice settings for the assistant reply: `accent (en, fr, de, it, ru, es)`, `gender (male/female)`, `voice type`, +`speaking pitch`, `speaking rate` + +```{.wrap} p.play([voice(code, gender, type, pitch, rate), ]'pattern') ``` -Define play options: ``force:true`` (execute if the button is inactive), ``activate:true`` (activate the button before), ``deactivate:true`` (deactivate the button after) -``` {.wrap} +Define play options: `force:true` (execute if the button is inactive), `activate:true` (activate the button before), +`deactivate:true` (deactivate the button after) + +```{.wrap} p.play('pattern'[, opts(options)]) ``` Send a command to the app -``` {.wrap} + +```{.wrap} p.play({command:data}) ``` @@ -80,31 +89,31 @@ p.play({command:data}) Define a static list of values expected in the input -``` {.wrap} +```{.wrap} $(SLOTNAME value1|value2) => p.SLOTNAME.value ``` Provide labels to classify or identify the slot values -``` {.wrap} +```{.wrap} $(SLOTNAME value1~label1|value2~label2) => p.SLOTNAME.label ``` Enable fuzzy matching to capture similar variants -``` {.wrap} +```{.wrap} $(SLOTNAME~ value1|value2) => p.SLOTNAME.value ``` Make a slot optional -``` {.wrap} +```{.wrap} $(SLOTNAME value1|value2|) ``` Capture several slot values -``` {.wrap} +```{.wrap} intent('$(SLOTNAME value1|value2) and $(SLOTNAME value1|value2 )') => p.SLOTNAME_ (array), p.SLOTNAME_[0].value, p.SLOTNAME_[1].value ``` @@ -112,37 +121,37 @@ intent('$(SLOTNAME value1|value2) and $(SLOTNAME value1|value2 )') => p.SLOTNAME Capture date values -``` {.wrap} +```{.wrap} $(DATE) => p.DATE.value, p.DATE.moment, p.DATE.luxon ``` Capture time values -``` {.wrap} +```{.wrap} $(TIME) => p.TIME.value, p.TIME.moment ``` Capture cardinal numbers -``` {.wrap} +```{.wrap} $(NUMBER) => p.NUMBER.value, p.NUMBER.number ``` Capture ordinal numbers -``` {.wrap} +```{.wrap} $(ORDINAL) => p.ORDINAL.value, p.ORDINAL.number ``` Capture locations -``` {.wrap} +```{.wrap} $(LOC) => p.LOC.value ``` Capture names -``` {.wrap} +```{.wrap} $(NAME) => p.NAME.value ``` @@ -150,21 +159,21 @@ $(NAME) => p.NAME.value Define a dynamic slot at the project level -``` {.wrap} +```{.wrap} project.name = {en: "value1|value2|value3"} $(SLOTNAME p:name) => p.SLOTNAME.value ``` Define a dynamic slot at the dialog session level -``` {.wrap} +```{.wrap} p.userData.name = {en: "value1|value2|value3"} $(SLOTNAME u:name) => p.SLOTNAME.value ``` Get data for a dynamic slot with the visual state -``` {.wrap} +```{.wrap} let name = ["value1|value2|value3"] p.visual.data = {en: name}; $(SLOTNAME v:name) => p.SLOTNAME.value @@ -172,7 +181,7 @@ $(SLOTNAME v:name) => p.SLOTNAME.value Define a dynamic slot in a short form -``` {.wrap} +```{.wrap} project.name = {en: "value1|value2|value3"} $(p:name) => p.SLOTNAME.value ``` @@ -185,19 +194,18 @@ Make a dynamic slot optional: see [User-defined slots](#user-defined-slots). Capture several slot values: see [User-defined slots](#user-defined-slots). - ### RegEx slots Capture digit and/or letter combination -``` {.wrap} +```{.wrap} const reg = "([A-Za-z]{1}\\s?){6}" $(SLOTNAME* ${reg}) => p.SLOTNAME.value ``` Capture any user’s input -``` {.wrap} +```{.wrap} $(SLOTNAME* .+) => p.SLOTNAME.value ``` @@ -205,50 +213,49 @@ $(SLOTNAME* .+) => p.SLOTNAME.value Define a context -``` {.wrap} +```{.wrap} let contextName = context(() => { action }) ``` Activate a context -``` {.wrap} +```{.wrap} intent('pattern', p => {..., p.then(contextName)} ``` Pass data to the context -``` {.wrap} +```{.wrap} p.then(contextName, state: {data:yourData}) => p.state.data ``` Resolve a context -``` {.wrap} +```{.wrap} p.resolve([data:yourData]) ``` - Reset a context -``` {.wrap} +```{.wrap} p.resetContext() ``` Define intents to be matched at any time without switching the current context -``` {.wrap} +```{.wrap} intent(noctx, 'pattern', ...) or noContext(() => {intent(...)}) ``` Play a prompt for an expected input -``` {.wrap} +```{.wrap} fallback('pattern1'[, 'patternN']) ``` Title a context -``` {.wrap} +```{.wrap} title('contextName') ``` @@ -256,37 +263,37 @@ title('contextName') Store static device- and user-specific data passed from the client app -``` {.wrap} +```{.wrap} authData.data => p.authData.data ``` Store state data to be available globally at the project scope -``` {.wrap} +```{.wrap} project.info = {data:yourData} => project.info.data ``` Store the intent match score -``` {.wrap} +```{.wrap} p.score ``` Store data to be passed between contexts -``` {.wrap} +```{.wrap} p.state.data ``` -Store visual context data to be passed from the client app with ``setVisualState()`` +Store visual context data to be passed from the client app with `setVisualState()` -``` {.wrap} +```{.wrap} p.visual.data ``` Store user-specific state data to be accessible during the dialog session -``` {.wrap} +```{.wrap} p.userData.data ``` @@ -294,51 +301,52 @@ p.userData.data Define actions to be performed when the script is saved and dialog model is built -``` {.wrap} +```{.wrap} onCreateProject(() => { action }) ``` Define actions to be performed when the dialog session starts -``` {.wrap} +```{.wrap} onCreateUser((p) => { action }) ``` Define actions to be performed when the dialog session ends -``` {.wrap} +```{.wrap} onCleanupUser((p) => { action }) ``` Define actions to be performed when the visual state is set -``` {.wrap} +```{.wrap} onVisualState((p, s) => { action }) ``` -Define actions to be performed when a user event is triggered in the client app: ``buttonReady``, ``buttonClicked``, ``micPermissionPrompt``, ``micAllowed``, ``firstActivate``, ``showPopup``, ``popupCloseClicked``, ``recognized`` +Define actions to be performed when a user event is triggered in the client app: `buttonReady`, `buttonClicked`, +`micPermissionPrompt`, `micAllowed`, `firstActivate`, `showPopup`, `popupCloseClicked`, `recognized` -``` {.wrap} +```{.wrap} onUserEvent((p, e) => { action }) ``` Define actions to be performed when a context is activated -``` {.wrap} +```{.wrap} onEnter((p) => { action }) ``` - ### Q&A service Define a URL of a resource to be indexed -``` {.wrap} +```{.wrap} corpus({url: url, depth: depthLevel}) ``` Define text corpus to be used by the assistant in the dialog -``` {.wrap} + +```{.wrap} corpus('text') ``` @@ -346,19 +354,19 @@ corpus('text') Make API calls -``` {.wrap} +```{.wrap} axios, request ``` Work with time -``` {.wrap} +```{.wrap} moment-timezone, luxon ``` Work with arrays, numbers, objects, strings and so on -``` {.wrap} +```{.wrap} lodash ``` @@ -366,36 +374,35 @@ lodash Provide a list of hints to help recognize specific terms -``` {.wrap} +```{.wrap} recognitionHints('hint'[, 'hintN']) ``` Write info messages to Alan Studio logs -``` {.wrap} +```{.wrap} console.log(data) ``` Write error messages to Alan Studio logs -``` {.wrap} +```{.wrap} console.error(data) ``` -Client SDK ----------- +## Client SDK ### Client API methods Send information about the visual state from the client app to the dialog script -``` {.wrap} +```{.wrap} setVisualState(visualStateData:object) ``` Send data or perform actions without a voice/text command -``` {.wrap} +```{.wrap} projectAPI.method = function(p, param, callback) { p.userData.data = param.data; callback(); @@ -406,19 +413,19 @@ callProjectApi(method:string, data:object, callback:function) Play a text message in the client app -``` {.wrap} +```{.wrap} playText(text:string) ``` Send a text message to Alan as the user’s input -``` {.wrap} +```{.wrap} sendText(text:string) ``` Execute a command in the client app -``` {.wrap} +```{.wrap} playCommand(command:object) ``` @@ -426,37 +433,37 @@ playCommand(command:object) Activate the Alan button programmatically -``` {.wrap} +```{.wrap} activate() ``` Deactivate the Alan button programmatically -``` {.wrap} +```{.wrap} deactivate() ``` Check the Alan button state -``` {.wrap} +```{.wrap} isActive() ``` Remove the Alan button from the parent element, page (supported on Web, Ionic) -``` {.wrap} +```{.wrap} remove() ``` Check the state of the wake word (supported on iOS, Android) -``` {.wrap} +```{.wrap} getWakewordEnabled() ``` Set the state of the wake word (supported on iOS, Android) -``` {.wrap} +```{.wrap} setWakewordEnabled(enabled:boolean) ``` @@ -466,42 +473,30 @@ setWakewordEnabled(enabled:boolean) Handle commands sent from the dialog script to the client app -``` {.wrap} +```{.wrap} onCommand: function (commandData) { action } ``` Handle Alan button state changes -``` {.wrap} +```{.wrap} onButtonState: function (e) { action } ``` Handle connection status to the virtual assistant project in the Alan Cloud -``` {.wrap} +```{.wrap} onConnectionStatus: function (e) { action } ``` Handle events received from Alan -``` {.wrap} +```{.wrap} onEvent: function (e) { action } ``` - - - -Also see --------- +## Also see - [Alan AI website](https://alan.app) - [About the Alan Platform](https://alan.app/platform) - [Alan AI documentation](https://alan.app/docs) - - - - diff --git a/source/_posts/alpine-linux.md b/source/_posts/alpine-linux.md new file mode 100644 index 00000000..32a77b93 --- /dev/null +++ b/source/_posts/alpine-linux.md @@ -0,0 +1,296 @@ +--- +title: Alpine Linux +date: 2024-03-20 12:00:00 +icon: icon-alpine +background: bg-blue-600 +tags: + - linux + - server + - container +categories: + - Operating System +intro: + A comprehensive cheatsheet for Alpine Linux, covering package management, system administration, networking, and more. + Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox. +--- + +# Alpine Linux Cheatsheet + +## Package Management (apk) + +### Basic Package Operations + +```bash +# Update package index +apk update + +# Upgrade all installed packages +apk upgrade + +# Install a package +apk add + +# Remove a package +apk del + +# Search for a package +apk search + +# Show package info +apk info + +# List all installed packages +apk list --installed +``` + +### Advanced Package Operations + +```bash +# Add package from testing repository +apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing + +# Add multiple packages +apk add package1 package2 package3 + +# Clean package cache +apk cache clean +``` + +## System Administration + +### Service Management (OpenRC) + +```bash +# Start a service +rc-service start + +# Stop a service +rc-service stop + +# Restart a service +rc-service restart + +# Add service to default runlevel +rc-update add default + +# Remove service from default runlevel +rc-update del default + +# List all services +rc-status +``` + +### System Information + +```bash +# Show system information +uname -a + +# Show disk usage +df -h + +# Show memory usage +free -h + +# Show running processes +ps aux + +# Show system uptime +uptime +``` + +### Network Configuration + +```bash +# Show network interfaces +ip addr show + +# Configure network interface +setup-interfaces + +# Test network connectivity +ping -c 4 google.com + +# Show routing table +ip route show + +# Edit network configuration +vi /etc/network/interfaces +``` + +### User Management + +```bash +# Add a new user +adduser + +# Add user to group +addgroup + +# Change password +passwd + +# Delete user +deluser + +# List all users +cat /etc/passwd +``` + +## File System Operations + +### Basic File Operations + +```bash +# Create directory +mkdir + +# Remove directory +rm -r + +# Copy files +cp + +# Move/rename files +mv + +# Change permissions +chmod + +# Change ownership +chown : +``` + +## Container Operations + +### Docker Support + +```bash +# Install Docker +apk add docker + +# Start Docker service +rc-service docker start + +# Enable Docker at boot +rc-update add docker default +``` + +## System Maintenance + +### Disk Operations + +```bash +# Check disk space +df -h + +# Check directory size +du -sh + +# Mount a device +mount /dev/ /mnt/ + +# Unmount a device +umount /mnt/ +``` + +### Backup and Restore + +```bash +# Create tar archive +tar -czf backup.tar.gz /path/to/backup + +# Extract tar archive +tar -xzf backup.tar.gz + +# Create system backup (root required) +lbu package /media/backup.apkovl.tar.gz +``` + +## Tips and Tricks + +### Common Configuration Files + +- `/etc/apk/repositories` - Package repositories +- `/etc/network/interfaces` - Network configuration +- `/etc/hostname` - System hostname +- `/etc/hosts` - Host mappings +- `/etc/resolv.conf` - DNS configuration + +### Environment Variables + +```bash +# Set environment variable +export VARIABLE=value + +# View all environment variables +env + +# Add permanent environment variable +echo "export VARIABLE=value" >> ~/.profile +``` + +### System Logs + +```bash +# View system logs +less /var/log/messages + +# View boot messages +dmesg + +# Follow log in real-time +tail -f /var/log/messages +``` + +## Security + +### Firewall (using iptables) + +```bash +# Install iptables +apk add iptables + +# Allow SSH (port 22) +iptables -A INPUT -p tcp --dport 22 -j ACCEPT + +# Save iptables rules +/etc/init.d/iptables save + +# Restore iptables rules +/etc/init.d/iptables restart +``` + +### SSH Configuration + +```bash +# Generate SSH key +ssh-keygen -t rsa -b 4096 + +# Copy SSH key to remote server +ssh-copy-id user@remote-server + +# Edit SSH configuration +vi /etc/ssh/sshd_config +``` + +## Troubleshooting + +### Common Commands + +```bash +# Check system logs for errors +dmesg | grep -i error + +# Check service status +rc-service status + +# Check system resource usage +top + +# Check network connections +netstat -tuln + +# Check disk health +smartctl -a /dev/sda # Requires smartmontools package +``` diff --git a/source/_posts/android-studio.md b/source/_posts/android-studio.md index bc553e8f..4f99502c 100644 --- a/source/_posts/android-studio.md +++ b/source/_posts/android-studio.md @@ -2,227 +2,219 @@ title: Android Studio date: 2022-11-23 16:23:31.704217 background: bg-[#6bd488] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 130 keyboard shortcuts found in the Andriod Studio software + A visual cheat-sheet for the 130 keyboard shortcuts found in the Andriod Studio software --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### General -Shortcut | Action ----|--- -`Ctrl` `S` | Save all -`Ctrl` `Alt` `Y` | Synchronize -`Ctrl` `Shift` `F12` | Minimize or maximize the editor -`Alt` `Shift` `F` | Add to favorites -`Alt` `Shift` `I` | Inspect the current file with the current profile -`Ctrl` \` | Quick switch the scheme -`Ctrl` `Alt` `S` | Open the settings dialogue -`Ctrl` `Alt` `Shift` `S` | Open the project structure dialogue -`Ctrl` `Tab` | Switch between the tabs and tool window -{.shortcuts} - +| Shortcut | Action | +| ------------------------ | ------------------------------------------------- | +| `Ctrl` `S` | Save all | +| `Ctrl` `Alt` `Y` | Synchronize | +| `Ctrl` `Shift` `F12` | Minimize or maximize the editor | +| `Alt` `Shift` `F` | Add to favorites | +| `Alt` `Shift` `I` | Inspect the current file with the current profile | +| `Ctrl` \` | Quick switch the scheme | +| `Ctrl` `Alt` `S` | Open the settings dialogue | +| `Ctrl` `Alt` `Shift` `S` | Open the project structure dialogue | +| `Ctrl` `Tab` | Switch between the tabs and tool window | -### Navigating and Searching {.row-span-2} - -Shortcut | Action ----|--- -`Shift` `Shift` | Search everything, including code and menus -`Ctrl` `F` | Find -`F3` | Find next -`Shift` `F3` | Find previous -`Ctrl` `R` | Replace -`Ctrl` `Shift` `A` | Find action -`Ctrl` `Alt` `Shift` `N` | Search by a symbol name -`Ctrl` `N` | Find class -`Ctrl` `Shift` `N` | Find file, instead of class -`Ctrl` `Shift` `F` | Find in path -`Ctrl` `F12` | Open file structure pop-up -`Alt` `Right/Left` | Navigate between open editor tabs -`Ctrl` `Enter` | Jump to source -`Shift` `F4` | Open the current editor tab in a new window -`Ctrl` `E` | Recently opened files pop-up -`Ctrl` `Shift` `E` | Recently edited files pop-up -`Ctrl` `Shift` `Backspace` | Go to last edit location -`Ctrl` `F4` | Close active editor tab -`Esc` | Return to editor window from a tool window -`Shift` `Esc` | Hide active or last active tool window -`Ctrl` `G` | Go to line -`Ctrl` `H` | Open type hierarchy -`Ctrl` `Shift` `H` | Open method hierarchy -`Ctrl` `Alt` `H` | Open call hierarchy {.shortcuts} +### Navigating and Searching {.row-span-2} + +| Shortcut | Action | +| -------------------------- | ------------------------------------------- | +| `Shift` `Shift` | Search everything, including code and menus | +| `Ctrl` `F` | Find | +| `F3` | Find next | +| `Shift` `F3` | Find previous | +| `Ctrl` `R` | Replace | +| `Ctrl` `Shift` `A` | Find action | +| `Ctrl` `Alt` `Shift` `N` | Search by a symbol name | +| `Ctrl` `N` | Find class | +| `Ctrl` `Shift` `N` | Find file, instead of class | +| `Ctrl` `Shift` `F` | Find in path | +| `Ctrl` `F12` | Open file structure pop-up | +| `Alt` `Right/Left` | Navigate between open editor tabs | +| `Ctrl` `Enter` | Jump to source | +| `Shift` `F4` | Open the current editor tab in a new window | +| `Ctrl` `E` | Recently opened files pop-up | +| `Ctrl` `Shift` `E` | Recently edited files pop-up | +| `Ctrl` `Shift` `Backspace` | Go to last edit location | +| `Ctrl` `F4` | Close active editor tab | +| `Esc` | Return to editor window from a tool window | +| `Shift` `Esc` | Hide active or last active tool window | +| `Ctrl` `G` | Go to line | +| `Ctrl` `H` | Open type hierarchy | +| `Ctrl` `Shift` `H` | Open method hierarchy | +| `Ctrl` `Alt` `H` | Open call hierarchy | +{.shortcuts} ### Writing Code {.row-span-4} -Shortcut | Action ----|--- -`Alt` `Insert` | Generate code, e.g. getters, setters, constructors, new class -`Ctrl` `O` | Override methods -`Ctrl` `I` | Implement methods -`Ctrl` `Alt` `T` | Surround with if...else, try...catch, etc -`Ctrl` `Y` | Delete line at caret -`Ctrl` `-` | Collapse the current code block -`Ctrl` `+` | Expand the current code block -`Ctrl` `Shift` `-` | Collapse all code blocks -`Ctrl` `Shift` `+` | Expand all code blocks -`Ctrl` `D` | Duplicate the current line or selection -`Ctrl` `Space` | Basic code completion -`Ctrl` `Shift` `Space` | Smart code completion, filters the list of methods and variables by expected type -`Ctrl` `Shift` `Enter` | Complete statement -`Ctrl` `Q` | Quick documentation lookup -`Ctrl` `P` | Show parameters for selected method -`Ctrl` `B` | Go to declaration, directly -`Ctrl` `Alt` `B` | Go to implementations -`Ctrl` `U` | Go to super-method or super-class -`Ctrl` `Shift` `I` | Open quick definition lookup -`Alt` `1` | Toggle project tool window visibility -`F11` | Toggle bookmark -`Ctrl` `F11` | Toggle bookmark with mnemonic -`Ctrl` `/` | Comment or uncomment with line comment -`Ctrl` `Shift` `/` | Comment or uncomment with block comment -`Ctrl` `W` | Select successively increasing code blocks -`Ctrl` `Shift` `W` | Decrease current selection to previous state -`Ctrl` `[` | Move to code block start -`Ctrl` `]` | Move to code block end -`Ctrl` `Shift` `[` | Select to the code block start -`Ctrl` `Shift` `]` | Select to the code block end -`Ctrl` `Del` | Delete to the end of a word -`Ctrl` `Backspace` | Delete to the start of a word -`Ctrl` `Alt` `O` | Optimize imports -`Alt` `Enter` | Project quick fix, show intention actions and quick fixes -`Ctrl` `Alt` `L` | Reformat code -`Ctrl` `Alt` `I` | Auto-indent lines -`Tab` | Indent lines -`Shift` `Tab` | Unindent lines -`Ctrl` `Shift` `J` | Smart line join -`Ctrl` `Enter` | Smart line split -`Shift` `Enter` | Start new line -`F2` | Next highlighted error -`Shift` `F2` | Previous highlighted error -{.shortcuts} +| Shortcut | Action | +| ---------------------- | --------------------------------------------------------------------------------- | +| `Alt` `Insert` | Generate code, e.g. getters, setters, constructors, new class | +| `Ctrl` `O` | Override methods | +| `Ctrl` `I` | Implement methods | +| `Ctrl` `Alt` `T` | Surround with if...else, try...catch, etc | +| `Ctrl` `Y` | Delete line at caret | +| `Ctrl` `-` | Collapse the current code block | +| `Ctrl` `+` | Expand the current code block | +| `Ctrl` `Shift` `-` | Collapse all code blocks | +| `Ctrl` `Shift` `+` | Expand all code blocks | +| `Ctrl` `D` | Duplicate the current line or selection | +| `Ctrl` `Space` | Basic code completion | +| `Ctrl` `Shift` `Space` | Smart code completion, filters the list of methods and variables by expected type | +| `Ctrl` `Shift` `Enter` | Complete statement | +| `Ctrl` `Q` | Quick documentation lookup | +| `Ctrl` `P` | Show parameters for selected method | +| `Ctrl` `B` | Go to declaration, directly | +| `Ctrl` `Alt` `B` | Go to implementations | +| `Ctrl` `U` | Go to super-method or super-class | +| `Ctrl` `Shift` `I` | Open quick definition lookup | +| `Alt` `1` | Toggle project tool window visibility | +| `F11` | Toggle bookmark | +| `Ctrl` `F11` | Toggle bookmark with mnemonic | +| `Ctrl` `/` | Comment or uncomment with line comment | +| `Ctrl` `Shift` `/` | Comment or uncomment with block comment | +| `Ctrl` `W` | Select successively increasing code blocks | +| `Ctrl` `Shift` `W` | Decrease current selection to previous state | +| `Ctrl` `[` | Move to code block start | +| `Ctrl` `]` | Move to code block end | +| `Ctrl` `Shift` `[` | Select to the code block start | +| `Ctrl` `Shift` `]` | Select to the code block end | +| `Ctrl` `Del` | Delete to the end of a word | +| `Ctrl` `Backspace` | Delete to the start of a word | +| `Ctrl` `Alt` `O` | Optimize imports | +| `Alt` `Enter` | Project quick fix, show intention actions and quick fixes | +| `Ctrl` `Alt` `L` | Reformat code | +| `Ctrl` `Alt` `I` | Auto-indent lines | +| `Tab` | Indent lines | +| `Shift` `Tab` | Unindent lines | +| `Ctrl` `Shift` `J` | Smart line join | +| `Ctrl` `Enter` | Smart line split | +| `Shift` `Enter` | Start new line | +| `F2` | Next highlighted error | +| `Shift` `F2` | Previous highlighted error | +{.shortcuts} ### Viewing Layouts -Shortcut | Action ----|--- -`Ctrl` `+` | Zoom in -`Ctrl` `-` | Zoom out -`Ctrl` `0` | Fit to screen -`Ctrl` `Shift` `1` | Actual size -{.shortcuts} +| Shortcut | Action | +| ------------------ | ------------- | +| `Ctrl` `+` | Zoom in | +| `Ctrl` `-` | Zoom out | +| `Ctrl` `0` | Fit to screen | +| `Ctrl` `Shift` `1` | Actual size | +{.shortcuts} ### Layout Editor -Shortcut | Action ----|--- -`B` | Toggle between Design and Blueprint modes -`O` | Toggle between Portrait and Landscaope modes -`D` | Toggle devices -`R` | Force refresh -`E` | Toggle render errors panel -`Del` | Delete constraints -`Ctrl` `+` | Zoom in -`Ctrl` `-` | Zoom out -`Ctrl` `0` | Zoom to fit -`Ctrl` `B` | Go to XML -`Ctrl` `A` | Select all components -`Shift` `(click)` | Select multiple components -{.shortcuts} +| Shortcut | Action | +| ----------------- | -------------------------------------------- | +| `B` | Toggle between Design and Blueprint modes | +| `O` | Toggle between Portrait and Landscaope modes | +| `D` | Toggle devices | +| `R` | Force refresh | +| `E` | Toggle render errors panel | +| `Del` | Delete constraints | +| `Ctrl` `+` | Zoom in | +| `Ctrl` `-` | Zoom out | +| `Ctrl` `0` | Zoom to fit | +| `Ctrl` `B` | Go to XML | +| `Ctrl` `A` | Select all components | +| `Shift` `(click)` | Select multiple components | +{.shortcuts} ### Navigation Editor -Shortcut | Action ----|--- -`Ctrl` `+` | Zoom in -`Ctrl` `-` | Zoom out -`Ctrl` `0` | Zoom to fit -`Ctrl` `B` | Go to XML -`E` | Toggle render errors panel -`Ctrl` `G` | Group into a nested graph -`Tab` | Cycle through destinations -`Ctrl` `A` | Select all destinations -`Ctrl` `(click)` | Select multiple destinations -{.shortcuts} - +| Shortcut | Action | +| ---------------- | ---------------------------- | +| `Ctrl` `+` | Zoom in | +| `Ctrl` `-` | Zoom out | +| `Ctrl` `0` | Zoom to fit | +| `Ctrl` `B` | Go to XML | +| `E` | Toggle render errors panel | +| `Ctrl` `G` | Group into a nested graph | +| `Tab` | Cycle through destinations | +| `Ctrl` `A` | Select all destinations | +| `Ctrl` `(click)` | Select multiple destinations | +{.shortcuts} ### Build and Run -Shortcut | Action ----|--- -`Ctrl` `F9` | Build -`Shift` `F10` | Build and run -`Ctrl` `F10` | Apply changes and restart activity -`Ctrl` `Alt` `F10` | Apply code changes -{.shortcuts} +| Shortcut | Action | +| ------------------ | ---------------------------------- | +| `Ctrl` `F9` | Build | +| `Shift` `F10` | Build and run | +| `Ctrl` `F10` | Apply changes and restart activity | +| `Ctrl` `Alt` `F10` | Apply code changes | +{.shortcuts} ### Debugging -Shortcut | Action ----|--- -`Shift` `F9` | Debug -`F8` | Step over -`F7` | Step into -`Shift` `F7` | Smart step into -`Shift` `F8` | Step out -`Alt` `F9` | Run to cursor -`Alt` `F8` | Evaluate expression -`F9` | Resume program -`Ctrl` `F8` | Toggle breakpoint -`Ctrl` `Shift` `F8` | View breakpoints -{.shortcuts} +| Shortcut | Action | +| ------------------- | ------------------- | +| `Shift` `F9` | Debug | +| `F8` | Step over | +| `F7` | Step into | +| `Shift` `F7` | Smart step into | +| `Shift` `F8` | Step out | +| `Alt` `F9` | Run to cursor | +| `Alt` `F8` | Evaluate expression | +| `F9` | Resume program | +| `Ctrl` `F8` | Toggle breakpoint | +| `Ctrl` `Shift` `F8` | View breakpoints | +{.shortcuts} ### Refactoring -Shortcut | Action ----|--- -`F5` | Copy -`F6` | Move -`Alt` `Del` | Safe delete -`Shift` `F6` | Rename -`Ctrl` `F6` | Change signature -`Ctrl` `Alt` `N` | Inline -`Ctrl` `Alt` `M` | Extract method -`Ctrl` `Alt` `V` | Extract variable -`Ctrl` `Alt` `F` | Extract field -`Ctrl` `Alt` `C` | Extract constant -`Ctrl` `Alt` `P` | Extract parameter -{.shortcuts} +| Shortcut | Action | +| ---------------- | ----------------- | +| `F5` | Copy | +| `F6` | Move | +| `Alt` `Del` | Safe delete | +| `Shift` `F6` | Rename | +| `Ctrl` `F6` | Change signature | +| `Ctrl` `Alt` `N` | Inline | +| `Ctrl` `Alt` `M` | Extract method | +| `Ctrl` `Alt` `V` | Extract variable | +| `Ctrl` `Alt` `F` | Extract field | +| `Ctrl` `Alt` `C` | Extract constant | +| `Ctrl` `Alt` `P` | Extract parameter | +{.shortcuts} ### Version Control -Shortcut | Action ----|--- -`Ctrl` `K` | Commit project to VCS -`Ctrl` `T` | Update project from VCS -`Alt` `Shift` `C` | View recent changes -`Alt` \` | Open VCS pop-up -{.shortcuts} - +| Shortcut | Action | +| --------------------- | ----------------------- | +| `Ctrl` `K` | Commit project to VCS | +| `Ctrl` `T` | Update project from VCS | +| `Alt` `Shift` `C` | View recent changes | +| `Alt` \` | Open VCS pop-up | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Android Studio](https://developer.android.com/studio/intro/keyboard-shortcuts) _(developer.android.com)_ +- [Keyboard shortcuts for Android Studio](https://developer.android.com/studio/intro/keyboard-shortcuts) + _(developer.android.com)_ diff --git a/source/_posts/apex-legends.md b/source/_posts/apex-legends.md index 3f18bbe9..a2f346c7 100644 --- a/source/_posts/apex-legends.md +++ b/source/_posts/apex-legends.md @@ -2,73 +2,67 @@ title: Apex Legends date: 2022-11-23 16:23:31.706352 background: bg-[#a74145] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 27 default keyboard shortcuts found in Apex Legends + A visual cheat-sheet for the 27 default keyboard shortcuts found in Apex Legends --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### Movement -Shortcut | Action ----|--- -`W` | Move forward -`S` | Move back -`A` | Move left -`D` | Move right -`Left Shift` | Sprint -`Space` | Jump -`C` | Toggle crouch -`Left Ctrl` | Hold to crouch -{.shortcuts} +| Shortcut | Action | +| ------------ | -------------- | +| `W` | Move forward | +| `S` | Move back | +| `A` | Move left | +| `D` | Move right | +| `Left Shift` | Sprint | +| `Space` | Jump | +| `C` | Toggle crouch | +| `Left Ctrl` | Hold to crouch | +{.shortcuts} ### Weapons and Abilities -Shortcut | Action ----|--- -`Q` | Tactical ability -`Z` | Ultimate ability -`E` | Interact or pickup -`X` | Alternate interact -`Tab` | Toggle inventory -`M` | Toggle map -`B` | Toggle fire mode -`V` | Melee -`R` | Reload -`1` | Equip first weapon -`2` | Equip second weapon -`3` | Holster weapons -`G` | Equip grenade -`4` | Use selected health item -`H` | Toggle Gibraltar's shield -`N` | Inspect weapon -{.shortcuts} +| Shortcut | Action | +| -------- | ------------------------- | +| `Q` | Tactical ability | +| `Z` | Ultimate ability | +| `E` | Interact or pickup | +| `X` | Alternate interact | +| `Tab` | Toggle inventory | +| `M` | Toggle map | +| `B` | Toggle fire mode | +| `V` | Melee | +| `R` | Reload | +| `1` | Equip first weapon | +| `2` | Equip second weapon | +| `3` | Holster weapons | +| `G` | Equip grenade | +| `4` | Use selected health item | +| `H` | Toggle Gibraltar's shield | +| `N` | Inspect weapon | +{.shortcuts} ### Communication -Shortcut | Action ----|--- -`F` | Ping enemy here -`T` | Hold to use push to talk -`Enter` | Message team -{.shortcuts} - +| Shortcut | Action | +| -------- | ------------------------ | +| `F` | Ping enemy here | +| `T` | Hold to use push to talk | +| `Enter` | Message team | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Apex Legends](https://www.metabomb.net/off-meta/gameplay-guides/apex-legends-controls-pc-playstation-4xbox-one) _(www.metabomb.net)_ +- [Keyboard shortcuts for Apex Legends](https://www.metabomb.net/off-meta/gameplay-guides/apex-legends-controls-pc-playstation-4xbox-one) + _(www.metabomb.net)_ diff --git a/source/_posts/apple-music.md b/source/_posts/apple-music.md index 6efd5183..5a01ecd1 100644 --- a/source/_posts/apple-music.md +++ b/source/_posts/apple-music.md @@ -3,130 +3,122 @@ title: Apple Music date: 2022-11-23 16:23:31.700157 background: bg-[#e05564] label: Mac -tags: - - - - mac +tags: + - + - mac categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 62 keyboard shortcuts found in the Apple Music app. This application is MacOS-only. + A visual cheat-sheet for the 62 keyboard shortcuts found in the Apple Music app. This application is MacOS-only. --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### Playing Music {.row-span-2} -Shortcut | Action ----|--- -`Space` | Start playing or pause the selected song -`Enter` | Play the currently selected song from the beginning -`Cmd` `Opt` `Right` | Move forward within a song -`Cmd` `Opt` `Left` | Move backward within a song -`Cmd` `.` | Stop playing the selected song -`Right` | When a song is playing, play the next song in a list -`Left` | When a song is playing, play the previous song in a list -`Cmd` `L` | Show the currently playing song in the list -`Cmd` `Opt` `U` | Show the Playing Next queue -`Opt` `Right` | Listen to the next album in a list -`Opt` `Left` | Listen to the previous album in a list -`Cmd` `Up` | Increase the volume -`Cmd` `Down` | Decrease the volume -`Cmd` `Opt` `E` | Open the equalizer -`Cmd` `Shift` `Right` | Go to the next chapter, if available -`Cmd` `Shift` `Left` | Go to the previous chapter, if available -`Cmd` `U` | Stream audio file at a specific URL to Music -{.shortcuts} +| Shortcut | Action | +| --------------------- | -------------------------------------------------------- | +| `Space` | Start playing or pause the selected song | +| `Enter` | Play the currently selected song from the beginning | +| `Cmd` `Opt` `Right` | Move forward within a song | +| `Cmd` `Opt` `Left` | Move backward within a song | +| `Cmd` `.` | Stop playing the selected song | +| `Right` | When a song is playing, play the next song in a list | +| `Left` | When a song is playing, play the previous song in a list | +| `Cmd` `L` | Show the currently playing song in the list | +| `Cmd` `Opt` `U` | Show the Playing Next queue | +| `Opt` `Right` | Listen to the next album in a list | +| `Opt` `Left` | Listen to the previous album in a list | +| `Cmd` `Up` | Increase the volume | +| `Cmd` `Down` | Decrease the volume | +| `Cmd` `Opt` `E` | Open the equalizer | +| `Cmd` `Shift` `Right` | Go to the next chapter, if available | +| `Cmd` `Shift` `Left` | Go to the previous chapter, if available | +| `Cmd` `U` | Stream audio file at a specific URL to Music | +{.shortcuts} ### Playlists -Shortcut | Action ----|--- -`Cmd` `N` | Create a new playlist -`Cmd` `Shift` `N` | Create a playlist from a selection of songs -`Cmd` `Opt` `N` | Create a new Smart Playlist -`Opt` `Space` | Start the Genius Shuffle -`Cmd` `R` | Refresh a Genius Playlist, when the playlist is selected -`Cmd` `Del` | Delete the selected playlist without confirmation -`Opt` `Del` | Delete the selected playlist and all songs it contains from your library -`Opt` `Del` | Delete the selected song from your library and all playlists -{.shortcuts} - +| Shortcut | Action | +| ----------------- | ------------------------------------------------------------------------ | +| `Cmd` `N` | Create a new playlist | +| `Cmd` `Shift` `N` | Create a playlist from a selection of songs | +| `Cmd` `Opt` `N` | Create a new Smart Playlist | +| `Opt` `Space` | Start the Genius Shuffle | +| `Cmd` `R` | Refresh a Genius Playlist, when the playlist is selected | +| `Cmd` `Del` | Delete the selected playlist without confirmation | +| `Opt` `Del` | Delete the selected playlist and all songs it contains from your library | +| `Opt` `Del` | Delete the selected song from your library and all playlists | +{.shortcuts} ### Window Options {.row-span-2} -Shortcut | Action ----|--- -`Cmd` `Shift` `M` | Open the MiniPlayer -`Cmd` `Shift` `F` | Open the Full Screen Player -`Cmd` `Ctrl` `F` | Toggle full-screen view -`Cmd` `/` | Show or hide the status bar -`Cmd` `I` | Open the info window for the selected song -`Cmd` `N` | In the info window, see information for the next song -`Cmd` `P` | In the info window, see information for the previous song -`Cmd` `Shift` `[` | Go to the previous pane in the info window -`Cmd` `Shift` `]` | Go to the next pane in the info window -`Cmd` `J` | Open the View Options window for the selected source -`Cmd` `T` | Turn the visualizer on or off -`?` | See more options when a visual effect is showing -`Cmd` `R` | Refresh Apple Music or the iTunes Store -`Cmd` `0` | Open the Music window -`Cmd` `W` | Close the Music window -`Cmd` `M` | Put the Music window in the Dock -`Cmd` `H` | Hide the Music window -`Cmd` `Opt` `H` | Hide all other applications -{.shortcuts} +| Shortcut | Action | +| ----------------- | --------------------------------------------------------- | +| `Cmd` `Shift` `M` | Open the MiniPlayer | +| `Cmd` `Shift` `F` | Open the Full Screen Player | +| `Cmd` `Ctrl` `F` | Toggle full-screen view | +| `Cmd` `/` | Show or hide the status bar | +| `Cmd` `I` | Open the info window for the selected song | +| `Cmd` `N` | In the info window, see information for the next song | +| `Cmd` `P` | In the info window, see information for the previous song | +| `Cmd` `Shift` `[` | Go to the previous pane in the info window | +| `Cmd` `Shift` `]` | Go to the next pane in the info window | +| `Cmd` `J` | Open the View Options window for the selected source | +| `Cmd` `T` | Turn the visualizer on or off | +| `?` | See more options when a visual effect is showing | +| `Cmd` `R` | Refresh Apple Music or the iTunes Store | +| `Cmd` `0` | Open the Music window | +| `Cmd` `W` | Close the Music window | +| `Cmd` `M` | Put the Music window in the Dock | +| `Cmd` `H` | Hide the Music window | +| `Cmd` `Opt` `H` | Hide all other applications | +{.shortcuts} ### Library -Shortcut | Action ----|--- -`Cmd` `O` | Add a file to your library -`Cmd` `Shift` `R` | Show where a song file is located -`Cmd` `F` | Select the search field -`Cmd` `Z` | Undo your last typing change while editing an item -`Cmd` `X` | Cut the selected song's information or artwork -`Cmd` `C` | Copy the selected song's information or artwork -`Cmd` `V` | Paste the selected song's information or artwork -`Cmd` `A` | Select all the songs in the list -`Cmd` `B` | Show or hide the column browser -`Cmd` `Shift` `A` | De-select all the songs in the list -{.shortcuts} - +| Shortcut | Action | +| ----------------- | -------------------------------------------------- | +| `Cmd` `O` | Add a file to your library | +| `Cmd` `Shift` `R` | Show where a song file is located | +| `Cmd` `F` | Select the search field | +| `Cmd` `Z` | Undo your last typing change while editing an item | +| `Cmd` `X` | Cut the selected song's information or artwork | +| `Cmd` `C` | Copy the selected song's information or artwork | +| `Cmd` `V` | Paste the selected song's information or artwork | +| `Cmd` `A` | Select all the songs in the list | +| `Cmd` `B` | Show or hide the column browser | +| `Cmd` `Shift` `A` | De-select all the songs in the list | +{.shortcuts} ### iTunes Store -Shortcut | Action ----|--- -`Opt` `Enter` | Initiate a search in the iTunes Store -`Cmd` `]` | Go to the next page in the iTunes Store -`Cmd` `[` | Go to the previous page in the iTunes Store -`Cmd` `R` | Reload the current page -{.shortcuts} +| Shortcut | Action | +| ------------- | ------------------------------------------- | +| `Opt` `Enter` | Initiate a search in the iTunes Store | +| `Cmd` `]` | Go to the next page in the iTunes Store | +| `Cmd` `[` | Go to the previous page in the iTunes Store | +| `Cmd` `R` | Reload the current page | +{.shortcuts} ### Other -Shortcut | Action ----|--- -`Cmd` `,` | Open Music Preferences -`Cmd` `Q` | Quit the Music app -`Cmd` `E` | Eject a CD -`Cmd` `?` | Open the Music Help menu -`Cmd` `Opt` | Open a different music library, while opening Music -{.shortcuts} - +| Shortcut | Action | +| ----------- | --------------------------------------------------- | +| `Cmd` `,` | Open Music Preferences | +| `Cmd` `Q` | Quit the Music app | +| `Cmd` `E` | Eject a CD | +| `Cmd` `?` | Open the Music Help menu | +| `Cmd` `Opt` | Open a different music library, while opening Music | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Music on Mac](https://support.apple.com/guide/music/keyboard-shortcuts-mus1019/mac) _(support.apple.com)_ +- [Keyboard shortcuts for Music on Mac](https://support.apple.com/guide/music/keyboard-shortcuts-mus1019/mac) + _(support.apple.com)_ diff --git a/source/_posts/arduino-programming.md b/source/_posts/arduino-programming.md new file mode 100644 index 00000000..c0d0a02a --- /dev/null +++ b/source/_posts/arduino-programming.md @@ -0,0 +1,527 @@ +--- +title: Arduino Programming +date: 2024-05-29 8:58:31 +background: bg-[#387f83] +label: +tags: -cpp -I/O +categories: + - Programming +intro: | + Ardunio programming cheat-sheet for I/O programming and ardunio board programming. + +plugins: + - copyCode +--- + +## Getting Started + +### Gather Necessary Materials + +- Arduino Board: Any model, such as Arduino Uno, Mega, Nano, etc. +- USB Cable: Compatible with your Arduino board (commonly USB Type-A to Type-B for Uno). +- Computer: Windows, macOS, or Linux. + +### Install the Arduino IDE + +- windows/mac/linux +- Go to the Arduino Software page. +- Download the os installer. +- Run the installer and follow the instructions. + +### Connect Your Arduino Board + +- Connect the Arduino board to your computer using the USB cable. +- The power LED on the Arduino should light up, indicating it’s receiving power. + +### Configure the Arduino IDE + +- Open the Arduino IDE. +- Select Your Board: +- Go to Tools > Board and select the model of your Arduino board (e.g., Arduino Uno). + +- Select the Port: + +- Go to Tools > Port and select the port that the Arduino is connected to (it usually shows as COMx on Windows, + /dev/cu.usbmodemxxxx on macOS, and /dev/ttyUSBx on Linux). + +## Basic Structure + +### Setup and Loop + +```cpp +void setup() { + // Code here runs once +} + +void loop() { + // Code here runs repeatedly +} +``` + +### Comment + +```cpp +// Single-line comment + +/* +Multi-line +comment +*/ +``` + +### Variable + +```cpp +int ledPin = 13; // Integer +float voltage = 5.0; // Floating-point number +char letter = 'A'; // Character +String text = "Hello"; // String +``` + +### Pin Modes + +```cpp +pinMode(pin, mode); +``` + +### Digital I/O + +```cpp +digitalWrite(pin, value); +int value = digitalRead(pin); + +``` + +### Analog I/O + +```cpp +analogWrite(pin, value); +int value = analogRead(pin); + +``` + +## Serial Communication + +### Begin Serial Communication + +```cpp +Serial.begin(baudRate); +``` + +### Print to Serial Monitor + +```cpp +Serial.print(data); +Serial.println(data); +``` + +### Read from Serial Monitor + +```cpp +if (Serial.available()) { + char data = Serial.read(); +} +``` + +## Control Structures + +### If Statement + +```cpp +if (condition) { + // Code to execute if condition is true +} else { + // Code to execute if condition is false +} +``` + +### For Loop + +```cpp +for (initialization; condition; increment) { + // Code to execute +} +``` + +### While Loop + +```cpp +while (condition) { + // Code to execute +} +``` + +### Functions + +```cpp +returnType functionName(parameters) { + // Code to execute + return value; +} +``` + +## Libraries + +### Include a Library + +```cpp +#include +``` + +### Using a Library + +```cpp +#include + +Servo myServo; + +void setup() { + myServo.attach(9); // Attach servo to pin 9 +} + +void loop() { + myServo.write(90); // Set servo to 90 degrees + delay(1000); + myServo.write(0); // Set servo to 0 degrees + delay(1000); +} +``` + +## Common Functions + +### Delay + +```cpp +delay(milliseconds); + +``` + +### Millis + +```cpp +unsigned long currentTime = millis(); + +``` + +### Map + +```cpp +long outputValue = map(inputValue, fromLow, fromHigh, toLow, toHigh); + +``` + +### Random + +```cpp +long randomValue = random(max); +long randomValue = random(min, max); + +``` + +### Random Seed + +```cpp +randomSeed(analogRead(0)); // Seed from analog pin 0 + +``` + +## Sensors and Modules + +### Reading Temperature with DHT Sensor + +```cpp +#include + +#define DHTPIN 2 // Pin which is connected to the DHT sensor +#define DHTTYPE DHT11 // DHT 11 + +DHT dht(DHTPIN, DHTTYPE); + +void setup() { + Serial.begin(9600); + dht.begin(); +} + +void loop() { + float humidity = dht.readHumidity(); + float temperature = dht.readTemperature(); + + Serial.print("Humidity: "); + Serial.print(humidity); + Serial.print(" %\t"); + Serial.print("Temperature: "); + Serial.print(temperature); + Serial.println(" *C"); + + delay(2000); +} +``` + +### Blinking LED + +```cpp +const int ledPin = 13; + +void setup() { + pinMode(ledPin, OUTPUT); +} + +void loop() { + digitalWrite(ledPin, HIGH); // Turn the LED on + delay(1000); // Wait for 1 second + digitalWrite(ledPin, LOW); // Turn the LED off + delay(1000); // Wait for 1 second +} + +``` + +### Read Button Input + +```cpp +const int buttonPin = 2; // Pin where the push button is connected +const int ledPin = 13; // Pin where the LED is connected + +void setup() { + pinMode(buttonPin, INPUT); // Set the button pin as an input + pinMode(ledPin, OUTPUT); // Set the LED pin as an output +} + +void loop() { + int buttonState = digitalRead(buttonPin); // Read the state of the button + + if (buttonState == HIGH) { + digitalWrite(ledPin, HIGH); // Turn the LED on + } else { + digitalWrite(ledPin, LOW); // Turn the LED off + } +} + + +``` + +### Analog Input + +```cpp +const int potPin = A0; // Pin where the potentiometer is connected +const int ledPin = 9; // Pin where the LED is connected + +void setup() { + pinMode(ledPin, OUTPUT); // Set the LED pin as an output +} + +void loop() { + int potValue = analogRead(potPin); // Read the potentiometer value + int ledBrightness = map(potValue, 0, 1023, 0, 255); // Map the value to a range from 0 to 255 + + analogWrite(ledPin, ledBrightness); // Set the brightness of the LED + delay(10); // Small delay to make the LED change smoothly +} + + +``` + +### Serial Communication + +```cpp +void setup() { + Serial.begin(9600); // Start the serial communication at 9600 baud rate +} + +void loop() { + Serial.println("Hello, world!"); // Send a message to the serial monitor + delay(1000); // Wait for 1 second +} + + +``` + +### Temperature Sensor + +```cpp +const int tempPin = A0; // Pin where the TMP36 sensor is connected + +void setup() { + Serial.begin(9600); // Start the serial communication at 9600 baud rate +} + +void loop() { + int tempValue = analogRead(tempPin); // Read the sensor value + float voltage = tempValue * (5.0 / 1023.0); // Convert the value to voltage + float temperatureC = (voltage - 0.5) * 100; // Convert the voltage to temperature in Celsius + + Serial.print("Temperature: "); + Serial.print(temperatureC); + Serial.println(" C"); + delay(1000); // Wait for 1 second +} + + +``` + +### RGB LED Control + +```cpp +const int redPin = 9; +const int greenPin = 10; +const int bluePin = 11; + +const int potRedPin = A0; +const int potGreenPin = A1; +const int potBluePin = A2; + +void setup() { + pinMode(redPin, OUTPUT); + pinMode(greenPin, OUTPUT); + pinMode(bluePin, OUTPUT); +} + +void loop() { + int redValue = analogRead(potRedPin); + int greenValue = analogRead(potGreenPin); + int blueValue = analogRead(potBluePin); + + analogWrite(redPin, map(redValue, 0, 1023, 0, 255)); + analogWrite(greenPin, map(greenValue, 0, 1023, 0, 255)); + analogWrite(bluePin, map(blueValue, 0, 1023, 0, 255)); + + delay(10); +} + +``` + +### Ultrasonic Sensor + +```cpp +const int trigPin = 9; +const int echoPin = 10; + +void setup() { + Serial.begin(9600); + pinMode(trigPin, OUTPUT); + pinMode(echoPin, INPUT); +} + +void loop() { + long duration; + int distance; + + digitalWrite(trigPin, LOW); + delayMicroseconds(2); + digitalWrite(trigPin, HIGH); + delayMicroseconds(10); + digitalWrite(trigPin, LOW); + + duration = pulseIn(echoPin, HIGH); + distance = duration * 0.034 / 2; + + Serial.print("Distance: "); + Serial.print(distance); + Serial.println(" cm"); + delay(1000); +} +``` + +### Controlling a Servo Motor + +```cpp +#include + +Servo myServo; +const int potPin = A0; + +void setup() { + myServo.attach(9); // Attach the servo to pin 9 +} + +void loop() { + int potValue = analogRead(potPin); // Read the potentiometer value + int angle = map(potValue, 0, 1023, 0, 180); // Map the value to an angle between 0 and 180 + + myServo.write(angle); // Set the servo position + delay(15); // Small delay for the servo to reach the position +} + +``` + +### Displaying Text on an LCD + +```cpp +#include + +// Initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +void setup() { + // Set up the LCD's number of columns and rows + lcd.begin(16, 2); + // Print a message to the LCD + lcd.print("Hello, World!"); +} + +void loop() { + // Set the cursor to column 0, line 1 (second row) + lcd.setCursor(0, 1); + // Print the number of seconds since reset + lcd.print(millis() / 1000); +} +``` + +## Wireless Communication with NRF24L01 + +### Transmitter Code + +```cpp +#include +#include +#include + +RF24 radio(9, 10); // CE, CSN pins + +const byte address[6] = "00001"; // Address + +void setup() { + radio.begin(); + radio.openWritingPipe(address); + radio.setPALevel(RF24_PA_MIN); + radio.stopListening(); +} + +void loop() { + const char text[] = "Hello"; + radio.write(&text, sizeof(text)); + delay(1000); +} +``` + +### Receiver Code + +```cpp +#include +#include +#include + +RF24 radio(9, 10); // CE, CSN pins + +const byte address[6] = "00001"; // Address + +void setup() { + Serial.begin(9600); + radio.begin(); + radio.openReadingPipe(0, address); + radio.setPALevel(RF24_PA_MIN); + radio.startListening(); +} + +void loop() { + if (radio.available()) { + char text[32] = ""; + radio.read(&text, sizeof(text)); + Serial.println(text); + } +} + +``` + +## Also Read + +- [Ardunio](https://www.arduino.cc/en/software) diff --git a/source/_posts/arduino.md b/source/_posts/arduino.md index bfae8719..aecdff6d 100644 --- a/source/_posts/arduino.md +++ b/source/_posts/arduino.md @@ -2,44 +2,38 @@ title: Arduino IDE date: 2022-11-23 16:23:31.697581 background: bg-[#409096] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 12 keyboard shortcuts found in the Arduino IDE + A visual cheat-sheet for the 12 keyboard shortcuts found in the Arduino IDE --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### General -Shortcut | Action ----|--- -`Ctrl` `S` | Save -`Ctrl` `Shift` `S` | Save as -`Ctrl` `N` | Open a new sketch -`Ctrl` `O` | Open an existing sketch -`Ctrl` `Q` | Close the Arduino IDE -`Ctrl` `R` | Verify -`Ctrl` `U` | Upload -`Ctrl` `F` | Find -`Ctrl` `T` | Adjust the alignment and spacing -`Ctrl` `/` | Comment -`Ctrl` `Shift` `M` | Open the serial monitor -`Ctrl` `K` | Open the sketch folder -{.shortcuts} - +| Shortcut | Action | +| ------------------ | -------------------------------- | +| `Ctrl` `S` | Save | +| `Ctrl` `Shift` `S` | Save as | +| `Ctrl` `N` | Open a new sketch | +| `Ctrl` `O` | Open an existing sketch | +| `Ctrl` `Q` | Close the Arduino IDE | +| `Ctrl` `R` | Verify | +| `Ctrl` `U` | Upload | +| `Ctrl` `F` | Find | +| `Ctrl` `T` | Adjust the alignment and spacing | +| `Ctrl` `/` | Comment | +| `Ctrl` `Shift` `M` | Open the serial monitor | +| `Ctrl` `K` | Open the sketch folder | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for the Arduino IDE](https://progtpoint.blogspot.com/2017/02/arduino-keyboard-shortcuts.html) _(progtpoint.blogspot.com)_ +- [Keyboard shortcuts for the Arduino IDE](https://progtpoint.blogspot.com/2017/02/arduino-keyboard-shortcuts.html) + _(progtpoint.blogspot.com)_ diff --git a/source/_posts/asana.md b/source/_posts/asana.md index cfbbae9a..5be9ecf2 100644 --- a/source/_posts/asana.md +++ b/source/_posts/asana.md @@ -2,107 +2,100 @@ title: Asana date: 2022-11-23 16:23:31.697445 background: bg-[#e0726e] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 40 keyboard shortcuts found in Asana + A visual cheat-sheet for the 40 keyboard shortcuts found in Asana --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### My Tasks -Shortcut | Action ----|--- -`Tab` `Y` | Mark as Today in your My Tasks -`Tab` `U` | Mark as Upcoming in your My Tasks -`Tab` `L` | Mark as Later in your My Tasks -{.shortcuts} +| Shortcut | Action | +| --------- | --------------------------------- | +| `Tab` `Y` | Mark as Today in your My Tasks | +| `Tab` `U` | Mark as Upcoming in your My Tasks | +| `Tab` `L` | Mark as Later in your My Tasks | +{.shortcuts} ### Inbox -Shortcut | Action ----|--- -`K/J` | Move Up/Down -`H` | Jump to Inbox tab -`S` | Jump to Archive tab -`F` | Follow or Unfollow -`I` | Archive -`U` | Move to Inbox +| Shortcut | Action | +| -------- | ------------------- | +| `K/J` | Move Up/Down | +| `H` | Jump to Inbox tab | +| `S` | Jump to Archive tab | +| `F` | Follow or Unfollow | +| `I` | Archive | +| `U` | Move to Inbox | + {.shortcuts} +### Task Actions {.row-span-2} + +| Shortcut | Action | +| ------------------------ | --------------------------------------------- | +| `Enter` | New Task | +| `Tab` `Backspace` | Delete Selected Task(s) | +| `Backspace` | Delete current task (when task name is empty) | +| `Ctrl` `Enter` | Complete Selected Task(s) | +| `Ctrl` `Up/Down` | Move Up/Down | +| `Ctrl` `Shift` `Up/Down` | Jump Up/Down to the next Section | +| `Ctrl` `C` | Copy Selected Tasks | +| `Ctrl` `V` | Paste Tasks (one per line) | +| `Tab` `M` | Assign to Me | +| `Tab` `H` | Like a Selected Task | +| `:` | Create a Section (at the end of a task name) | -### Task Actions {.row-span-2} - -Shortcut | Action ----|--- -`Enter` | New Task -`Tab` `Backspace` | Delete Selected Task(s) -`Backspace` | Delete current task (when task name is empty) -`Ctrl` `Enter` | Complete Selected Task(s) -`Ctrl` `Up/Down` | Move Up/Down -`Ctrl` `Shift` `Up/Down` | Jump Up/Down to the next Section -`Ctrl` `C` | Copy Selected Tasks -`Ctrl` `V` | Paste Tasks (one per line) -`Tab` `M` | Assign to Me -`Tab` `H` | Like a Selected Task -`:` | Create a Section (at the end of a task name) {.shortcuts} - ### Navigation -Shortcut | Action ----|--- -`Tab` `Z` | Navigate to My Tasks -`Tab` `I` | Navigate to Inbox -`Tab` `C` | Comment on Selected Task -`Tab` `A` | Assign Selected Task -`Tab` `D` | Set Due Date -`Tab` `F` | Add Follower -`Tab` `T` | Add a tag to the task -`Tab` `S` | Focus Subtasks -`Tab` `/` | Search for a project, tag, person, or task -{.shortcuts} +| Shortcut | Action | +| --------- | ------------------------------------------ | +| `Tab` `Z` | Navigate to My Tasks | +| `Tab` `I` | Navigate to Inbox | +| `Tab` `C` | Comment on Selected Task | +| `Tab` `A` | Assign Selected Task | +| `Tab` `D` | Set Due Date | +| `Tab` `F` | Add Follower | +| `Tab` `T` | Add a tag to the task | +| `Tab` `S` | Focus Subtasks | +| `Tab` `/` | Search for a project, tag, person, or task | +{.shortcuts} ### Selection -Shortcut | Action ----|--- -`Up/Down` | Change Selection -`Shift` `(click)` | Select Range -`Shift` `Up/Down` | Select Range -`Ctrl` `(click)` | Multi-select Individual Task -{.shortcuts} +| Shortcut | Action | +| ----------------- | ---------------------------- | +| `Up/Down` | Change Selection | +| `Shift` `(click)` | Select Range | +| `Shift` `Up/Down` | Select Range | +| `Ctrl` `(click)` | Multi-select Individual Task | +{.shortcuts} ### Application -Shortcut | Action ----|--- -`Ctrl` `/` | Show Keyboard Shortcuts -`Tab` | Expand the right pane -`Esc` | Collapse the right pane -`Tab` `X` | Enter Focus Mode -`Tab` `Q` | Quick Add -`Tab` `Enter` | Post Comment (from comment field) -`Tab` `B` | What it sounds like -{.shortcuts} - +| Shortcut | Action | +| ------------- | --------------------------------- | +| `Ctrl` `/` | Show Keyboard Shortcuts | +| `Tab` | Expand the right pane | +| `Esc` | Collapse the right pane | +| `Tab` `X` | Enter Focus Mode | +| `Tab` `Q` | Quick Add | +| `Tab` `Enter` | Post Comment (from comment field) | +| `Tab` `B` | What it sounds like | +{.shortcuts} +## Also see -Also see --------- - [Keyboard shortcuts for Asana](https://asana.com/guide/help/faq/shortcuts) _(asana.com)_ diff --git a/source/_posts/ascii-code.md b/source/_posts/ascii-code.md index b80bedda..d504ee69 100644 --- a/source/_posts/ascii-code.md +++ b/source/_posts/ascii-code.md @@ -2,280 +2,276 @@ title: ASCII Code date: 2023-01-05 12:44:21 tags: - - ASCII - - code - - Table + - ASCII + - code + - Table categories: - Other intro: | This cheatsheet is a complete list of ASCII Code Table with their numbers and names. --- - -ASCII Code Table {.cols-1} ---------------- - - +## ASCII Code Table {.cols-1} ### ASCII Code Table +| Symbol | Dec | Oct | Hex | Bin | +| ---------------------------------- | --- | --- | --- | -------- | +| NUL (Null) | 0 | 0 | 0 | 0 | +| SOH (Start of Heading) | 1 | 1 | 1 | 1 | +| STX (Start of Text) | 2 | 2 | 2 | 10 | +| ETX (End of Text) | 3 | 3 | 3 | 11 | +| EOT (End of Transmission) | 4 | 4 | 4 | 100 | +| ENQ (Enquiry) | 5 | 5 | 5 | 101 | +| ACK (Acknowledgment) | 6 | 6 | 6 | 110 | +| BEL (Bell) | 7 | 7 | 7 | 111 | +| BS (Back Space) | 8 | 10 | 8 | 1000 | +| HT (Horizontal Tab) | 9 | 11 | 9 | 1001 | +| LF (Line Feed) | 10 | 12 | 0A | 1010 | +| VT (Vertical Tab) | 11 | 13 | 0B | 1011 | +| FF (Form Feed) | 12 | 14 | 0C | 1100 | +| CR (Carriage Return) | 13 | 15 | 0D | 1101 | +| SO (Shift Out / X-On) | 14 | 16 | 0E | 1110 | +| SI (Shift In / X-Off) | 15 | 17 | 0F | 1111 | +| DLE (Data Line Escape) | 16 | 20 | 10 | 10000 | +| DC1 (Device Control 1 / oft. XON) | 17 | 21 | 11 | 10001 | +| DC2 (Device Control 2) | 18 | 22 | 12 | 10010 | +| DC3 (Device Control 3 / oft. XOFF) | 19 | 23 | 13 | 10011 | +| DC4 (Device Control 4) | 20 | 24 | 14 | 10100 | +| NAK (Negative Acknowledgement) | 21 | 25 | 15 | 10101 | +| SYN (Synchronous Idle) | 22 | 26 | 16 | 10110 | +| ETB (End of Transmit Block) | 23 | 27 | 17 | 10111 | +| CAN (Cancel) | 24 | 30 | 18 | 11000 | +| EM (End of Medium) | 25 | 31 | 19 | 11001 | +| SUB (Substitute) | 26 | 32 | 1A | 11010 | +| ESC (Escape) | 27 | 33 | 1B | 11011 | +| FS (File Separator) | 28 | 34 | 1C | 11100 | +| GS (Group Separator) | 29 | 35 | 1D | 11101 | +| RS (Record Separator) | 30 | 36 | 1E | 11110 | +| US (Unit Separator) | 31 | 37 | 1F | 11111 | +| (Space) | 32 | 40 | 20 | 100000 | +| ! | 33 | 41 | 21 | 100001 | +| " | 34 | 42 | 22 | 100010 | +| # | 35 | 43 | 23 | 100011 | +| $ | 36 | 44 | 24 | 100100 | +| % | 37 | 45 | 25 | 100101 | +| & | 38 | 46 | 26 | 100110 | +| ' | 39 | 47 | 27 | 100111 | +| ( | 40 | 50 | 28 | 101000 | +| ) | 41 | 51 | 29 | 101001 | +| \* | 42 | 52 | 2A | 101010 | +| + | 43 | 53 | 2B | 101011 | +| , | 44 | 54 | 2C | 101100 | +| - | 45 | 55 | 2D | 101101 | +| . | 46 | 56 | 2E | 101110 | +| / | 47 | 57 | 2F | 101111 | +| 0 | 48 | 60 | 30 | 110000 | +| 1 | 49 | 61 | 31 | 110001 | +| 2 | 50 | 62 | 32 | 110010 | +| 3 | 51 | 63 | 33 | 110011 | +| 4 | 52 | 64 | 34 | 110100 | +| 5 | 53 | 65 | 35 | 110101 | +| 6 | 54 | 66 | 36 | 110110 | +| 7 | 55 | 67 | 37 | 110111 | +| 8 | 56 | 70 | 38 | 111000 | +| 9 | 57 | 71 | 39 | 111001 | +| : | 58 | 72 | 3A | 111010 | +| ; | 59 | 73 | 3B | 111011 | +| < | 60 | 74 | 3C | 111100 | +| = | 61 | 75 | 3D | 111101 | +| > | 62 | 76 | 3E | 111110 | +| ? | 63 | 77 | 3F | 111111 | +| @ | 64 | 100 | 40 | 1000000 | +| A | 65 | 101 | 41 | 1000001 | +| B | 66 | 102 | 42 | 1000010 | +| C | 67 | 103 | 43 | 1000011 | +| D | 68 | 104 | 44 | 1000100 | +| E | 69 | 105 | 45 | 1000101 | +| F | 70 | 106 | 46 | 1000110 | +| G | 71 | 107 | 47 | 1000111 | +| H | 72 | 110 | 48 | 1001000 | +| I | 73 | 111 | 49 | 1001001 | +| J | 74 | 112 | 4A | 1001010 | +| K | 75 | 113 | 4B | 1001011 | +| L | 76 | 114 | 4C | 1001100 | +| M | 77 | 115 | 4D | 1001101 | +| N | 78 | 116 | 4E | 1001110 | +| O | 79 | 117 | 4F | 1001111 | +| P | 80 | 120 | 50 | 1010000 | +| Q | 81 | 121 | 51 | 1010001 | +| R | 82 | 122 | 52 | 1010010 | +| S | 83 | 123 | 53 | 1010011 | +| T | 84 | 124 | 54 | 1010100 | +| U | 85 | 125 | 55 | 1010101 | +| V | 86 | 126 | 56 | 1010110 | +| W | 87 | 127 | 57 | 1010111 | +| X | 88 | 130 | 58 | 1011000 | +| Y | 89 | 131 | 59 | 1011001 | +| Z | 90 | 132 | 5A | 1011010 | +| [ | 91 | 133 | 5B | 1011011 | +| \ | 92 | 134 | 5C | 1011100 | +| ] | 93 | 135 | 5D | 1011101 | +| ^ | 94 | 136 | 5E | 1011110 | +| \_ | 95 | 137 | 5F | 1011111 | +| \` | 96 | 140 | 60 | 1100000 | +| a | 97 | 141 | 61 | 1100001 | +| b | 98 | 142 | 62 | 1100010 | +| c | 99 | 143 | 63 | 1100011 | +| d | 100 | 144 | 64 | 1100100 | +| e | 101 | 145 | 65 | 1100101 | +| f | 102 | 146 | 66 | 1100110 | +| g | 103 | 147 | 67 | 1100111 | +| h | 104 | 150 | 68 | 1101000 | +| i | 105 | 151 | 69 | 1101001 | +| j | 106 | 152 | 6A | 1101010 | +| k | 107 | 153 | 6B | 1101011 | +| l | 108 | 154 | 6C | 1101100 | +| m | 109 | 155 | 6D | 1101101 | +| n | 110 | 156 | 6E | 1101110 | +| o | 111 | 157 | 6F | 1101111 | +| p | 112 | 160 | 70 | 1110000 | +| q | 113 | 161 | 71 | 1110001 | +| r | 114 | 162 | 72 | 1110010 | +| s | 115 | 163 | 73 | 1110011 | +| t | 116 | 164 | 74 | 1110100 | +| u | 117 | 165 | 75 | 1110101 | +| v | 118 | 166 | 76 | 1110110 | +| w | 119 | 167 | 77 | 1110111 | +| x | 120 | 170 | 78 | 1111000 | +| y | 121 | 171 | 79 | 1111001 | +| z | 122 | 172 | 7A | 1111010 | +| { | 123 | 173 | 7B | 1111011 | +| | 124 | 174 | 7C | 1111100 | +| } | 125 | 175 | 7D | 1111101 | +| ~ | 126 | 176 | 7E | 1111110 | +| (Delete) | 127 | 177 | 7F | 1111111 | +| € | 128 | 200 | 80 | 10000000 | +| | 129 | 201 | 81 | 10000001 | +| ‚ | 130 | 202 | 82 | 10000010 | +| ƒ | 131 | 203 | 83 | 10000011 | +| „ | 132 | 204 | 84 | 10000100 | +| … | 133 | 205 | 85 | 10000101 | +| † | 134 | 206 | 86 | 10000110 | +| ‡ | 135 | 207 | 87 | 10000111 | +| ˆ | 136 | 210 | 88 | 10001000 | +| ‰ | 137 | 211 | 89 | 10001001 | +| Š | 138 | 212 | 8A | 10001010 | +| ‹ | 139 | 213 | 8B | 10001011 | +| Œ | 140 | 214 | 8C | 10001100 | +| | 141 | 215 | 8D | 10001101 | +| Ž | 142 | 216 | 8E | 10001110 | +| | 143 | 217 | 8F | 10001111 | +| | 144 | 220 | 90 | 10010000 | +| ‘ | 145 | 221 | 91 | 10010001 | +| ’ | 146 | 222 | 92 | 10010010 | +| “ | 147 | 223 | 93 | 10010011 | +| ” | 148 | 224 | 94 | 10010100 | +| • | 149 | 225 | 95 | 10010101 | +| – | 150 | 226 | 96 | 10010110 | +| — | 151 | 227 | 97 | 10010111 | +| ˜ | 152 | 230 | 98 | 10011000 | +| ™ | 153 | 231 | 99 | 10011001 | +| š | 154 | 232 | 9A | 10011010 | +| › | 155 | 233 | 9B | 10011011 | +| œ | 156 | 234 | 9C | 10011100 | +| | 157 | 235 | 9D | 10011101 | +| ž | 158 | 236 | 9E | 10011110 | +| Ÿ | 159 | 237 | 9F | 10011111 | +| (Non-breaking space) | 160 | 240 | A0 | 10100000 | +| ¡ | 161 | 241 | A1 | 10100001 | +| ¢ | 162 | 242 | A2 | 10100010 | +| £ | 163 | 243 | A3 | 10100011 | +| ¤ | 164 | 244 | A4 | 10100100 | +| ¥ | 165 | 245 | A5 | 10100101 | +| ¦ | 166 | 246 | A6 | 10100110 | +| § | 167 | 247 | A7 | 10100111 | +| ¨ | 168 | 250 | A8 | 10101000 | +| © | 169 | 251 | A9 | 10101001 | +| ª | 170 | 252 | AA | 10101010 | +| « | 171 | 253 | AB | 10101011 | +| ¬ | 172 | 254 | AC | 10101100 | +| (Soft hyphen) | 173 | 255 | AD | 10101101 | +| ® | 174 | 256 | AE | 10101110 | +| ¯ | 175 | 257 | AF | 10101111 | +| ° | 176 | 260 | B0 | 10110000 | +| ± | 177 | 261 | B1 | 10110001 | +| ² | 178 | 262 | B2 | 10110010 | +| ³ | 179 | 263 | B3 | 10110011 | +| ´ | 180 | 264 | B4 | 10110100 | +| µ | 181 | 265 | B5 | 10110101 | +| ¶ | 182 | 266 | B6 | 10110110 | +| · | 183 | 267 | B7 | 10110111 | +| ¸ | 184 | 270 | B8 | 10111000 | +| ¹ | 185 | 271 | B9 | 10111001 | +| º | 186 | 272 | BA | 10111010 | +| » | 187 | 273 | BB | 10111011 | +| ¼ | 188 | 274 | BC | 10111100 | +| ½ | 189 | 275 | BD | 10111101 | +| ¾ | 190 | 276 | BE | 10111110 | +| ¿ | 191 | 277 | BF | 10111111 | +| À | 192 | 300 | C0 | 11000000 | +| Á | 193 | 301 | C1 | 11000001 | +|  | 194 | 302 | C2 | 11000010 | +| à | 195 | 303 | C3 | 11000011 | +| Ä | 196 | 304 | C4 | 11000100 | +| Å | 197 | 305 | C5 | 11000101 | +| Æ | 198 | 306 | C6 | 11000110 | +| Ç | 199 | 307 | C7 | 11000111 | +| È | 200 | 310 | C8 | 11001000 | +| É | 201 | 311 | C9 | 11001001 | +| Ê | 202 | 312 | CA | 11001010 | +| Ë | 203 | 313 | CB | 11001011 | +| Ì | 204 | 314 | CC | 11001100 | +| Í | 205 | 315 | CD | 11001101 | +| Î | 206 | 316 | CE | 11001110 | +| Ï | 207 | 317 | CF | 11001111 | +| Ð | 208 | 320 | D0 | 11010000 | +| Ñ | 209 | 321 | D1 | 11010001 | +| Ò | 210 | 322 | D2 | 11010010 | +| Ó | 211 | 323 | D3 | 11010011 | +| Ô | 212 | 324 | D4 | 11010100 | +| Õ | 213 | 325 | D5 | 11010101 | +| Ö | 214 | 326 | D6 | 11010110 | +| × | 215 | 327 | D7 | 11010111 | +| Ø | 216 | 330 | D8 | 11011000 | +| Ù | 217 | 331 | D9 | 11011001 | +| Ú | 218 | 332 | DA | 11011010 | +| Û | 219 | 333 | DB | 11011011 | +| Ü | 220 | 334 | DC | 11011100 | +| Ý | 221 | 335 | DD | 11011101 | +| Þ | 222 | 336 | DE | 11011110 | +| ß | 223 | 337 | DF | 11011111 | +| à | 224 | 340 | E0 | 11100000 | +| á | 225 | 341 | E1 | 11100001 | +| â | 226 | 342 | E2 | 11100010 | +| ã | 227 | 343 | E3 | 11100011 | +| ä | 228 | 344 | E4 | 11100100 | +| å | 229 | 345 | E5 | 11100101 | +| æ | 230 | 346 | E6 | 11100110 | +| ç | 231 | 347 | E7 | 11100111 | +| è | 232 | 350 | E8 | 11101000 | +| é | 233 | 351 | E9 | 11101001 | +| ê | 234 | 352 | EA | 11101010 | +| ë | 235 | 353 | EB | 11101011 | +| ì | 236 | 354 | EC | 11101100 | +| í | 237 | 355 | ED | 11101101 | +| î | 238 | 356 | EE | 11101110 | +| ï | 239 | 357 | EF | 11101111 | +| ð | 240 | 360 | F0 | 11110000 | +| ñ | 241 | 361 | F1 | 11110001 | +| ò | 242 | 362 | F2 | 11110010 | +| ó | 243 | 363 | F3 | 11110011 | +| ô | 244 | 364 | F4 | 11110100 | +| õ | 245 | 365 | F5 | 11110101 | +| ö | 246 | 366 | F6 | 11110110 | +| ÷ | 247 | 367 | F7 | 11110111 | +| ø | 248 | 370 | F8 | 11111000 | +| ù | 249 | 371 | F9 | 11111001 | +| ú | 250 | 372 | FA | 11111010 | +| û | 251 | 373 | FB | 11111011 | +| ü | 252 | 374 | FC | 11111100 | +| ý | 253 | 375 | FD | 11111101 | +| þ | 254 | 376 | FE | 11111110 | +| ÿ | 255 | 377 | FF | 11111111 | -| Symbol | Dec | Oct | Hex | Bin | -|------------------------------------|------|------|------|----------| -| NUL (Null) | 0 | 0 | 0 | 0 | -| SOH (Start of Heading) | 1 | 1 | 1 | 1 | -| STX (Start of Text) | 2 | 2 | 2 | 10 | -| ETX (End of Text) | 3 | 3 | 3 | 11 | -| EOT (End of Transmission) | 4 | 4 | 4 | 100 | -| ENQ (Enquiry) | 5 | 5 | 5 | 101 | -| ACK (Acknowledgment) | 6 | 6 | 6 | 110 | -| BEL (Bell) | 7 | 7 | 7 | 111 | -| BS (Back Space) | 8 | 10 | 8 | 1000 | -| HT (Horizontal Tab) | 9 | 11 | 9 | 1001 | -| LF (Line Feed) | 10 | 12 | 0A | 1010 | -| VT (Vertical Tab) | 11 | 13 | 0B | 1011 | -| FF (Form Feed) | 12 | 14 | 0C | 1100 | -| CR (Carriage Return) | 13 | 15 | 0D | 1101 | -| SO (Shift Out / X-On) | 14 | 16 | 0E | 1110 | -| SI (Shift In / X-Off) | 15 | 17 | 0F | 1111 | -| DLE (Data Line Escape) | 16 | 20 | 10 | 10000 | -| DC1 (Device Control 1 / oft. XON) | 17 | 21 | 11 | 10001 | -| DC2 (Device Control 2) | 18 | 22 | 12 | 10010 | -| DC3 (Device Control 3 / oft. XOFF) | 19 | 23 | 13 | 10011 | -| DC4 (Device Control 4) | 20 | 24 | 14 | 10100 | -| NAK (Negative Acknowledgement) | 21 | 25 | 15 | 10101 | -| SYN (Synchronous Idle) | 22 | 26 | 16 | 10110 | -| ETB (End of Transmit Block) | 23 | 27 | 17 | 10111 | -| CAN (Cancel) | 24 | 30 | 18 | 11000 | -| EM (End of Medium) | 25 | 31 | 19 | 11001 | -| SUB (Substitute) | 26 | 32 | 1A | 11010 | -| ESC (Escape) | 27 | 33 | 1B | 11011 | -| FS (File Separator) | 28 | 34 | 1C | 11100 | -| GS (Group Separator) | 29 | 35 | 1D | 11101 | -| RS (Record Separator) | 30 | 36 | 1E | 11110 | -| US (Unit Separator) | 31 | 37 | 1F | 11111 | -| (Space) | 32 | 40 | 20 | 100000 | -| ! | 33 | 41 | 21 | 100001 | -| " | 34 | 42 | 22 | 100010 | -| # | 35 | 43 | 23 | 100011 | -| $ | 36 | 44 | 24 | 100100 | -| % | 37 | 45 | 25 | 100101 | -| & | 38 | 46 | 26 | 100110 | -| ' | 39 | 47 | 27 | 100111 | -| ( | 40 | 50 | 28 | 101000 | -| ) | 41 | 51 | 29 | 101001 | -| * | 42 | 52 | 2A | 101010 | -| + | 43 | 53 | 2B | 101011 | -| , | 44 | 54 | 2C | 101100 | -| - | 45 | 55 | 2D | 101101 | -| . | 46 | 56 | 2E | 101110 | -| / | 47 | 57 | 2F | 101111 | -| 0 | 48 | 60 | 30 | 110000 | -| 1 | 49 | 61 | 31 | 110001 | -| 2 | 50 | 62 | 32 | 110010 | -| 3 | 51 | 63 | 33 | 110011 | -| 4 | 52 | 64 | 34 | 110100 | -| 5 | 53 | 65 | 35 | 110101 | -| 6 | 54 | 66 | 36 | 110110 | -| 7 | 55 | 67 | 37 | 110111 | -| 8 | 56 | 70 | 38 | 111000 | -| 9 | 57 | 71 | 39 | 111001 | -| : | 58 | 72 | 3A | 111010 | -| ; | 59 | 73 | 3B | 111011 | -| < | 60 | 74 | 3C | 111100 | -| = | 61 | 75 | 3D | 111101 | -| > | 62 | 76 | 3E | 111110 | -| ? | 63 | 77 | 3F | 111111 | -| @ | 64 | 100 | 40 | 1000000 | -| A | 65 | 101 | 41 | 1000001 | -| B | 66 | 102 | 42 | 1000010 | -| C | 67 | 103 | 43 | 1000011 | -| D | 68 | 104 | 44 | 1000100 | -| E | 69 | 105 | 45 | 1000101 | -| F | 70 | 106 | 46 | 1000110 | -| G | 71 | 107 | 47 | 1000111 | -| H | 72 | 110 | 48 | 1001000 | -| I | 73 | 111 | 49 | 1001001 | -| J | 74 | 112 | 4A | 1001010 | -| K | 75 | 113 | 4B | 1001011 | -| L | 76 | 114 | 4C | 1001100 | -| M | 77 | 115 | 4D | 1001101 | -| N | 78 | 116 | 4E | 1001110 | -| O | 79 | 117 | 4F | 1001111 | -| P | 80 | 120 | 50 | 1010000 | -| Q | 81 | 121 | 51 | 1010001 | -| R | 82 | 122 | 52 | 1010010 | -| S | 83 | 123 | 53 | 1010011 | -| T | 84 | 124 | 54 | 1010100 | -| U | 85 | 125 | 55 | 1010101 | -| V | 86 | 126 | 56 | 1010110 | -| W | 87 | 127 | 57 | 1010111 | -| X | 88 | 130 | 58 | 1011000 | -| Y | 89 | 131 | 59 | 1011001 | -| Z | 90 | 132 | 5A | 1011010 | -| [ | 91 | 133 | 5B | 1011011 | -| \ | 92 | 134 | 5C | 1011100 | -| ] | 93 | 135 | 5D | 1011101 | -| ^ | 94 | 136 | 5E | 1011110 | -| _ | 95 | 137 | 5F | 1011111 | -| \` | 96 | 140 | 60 | 1100000 | -| a | 97 | 141 | 61 | 1100001 | -| b | 98 | 142 | 62 | 1100010 | -| c | 99 | 143 | 63 | 1100011 | -| d | 100 | 144 | 64 | 1100100 | -| e | 101 | 145 | 65 | 1100101 | -| f | 102 | 146 | 66 | 1100110 | -| g | 103 | 147 | 67 | 1100111 | -| h | 104 | 150 | 68 | 1101000 | -| i | 105 | 151 | 69 | 1101001 | -| j | 106 | 152 | 6A | 1101010 | -| k | 107 | 153 | 6B | 1101011 | -| l | 108 | 154 | 6C | 1101100 | -| m | 109 | 155 | 6D | 1101101 | -| n | 110 | 156 | 6E | 1101110 | -| o | 111 | 157 | 6F | 1101111 | -| p | 112 | 160 | 70 | 1110000 | -| q | 113 | 161 | 71 | 1110001 | -| r | 114 | 162 | 72 | 1110010 | -| s | 115 | 163 | 73 | 1110011 | -| t | 116 | 164 | 74 | 1110100 | -| u | 117 | 165 | 75 | 1110101 | -| v | 118 | 166 | 76 | 1110110 | -| w | 119 | 167 | 77 | 1110111 | -| x | 120 | 170 | 78 | 1111000 | -| y | 121 | 171 | 79 | 1111001 | -| z | 122 | 172 | 7A | 1111010 | -| { | 123 | 173 | 7B | 1111011 | -| | 124 | 174 | 7C | 1111100 | -| } | 125 | 175 | 7D | 1111101 | -| ~ | 126 | 176 | 7E | 1111110 | -| (Delete) | 127 | 177 | 7F | 1111111 | -| € | 128 | 200 | 80 | 10000000 | -| | 129 | 201 | 81 | 10000001 | -| ‚ | 130 | 202 | 82 | 10000010 | -| ƒ | 131 | 203 | 83 | 10000011 | -| „ | 132 | 204 | 84 | 10000100 | -| … | 133 | 205 | 85 | 10000101 | -| † | 134 | 206 | 86 | 10000110 | -| ‡ | 135 | 207 | 87 | 10000111 | -| ˆ | 136 | 210 | 88 | 10001000 | -| ‰ | 137 | 211 | 89 | 10001001 | -| Š | 138 | 212 | 8A | 10001010 | -| ‹ | 139 | 213 | 8B | 10001011 | -| Œ | 140 | 214 | 8C | 10001100 | -| | 141 | 215 | 8D | 10001101 | -| Ž | 142 | 216 | 8E | 10001110 | -| | 143 | 217 | 8F | 10001111 | -| | 144 | 220 | 90 | 10010000 | -| ‘ | 145 | 221 | 91 | 10010001 | -| ’ | 146 | 222 | 92 | 10010010 | -| “ | 147 | 223 | 93 | 10010011 | -| ” | 148 | 224 | 94 | 10010100 | -| • | 149 | 225 | 95 | 10010101 | -| – | 150 | 226 | 96 | 10010110 | -| — | 151 | 227 | 97 | 10010111 | -| ˜ | 152 | 230 | 98 | 10011000 | -| ™ | 153 | 231 | 99 | 10011001 | -| š | 154 | 232 | 9A | 10011010 | -| › | 155 | 233 | 9B | 10011011 | -| œ | 156 | 234 | 9C | 10011100 | -| | 157 | 235 | 9D | 10011101 | -| ž | 158 | 236 | 9E | 10011110 | -| Ÿ | 159 | 237 | 9F | 10011111 | -| (Non-breaking space) | 160 | 240 | A0 | 10100000 | -| ¡ | 161 | 241 | A1 | 10100001 | -| ¢ | 162 | 242 | A2 | 10100010 | -| £ | 163 | 243 | A3 | 10100011 | -| ¤ | 164 | 244 | A4 | 10100100 | -| ¥ | 165 | 245 | A5 | 10100101 | -| ¦ | 166 | 246 | A6 | 10100110 | -| § | 167 | 247 | A7 | 10100111 | -| ¨ | 168 | 250 | A8 | 10101000 | -| © | 169 | 251 | A9 | 10101001 | -| ª | 170 | 252 | AA | 10101010 | -| « | 171 | 253 | AB | 10101011 | -| ¬ | 172 | 254 | AC | 10101100 | -| (Soft hyphen) | 173 | 255 | AD | 10101101 | -| ® | 174 | 256 | AE | 10101110 | -| ¯ | 175 | 257 | AF | 10101111 | -| ° | 176 | 260 | B0 | 10110000 | -| ± | 177 | 261 | B1 | 10110001 | -| ² | 178 | 262 | B2 | 10110010 | -| ³ | 179 | 263 | B3 | 10110011 | -| ´ | 180 | 264 | B4 | 10110100 | -| µ | 181 | 265 | B5 | 10110101 | -| ¶ | 182 | 266 | B6 | 10110110 | -| · | 183 | 267 | B7 | 10110111 | -| ¸ | 184 | 270 | B8 | 10111000 | -| ¹ | 185 | 271 | B9 | 10111001 | -| º | 186 | 272 | BA | 10111010 | -| » | 187 | 273 | BB | 10111011 | -| ¼ | 188 | 274 | BC | 10111100 | -| ½ | 189 | 275 | BD | 10111101 | -| ¾ | 190 | 276 | BE | 10111110 | -| ¿ | 191 | 277 | BF | 10111111 | -| À | 192 | 300 | C0 | 11000000 | -| Á | 193 | 301 | C1 | 11000001 | -|  | 194 | 302 | C2 | 11000010 | -| à | 195 | 303 | C3 | 11000011 | -| Ä | 196 | 304 | C4 | 11000100 | -| Å | 197 | 305 | C5 | 11000101 | -| Æ | 198 | 306 | C6 | 11000110 | -| Ç | 199 | 307 | C7 | 11000111 | -| È | 200 | 310 | C8 | 11001000 | -| É | 201 | 311 | C9 | 11001001 | -| Ê | 202 | 312 | CA | 11001010 | -| Ë | 203 | 313 | CB | 11001011 | -| Ì | 204 | 314 | CC | 11001100 | -| Í | 205 | 315 | CD | 11001101 | -| Î | 206 | 316 | CE | 11001110 | -| Ï | 207 | 317 | CF | 11001111 | -| Ð | 208 | 320 | D0 | 11010000 | -| Ñ | 209 | 321 | D1 | 11010001 | -| Ò | 210 | 322 | D2 | 11010010 | -| Ó | 211 | 323 | D3 | 11010011 | -| Ô | 212 | 324 | D4 | 11010100 | -| Õ | 213 | 325 | D5 | 11010101 | -| Ö | 214 | 326 | D6 | 11010110 | -| × | 215 | 327 | D7 | 11010111 | -| Ø | 216 | 330 | D8 | 11011000 | -| Ù | 217 | 331 | D9 | 11011001 | -| Ú | 218 | 332 | DA | 11011010 | -| Û | 219 | 333 | DB | 11011011 | -| Ü | 220 | 334 | DC | 11011100 | -| Ý | 221 | 335 | DD | 11011101 | -| Þ | 222 | 336 | DE | 11011110 | -| ß | 223 | 337 | DF | 11011111 | -| à | 224 | 340 | E0 | 11100000 | -| á | 225 | 341 | E1 | 11100001 | -| â | 226 | 342 | E2 | 11100010 | -| ã | 227 | 343 | E3 | 11100011 | -| ä | 228 | 344 | E4 | 11100100 | -| å | 229 | 345 | E5 | 11100101 | -| æ | 230 | 346 | E6 | 11100110 | -| ç | 231 | 347 | E7 | 11100111 | -| è | 232 | 350 | E8 | 11101000 | -| é | 233 | 351 | E9 | 11101001 | -| ê | 234 | 352 | EA | 11101010 | -| ë | 235 | 353 | EB | 11101011 | -| ì | 236 | 354 | EC | 11101100 | -| í | 237 | 355 | ED | 11101101 | -| î | 238 | 356 | EE | 11101110 | -| ï | 239 | 357 | EF | 11101111 | -| ð | 240 | 360 | F0 | 11110000 | -| ñ | 241 | 361 | F1 | 11110001 | -| ò | 242 | 362 | F2 | 11110010 | -| ó | 243 | 363 | F3 | 11110011 | -| ô | 244 | 364 | F4 | 11110100 | -| õ | 245 | 365 | F5 | 11110101 | -| ö | 246 | 366 | F6 | 11110110 | -| ÷ | 247 | 367 | F7 | 11110111 | -| ø | 248 | 370 | F8 | 11111000 | -| ù | 249 | 371 | F9 | 11111001 | -| ú | 250 | 372 | FA | 11111010 | -| û | 251 | 373 | FB | 11111011 | -| ü | 252 | 374 | FC | 11111100 | -| ý | 253 | 375 | FD | 11111101 | -| þ | 254 | 376 | FE | 11111110 | -| ÿ | 255 | 377 | FF | 11111111 | {.show-header} diff --git a/source/_posts/aspect-ratio.md b/source/_posts/aspect-ratio.md index db8d405e..fa2e3238 100644 --- a/source/_posts/aspect-ratio.md +++ b/source/_posts/aspect-ratio.md @@ -1,30 +1,29 @@ --- title: Aspect Ratio date: 2022-09-21 10:28:43 -background: bg-emerald-600 +background: bg-indigo-600 tags: - - photo - - image - - aspect - - ratio - - resolutions + - photo + - image + - aspect + - ratio + - resolutions categories: - - Other + - Other intro: | - This cheat sheet lists some common aspect ratios and their pixel resolutions. Always confirm your final delivery ratio when shooting. + This cheat sheet lists some common aspect ratios and their pixel resolutions. Always confirm your final delivery ratio when shooting. --- - -Getting Started {.cols-2} ---------------- +## Getting Started {.cols-2} ### Introduction + - The aspect ratio is the ratio between the width and height of the screen or image - It's usually written as two numbers separated by a colon or "x", ex: 16:9 or 16x9 - Which is interpreted as W pixels in width for every H pixel in height. - Resolution is the number of pixels (individual points of color) -{.marker-round} +{.marker-round} ### Multi-format of Aspect Ratio @@ -51,20 +50,15 @@ Getting Started {.cols-2} - [BBCode](https://tableconvert.com/html-to-bbcode?data=https://cheatsheets.zip/aspect-ratio#TableGenerator) - [PDF](https://tableconvert.com/html-to-pdf?data=https://cheatsheets.zip/aspect-ratio#TableGenerator) - [JPEG](https://tableconvert.com/html-to-jpeg?data=https://cheatsheets.zip/aspect-ratio#TableGenerator) -{.cols-4 .marker-none} - - - - -Lists of Aspect Ratios -------------------- +{.cols-4 .marker-none} +## Lists of Aspect Ratios ### 1080p {.row-span-2} | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 864 x 1080 | | 1.25 (5:4) | 1350 x 1080 | | 1.33 (4:3) | 1440 x 1080 | @@ -78,13 +72,13 @@ Lists of Aspect Ratios | 2.39 | 1920 x 803 | | 2.40 | 1920 x 800 | | 2.44 | 1920 x 787 | -{.show-header} +{.show-header} ### 720p {.row-span-2} | Aspect Ratio | Resolution | -|--------------|------------| +| ------------ | ---------- | | 0.80 (4:5) | 576 x 720 | | 1.25 (5:4) | 900 x 720 | | 1.33 (4:3) | 960 x 720 | @@ -98,35 +92,33 @@ Lists of Aspect Ratios | 2.39 | 1280 x 536 | | 2.40 | 1280 x 533 | | 2.44 | 1280 x 525 | -{.show-header} +{.show-header} ### Cinema DCP 4K | Aspect Ratio | Resolution | -|-----------------------|-------------| +| --------------------- | ----------- | | Flat (1.85) | 3996 x 2160 | | Scope (2.39) | 4096 x 1716 | | Full Container (1.90) | 4096 x 2160 | -{.show-header} - +{.show-header} ### Cinema DCP 2K | Aspect Ratio | Resolution | -|-----------------------|-------------| +| --------------------- | ----------- | | Flat (1.85) | 1998 x 1080 | | Scope (2.39) | 2048 x 858 | | Full Container (1.90) | 2048 x 1080 | -{.show-header} - +{.show-header} ### 8K | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 3686 x 4608 | | 1.25 (5:4) | 5760 x 4608 | | 1.33 (4:3) | 6144 x 4608 | @@ -140,14 +132,13 @@ Lists of Aspect Ratios | 2.39 | 8192 x 3428 | | 2.40 | 8192 x 3413 | | 2.44 | 8192 x 3357 | -{.show-header} - +{.show-header} ### 6K | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 2765 x 3456 | | 1.25 (5:4) | 4320 x 3456 | | 1.33 (4:3) | 4608 x 3456 | @@ -161,13 +152,13 @@ Lists of Aspect Ratios | 2.39 | 6144 x 2571 | | 2.40 | 6144 x 2560 | | 2.44 | 6144 x 2518 | -{.show-header} +{.show-header} ### 4K | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 2765 x 3456 | | 1.25 (5:4) | 4320 x 3456 | | 1.33 (4:3) | 4608 x 3456 | @@ -181,13 +172,13 @@ Lists of Aspect Ratios | 2.39 | 6144 x 2571 | | 2.40 | 6144 x 2560 | | 2.44 | 6144 x 2518 | -{.show-header} +{.show-header} ### 3K | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 1382 x 1728 | | 1.25 (5:4) | 2160 x 1728 | | 1.33 (4:3) | 2304 x 1728 | @@ -201,13 +192,13 @@ Lists of Aspect Ratios | 2.39 | 3072 x 1285 | | 2.40 | 3072 x 1280 | | 2.44 | 3072 x 1259 | -{.show-header} +{.show-header} ### 2K | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 922 x 1152 | | 1.25 (5:4) | 1440 x 1152 | | 1.33 (4:3) | 1536 x 1152 | @@ -221,14 +212,13 @@ Lists of Aspect Ratios | 2.39 | 2048 x 858 | | 2.40 | 2048 x 853 | | 2.44 | 2048 x 838 | -{.show-header} - +{.show-header} ### 8K UHD | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 2765 x 3456 | | 1.25 (5:4) | 5400 x 3456 | | 1.33 (4:3) | 5760 x 3456 | @@ -242,13 +232,13 @@ Lists of Aspect Ratios | 2.39 | 7680 x 3213 | | 2.40 | 7680 x 3200 | | 2.44 | 7680 x 3148 | -{.show-header} +{.show-header} ### 5K | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 2304 x 2880 | | 1.25 (5:4) | 3600 x 2880 | | 1.33 (4:3) | 3840 x 2880 | @@ -262,13 +252,13 @@ Lists of Aspect Ratios | 2.39 | 5120 x 2142 | | 2.40 | 5120 x 2133 | | 2.44 | 5120 x 2098 | -{.show-header} +{.show-header} ### 4K UHD | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 1728 x 2160 | | 1.25 (5:4) | 2700 x 2160 | | 1.33 (4:3) | 2880 x 2160 | @@ -282,13 +272,13 @@ Lists of Aspect Ratios | 2.39 | 3840 x 1607 | | 2.40 | 3840 x 1600 | | 2.44 | 3840 x 1574 | -{.show-header} +{.show-header} ### 3K UHD | Aspect Ratio | Resolution | -|--------------|-------------| +| ------------ | ----------- | | 0.80 (4:5) | 1296 x 1620 | | 1.25 (5:4) | 2025 x 1620 | | 1.33 (4:3) | 2160 x 1620 | @@ -302,10 +292,5 @@ Lists of Aspect Ratios | 2.39 | 2880 x 1205 | | 2.40 | 2880 x 1200 | | 2.44 | 2880 x 1180 | -{.show-header} - - - - - +{.show-header} diff --git a/source/_posts/audacity.md b/source/_posts/audacity.md index ec4bcea8..0ba5e0b3 100644 --- a/source/_posts/audacity.md +++ b/source/_posts/audacity.md @@ -2,220 +2,210 @@ title: Audacity date: 2022-11-23 16:23:31.701833 background: bg-[#0000e1] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 135 default keyboard shortcuts found in Audacity + A visual cheat-sheet for the 135 default keyboard shortcuts found in Audacity --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### File Menu -Shortcut | Action ----|--- -`Ctrl` `N` | New -`Ctrl` `O` | Open -`Ctrl` `W` | Close -`Ctrl` `Q` | Exit -`Ctrl` `S` | Save project -`Ctrl` `Shift` `E` | Export audio -`Ctrl` `Shift` `L` | Export multiple -`Ctrl` `Shift` `I` | Import audio -{.shortcuts} - +| Shortcut | Action | +| ------------------ | --------------- | +| `Ctrl` `N` | New | +| `Ctrl` `O` | Open | +| `Ctrl` `W` | Close | +| `Ctrl` `Q` | Exit | +| `Ctrl` `S` | Save project | +| `Ctrl` `Shift` `E` | Export audio | +| `Ctrl` `Shift` `L` | Export multiple | +| `Ctrl` `Shift` `I` | Import audio | -### Edit Menu - -Shortcut | Action ----|--- -`Ctrl` `Z` | Undo -`Ctrl` `Y` | Redo -`Ctrl` `X` | Cut -`Ctrl` `K` | Delete -`Ctrl` `C` | Copy -`Ctrl` `V` | Paste -`Ctrl` `D` | Duplicate -`Ctrl` `P` | Preferences -`Ctrl` `Alt` `X` | Split cut -`Ctrl` `Alt` `K` | Split delete -`Ctrl` `L` | Silence audio -`Ctrl` `T` | Trim audio -`Ctrl` `Alt` `I` | Split new -`Ctrl` `J` | Join -`Ctrl` `Shift` `J` | Detach at silences -`Ctrl` `B` | Add label at selection -`Ctrl` `M` | Add label at playback position -`Ctrl` `Alt` `V` | Paste text to new label -`Alt` `X` | Cut labeled audio -`Alt` `K` | Delete labeled audio -`Alt` `Shift` `X` | Split cut labeled audio -`Alt` `Shift` `K` | Split delete labeled audio -`Alt` `L` | Silence labeled audio -`Alt` `Shift` `C` | Copy labeled audio -`Alt` `I` | Split labeled audio -`Alt` `J` | Join labeled audio -`Alt` `Shift` `J` | Detach labeled audio at silences {.shortcuts} +### Edit Menu +| Shortcut | Action | +| ------------------ | -------------------------------- | +| `Ctrl` `Z` | Undo | +| `Ctrl` `Y` | Redo | +| `Ctrl` `X` | Cut | +| `Ctrl` `K` | Delete | +| `Ctrl` `C` | Copy | +| `Ctrl` `V` | Paste | +| `Ctrl` `D` | Duplicate | +| `Ctrl` `P` | Preferences | +| `Ctrl` `Alt` `X` | Split cut | +| `Ctrl` `Alt` `K` | Split delete | +| `Ctrl` `L` | Silence audio | +| `Ctrl` `T` | Trim audio | +| `Ctrl` `Alt` `I` | Split new | +| `Ctrl` `J` | Join | +| `Ctrl` `Shift` `J` | Detach at silences | +| `Ctrl` `B` | Add label at selection | +| `Ctrl` `M` | Add label at playback position | +| `Ctrl` `Alt` `V` | Paste text to new label | +| `Alt` `X` | Cut labeled audio | +| `Alt` `K` | Delete labeled audio | +| `Alt` `Shift` `X` | Split cut labeled audio | +| `Alt` `Shift` `K` | Split delete labeled audio | +| `Alt` `L` | Silence labeled audio | +| `Alt` `Shift` `C` | Copy labeled audio | +| `Alt` `I` | Split labeled audio | +| `Alt` `J` | Join labeled audio | +| `Alt` `Shift` `J` | Detach labeled audio at silences | - -### Extra Menu {.row-span-4} - -Shortcut | Action ----|--- -`F11` | Toggle full screen -`1` | Play one second -`B` | Play to selection -`Shift` `F5` | Play before selection start -`Shift` `F6` | Play after selection start -`Shift` `F7` | Play before selection end -`Shift` `F8` | Play after selection end -`Ctrl` `Shift` `F5` | Play before and after selection start -`Ctrl` `Shift` `F7` | Play before and after selection end -`C` | Play cut preview -`F1` | Selection tool -`F2` | Envelope tool -`F3` | Draw tool -`F4` | Zoom tool -`F5` | Time shift tool -`F6` | Multi tool -`A` | Previous tool -`D` | Next tool -`Backspace` | Delete -`Alt` `Left` | Move to previous label -`Alt` `Right` | Move to next label -`Left` | Short seek left during playback -`Right` | Short seek right during playback -`Shift` `Left` | Long seek left during playback -`Shift` `Right` | Long seek right during playback -`Shift` `I` | Change recording device -`Shift` `O` | Change playback device -`Shift` `H` | Change audio host -`Shift` `N` | Change recording channels -`Shift` `Home` | Selection to start -`Shift` `End` | Selection to end -`Shift` `Left` | Selection extend left -`Shift` `Right` | Selection extend right -`Ctrl` `Shift` `Right` | Selection contract left -`Ctrl` `Shift` `Left` | Selection contract right -`Ctrl` `Shift` `F6` | Move backwards from toolbars to tracks -`Ctrl` `F6` | Move forward from toolbars to tracks -`Up` | Move focus to previous track -`Down` | Move focus to next track -`Ctrl` `Home` | Move focus to first track -`Ctrl` `End` | Move focus to last track -`Shift` `Up` | Move focus to previous and select -`Shift` `Down` | Move focus to next and select -`Enter` | Toggle focused track -`Left` | Cursor left -`Right` | Cursor right -`,` | Cursor short jump left -`.` | Cursor short jump right -`Shift` `,` | Cursor long jump left -`Shift` `.` | Cursor long jump right -`Shift` `P` | Change pan on focused track -`Alt` `Shift` `Left` | Pan left on focused track -`Alt` `Shift` `Right` | Pan right on focused track -`Shift` `G` | Change gain on focused track -`Alt` `Shift` `Up` | Increase gain on focused track -`Alt` `Shift` `Down` | Decrease gain on focused track -`Shift` `U` | Mute or unmute focused track -`Shift` `S` | Solo or unsolo focused track -`Shift` `C` | Close focused track {.shortcuts} +### Extra Menu {.row-span-4} +| Shortcut | Action | +| ---------------------- | -------------------------------------- | +| `F11` | Toggle full screen | +| `1` | Play one second | +| `B` | Play to selection | +| `Shift` `F5` | Play before selection start | +| `Shift` `F6` | Play after selection start | +| `Shift` `F7` | Play before selection end | +| `Shift` `F8` | Play after selection end | +| `Ctrl` `Shift` `F5` | Play before and after selection start | +| `Ctrl` `Shift` `F7` | Play before and after selection end | +| `C` | Play cut preview | +| `F1` | Selection tool | +| `F2` | Envelope tool | +| `F3` | Draw tool | +| `F4` | Zoom tool | +| `F5` | Time shift tool | +| `F6` | Multi tool | +| `A` | Previous tool | +| `D` | Next tool | +| `Backspace` | Delete | +| `Alt` `Left` | Move to previous label | +| `Alt` `Right` | Move to next label | +| `Left` | Short seek left during playback | +| `Right` | Short seek right during playback | +| `Shift` `Left` | Long seek left during playback | +| `Shift` `Right` | Long seek right during playback | +| `Shift` `I` | Change recording device | +| `Shift` `O` | Change playback device | +| `Shift` `H` | Change audio host | +| `Shift` `N` | Change recording channels | +| `Shift` `Home` | Selection to start | +| `Shift` `End` | Selection to end | +| `Shift` `Left` | Selection extend left | +| `Shift` `Right` | Selection extend right | +| `Ctrl` `Shift` `Right` | Selection contract left | +| `Ctrl` `Shift` `Left` | Selection contract right | +| `Ctrl` `Shift` `F6` | Move backwards from toolbars to tracks | +| `Ctrl` `F6` | Move forward from toolbars to tracks | +| `Up` | Move focus to previous track | +| `Down` | Move focus to next track | +| `Ctrl` `Home` | Move focus to first track | +| `Ctrl` `End` | Move focus to last track | +| `Shift` `Up` | Move focus to previous and select | +| `Shift` `Down` | Move focus to next and select | +| `Enter` | Toggle focused track | +| `Left` | Cursor left | +| `Right` | Cursor right | +| `,` | Cursor short jump left | +| `.` | Cursor short jump right | +| `Shift` `,` | Cursor long jump left | +| `Shift` `.` | Cursor long jump right | +| `Shift` `P` | Change pan on focused track | +| `Alt` `Shift` `Left` | Pan left on focused track | +| `Alt` `Shift` `Right` | Pan right on focused track | +| `Shift` `G` | Change gain on focused track | +| `Alt` `Shift` `Up` | Increase gain on focused track | +| `Alt` `Shift` `Down` | Decrease gain on focused track | +| `Shift` `U` | Mute or unmute focused track | +| `Shift` `S` | Solo or unsolo focused track | +| `Shift` `C` | Close focused track | - +{.shortcuts} ### Select Menu -Shortcut | Action ----|--- -`Ctrl` `A` | Select all -`Ctrl` `Shift` `A` | Select none -`Z` | Select at zero crossings -`Ctrl` `Shift` `K` | Select in all tracks -`Ctrl` `Shift` `Y` | Select in all sync-locked tracks -`[` | Left at playback position -`]` | Right at playback position -`Shift` `J` | Track start to cursor -`Shift` `K` | Cursor to track end -`Q` | Toggle spectral selection -`Ctrl` `Alt` `P` | Previous clip -`Ctrl` `Alt` `N` | Next clip -{.shortcuts} +| Shortcut | Action | +| ------------------ | -------------------------------- | +| `Ctrl` `A` | Select all | +| `Ctrl` `Shift` `A` | Select none | +| `Z` | Select at zero crossings | +| `Ctrl` `Shift` `K` | Select in all tracks | +| `Ctrl` `Shift` `Y` | Select in all sync-locked tracks | +| `[` | Left at playback position | +| `]` | Right at playback position | +| `Shift` `J` | Track start to cursor | +| `Shift` `K` | Cursor to track end | +| `Q` | Toggle spectral selection | +| `Ctrl` `Alt` `P` | Previous clip | +| `Ctrl` `Alt` `N` | Next clip | +{.shortcuts} ### View Menu -Shortcut | Action ----|--- -`Ctrl` `1` | Zoom in -`Ctrl` `2` | Zoom normal -`Ctrl` `3` | Zoom out -`Ctrl` `E` | Zoom to selection -`Shift` `Z` | Zoom toggle -`Ctrl` `F` | Fit to width -`Ctrl` `Shift` `F` | Fit to height -`Ctrl` `Shift` `C` | Collapse all tracks -`Ctrl` `Shift` `X` | Expand collapsed tracks -`Ctrl` `[` | Skip to selection start -`Ctrl` `]` | Skip to selection end -{.shortcuts} +| Shortcut | Action | +| ------------------ | ----------------------- | +| `Ctrl` `1` | Zoom in | +| `Ctrl` `2` | Zoom normal | +| `Ctrl` `3` | Zoom out | +| `Ctrl` `E` | Zoom to selection | +| `Shift` `Z` | Zoom toggle | +| `Ctrl` `F` | Fit to width | +| `Ctrl` `Shift` `F` | Fit to height | +| `Ctrl` `Shift` `C` | Collapse all tracks | +| `Ctrl` `Shift` `X` | Expand collapsed tracks | +| `Ctrl` `[` | Skip to selection start | +| `Ctrl` `]` | Skip to selection end | +{.shortcuts} ### Transport Menu -Shortcut | Action ----|--- -`Space` | Play or stop -`X` | Play or stop and set cursor -`Shift` `Space` | Loop play -`P` | Pause -`R` | Record -`Shift` `R` | Record new track -`Shift` `T` | Timer record... -`Shift` `D` | Punch and roll record -`P` | Pause -`J` | Cursor to track start -`K` | Cursor to track end -`Home` | Cursor to project start -`End` | Cursor to project end -{.shortcuts} +| Shortcut | Action | +| --------------- | --------------------------- | +| `Space` | Play or stop | +| `X` | Play or stop and set cursor | +| `Shift` `Space` | Loop play | +| `P` | Pause | +| `R` | Record | +| `Shift` `R` | Record new track | +| `Shift` `T` | Timer record... | +| `Shift` `D` | Punch and roll record | +| `P` | Pause | +| `J` | Cursor to track start | +| `K` | Cursor to track end | +| `Home` | Cursor to project start | +| `End` | Cursor to project end | +{.shortcuts} ### Tracks Menu -Shortcut | Action ----|--- -`Ctrl` `Shift` `N` | Add new mono track -`Ctrl` `Shift` `M` | Mix and render to new track -`Ctrl` `U` | Mute all tracks -`Ctrl` `Shift` `U` | Unmute all tracks -{.shortcuts} +| Shortcut | Action | +| ------------------ | --------------------------- | +| `Ctrl` `Shift` `N` | Add new mono track | +| `Ctrl` `Shift` `M` | Mix and render to new track | +| `Ctrl` `U` | Mute all tracks | +| `Ctrl` `Shift` `U` | Unmute all tracks | +{.shortcuts} ### Effect Menu -Shortcut | Action ----|--- -`Ctrl` `R` | Repeat last effect -{.shortcuts} +| Shortcut | Action | +| ---------- | ------------------ | +| `Ctrl` `R` | Repeat last effect | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Audacity](https://manual.audacityteam.org/man/keyboard_shortcut_reference.html) _(manual.audacityteam.org)_ +- [Keyboard shortcuts for Audacity](https://manual.audacityteam.org/man/keyboard_shortcut_reference.html) + _(manual.audacityteam.org)_ diff --git a/source/_posts/awk.md b/source/_posts/awk.md index 702e72f3..8f8a9c67 100644 --- a/source/_posts/awk.md +++ b/source/_posts/awk.md @@ -3,46 +3,50 @@ title: Awk date: 2020-12-31 15:18:34 background: bg-slate-600 tags: - - bash - - text - - script + - bash + - text + - script categories: - - Linux Command + - Linux Command intro: | - This is a one page quick reference cheat sheet to the [GNU awk](https://www.gnu.org/software/gawk/manual/gawk.html), which covers commonly used awk expressions and commands. + This is a one page quick reference cheat sheet to the [GNU awk](https://www.gnu.org/software/gawk/manual/gawk.html), which covers commonly used awk expressions and commands. plugins: - - copyCode + - copyCode --- -Getting Started ---------------- +## Getting Started ### Have a try + ```shell script {.wrap} $ awk -F: '{print $1, $NF}' /etc/passwd ``` ----- -| - | - | - | -|---|---------------|---------------------------| -| | `-F:` | Colon as a separator | -| | `{...}` | Awk program | -| | `print` | Prints the current record | -| | `$1` | First field | -| | `$NF` | Last field | -| | `/etc/passwd` | Input data file | -{.left-text} +--- + +| - | - | +| ------------- | ------------------------- | +| `-F:` | Colon as a separator | +| `{...}` | Awk program | +| `print` | Prints the current record | +| `$1` | First field | +| `$NF` | Last field | +| `/etc/passwd` | Input data file | + +{.left-text} +### Awk program -### Awk program ``` -BEGIN {} - {} - {} +BEGIN {} + {} + {} ... END {< final actions >} ``` + #### Example + ``` awk ' BEGIN { print "\n>>>Start" } @@ -51,11 +55,11 @@ awk ' ' /etc/passwd ``` - ### Variables {.row-span-2} + ```bash $1 $2/$(NF-1) $3/$NF - ▼ ▼ ▼ + ▼ ▼ ▼ ┌──────┬──────────────────┬───────┐ $0/NR ▶ │ ID │ WEBSITE │ URI │ ├──────┼──────────────────┼───────┤ @@ -64,6 +68,7 @@ $0/NR ▶ │ 1 │ cheatsheets.zip │ awk │ $0/NR ▶ │ 2 │ google.com │ 25 │ └──────┴──────────────────┴───────┘ ``` + --- ``` @@ -76,38 +81,38 @@ awk -F: '{print NR, $0}' /etc/passwd # Second last field awk -F: '{print $(NF-1)}' /etc/passwd -# Custom string +# Custom string awk -F: '{print $1 "=" $6}' /etc/passwd ``` -See: [Variables](#awk-variables) - - +See: [Variables](#awk-variables) ### Awk program examples {.col-span-2 .row-span-2} + ``` awk 'BEGIN {print "hello world"}' # Prints "hello world" awk -F: '{print $1}' /etc/passwd # -F: Specify field separator # /pattern/ Execute actions only for matched pattern -awk -F: '/root/ {print $1}' /etc/passwd +awk -F: '/root/ {print $1}' /etc/passwd # BEGIN block is executed once at the start -awk -F: 'BEGIN { print "uid"} { print $1 }' /etc/passwd +awk -F: 'BEGIN { print "uid"} { print $1 }' /etc/passwd # END block is executed once at the end awk -F: '{print $1} END { print "-done-"}' /etc/passwd ``` - ### Conditions + ``` awk -F: '$3>30 {print $1}' /etc/passwd ``` -See: [Conditions](#awk-conditions) +See: [Conditions](#awk-conditions) ### Generate 1000 spaces + ``` awk 'BEGIN{ while (a++ < 1000) @@ -115,11 +120,11 @@ awk 'BEGIN{ print s }' ``` -See: [Loops](#awk-loops) - +See: [Loops](#awk-loops) ### Arrays + ``` awk 'BEGIN { fruits["mango"] = "yellow"; @@ -129,11 +134,11 @@ awk 'BEGIN { } }' ``` -See: [Arrays](#awk-arrays) - +See: [Arrays](#awk-arrays) ### Functions + ``` # => 5 awk 'BEGIN{print length("hello")}' @@ -142,33 +147,29 @@ awk 'BEGIN{print toupper("hello")}' # => hel awk 'BEGIN{print substr("hello", 1, 3)}' ``` -See: [Functions](#awk-functions) - - - -Awk Variables ---------- +See: [Functions](#awk-functions) +## Awk Variables ### Build-in variables + | - | - | -|----------------|-----------------------------------------------------| +| -------------- | --------------------------------------------------- | | `$0` | Whole line | | `$1, $2...$NF` | First, second… last field | | `NR` | `N`umber of `R`ecords | | `NF` | `N`umber of `F`ields | -| `OFS` | `O`utput `F`ield `S`eparator
_(default " ")_ | +| `OFS` | `O`utput `F`ield `S`eparator
_(default " ")_ | | `FS` | input `F`ield `S`eparator
_(default " ")_ | | `ORS` | `O`utput `R`ecord `S`eparator
_(default "\n")_ | | `RS` | input `R`ecord `S`eparator
_(default "\n")_ | | `FILENAME` | Name of the file | - - ### Expressions + | - | - | -|---------------------|------------------------------------| +| ------------------- | ---------------------------------- | | `$1 == "root"` | First field equals root | | `{print $(NF-1)}` | Second last field | | `NR!=1{print $0}` | From 2nd record | @@ -177,7 +178,7 @@ Awk Variables | `END{print NR}` | Total records | | `BEGIN{print OFMT}` | Output format | | `{print NR, $0}` | Line number | -| `{print NR " " $0}` | Line number (tab) | +| `{print NR " " $0}` | Line number (tab) | | `{$1 = NR; print}` | Replace 1st field with line number | | `$NF > 4` | Last field > 4 | | `NR % 2 == 0` | Even records | @@ -185,70 +186,72 @@ Awk Variables | `BEGIN{print ARGC}` | Total arguments | | `ORS=NR%5?",":"\n"` | Concatenate records | - - - ### Examples + Print sum and average + ``` awk -F: '{sum += $3} END { print sum, sum/NR } ' /etc/passwd ``` + Printing parameters + ``` awk 'BEGIN { for (i = 1; i < ARGC; i++) print ARGV[i] }' a b c ``` + Output field separator as a comma + ``` awk 'BEGIN { FS=":";OFS=","} {print $1,$2,$3,$4}' /etc/passwd ``` + Position of match + ``` awk 'BEGIN { if (match("One Two Three", "Tw")) print RSTART }' ``` + Length of match + ``` awk 'BEGIN { if (match("One Two Three", "re")) print RLENGTH }' ``` - - - - ### Environment Variables + | - | - | -|-----------|-----------------------------------------------------------| +| --------- | --------------------------------------------------------- | | `ARGC` | Number or arguments | | `ARGV` | Array of arguments | | `FNR` | `F`ile `N`umber of `R`ecords | -| `OFMT` | Format for numbers
_(default "%.6g")_ | +| `OFMT` | Format for numbers
_(default "%.6g")_ | | `RSTART` | Location in the string | | `RLENGTH` | Length of match | | `SUBSEP` | Multi-dimensional array separator
_(default "\034")_ | | `ARGIND` | Argument Index | - - ### GNU awk only + | - | - | -|---------------|-----------------------| +| ------------- | --------------------- | | `ENVIRON` | Environment variables | | `IGNORECASE` | Ignore case | | `CONVFMT` | Conversion format | | `ERRNO` | System errors | | `FIELDWIDTHS` | Fixed width fields | - - ### Defining variable + ``` awk -v var1="Hello" -v var2="Wold" ' END {print var1, var2} @@ -256,80 +259,94 @@ awk -v var1="Hello" -v var2="Wold" ' ``` #### Use shell variables + ``` awk -v varName="$PWD" ' END {print varName}' ` - `<=` - `>=` -{.cols-3 .marker-none} - +{.cols-3 .marker-none} ### Examples + ``` awk 'BEGIN { if ("foo" ~ "^fo+$") print "Fooey!"; }' ``` + #### Not match + ``` awk 'BEGIN { if ("boo" !~ "^fo+$") print "Boo!"; }' ``` + #### if in array + ``` awk 'BEGIN { assoc["foo"] = "bar"; @@ -339,14 +356,12 @@ awk 'BEGIN { }' ``` +## Awk Functions - - -Awk Functions ----------- ### Common functions {.col-span-2} + | Function | Description | -|-----------------------|---------------------------------------------------------------------------------| +| --------------------- | ------------------------------------------------------------------------------- | | `index(s,t)` | Position in string s where string t occurs, 0 if not found | | `length(s)` | Length of string s (or $0 if no arg) | | `rand` | Random number between 0 and 1 | @@ -362,8 +377,8 @@ Awk Functions | `toupper(s)` | String s to uppercase | | `getline` | Set $0 to next input record from current input file. | - ### User defined function + ``` awk ' # Returns minimum number @@ -382,7 +397,7 @@ awk ' function main(num1, num2){ result = find_min(num1, num2) print "Minimum =", result - + result = find_max(num1, num2) print "Maximum =", result } @@ -393,15 +408,10 @@ awk ' ' ``` - - - -Awk Arrays ---------- - - +## Awk Arrays ### Array with index + ``` awk 'BEGIN { arr[0] = "foo"; @@ -413,6 +423,7 @@ awk 'BEGIN { ``` ### Array with key + ``` awk 'BEGIN { assoc["foo"] = "bar"; @@ -422,8 +433,8 @@ awk 'BEGIN { }' ``` - ### Array with split + ``` awk 'BEGIN { split("foo:bar:baz", arr, ":"); @@ -433,6 +444,7 @@ awk 'BEGIN { ``` ### Array with asort + ``` awk 'BEGIN { arr[0] = 3 @@ -444,9 +456,8 @@ awk 'BEGIN { }' ``` - - ### Multi-dimensional + ``` awk 'BEGIN { multidim[0,0] = "foo"; @@ -457,24 +468,23 @@ awk 'BEGIN { ``` ### Multi-dimensional iteration + ``` awk 'BEGIN { array[1,2]=3; array[2,3]=5; for (comb in array) { split(comb,sep,SUBSEP); - print sep[1], sep[2], + print sep[1], sep[2], array[sep[1],sep[2]] } }' ``` - - -Awk Conditions ----------- +## Awk Conditions ### if-else statement + ``` awk -v count=2 'BEGIN { if (count == 1) @@ -483,15 +493,17 @@ awk -v count=2 'BEGIN { print "Huh?"; }' ``` + #### Ternary operator + ``` awk -v count=2 'BEGIN { print (count==1) ? "Yes" : "Huh?"; }' ``` - ### Exists + ``` awk 'BEGIN { assoc["foo"] = "bar"; @@ -500,7 +512,9 @@ awk 'BEGIN { print "Fooey!"; }' ``` + #### Not exists + ``` awk 'BEGIN { assoc["foo"] = "bar"; @@ -510,8 +524,8 @@ awk 'BEGIN { }' ``` - ### switch + ``` awk -F: '{ switch (NR * 2 + 1) { @@ -519,31 +533,32 @@ awk -F: '{ case "11": print NR - 1 break - + case /2[[:digit:]]+/: print NR - + default: print NR + 1 - + case -1: print NR * -1 } }' /etc/passwd ``` - -Awk Loops ----------- +## Awk Loops ### for...i + ``` awk 'BEGIN { for (i = 0; i < 10; i++) print "i=" i; }' ``` -#### Powers of two between 1 and 100 + +#### Powers of two between 1 and 100 + ``` awk 'BEGIN { for (i = 1; i <= 100; i *= 2) @@ -551,8 +566,8 @@ awk 'BEGIN { }' ``` - ### for...in + ``` awk 'BEGIN { assoc["key1"] = "val1" @@ -561,7 +576,9 @@ awk 'BEGIN { print assoc[key]; }' ``` + #### Arguments + ``` awk 'BEGIN { for (argnum in ARGV) @@ -569,10 +586,10 @@ awk 'BEGIN { }' a b c ``` - - ### Examples {.row-span-3} + #### Reverse records + ``` awk -F: '{ x[NR] = $0 } END { @@ -583,6 +600,7 @@ awk -F: '{ x[NR] = $0 } ``` #### Reverse fields + ``` awk -F: '{ for (i = NF; i > 0; i--) @@ -592,6 +610,7 @@ awk -F: '{ ``` #### Sum by record + ``` awk -F: '{ s=0; @@ -601,8 +620,8 @@ awk -F: '{ }' /etc/passwd ``` - #### Sum whole file + ``` awk -F: ' {for (i = 1; i <= NF; i++) @@ -612,9 +631,8 @@ awk -F: ' ' /etc/passwd ``` - - ### while {.row-span-2} + ``` awk 'BEGIN { while (a < 10) { @@ -623,7 +641,9 @@ awk 'BEGIN { } }' ``` + #### do...while + ``` awk '{ i = 1 @@ -634,9 +654,8 @@ awk '{ }' /etc/passwd ``` - - ### Break + ``` awk 'BEGIN { break_num = 5 @@ -648,9 +667,8 @@ awk 'BEGIN { }' ``` - - ### Continue + ``` awk 'BEGIN { for (x = 0; x <= 10; x++) { @@ -662,28 +680,30 @@ awk 'BEGIN { }' ``` - - -Awk Formatted Printing ---------- +## Awk Formatted Printing ### Usage + #### Right align + ``` awk 'BEGIN{printf "|%10s|\n", "hello"}' | hello| ``` + #### Left align + ``` awk 'BEGIN{printf "|%-10s|\n", "hello"}' |hello | ``` -### Common specifiers +### Common specifiers + | Character | Description | -|---------------|-----------------------| +| ------------- | --------------------- | | `c` | ASCII character | | `d` | Decimal integer | | `e`, `E`, `f` | Floating-point format | @@ -691,25 +711,24 @@ awk 'BEGIN{printf "|%-10s|\n", "hello"}' | `s` | String | | `%` | Literal % | - - - ### Space + ``` awk -F: '{ printf "%-10s %s\n", $1, $(NF-1) }' /etc/passwd | head -n 3 ``` + Outputs + ```shell script root /root bin /bin daemon /sbin ``` - - ### Header + ``` awk -F: 'BEGIN { printf "%-10s %s\n", "User", "Home" @@ -717,7 +736,9 @@ awk -F: 'BEGIN { { printf "%-10s %s\n", $1, $(NF-1) } ' /etc/passwd | head -n 5 ``` + Outputs + ``` User Home ---- ---- @@ -726,12 +747,10 @@ bin /bin daemon /sbin ``` - - -Miscellaneous -------------- +## Miscellaneous ### Regex Metacharacters + - `\` - `^` - `$` @@ -744,11 +763,13 @@ Miscellaneous - `*` - `+` - `?` + {.cols-3 .marker-none} ### Escape Sequences + | - | - | -|------|---------------------| +| ---- | ------------------- | | `\b` | Backspace | | `\f` | Form feed | | `\n` | Newline (line feed) | @@ -756,8 +777,8 @@ Miscellaneous | `\t` | Horizontal tab | | `\v` | Vertical tab | - ### Run script + ```shell script $ cat demo.awk #!/usr/bin/awk -f @@ -768,11 +789,8 @@ $ awk -f demo.awk /etc/passwd 69 ``` +## Also see -Also see --------- - -- [The GNU Awk User's Guide](https://www-zeuthen.desy.de/dv/documentation/unixguide/infohtml/gawk/gawk.html) _(www-zeuthen.desy.de)_ +- [The GNU Awk User's Guide](https://www-zeuthen.desy.de/dv/documentation/unixguide/infohtml/gawk/gawk.html) + _(www-zeuthen.desy.de)_ - [AWK cheatsheet](https://gist.github.com/Rafe/3102414) _(gist.github.com)_ - - diff --git a/source/_posts/bash.md b/source/_posts/bash.md index db11a49d..6b5a12b2 100644 --- a/source/_posts/bash.md +++ b/source/_posts/bash.md @@ -3,21 +3,20 @@ title: Bash date: 2020-11-25 18:28:43 background: bg-[#3e4548] tags: - - shell - - sh - - echo - - script - - linux + - shell + - sh + - echo + - script + - linux categories: - - Programming - - Operating System + - Programming + - Operating System intro: This is a quick reference cheat sheet to getting started with linux bash shell scripting. plugins: - - copyCode + - copyCode --- -Getting Started ---------------- +## Getting Started ### hello.sh @@ -27,12 +26,13 @@ Getting Started VAR="world" echo "Hello $VAR!" # => Hello world! ``` + Execute the script + ```shell script $ bash hello.sh ``` - ### Variables ```bash @@ -47,8 +47,6 @@ echo "${NAME}!" # => John! (Variables) NAME = "John" # => Error (about space) ``` - - ### Comments ```bash @@ -62,15 +60,13 @@ very neat comment in bash ' ``` -Multi-line comments use `:'` to open and `'` to close - - +Multi-line comments use `:'` to open and `'` to close ### Arguments {.row-span-2} | Expression | Description | -|-------------|---------------------------------------| +| ----------- | ------------------------------------- | | `$1` … `$9` | Parameter 1 ... 9 | | `$0` | Name of the script itself | | `$1` | First argument | @@ -84,7 +80,6 @@ Multi-line comments use `:'` to open and `'` to close See: [Special parameters](http://wiki.bash-hackers.org/syntax/shellvars#special_parameters_and_shell_variables) - ### Functions ```bash @@ -114,10 +109,11 @@ See: [Conditionals](#bash-conditionals) ```bash echo {A,B}.js ``` + --- | Expression | Description | -|------------|---------------------| +| ---------- | ------------------- | | `{A,B}` | Same as `A B` | | `{A,B}.js` | Same as `A.js B.js` | | `{1..5}` | Same as `1 2 3 4 5` | @@ -136,17 +132,12 @@ echo "I'm in `pwd`" See: [Command substitution](http://wiki.bash-hackers.org/syntax/expansion/cmdsubst) - - -Bash Parameter expansions --------------------- - - +## Bash Parameter expansions ### Syntax {.row-span-2} | Code | Description | -|-------------------|---------------------| +| ----------------- | ------------------- | | `${FOO%suffix}` | Remove suffix | | `${FOO#prefix}` | Remove prefix | | `${FOO%%suffix}` | Remove long suffix | @@ -155,32 +146,35 @@ Bash Parameter expansions | `${FOO//from/to}` | Replace all | | `${FOO/%from/to}` | Replace suffix | | `${FOO/#from/to}` | Replace prefix | + #### Substrings + | Expression | Description | -|-----------------|--------------------------------| +| --------------- | ------------------------------ | | `${FOO:0:3}` | Substring _(position, length)_ | | `${FOO:(-3):3}` | Substring from the right | + #### Length + | Expression | Description | -|------------|------------------| +| ---------- | ---------------- | | `${#FOO}` | Length of `$FOO` | + #### Default values + | Expression | Description | -|-------------------|------------------------------------------| +| ----------------- | ---------------------------------------- | | `${FOO:-val}` | `$FOO`, or `val` if unset | | `${FOO:=val}` | Set `$FOO` to `val` if unset | | `${FOO:+val}` | `val` if `$FOO` is set | | `${FOO:?message}` | Show message and exit if `$FOO` is unset | - - ### Substitution ```bash echo ${food:-Cake} #=> $food or "Cake" ``` - ```bash STR="/path/to/foo.cpp" echo ${STR%.cpp} # /path/to/foo @@ -196,7 +190,6 @@ echo ${STR##*/} # foo.cpp echo ${STR/foo/bar} # /path/to/bar.cpp ``` - ### Slicing ```bash @@ -212,17 +205,17 @@ echo ${name:(-2):2} # => hn length=2 echo ${name:0:length} # => Jo ``` -See: [Parameter expansion](http://wiki.bash-hackers.org/syntax/pe) - +See: [Parameter expansion](http://wiki.bash-hackers.org/syntax/pe) ### basepath & dirpath + ```bash SRC="/path/to/foo.cpp" ``` ```bash -BASEPATH=${SRC##*/} +BASEPATH=${SRC##*/} echo $BASEPATH # => "foo.cpp" @@ -230,12 +223,7 @@ DIRPATH=${SRC%$BASEPATH} echo $DIRPATH # => "/path/to/" ``` - - - - - -### Transform +### Transform ```bash STR="HELLO WORLD!" @@ -251,11 +239,7 @@ echo "${ARR[@],}" # => hello world echo "${ARR[@]^}" # => Hello World ``` - - - -Bash Arrays ------- +## Bash Arrays ### Defining arrays @@ -277,12 +261,10 @@ declare -a Numbers=(1 2 3) Numbers+=(4 5) # Append => 1 2 3 4 5 ``` - - ### Indexing | - | - | -|--------------------|---------------| +| ------------------ | ------------- | | `${Fruits[0]}` | First element | | `${Fruits[-1]}` | Last element | | `${Fruits[*]}` | All elements | @@ -293,8 +275,6 @@ Numbers+=(4 5) # Append => 1 2 3 4 5 | `${Fruits[@]:3:2}` | Range | | `${!Fruits[@]}` | Keys of all | - - ### Iteration ```bash @@ -304,7 +284,9 @@ for e in "${Fruits[@]}"; do echo $e done ``` + #### With index + ```bash for i in "${!Fruits[@]}"; do printf "%s\t%s\n" "$i" "${Fruits[$i]}" @@ -312,7 +294,6 @@ done ``` - ### Operations {.col-span-2} ```bash @@ -326,6 +307,7 @@ lines=(`cat "logfile"`) # Read from file ``` ### Arrays as arguments + ```bash function extract() { @@ -337,12 +319,7 @@ Fruits=('Apple' 'Banana' 'Orange') extract Fruits 2 # => Orangle ``` - - - - -Bash Dictionaries ------------- +## Bash Dictionaries ### Defining @@ -357,7 +334,6 @@ sounds[bird]="tweet" sounds[wolf]="howl" ``` - ### Working with dictionaries ```bash @@ -375,24 +351,21 @@ for val in "${sounds[@]}"; do echo $val done ``` + --- + ```bash for key in "${!sounds[@]}"; do echo $key done ``` - - - - -Bash Conditionals ------------- +## Bash Conditionals ### Integer conditions | Condition | Description | -|---------------------|---------------------------------------------| +| ------------------- | ------------------------------------------- | | `[[ NUM -eq NUM ]]` | Equal | | `[[ NUM -ne NUM ]]` | Not equal | | `[[ NUM -lt NUM ]]` | Less than | @@ -404,11 +377,10 @@ Bash Conditionals | `(( NUM > NUM ))` | Greater than | | `(( NUM >= NUM ))` | Greater than or equal | - ### String conditions | Condition | Description | -|--------------------|-----------------------------| +| ------------------ | --------------------------- | | `[[ -z STR ]]` | Empty string | | `[[ -n STR ]]` | Not empty string | | `[[ STR == STR ]]` | Equal | @@ -418,14 +390,10 @@ Bash Conditionals | `[[ STR != STR ]]` | Not Equal | | `[[ STR =~ STR ]]` | Regexp | - - - - - ### Example {.row-span-3} #### String + ```bash if [[ -z "$string" ]]; then echo "String is empty" @@ -437,6 +405,7 @@ fi ``` #### Combinations + ```bash if [[ X && Y ]]; then ... @@ -444,6 +413,7 @@ fi ``` #### Equal + ```bash if [[ "$A" == "$B" ]]; then ... @@ -451,6 +421,7 @@ fi ``` #### Regex + ```bash if [[ '1. abc' =~ ([a-z]+) ]]; then echo ${BASH_REMATCH[1]} @@ -458,6 +429,7 @@ fi ``` #### Smaller + ```bash if (( $a < $b )); then echo "$a is smaller than $b" @@ -465,20 +437,17 @@ fi ``` #### Exists + ```bash if [[ -e "file.txt" ]]; then echo "file exists" fi ``` - - - - ### File conditions {.row-span-2} | Condition | Description | -|-------------------|----------------------------------------| +| ----------------- | -------------------------------------- | | `[[ -e FILE ]]` | Exists | | `[[ -d FILE ]]` | Directory | | `[[ -f FILE ]]` | File | @@ -491,18 +460,17 @@ fi | `[[ f1 -ot f2 ]]` | f2 older than f1 | | `[[ f1 -ef f2 ]]` | Same files | - ### More conditions | Condition | Description | -|----------------------|----------------------| +| -------------------- | -------------------- | ----- | --- | | `[[ -o noclobber ]]` | If OPTION is enabled | | `[[ ! EXPR ]]` | Not | | `[[ X && Y ]]` | And | -| `[[ X || Y ]]` | Or | - +| `[[ X | | Y ]]` | Or | ### logical and, or + ```bash if [ "$1" = 'y' -a $2 -gt 0 ]; then echo "yes" @@ -513,10 +481,7 @@ if [ "$1" = 'n' -o $2 -lt 0 ]; then fi ``` - - -Bash Loops ------ +## Bash Loops ### Basic for loop @@ -542,7 +507,6 @@ for i in {1..5}; do done ``` - #### With step size ```bash @@ -551,29 +515,6 @@ for i in {5..50..5}; do done ``` - - -### Auto increment - -```bash -i=1 -while [[ $i -lt 4 ]]; do - echo "Number: $i" - ((i++)) -done -``` - -### Auto decrement - -```bash -i=3 -while [[ $i -gt 0 ]]; do - echo "Number: $i" - ((i--)) -done -``` - - ### Continue ```bash {data=3,5} @@ -585,7 +526,6 @@ for number in $(seq 1 3); do done ``` - ### Break ```bash @@ -600,6 +540,7 @@ done ``` ### Until + ```bash count=0 until [ $count -gt 10 ]; do @@ -608,8 +549,36 @@ until [ $count -gt 10 ]; do done ``` +### While with increment + +```bash +i=1 +while [[ $i -lt 4 ]]; do + echo "Number: $i" + ((i++)) +done +``` + +### While with decrement + +```bash +i=3 +while [[ $i -gt 0 ]]; do + echo "Number: $i" + ((i--)) +done +``` + +#### Combined with test + +```bash +i=3 +while ((i--)); do + echo "Number: $i" +done +``` -### Forever +### Forever ```bash while true; do @@ -618,27 +587,22 @@ done ``` ### Forever (shorthand) + ```bash while :; do # here is some code. done ``` - ### Reading lines ```bash -cat file.txt | while read line; do +while read line; do echo $line -done +done < file.txt ``` - - - - -Bash Functions ---------- +## Bash Functions ### Defining functions @@ -688,10 +652,7 @@ else fi ``` - - -Bash Options {.cols-2} -------- +## Bash Options {.cols-2} ### Options @@ -702,10 +663,10 @@ set -o noclobber # Used to exit upon error # avoiding cascading errors -set -o errexit +set -o errexit # Unveils hidden failures -set -o pipefail +set -o pipefail # Exposes unset variables set -o nounset @@ -714,33 +675,31 @@ set -o nounset ### Glob options ```bash -# Non-matching globs are removed +# Non-matching globs are removed # ('*.foo' => '') -shopt -s nullglob +shopt -s nullglob # Non-matching globs throw errors -shopt -s failglob +shopt -s failglob # Case insensitive globs -shopt -s nocaseglob +shopt -s nocaseglob -# Wildcards match dotfiles +# Wildcards match dotfiles # ("*.sh" => ".foo.sh") -shopt -s dotglob +shopt -s dotglob -# Allow ** for recursive matches +# Allow ** for recursive matches # ('lib/**/*.rb' => 'lib/a/b/c.rb') -shopt -s globstar +shopt -s globstar ``` - -Bash History {.cols-2} -------- +## Bash History {.cols-2} ### Commands | Command | Description | -|-----------------------|-------------------------------------------| +| --------------------- | ----------------------------------------- | | `history` | Show history | | `sudo !!` | Run the previous command with sudo | | `shopt -s histverify` | Don't execute expanded result immediately | @@ -748,7 +707,7 @@ Bash History {.cols-2} ### Expansions | Expression | Description | -|--------------|------------------------------------------------------| +| ------------ | ---------------------------------------------------- | | `!$` | Expand last parameter of most recent command | | `!*` | Expand all parameters of most recent command | | `!-n` | Expand `n`th most recent command | @@ -758,7 +717,7 @@ Bash History {.cols-2} ### Operations | Code | Description | -|----------------------|-----------------------------------------------------------------------| +| -------------------- | --------------------------------------------------------------------- | | `!!` | Execute last command again | | `!!:s///` | Replace first occurrence of `` to `` in most recent command | | `!!:gs///` | Replace all occurrences of `` to `` in most recent command | @@ -770,7 +729,7 @@ Bash History {.cols-2} ### Slices | Code | Description | -|----------|------------------------------------------------------------------------------------------| +| -------- | ---------------------------------------------------------------------------------------- | | `!!:n` | Expand only `n`th token from most recent command (command is `0`; first argument is `1`) | | `!^` | Expand first argument from most recent command | | `!$` | Expand last token from most recent command | @@ -779,9 +738,7 @@ Bash History {.cols-2} `!!` can be replaced with any valid expansion i.e. `!cat`, `!-2`, `!42`, etc. - -Miscellaneous -------------- +## Miscellaneous ### Numeric calculations @@ -800,7 +757,6 @@ $(($RANDOM%200)) # Random number 0..199 pwd # still in first directory ``` - ### Inspecting commands ```bash @@ -808,7 +764,6 @@ command -V cd #=> "cd is a function/alias/whatever" ``` - ### Redirection {.row-span-2 .col-span-2} ```bash @@ -824,7 +779,6 @@ python hello.py &>/dev/null # stdout and stderr to (null) python hello.py < foo.txt # feed foo.txt to stdin for python ``` - ### Source relative ```bash @@ -851,7 +805,6 @@ case "$1" in esac ``` - ### Trap errors {.col-span-2} ```bash @@ -869,7 +822,6 @@ set -o errtrace trap traperr ERR ``` - ### printf ```bash @@ -901,7 +853,7 @@ esac; shift; done if [[ "$1" == '--' ]]; then shift; fi ``` -### Check for command's result {.col-span-2} +### Check for command's result {.col-span-2} ```bash if ping -c 1 google.com; then @@ -909,11 +861,10 @@ if ping -c 1 google.com; then fi ``` - -### Special variables {.row-span-2} +### Special variables {.row-span-2} | Expression | Description | -|------------|------------------------------| +| ---------- | ---------------------------- | | `$?` | Exit status of last task | | `$!` | PID of last background task | | `$$` | PID of shell | @@ -921,8 +872,7 @@ fi See [Special parameters](http://wiki.bash-hackers.org/syntax/shellvars#special_parameters_and_shell_variables). - -### Grep check {.col-span-2} +### Grep check {.col-span-2} ```bash if grep -q 'foo' ~/.bash_history; then @@ -930,10 +880,9 @@ if grep -q 'foo' ~/.bash_history; then fi ``` - ### Backslash escapes {.row-span-2} --   +-   - \! - \" - \# @@ -956,14 +905,11 @@ fi - \$ - \* - \? -{.cols-4 .marker-none} +{.cols-4 .marker-none} Escape these special characters with `\` - - - ### Heredoc ```sh @@ -972,7 +918,6 @@ hello world END ``` - ### Go to previous directory ```bash @@ -983,7 +928,6 @@ cd - pwd # /home/user/foo ``` - ### Reading input ```bash @@ -996,7 +940,6 @@ echo $ans read -n 1 ans # Just one character ``` - ### Conditional execution ```bash @@ -1004,7 +947,6 @@ git commit && git push git commit || echo "Commit failed" ``` - ### Strict mode ```bash @@ -1014,7 +956,6 @@ IFS=$'\n\t' See: [Unofficial bash strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) - ### Optional arguments ```bash @@ -1026,13 +967,12 @@ echo "${args[@]}" Put the arguments into an array and then append - - ## Also see {.cols-1} -* [Devhints](https://devhints.io/bash) _(devhints.io)_ -* [Bash-hackers wiki](http://wiki.bash-hackers.org/) _(bash-hackers.org)_ -* [Shell vars](http://wiki.bash-hackers.org/syntax/shellvars) _(bash-hackers.org)_ -* [Learn bash in y minutes](https://learnxinyminutes.com/docs/bash/) _(learnxinyminutes.com)_ -* [Bash Guide](http://mywiki.wooledge.org/BashGuide) _(mywiki.wooledge.org)_ -* [ShellCheck](https://www.shellcheck.net/) _(shellcheck.net)_ -* [shell - Standard Shell](https://devmanual.gentoo.org/tools-reference/bash/index.html) _(devmanual.gentoo.org)_ + +- [Devhints](https://devhints.io/bash) _(devhints.io)_ +- [Bash-hackers wiki](http://wiki.bash-hackers.org/) _(bash-hackers.org)_ +- [Shell vars](http://wiki.bash-hackers.org/syntax/shellvars) _(bash-hackers.org)_ +- [Learn bash in y minutes](https://learnxinyminutes.com/docs/bash/) _(learnxinyminutes.com)_ +- [Bash Guide](http://mywiki.wooledge.org/BashGuide) _(mywiki.wooledge.org)_ +- [ShellCheck](https://www.shellcheck.net/) _(shellcheck.net)_ +- [shell - Standard Shell](https://devmanual.gentoo.org/tools-reference/bash/index.html) _(devmanual.gentoo.org)_ diff --git a/source/_posts/bear-notes.md b/source/_posts/bear-notes.md index b4ad8e87..eb021dd7 100644 --- a/source/_posts/bear-notes.md +++ b/source/_posts/bear-notes.md @@ -3,168 +3,160 @@ title: Bear date: 2022-11-23 16:23:31.705436 background: bg-[#cd5654] label: Mac -tags: - - - - mac +tags: + - + - mac categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 66 keyboard shortcuts found in Bear. This application is MacOS-only. + A visual cheat-sheet for the 66 keyboard shortcuts found in Bear. This application is MacOS-only. --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### Text Styles {.row-span-3} -Shortcut | Action ----|--- -`Option` `Cmd` `1-6` | Headings -`Option` `Cmd` `S` | Line separator -`Cmd` `B` | Bold -`Cmd` `I` | Italic -`Cmd` `U` | Underline -`Shift` `Cmd` `E` | Strikethrough -`Cmd` `K` | Link -`Cmd` `L` | Unordered list -`Shift` `Cmd` `L` | Ordered list -`Shift` `Cmd` `U` | Quote -`Cmd` `T` | Todo -`Option` `Cmd` `C` | Inline code -`Ctrl` `Option` `C` | Code block -`Shift` `Cmd` `M` | Marker/Highlighter -`Shift` `Cmd` `V` | Insert file -{.shortcuts} +| Shortcut | Action | +| -------------------- | ------------------ | +| `Option` `Cmd` `1-6` | Headings | +| `Option` `Cmd` `S` | Line separator | +| `Cmd` `B` | Bold | +| `Cmd` `I` | Italic | +| `Cmd` `U` | Underline | +| `Shift` `Cmd` `E` | Strikethrough | +| `Cmd` `K` | Link | +| `Cmd` `L` | Unordered list | +| `Shift` `Cmd` `L` | Ordered list | +| `Shift` `Cmd` `U` | Quote | +| `Cmd` `T` | Todo | +| `Option` `Cmd` `C` | Inline code | +| `Ctrl` `Option` `C` | Code block | +| `Shift` `Cmd` `M` | Marker/Highlighter | +| `Shift` `Cmd` `V` | Insert file | +{.shortcuts} ### Todos -Shortcut | Action ----|--- -`Shift` `Cmd` `T` | Toggle Todo -`Option` `Cmd` `T` | Mark Todo as completed -`Ctrl` `Cmd` `T` | Mark Todo as incomplete -{.shortcuts} +| Shortcut | Action | +| ------------------ | ----------------------- | +| `Shift` `Cmd` `T` | Toggle Todo | +| `Option` `Cmd` `T` | Mark Todo as completed | +| `Ctrl` `Cmd` `T` | Mark Todo as incomplete | +{.shortcuts} ### Structure -Shortcut | Action ----|--- -`Cmd` `]` | Shift line right -`Cmd` `[` | Shift line left -`Cmd` `Option` `Up` | Move line up -`Cmd` `Option` `Down` | Move line down -{.shortcuts} +| Shortcut | Action | +| --------------------- | ---------------- | +| `Cmd` `]` | Shift line right | +| `Cmd` `[` | Shift line left | +| `Cmd` `Option` `Up` | Move line up | +| `Cmd` `Option` `Down` | Move line down | +{.shortcuts} ### Lists -Shortcut | Action ----|--- -`Tab` | Shift the list element right -`Shift` `Tab` | Shift the list element left -`Shift` `Enter` | End the list -{.shortcuts} +| Shortcut | Action | +| --------------- | ---------------------------- | +| `Tab` | Shift the list element right | +| `Shift` `Tab` | Shift the list element left | +| `Shift` `Enter` | End the list | +{.shortcuts} ### Dates -Shortcut | Action ----|--- -`Shift` `Cmd` `7` | Long Form Date with time (11 Jul 2017, 10:43) -`Shift` `Cmd` `8` | Long Form Date (11 Jul 2017) -`Shift` `Cmd` `9` | Short Form Date (11/07/2017) -`Shift` `Cmd` `0` | Hours (11:43) -{.shortcuts} +| Shortcut | Action | +| ----------------- | --------------------------------------------- | +| `Shift` `Cmd` `7` | Long Form Date with time (11 Jul 2017, 10:43) | +| `Shift` `Cmd` `8` | Long Form Date (11 Jul 2017) | +| `Shift` `Cmd` `9` | Short Form Date (11/07/2017) | +| `Shift` `Cmd` `0` | Hours (11:43) | +{.shortcuts} ### Control -Shortcut | Action ----|--- -`Cmd` `A` | Select all -`Cmd` `Enter` | End editing -`Cmd` `P` | Print note -{.shortcuts} +| Shortcut | Action | +| ------------- | ----------- | +| `Cmd` `A` | Select all | +| `Cmd` `Enter` | End editing | +| `Cmd` `P` | Print note | +{.shortcuts} ### Zoom -Shortcut | Action ----|--- -`Cmd` `+` | Zoom in -`Cmd` `-` | Zoom out -`Cmd` `0` | Actual size -{.shortcuts} - +| Shortcut | Action | +| --------- | ----------- | +| `Cmd` `+` | Zoom in | +| `Cmd` `-` | Zoom out | +| `Cmd` `0` | Actual size | +{.shortcuts} ### Navigation {.row-span-2} -Shortcut | Action ----|--- -`Cmd` `N` | Create a new note -`Option` `Cmd` `N` | Create a new note in a new window -`Up/Down` | Move the selection in the note and tags list -`Left/Right` | Move the selection between the sidebar, the nost list, and the editor -`Enter` | Edit the selected note -`Option` `Cmd` `F` | Search in the current note list -`Cmd` `Backspace` | Delete selected note -`Shift` `Cmd` `R` | Restore selected note -`Shift` `Cmd` `P` | Pin/unpin selected note -`Cmd` `A` | Select all the notes in the list -`Shift` `Cmd` `Backspace` | Empty Trash -`Cmd` `1` | Select Notes in the sidebar -`Cmd` `2` | Select Untagged in the sidebar -`Cmd` `3` | Select ToDo in the sidebar -`Cmd` `4` | Select Today in the sidebar -`Cmd` `5` | Select Archive in the sidebar -`Cmd` `6` | Select Trash in the sidebar -`Option` `Cmd` `Left` | Navigate back in visualized notes history -`Option` `Cmd` `Right` | Navigate forward in visualized notes history -{.shortcuts} +| Shortcut | Action | +| ------------------------- | --------------------------------------------------------------------- | +| `Cmd` `N` | Create a new note | +| `Option` `Cmd` `N` | Create a new note in a new window | +| `Up/Down` | Move the selection in the note and tags list | +| `Left/Right` | Move the selection between the sidebar, the nost list, and the editor | +| `Enter` | Edit the selected note | +| `Option` `Cmd` `F` | Search in the current note list | +| `Cmd` `Backspace` | Delete selected note | +| `Shift` `Cmd` `R` | Restore selected note | +| `Shift` `Cmd` `P` | Pin/unpin selected note | +| `Cmd` `A` | Select all the notes in the list | +| `Shift` `Cmd` `Backspace` | Empty Trash | +| `Cmd` `1` | Select Notes in the sidebar | +| `Cmd` `2` | Select Untagged in the sidebar | +| `Cmd` `3` | Select ToDo in the sidebar | +| `Cmd` `4` | Select Today in the sidebar | +| `Cmd` `5` | Select Archive in the sidebar | +| `Cmd` `6` | Select Trash in the sidebar | +| `Option` `Cmd` `Left` | Navigate back in visualized notes history | +| `Option` `Cmd` `Right` | Navigate forward in visualized notes history | +{.shortcuts} ### Panels and search -Shortcut | Action ----|--- -`Shift` `Cmd` `I` | Toggle information panel -`Cmd` `F` | Search inside the current note -`Option` `Cmd` `F` | Search and replace inside the current note -`Shift` `Cmd` `F` | Search inside the note list -{.shortcuts} +| Shortcut | Action | +| ------------------ | ------------------------------------------ | +| `Shift` `Cmd` `I` | Toggle information panel | +| `Cmd` `F` | Search inside the current note | +| `Option` `Cmd` `F` | Search and replace inside the current note | +| `Shift` `Cmd` `F` | Search inside the note list | +{.shortcuts} ### Saving and importing -Shortcut | Action ----|--- -`Shift` `Cmd` `S` | Export selected notes -`Shift` `Cmd` `O` | Import notes -{.shortcuts} +| Shortcut | Action | +| ----------------- | --------------------- | +| `Shift` `Cmd` `S` | Export selected notes | +| `Shift` `Cmd` `O` | Import notes | +{.shortcuts} ### Window -Shortcut | Action ----|--- -`Ctrl` `1` | Show sidebar, note list and editor -`Ctrl` `2` | Show note list and editor -`Ctrl` `3` | Show editor only -`Cmd` `,` | Show preferences -`Ctrl` `Cmd` `F` | Enter fullscreen -`Cmd` `\` | Open main window -{.shortcuts} - +| Shortcut | Action | +| ---------------- | ---------------------------------- | +| `Ctrl` `1` | Show sidebar, note list and editor | +| `Ctrl` `2` | Show note list and editor | +| `Ctrl` `3` | Show editor only | +| `Cmd` `,` | Show preferences | +| `Ctrl` `Cmd` `F` | Enter fullscreen | +| `Cmd` `\` | Open main window | +{.shortcuts} +## Also see -Also see --------- - [Keyboard shortcuts for Bear notes app](https://bear.app/faq/Shortcuts%20and%20more/Mac%20shortcuts/) _(bear.app)_ diff --git a/source/_posts/bitbucket.md b/source/_posts/bitbucket.md index c493080a..43a42a8c 100644 --- a/source/_posts/bitbucket.md +++ b/source/_posts/bitbucket.md @@ -2,110 +2,103 @@ title: Bitbucket date: 2022-11-23 16:23:31.699805 background: bg-[#4382f7] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 35 keyboard shortcuts found on Bitbucket + A visual cheat-sheet for the 35 keyboard shortcuts found on Bitbucket --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### All pages -Shortcut | Action ----|--- -`?` | Display keyboard shortcuts -`[` | Expand and collapse left navigation -`/` | Focus the site search -{.shortcuts} +| Shortcut | Action | +| -------- | ----------------------------------- | +| `?` | Display keyboard shortcuts | +| `[` | Expand and collapse left navigation | +| `/` | Focus the site search | +{.shortcuts} ### Most pages (except Your Work and Source) -Shortcut | Action ----|--- -`.` | Open the Omnibar -`J` | Select next item -`K` | Select previous item -`Enter` | View selected item -`G` `D` | Go to Your Work dashboard -`G` `A` | Go to your Personal Settings -`Esc` | Dismiss dialog or remove focus -`U` | Go back -{.shortcuts} - +| Shortcut | Action | +| -------- | ------------------------------ | +| `.` | Open the Omnibar | +| `J` | Select next item | +| `K` | Select previous item | +| `Enter` | View selected item | +| `G` `D` | Go to Your Work dashboard | +| `G` `A` | Go to your Personal Settings | +| `Esc` | Dismiss dialog or remove focus | +| `U` | Go back | +{.shortcuts} ### Repository pages (except for Source) -Shortcut | Action ----|--- -`C` `R` | Create a repository -`I` `R` | Import a repository -`R` `S` | Open repository source -`R` `C` | Open repository commits -`R` `B` | Open repository branches -`R` `P` | Open repository pull requests -`R` `I` | Open repository issues -`R` `W` | Open repository wiki -`R` `D` | Open repository downloads -`R` `A` | Open repository settings -`F` | Search for file -{.shortcuts} +| Shortcut | Action | +| -------- | ----------------------------- | +| `C` `R` | Create a repository | +| `I` `R` | Import a repository | +| `R` `S` | Open repository source | +| `R` `C` | Open repository commits | +| `R` `B` | Open repository branches | +| `R` `P` | Open repository pull requests | +| `R` `I` | Open repository issues | +| `R` `W` | Open repository wiki | +| `R` `D` | Open repository downloads | +| `R` `A` | Open repository settings | +| `F` | Search for file | +{.shortcuts} ### Repository pages (except for Source and Settings) {.row-span-2} -Shortcut | Action ----|--- -`X` `F` | Fork repository -`X` `B` | Create branch -`X` `C` | Compare branches or tags -`X` `P` | Create pull request -`X` `I` | Create issue -{.shortcuts} +| Shortcut | Action | +| -------- | ------------------------ | +| `X` `F` | Fork repository | +| `X` `B` | Create branch | +| `X` `C` | Compare branches or tags | +| `X` `P` | Create pull request | +| `X` `I` | Create issue | +{.shortcuts} ### Pull requests {.row-span-2} -Shortcut | Action ----|--- -`Ctrl` `Enter` | Submit a comment -`T` `C` | Toggle display of inline comments -`P` `D` | Switch to the pull request diff tab -`P` `C` | Switch to the pull request commits tab -`P` `A` | Switch to the pull request activity tab -`Shift` `T` | Show the list of tasks -{.shortcuts} - +| Shortcut | Action | +| -------------- | --------------------------------------- | +| `Ctrl` `Enter` | Submit a comment | +| `T` `C` | Toggle display of inline comments | +| `P` `D` | Switch to the pull request diff tab | +| `P` `C` | Switch to the pull request commits tab | +| `P` `A` | Switch to the pull request activity tab | +| `Shift` `T` | Show the list of tasks | +{.shortcuts} ### Repository pages with sidebar -Shortcut | Action ----|--- -`]` | Expand and collapse right sidebar -{.shortcuts} +| Shortcut | Action | +| -------- | --------------------------------- | +| `]` | Expand and collapse right sidebar | +{.shortcuts} ### Repository source -Shortcut | Action ----|--- -`F` | Focus the file filter -{.shortcuts} +| Shortcut | Action | +| -------- | --------------------- | +| `F` | Focus the file filter | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Bitbucket](https://confluence.atlassian.com/bitbucket/keyboard-shortcuts-269980511.html) _(confluence.atlassian.com)_ +- [Keyboard shortcuts for Bitbucket](https://confluence.atlassian.com/bitbucket/keyboard-shortcuts-269980511.html) + _(confluence.atlassian.com)_ diff --git a/source/_posts/blender.md b/source/_posts/blender.md index 5bf086da..6bc650d8 100644 --- a/source/_posts/blender.md +++ b/source/_posts/blender.md @@ -2,282 +2,276 @@ title: Blender date: 2022-11-23 16:23:31.700590 background: bg-[#e48040] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 187 keyboard shortcuts found in Blender + A visual cheat-sheet for the 187 keyboard shortcuts found in Blender --- - - -Keyboard Shortcuts {.cols-2} ------------------- - - +## Keyboard Shortcuts {.cols-2} ### Universal -Shortcut | Action ----|--- -`Esc` | Cancels Blender functions without changes -`Space` | Open the toolbox -`Tab` | Start or quit edit mode -`F1` | Loads a Blender file, changes the window to a file window -`Shift` `F1` | Appends parts from other files, or loads as library data -`F2` | Writes a Blender file, changes the window to a file window -`Shift` `F2` | Exports the scene as a DXF file -`Ctrl` `F2` | Exports the scene as a VRML1 file -`F3` | Writes a picture, if a picture has been rendered, and the file format is as indicated in the display buttons -`Ctrl` `F3` | Saves a screen dump of the active window -`Ctrl` `Shift` `F3` | Saves a screen dump of the whole Blender screen -`F4` | Displays the logic context -`F5` | Displays the shading context, light, material, or world sub-contexts -`F6` | Displays the shading context and texture sub-context -`F7` | Displays the object context -`F8` | Displays the shading context and world sub-context -`F9` | Displays the editing context -`F10` | Displays the scene context -`F11` | Hides or shows the render window -`F12` | Starts the rendering from the active camera -`Left` | Go to the previous frame -`Shift` `Left` | Go to the first frame -`Right` | Go to the next frame -`Shift` `Right` | Go to the last frame -`Up` | Go forward 10 frames -`Down` | Go back 10 frames -`Alt` `A` | Change the current Blender window to animation playback mode, the cursor changes to a counter -`Alt` `Shift` `A` | Change the current window and all 3D windows to animation playback mode -`I` | Insert key menu, this menu differs from window to window -`J` | Toggle the render buffers -`Ctrl` `O` | Opens the last saved file -`Q` | Quit Blender -`Ctrl` `Alt` `T` | Timer menu, this menu offers access to information about drawing speed -`Ctrl` `U` | Save user defaults, current project settings are written to the default file that will be loaded every time you start Blender -`Ctrl` `W` | Write file without opening a file window -`Alt` `W` | Write videoscape file -`Ctrl` `X` | Erase everything except the render buffer, the default scene is reloaded -`Ctrl` `Y` | Redo -`Ctrl` `Z` | Undo -`Ctrl` `Shift` `Z` | Redo -{.shortcuts} +| Shortcut | Action | +| ------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `Esc` | Cancels Blender functions without changes | +| `Space` | Open the toolbox | +| `Tab` | Start or quit edit mode | +| `F1` | Loads a Blender file, changes the window to a file window | +| `Shift` `F1` | Appends parts from other files, or loads as library data | +| `F2` | Writes a Blender file, changes the window to a file window | +| `Shift` `F2` | Exports the scene as a DXF file | +| `Ctrl` `F2` | Exports the scene as a VRML1 file | +| `F3` | Writes a picture, if a picture has been rendered, and the file format is as indicated in the display buttons | +| `Ctrl` `F3` | Saves a screen dump of the active window | +| `Ctrl` `Shift` `F3` | Saves a screen dump of the whole Blender screen | +| `F4` | Displays the logic context | +| `F5` | Displays the shading context, light, material, or world sub-contexts | +| `F6` | Displays the shading context and texture sub-context | +| `F7` | Displays the object context | +| `F8` | Displays the shading context and world sub-context | +| `F9` | Displays the editing context | +| `F10` | Displays the scene context | +| `F11` | Hides or shows the render window | +| `F12` | Starts the rendering from the active camera | +| `Left` | Go to the previous frame | +| `Shift` `Left` | Go to the first frame | +| `Right` | Go to the next frame | +| `Shift` `Right` | Go to the last frame | +| `Up` | Go forward 10 frames | +| `Down` | Go back 10 frames | +| `Alt` `A` | Change the current Blender window to animation playback mode, the cursor changes to a counter | +| `Alt` `Shift` `A` | Change the current window and all 3D windows to animation playback mode | +| `I` | Insert key menu, this menu differs from window to window | +| `J` | Toggle the render buffers | +| `Ctrl` `O` | Opens the last saved file | +| `Q` | Quit Blender | +| `Ctrl` `Alt` `T` | Timer menu, this menu offers access to information about drawing speed | +| `Ctrl` `U` | Save user defaults, current project settings are written to the default file that will be loaded every time you start Blender | +| `Ctrl` `W` | Write file without opening a file window | +| `Alt` `W` | Write videoscape file | +| `Ctrl` `X` | Erase everything except the render buffer, the default scene is reloaded | +| `Ctrl` `Y` | Redo | +| `Ctrl` `Z` | Undo | +| `Ctrl` `Shift` `Z` | Redo | +{.shortcuts} ### Object Mode -Shortcut | Action ----|--- -`Home` | All objects in the visible layer are displayed completely, centered in the window -`PgUp` | Select the next object key, if more than one is selected the selection is shifted up cyclically -`Shift` `PgUp` | Add to selection the next object key -`PgDn` | Select the previous object key, if more than one is selected the selection is shifted up cyclically -`Shift` `PgDn` | Adds to selection the previous object key -\` | Select all layers -`Shift` \` | Revert to the previous layer setting -`Tab` | Start or stop edit mode -`A` | Selects or deselects all -`Ctrl` `A` | Apply size and rotation -`Ctrl` `Shift` `A` | If the active object is automatically duplicated, brings up a menu for actually creating the objects -`Shift` `A` | Brings up the add menu, the toolbox items that start with ADD -`B` | Border select, draws a rectangle with the left mouse to select objects -`Shift` `B` | Render border, this only works in camera view mode -`C` | Center view, the position of the 3D cursor becomes the new center of the 3D window -`Alt` `C` | Convert menu, depending on the active object a popup menu is displayed enabling you to convert certain types of ObData -`Ctrl` `C` | Copy menu, this menu copies information from the active object to selected objects -`Shift` `C` | Center zero view, the 3D cursor is set to zero and the view is changed so all objects can be displayed -`D` | Display draw mode menu -`Shift` `D` | Add duplicate, the selected objects are duplicated -`Alt` `D` | Add linked duplicate, linked duplicates of the selected objects are created -`Ctrl` `D` | Draw the texture image as wire -`Alt` `E` | Start or stop edit mode -`F` | If selected object is a mash, toggles face select mode on or off -`Ctrl` `F` | Sort faces, the faces of the active mesh object are sorted based on the current view in the 3D window -`G` | Grab mode, or translation mode -`Alt` `G` | Clears translations, given in grab mode -`Shift` `G` | Group selection -`I` | Insert object key, a keyposition is inserted in the current frame of all selected objects -`Ctrl` `J` | Join objects, all selected objects of the same type are added to the active object -`K` | Show keys, the draw key option is turned on for all selected objects -`Shift` `K` | Display popup menu for showing and selecting all keys -`L` | Makes selected object local, makes library linked objects local for the current scene -`Ctrl` `L` | Link selected, links some of the active object data to all selected objects -`Shift` `L` | Select linked, selected all objects somehow linked to the active object -`M` | Move selected objects to another layer -`Ctrl` `M` | Mirror menu, it is possible to mirror an object along the X, Y, or Z axis -`N` | Number panel, the location, rotation, and scaling of the active object are displayed and can be modified -`Alt` `O` | Clear origin, the origin is erased for all child objects, which causes them to move ot the exact location of the parent objects -`Shift` `O` | If the selected object is a mesh, toggles the subsurf on or off -`Ctrl` `P` | Make selected objects the children of the active object -`Alt` `P` | Clears parent relation, user is asked if they wish to keep or clear parent-induced transforms -`R` | Rotate mode, works on selected objects -`Alt` `R` | Clears rotation, the X, Y, and Z rotations of selected objects are set to zero -`S` | Size mode or scaling mode, works on selected objects -`Alt` `S` | Clears size, the X, Y, and Z dimensions of selected objects are set to 1 -`Shift` `S` | Opens the snap menu -`T` | Texture space mode, the position of dimensions of the texture space for the selected objects can be changed in the same manner for grab and size mode -`Ctrl` `T` | Makes selected objects track the active object -`Alt` `T` | Clears old style track, constraint track is removed as all constrains are -`U` | Makes object single user, the inverse operation of link -`V` | Switches in and out of vertex paint mode -`Alt` `V` | Object image aspect, this hotkey sets the X and Y dimensions of the selected objects in relation to the dimensions of the image texture they have -`W` | Opens the object booleans menu -`X` | Deletes selected objects -`Z` | Toggles solid mode on or off -`Shift` `Z` | Toggles shaded mode on or off -`Alt` `Z` | Toggles textured mode on or off -{.shortcuts} +| Shortcut | Action | +| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Home` | All objects in the visible layer are displayed completely, centered in the window | +| `PgUp` | Select the next object key, if more than one is selected the selection is shifted up cyclically | +| `Shift` `PgUp` | Add to selection the next object key | +| `PgDn` | Select the previous object key, if more than one is selected the selection is shifted up cyclically | +| `Shift` `PgDn` | Adds to selection the previous object key | +| \` | Select all layers | +| `Shift` \` | Revert to the previous layer setting | +| `Tab` | Start or stop edit mode | +| `A` | Selects or deselects all | +| `Ctrl` `A` | Apply size and rotation | +| `Ctrl` `Shift` `A` | If the active object is automatically duplicated, brings up a menu for actually creating the objects | +| `Shift` `A` | Brings up the add menu, the toolbox items that start with ADD | +| `B` | Border select, draws a rectangle with the left mouse to select objects | +| `Shift` `B` | Render border, this only works in camera view mode | +| `C` | Center view, the position of the 3D cursor becomes the new center of the 3D window | +| `Alt` `C` | Convert menu, depending on the active object a popup menu is displayed enabling you to convert certain types of ObData | +| `Ctrl` `C` | Copy menu, this menu copies information from the active object to selected objects | +| `Shift` `C` | Center zero view, the 3D cursor is set to zero and the view is changed so all objects can be displayed | +| `D` | Display draw mode menu | +| `Shift` `D` | Add duplicate, the selected objects are duplicated | +| `Alt` `D` | Add linked duplicate, linked duplicates of the selected objects are created | +| `Ctrl` `D` | Draw the texture image as wire | +| `Alt` `E` | Start or stop edit mode | +| `F` | If selected object is a mash, toggles face select mode on or off | +| `Ctrl` `F` | Sort faces, the faces of the active mesh object are sorted based on the current view in the 3D window | +| `G` | Grab mode, or translation mode | +| `Alt` `G` | Clears translations, given in grab mode | +| `Shift` `G` | Group selection | +| `I` | Insert object key, a keyposition is inserted in the current frame of all selected objects | +| `Ctrl` `J` | Join objects, all selected objects of the same type are added to the active object | +| `K` | Show keys, the draw key option is turned on for all selected objects | +| `Shift` `K` | Display popup menu for showing and selecting all keys | +| `L` | Makes selected object local, makes library linked objects local for the current scene | +| `Ctrl` `L` | Link selected, links some of the active object data to all selected objects | +| `Shift` `L` | Select linked, selected all objects somehow linked to the active object | +| `M` | Move selected objects to another layer | +| `Ctrl` `M` | Mirror menu, it is possible to mirror an object along the X, Y, or Z axis | +| `N` | Number panel, the location, rotation, and scaling of the active object are displayed and can be modified | +| `Alt` `O` | Clear origin, the origin is erased for all child objects, which causes them to move ot the exact location of the parent objects | +| `Shift` `O` | If the selected object is a mesh, toggles the subsurf on or off | +| `Ctrl` `P` | Make selected objects the children of the active object | +| `Alt` `P` | Clears parent relation, user is asked if they wish to keep or clear parent-induced transforms | +| `R` | Rotate mode, works on selected objects | +| `Alt` `R` | Clears rotation, the X, Y, and Z rotations of selected objects are set to zero | +| `S` | Size mode or scaling mode, works on selected objects | +| `Alt` `S` | Clears size, the X, Y, and Z dimensions of selected objects are set to 1 | +| `Shift` `S` | Opens the snap menu | +| `T` | Texture space mode, the position of dimensions of the texture space for the selected objects can be changed in the same manner for grab and size mode | +| `Ctrl` `T` | Makes selected objects track the active object | +| `Alt` `T` | Clears old style track, constraint track is removed as all constrains are | +| `U` | Makes object single user, the inverse operation of link | +| `V` | Switches in and out of vertex paint mode | +| `Alt` `V` | Object image aspect, this hotkey sets the X and Y dimensions of the selected objects in relation to the dimensions of the image texture they have | +| `W` | Opens the object booleans menu | +| `X` | Deletes selected objects | +| `Z` | Toggles solid mode on or off | +| `Shift` `Z` | Toggles shaded mode on or off | +| `Alt` `Z` | Toggles textured mode on or off | +{.shortcuts} ### Edit Mode - General -Shortcut | Action ----|--- -`Tab` | Start or stop edit mode -`Alt` `E` | Start or stop edit mode (alternative) -`Ctrl` `Tab` | Switches between vertex select, edge select, and face select modes -`A` | Select or unselect all -`B` `B` | Circle select -`Ctrl` `H` | With vertices selected, this creates a hook object -`N` | Number panel, simpler than the object mode one -`O` | Switch in and out of proportional editing -`Shift` `O` | Toggles between smooth and sharp proportional editing -`P` | Separate, you can choose to make a new object with all selected vertices, edges, faces, and curves -`Ctrl` `P` | Make vertex parent -`Ctrl` `S` | Shear, in edit mode this operation enables you to make selected forms slant -`U` | Undo -`W` | Displays specials popup menu -`Shift` `W` | Warp, selected vertices can be bent into curves with this option -{.shortcuts} +| Shortcut | Action | +| ------------ | -------------------------------------------------------------------------------------------------- | +| `Tab` | Start or stop edit mode | +| `Alt` `E` | Start or stop edit mode (alternative) | +| `Ctrl` `Tab` | Switches between vertex select, edge select, and face select modes | +| `A` | Select or unselect all | +| `B` `B` | Circle select | +| `Ctrl` `H` | With vertices selected, this creates a hook object | +| `N` | Number panel, simpler than the object mode one | +| `O` | Switch in and out of proportional editing | +| `Shift` `O` | Toggles between smooth and sharp proportional editing | +| `P` | Separate, you can choose to make a new object with all selected vertices, edges, faces, and curves | +| `Ctrl` `P` | Make vertex parent | +| `Ctrl` `S` | Shear, in edit mode this operation enables you to make selected forms slant | +| `U` | Undo | +| `W` | Displays specials popup menu | +| `Shift` `W` | Warp, selected vertices can be bent into curves with this option | +{.shortcuts} ### Edit Mode - Mesh -Shortcut | Action ----|--- -`Ctrl` `+` | Adds to selection all vertices connected by an edge to an already selected vertex -`Ctrl` `-` | Removes from selection all vertices of the outer ring of selected vertices -`C` | If using curve deformation, toggles the curve cyclic mode on or off -`E` | Extrude selected -`Shift` `E` | Crease subsurf edge -`Ctrl` `E` | Mark LSCM seam -`F` | Make edge or face -`Shift` `F` | Fill selected, all selected vertices that are bound by edges and form a closed polygon are filled with triangular faces -`Alt` `F` | Beauty fill, edges of all selected triangular faces are switched so equally sized faces are formed -`Ctrl` `F` | Flip faces, selected triangular faces are paired and common edge of each pair swapped -`H` | Hide selected, all selected vertices and faces are hidden -`Shift` `H` | Hide not selected, all non-selected vertices and faces are hidden -`Alt` `H` | Reveal, all hidden vertices and faces are drawn again -`Alt` `J` | Join faces, selected triangular faces are joined in pairs and transformed to quads -`K` | Knife tool menu -`L` | Select linked -`Shift` `L` | Deselect linked -`Ctrl` `L` | Select linked selected -`M` | Mirror, opens a popup asking for the axis to mirror -`Alt` `M` | Merges selected vertices as barycentrum or at cursor depending on selection made on popup -`Ctrl` `N` | Calculate normals outside -`Ctrl` `Shift` `N` | Calculate normals inside -`Alt` `S` | Scales each vertex in the direction of its local normal -`Ctrl` `T` | Make triangles, all selected faces are converted to triangles -`U` | Undo -`Shift` `U` | Redo -`Alt` `U` | Undo menu -`W` | Special menu -`X` | Erase selected -`Y` | Split, this command splits the selected part of a mesh without deleting faces -{.shortcuts} +| Shortcut | Action | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | +| `Ctrl` `+` | Adds to selection all vertices connected by an edge to an already selected vertex | +| `Ctrl` `-` | Removes from selection all vertices of the outer ring of selected vertices | +| `C` | If using curve deformation, toggles the curve cyclic mode on or off | +| `E` | Extrude selected | +| `Shift` `E` | Crease subsurf edge | +| `Ctrl` `E` | Mark LSCM seam | +| `F` | Make edge or face | +| `Shift` `F` | Fill selected, all selected vertices that are bound by edges and form a closed polygon are filled with triangular faces | +| `Alt` `F` | Beauty fill, edges of all selected triangular faces are switched so equally sized faces are formed | +| `Ctrl` `F` | Flip faces, selected triangular faces are paired and common edge of each pair swapped | +| `H` | Hide selected, all selected vertices and faces are hidden | +| `Shift` `H` | Hide not selected, all non-selected vertices and faces are hidden | +| `Alt` `H` | Reveal, all hidden vertices and faces are drawn again | +| `Alt` `J` | Join faces, selected triangular faces are joined in pairs and transformed to quads | +| `K` | Knife tool menu | +| `L` | Select linked | +| `Shift` `L` | Deselect linked | +| `Ctrl` `L` | Select linked selected | +| `M` | Mirror, opens a popup asking for the axis to mirror | +| `Alt` `M` | Merges selected vertices as barycentrum or at cursor depending on selection made on popup | +| `Ctrl` `N` | Calculate normals outside | +| `Ctrl` `Shift` `N` | Calculate normals inside | +| `Alt` `S` | Scales each vertex in the direction of its local normal | +| `Ctrl` `T` | Make triangles, all selected faces are converted to triangles | +| `U` | Undo | +| `Shift` `U` | Redo | +| `Alt` `U` | Undo menu | +| `W` | Special menu | +| `X` | Erase selected | +| `Y` | Split, this command splits the selected part of a mesh without deleting faces | +{.shortcuts} ### Edit Mode - Curve -Shortcut | Action ----|--- -`C` | Set the selected curves to cyclic or turn cyclic off -`E` | Extrude curve -`F` | Add segment, a segment is added between two selected vertices at the end of two curves -`H` | Toggle handle align or free -`Shift` `H` | Set handle to auto -`Ctrl` `H` | Calculate handles -`L` | Select linked -`Shift` `L` | Deselect linked -`M` | Mirror selected control points exactly as for vertices in a mesh -`T` | Tilt mode, specify an extra axis rotation for each vertex in a 3D curve -`Alt` `T` | Clear tilt -`V` | Vector handle -`W` | The special menu for curves appears -`X` | Erase selected -{.shortcuts} +| Shortcut | Action | +| ----------- | -------------------------------------------------------------------------------------- | +| `C` | Set the selected curves to cyclic or turn cyclic off | +| `E` | Extrude curve | +| `F` | Add segment, a segment is added between two selected vertices at the end of two curves | +| `H` | Toggle handle align or free | +| `Shift` `H` | Set handle to auto | +| `Ctrl` `H` | Calculate handles | +| `L` | Select linked | +| `Shift` `L` | Deselect linked | +| `M` | Mirror selected control points exactly as for vertices in a mesh | +| `T` | Tilt mode, specify an extra axis rotation for each vertex in a 3D curve | +| `Alt` `T` | Clear tilt | +| `V` | Vector handle | +| `W` | The special menu for curves appears | +| `X` | Erase selected | +{.shortcuts} ### Edit Mode - Surface -Shortcut | Action ----|--- -`C` | Toggle cyclic menu -`E` | Extrude selected -`F` | Add segment, a segment is added between two selected vertices at the end of two curves -`L` | Select linked -`Shift` `L` | Deselect linked -`M` | Mirror selected control points exactly as for vertices in a mesh -`Shift` `R` | Select row, starting with the last selected vertex -`W` | The special menu for surfaces appears -`X` | Erase selected -{.shortcuts} +| Shortcut | Action | +| ----------- | -------------------------------------------------------------------------------------- | +| `C` | Toggle cyclic menu | +| `E` | Extrude selected | +| `F` | Add segment, a segment is added between two selected vertices at the end of two curves | +| `L` | Select linked | +| `Shift` `L` | Deselect linked | +| `M` | Mirror selected control points exactly as for vertices in a mesh | +| `Shift` `R` | Select row, starting with the last selected vertex | +| `W` | The special menu for surfaces appears | +| `X` | Erase selected | +{.shortcuts} ### Edit Mode - Font -Shortcut | Action ----|--- -`Right` | Move text cursor one position forward -`Shift` `Right` | Move text cursor to the end of the line -`Left` | Move text cursor one position backwards -`Shift` `Left` | Move text cursor to the start of the line -`Down` | Move text cursor one line forward -`Shift` `Down` | Move text cursor to the end of the text -`Up` | Move text cursor one line back -`Shift` `Up` | Move text cursor to the beginning of the text -`Alt` `U` | Reload original data -`Alt` `V` | Paste text -{.shortcuts} +| Shortcut | Action | +| --------------- | --------------------------------------------- | +| `Right` | Move text cursor one position forward | +| `Shift` `Right` | Move text cursor to the end of the line | +| `Left` | Move text cursor one position backwards | +| `Shift` `Left` | Move text cursor to the start of the line | +| `Down` | Move text cursor one line forward | +| `Shift` `Down` | Move text cursor to the end of the text | +| `Up` | Move text cursor one line back | +| `Shift` `Up` | Move text cursor to the beginning of the text | +| `Alt` `U` | Reload original data | +| `Alt` `V` | Paste text | +{.shortcuts} ### VertexPaint -Shortcut | Action ----|--- -`Shift` `K` | All vertex colors are erased, they are changed to the current drawing color -`U` | Undo, press twice redos the undone -`W` | Shared vertexcol, the colors of all faces that share vertices are blended -{.shortcuts} +| Shortcut | Action | +| ----------- | --------------------------------------------------------------------------- | +| `Shift` `K` | All vertex colors are erased, they are changed to the current drawing color | +| `U` | Undo, press twice redos the undone | +| `W` | Shared vertexcol, the colors of all faces that share vertices are blended | +{.shortcuts} ### UV Editor -Shortcut | Action ----|--- -`E` | LSCM unwrapping, launches on the faces visible in the UV editor -`P` | Pin selected vertices, they will stay in place on the UV editor when executing an LSCM unwrap -`Alt` `P` | Un-pin selected vertices -{.shortcuts} +| Shortcut | Action | +| --------- | --------------------------------------------------------------------------------------------- | +| `E` | LSCM unwrapping, launches on the faces visible in the UV editor | +| `P` | Pin selected vertices, they will stay in place on the UV editor when executing an LSCM unwrap | +| `Alt` `P` | Un-pin selected vertices | +{.shortcuts} ### FaceSelect -Shortcut | Action ----|--- -`Tab` | Switches to edit mode -`F` | With multiple, co-planar faces selected, this will merge them into one FGon so long as they remain co-planar -`L` | Select linked UVs -`R` | Calls a menu allowing to rotate the UV coordinates or the vertex col -`U` | Calls the UV Calculation menu -{.shortcuts} - +| Shortcut | Action | +| -------- | ------------------------------------------------------------------------------------------------------------ | +| `Tab` | Switches to edit mode | +| `F` | With multiple, co-planar faces selected, this will merge them into one FGon so long as they remain co-planar | +| `L` | Select linked UVs | +| `R` | Calls a menu allowing to rotate the UV coordinates or the vertex col | +| `U` | Calls the UV Calculation menu | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Blender](https://download.blender.org/documentation/BlenderHotkeyReference.pdf) _(download.blender.org)_ +- [Keyboard shortcuts for Blender](https://download.blender.org/documentation/BlenderHotkeyReference.pdf) + _(download.blender.org)_ diff --git a/source/_posts/brave.md b/source/_posts/brave.md index 4e326283..6d7e5735 100644 --- a/source/_posts/brave.md +++ b/source/_posts/brave.md @@ -2,117 +2,111 @@ title: Brave Browser date: 2022-11-23 16:23:31.698868 background: bg-[#da6b37] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 64 keyboard shortcuts found in the Brave browser + A visual cheat-sheet for the 64 keyboard shortcuts found in the Brave browser --- - - -Keyboard Shortcuts {.cols-2} ------------------- - - +## Keyboard Shortcuts {.cols-2} ### Tabs and Windows -Shortcut | Action ----|--- -`Ctrl` `N` | Open a new window -`Ctrl` `Shift` `N` | Open a new window in Private mode -`Ctrl` `T` | Open a new tab, and jump to it -`Ctrl` `Shift` `T` | Reopen the last closed tab, and jump to it -`Ctrl` `Tab` | Jump to the next open tab -`Ctrl` `Shift` `Tab` | Jump to the previous open tab -`Ctrl` `1-8` | Jump to a specific tab -`Ctrl` `9` | Jump to the last tab -`Alt` `Home` | Open your home page in the current tab -`Ctrl` `Left` | Open the previous page from your browsing history in the current tab -`Alt` `Right` | Open the next page from your browsing history in the current tab -`Ctrl` `W` | Close the current tab -`Ctrl` `Shift` `W` | Close the current window -`Alt` `Space` `N` | Minimize the current window -`Alt` `Space` `X` | Maximize the current window -`Alt` `F4` | Close the current window -`Ctrl` `Shift` `Q` | Quit Brave -{.shortcuts} +| Shortcut | Action | +| -------------------- | -------------------------------------------------------------------- | +| `Ctrl` `N` | Open a new window | +| `Ctrl` `Shift` `N` | Open a new window in Private mode | +| `Ctrl` `T` | Open a new tab, and jump to it | +| `Ctrl` `Shift` `T` | Reopen the last closed tab, and jump to it | +| `Ctrl` `Tab` | Jump to the next open tab | +| `Ctrl` `Shift` `Tab` | Jump to the previous open tab | +| `Ctrl` `1-8` | Jump to a specific tab | +| `Ctrl` `9` | Jump to the last tab | +| `Alt` `Home` | Open your home page in the current tab | +| `Ctrl` `Left` | Open the previous page from your browsing history in the current tab | +| `Alt` `Right` | Open the next page from your browsing history in the current tab | +| `Ctrl` `W` | Close the current tab | +| `Ctrl` `Shift` `W` | Close the current window | +| `Alt` `Space` `N` | Minimize the current window | +| `Alt` `Space` `X` | Maximize the current window | +| `Alt` `F4` | Close the current window | +| `Ctrl` `Shift` `Q` | Quit Brave | +{.shortcuts} ### Browser -Shortcut | Action ----|--- -`Alt` `F` | Open the main menu -`Ctrl` `Shift` `B` | Show or hide the bookmarks bar -`Ctrl` `H` | Open the history page in a new tab -`Ctrl` `J` | Open the downloads page in a new tab -`Shift` `Esc` | Open the Brave task manager -`Shift` `Alt` `T` | Set focus on the first item in the toolbar -`F10` | Set focus on the last item in the toolbar -`F6` | Switch focus to unfocused dialog, if showing -`Ctrl` `F` | Open the find bar to search the current page -`Ctrl` `G` | Jump to the next match in your find bar search -`Ctrl` `Shift` `G` | Jump to the previous match in your find bar search -`Ctrl` `Shift` `J` | Open developer tools -`Ctrl` `Shift` `Delete` | Open the clear browser data options -`F1` | Open the Brave help center in a new tab -`Ctrl` `Shift` `M` | Open profile menu -`` | -{.shortcuts} +| Shortcut | Action | +| ----------------------- | -------------------------------------------------- | +| `Alt` `F` | Open the main menu | +| `Ctrl` `Shift` `B` | Show or hide the bookmarks bar | +| `Ctrl` `H` | Open the history page in a new tab | +| `Ctrl` `J` | Open the downloads page in a new tab | +| `Shift` `Esc` | Open the Brave task manager | +| `Shift` `Alt` `T` | Set focus on the first item in the toolbar | +| `F10` | Set focus on the last item in the toolbar | +| `F6` | Switch focus to unfocused dialog, if showing | +| `Ctrl` `F` | Open the find bar to search the current page | +| `Ctrl` `G` | Jump to the next match in your find bar search | +| `Ctrl` `Shift` `G` | Jump to the previous match in your find bar search | +| `Ctrl` `Shift` `J` | Open developer tools | +| `Ctrl` `Shift` `Delete` | Open the clear browser data options | +| `F1` | Open the Brave help center in a new tab | +| `Ctrl` `Shift` `M` | Open profile menu | +| `` | +{.shortcuts} ### Address Bar -Shortcut | Action ----|--- -`Enter` | Search with your default search engine (after typing) -`Tab` | Search using a different search engine (after typing) -`Ctrl` `Enter` | Add www. and .com to a site name, and open it in the current tab (after typing) -`Alt` `Enter` | Open a new tab and perform a search (after typing) -`Ctrl` `L` | Jump to the address bar -`Ctrl` `K` | Search from anywhere on the page -`Shift` `Delete` | Remove predictions from your address bar (after highlighting them) -{.shortcuts} +| Shortcut | Action | +| ---------------- | ------------------------------------------------------------------------------- | +| `Enter` | Search with your default search engine (after typing) | +| `Tab` | Search using a different search engine (after typing) | +| `Ctrl` `Enter` | Add www. and .com to a site name, and open it in the current tab (after typing) | +| `Alt` `Enter` | Open a new tab and perform a search (after typing) | +| `Ctrl` `L` | Jump to the address bar | +| `Ctrl` `K` | Search from anywhere on the page | +| `Shift` `Delete` | Remove predictions from your address bar (after highlighting them) | +{.shortcuts} ### Webpage -Shortcut | Action ----|--- -`Ctrl` `P` | Open options to print the current page -`Ctrl` `S` | Open options to save the current page -`Ctrl` `R` | Reload the current page -`Ctrl` `Shift` `R` | Reload the current page, ignoring cached content -`Esc` | Stop the page loading -`Tab` | Browse clickable items moving forward -`Shift` `Tab` | Browse clickable items moving backwards -`Ctrl` `O` | Open a file from your computer in Brave -`Ctrl` `U` | Display non-editable HTML source code for the current page -`Ctrl` `D` | Save your current webpage as a bookmark -`Ctrl` `Shift` `D` | Save all open tabs as bookmarks in a new folder -`F11` | Turn full-screen mode on or off -`Ctrl` `+` | Make everything on the page bigger -`Ctrl` `-` | Make everything on the page smaller -`Ctrl` `0` | Return everything on the page to default size -`Space` | Scroll down a webpage, a screen at a time -`Shift` `Space` | Scroll up a webpage, a screen at a time -`Home` | Go to the top of the page -`End` | Go to the bottom of the page -`Shift` `(scroll)` | Scroll horizontally on the page -`Alt` `Left` | Move your cursor to the front of the previous word in a text field -`Ctrl` `Right` | Move your cursor to the back of the next word in a text field -`Ctrl` `Back` | Delete the previous word in a text field -`Alt` `Home` | Open the home page in the current tab -{.shortcuts} - +| Shortcut | Action | +| ------------------ | ------------------------------------------------------------------ | +| `Ctrl` `P` | Open options to print the current page | +| `Ctrl` `S` | Open options to save the current page | +| `Ctrl` `R` | Reload the current page | +| `Ctrl` `Shift` `R` | Reload the current page, ignoring cached content | +| `Esc` | Stop the page loading | +| `Tab` | Browse clickable items moving forward | +| `Shift` `Tab` | Browse clickable items moving backwards | +| `Ctrl` `O` | Open a file from your computer in Brave | +| `Ctrl` `U` | Display non-editable HTML source code for the current page | +| `Ctrl` `D` | Save your current webpage as a bookmark | +| `Ctrl` `Shift` `D` | Save all open tabs as bookmarks in a new folder | +| `F11` | Turn full-screen mode on or off | +| `Ctrl` `+` | Make everything on the page bigger | +| `Ctrl` `-` | Make everything on the page smaller | +| `Ctrl` `0` | Return everything on the page to default size | +| `Space` | Scroll down a webpage, a screen at a time | +| `Shift` `Space` | Scroll up a webpage, a screen at a time | +| `Home` | Go to the top of the page | +| `End` | Go to the bottom of the page | +| `Shift` `(scroll)` | Scroll horizontally on the page | +| `Alt` `Left` | Move your cursor to the front of the previous word in a text field | +| `Ctrl` `Right` | Move your cursor to the back of the next word in a text field | +| `Ctrl` `Back` | Delete the previous word in a text field | +| `Alt` `Home` | Open the home page in the current tab | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Brave](https://support.brave.com/hc/en-us/articles/360032272171-What-keyboard-shortcuts-can-I-use-in-Brave-) _(support.brave.com)_ +- [Keyboard shortcuts for Brave](https://support.brave.com/hc/en-us/articles/360032272171-What-keyboard-shortcuts-can-I-use-in-Brave-) + _(support.brave.com)_ diff --git a/source/_posts/c.md b/source/_posts/c.md index 0e23de65..aaa744c7 100644 --- a/source/_posts/c.md +++ b/source/_posts/c.md @@ -6,15 +6,13 @@ tags: categories: - Programming intro: | - C quick reference cheat sheet that provides basic syntax and methods. + C quick reference cheat sheet that provides basic syntax and methods. plugins: - - copyCode + - copyCode + - runCode --- -Getting Started ----- - - +## Getting Started ### hello.c {.row-span-2} @@ -31,7 +29,7 @@ int main(void) { Compile `hello.c` file with `gcc` ```bash -$ gcc hello.c -o hello +$ gcc -Wall -g hello.c -o hello ``` Run the compiled binary `hello` @@ -42,8 +40,6 @@ $ ./hello Output => Hello World! - - ### Variables {.row-span-2} ```c @@ -63,11 +59,9 @@ int y = 6; int sum = x + y; // add variables to sum // declare multiple variables -int x = 5, y = 6, z = 50; +int a = 5, b = 6, c = 50; ``` - - ### Constants ```c @@ -81,29 +75,25 @@ Best Practices const int BIRTHYEAR = 1980; ``` - - ### Comment ```c // this is a comment -printf("Hello World!"); // Can comment anywhere in file +printf("Hello World!\n"); // Can comment anywhere in file /*Multi-line comment, print Hello World! to the screen, it's awesome */ ``` - - ### Print text ```c -printf("I am learning C."); +printf("I am learning C.\n"); int testInteger = 5; -printf("Number = %d", testInteger); +printf("Number = %d\n", testInteger); float f = 5.99; // floating point number -printf("Value = %f", f); +printf("Value = %f\n", f); short a = 0b1010110; // binary number int b = 02713; // octal number @@ -126,8 +116,6 @@ printf("a=%hX, b=%X, c=%lX\n", a, b, c); // output => a=56, b=5CB, c=1DAB83 ``` - - ### Control the number of spaces ```c @@ -145,30 +133,30 @@ printf("%-9d %-9d %-9d\n", d1, d2, d3); output result ```bash -20 345 700 -56720 9999 20098 -233 205 1 -34 0 23 +20 345 700 +56720 9999 20098 +233 205 1 +34 0 23 ``` -In `%-9d`, `d` means to output in `10` base, `9` means to occupy at least `9` characters width, and the width is not enough to fill with spaces, `-` means left alignment - - +In `%-9d`, `d` means to output in `10` base, `9` means to occupy at least `9` characters width, and the width is not +enough to fill with spaces, `-` means left alignment ### Strings + ```c char greetings[] = "Hello World!"; printf("%s", greetings); ``` -access string +Access string ```c char greetings[] = "Hello World!"; printf("%c", greetings[0]); ``` -modify string +Modify string ```c char greetings[] = "Hello World!"; @@ -188,65 +176,60 @@ printf("%s", greetings); ``` Creating String using character pointer (String Literals) + ```c char *greetings = "Hello"; printf("%s", greetings); // print "Hello!" ``` -**NOTE**: String literals might be stored in read-only section of memory. Modifying a string literal invokes undefined behavior. You can't modify it.! - -`C` **does not** have a String type, use `char` type and create an `array` of characters +**NOTE**: String literals might be stored in read-only section of memory. Modifying a string literal invokes undefined +behavior. You can't modify it! +`C` **does not** have a String type, use `char` type and create an `array` of characters ### Condition {.row-span-2} ```c int time = 20; if (time < 18) { - printf("Goodbye!"); + printf("Goodbye!\n"); } else { - printf("Good evening!"); + printf("Good evening!\n"); } // Output -> "Good evening!" int time = 22; if (time < 10) { - printf("Good morning!"); + printf("Good morning!\n"); } else if (time < 20) { - printf("Goodbye!"); + printf("Goodbye!\n"); } else { - printf("Good evening!"); + printf("Good evening!\n"); } // Output -> "Good evening!" ``` - - ### Ternary operator {.col-span-2} ```c int age = 20; -(age > 19) ? printf("Adult") : printf("Teenager"); +(age > 19) ? printf("Adult\n") : printf("Teenager\n"); ``` - - ### Switch ```c int day = 4; switch (day) { - case 3: printf("Wednesday"); break; - case 4: printf("Thursday"); break; + case 3: printf("Wednesday\n"); break; + case 4: printf("Thursday\n"); break; default: - printf("Weekend!"); + printf("Weekend!\n"); } // output -> "Thursday" (day 4) ``` - - ### While Loop ```c @@ -258,9 +241,8 @@ while (i < 5) { } ``` -**NOTE**: Don't forget to increment the variable used in the condition, otherwise the loop will never end and become an "infinite loop"! - - +**NOTE**: Don't forget to increment the variable used in the condition, otherwise the loop will never end and become an +"infinite loop"! ### Do/While Loop @@ -273,8 +255,6 @@ do { } while (i < 5); ``` - - ### For Loop ```c @@ -283,8 +263,6 @@ for (int i = 0; i < 5; i++) { } ``` - - ### Break out of the loop Break/Continue {.row-span-2} ```c @@ -296,7 +274,7 @@ for (int i = 0; i < 10; i++) { } ``` -break out of the loop when `i` is equal to `4` +Break out of the loop when `i` is equal to `4` ```c for (int i = 0; i < 10; i++) { @@ -309,8 +287,6 @@ for (int i = 0; i < 10; i++) { Example to skip the value of `4` - - ### While Break Example ```c @@ -326,8 +302,6 @@ while (i < 10) { } ``` - - ### While continue example ```c @@ -343,8 +317,6 @@ while (i < 10) { } ``` - - ### Arrays {.row-span-2} ```c @@ -354,7 +326,7 @@ printf("%d", myNumbers[0]); // output 25 ``` -change array elements +Change array elements ```c int myNumbers[] = {25, 50, 75, 100}; @@ -374,7 +346,7 @@ for (i = 0; i < 4; i++) { } ``` -set array size +Set array size ```c // Declare an array of four integers: @@ -387,15 +359,13 @@ myNumbers[2] = 75; myNumbers[3] = 100; ``` - - ### Enumeration Enum {.col-span-2} ```c enum week { Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun }; ``` -define enum variable +Define enum variable ```c enum week a, b, c; @@ -411,8 +381,6 @@ enum week a = Mon, b = Wed, c = Sat; enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } a = Mon, b = Wed, c = Sat; ``` - - ### Enumerate sample applications ```c @@ -424,13 +392,11 @@ switch(day) { case Mon: puts("Monday"); break; case Tues: puts("Tuesday"); break; case Wed: puts("Wednesday"); break; - case Thursday: puts("Thursday"); break; + case Thurs: puts("Thursday"); break; default: puts("Error!"); } ``` - - ### User input ```c @@ -438,32 +404,28 @@ switch(day) { int myNum; // Ask the user to enter a number -printf("Please enter a number: \n"); +printf("Enter a number: "); // Get and save the number entered by the user scanf("%d", &myNum); // Output the number entered by the user -printf("The number you entered: %d", myNum); +printf("The number you entered: %d\n", myNum); ``` - - ### User input string ```c // create a string char firstName[30]; // Ask the user to enter some text -printf("Enter your name: \n"); +printf("Enter your name: "); // get and save the text scanf("%s", &firstName); // output text -printf("Hello %s.", firstName); +printf("Hello %s.\n", firstName); ``` - - ### memory address When a variable is created, it is assigned a memory address @@ -477,20 +439,16 @@ printf("%p", &myAge); To access it, use the reference operator (`&`) - - ### create pointer ```c int myAge = 43; // an int variable -printf("%d", myAge); // output the value of myAge(43) +printf("%d\n", myAge); // output the value of myAge(43) // Output the memory address of myAge (0x7ffe5367e044) -printf("%p", &myAge); +printf("%p\n", &myAge); ``` - - ### pointer variable {.col-span-2} ```c @@ -503,8 +461,6 @@ printf("%p\n", &myAge); // output the memory address of myAge (0x7ffe5367e044) printf("%p\n", ptr); // use the pointer (0x7ffe5367e044) to output the memory address of myAge ``` - - ### Dereference ```c @@ -518,10 +474,7 @@ printf("%p\n", ptr); printf("%d\n", *ptr); ``` -Operators ---- - - +## Operators ### Arithmetic Operators @@ -532,37 +485,33 @@ int sum2 = sum1 + 250; // 400 (150 + 250) int sum3 = sum2 + sum2; // 800 (400 + 400) ``` ----- +--- | Operator | Name | Example | -|----------|-----------|---------| +| -------- | --------- | ------- | | `+` | Add | `x + y` | -| `-` | Subtract | `x - y` | -| `*` | Multiply | `x * y` | -| `/` | Divide | `x / y` | +| `-` | Subtract | `x - y` | +| `*` | Multiply | `x * y` | +| `/` | Divide | `x / y` | | `%` | Modulo | `x % y` | -| `++` | Increment | `++x` | +| `++` | Increment | `++x` | | `--` | Decrement | `--x` | - - ### Assignment operator -| example | as | -|-----------|----------------| -| x `=` 5 | x `=` 5 | -| x `+=` 3 | x `=` x `+` 3 | -| x `-=` 3 | x `=` x `-` 3 | -| x `*=` 3 | x `=` x `*` 3 | -| x `/=` 3 | x `=` x `/` 3 | -| x `%=` 3 | x `=` x `%` 3 | -| x `&=` 3 | x `=` x `&` 3 | -| x `|=` 3 | x `=` x `|` 3 | -| x `^=` 3 | x `=` x `^` 3 | -| x `>>=` 3 | x `=` x `>>` 3 | -| x `<<=` 3 | x `=` x `<<` 3 | - - +| Example | As | +| -------------------- | ------------------------- | +| x `=` 5 | x `=` 5 | +| x `+=` 3 | x `=` x `+` 3 | +| x `-=` 3 | x `=` x `-` 3 | +| x `*=` 3 | x `=` x `*` 3 | +| x `/=` 3 | x `=` x `/` 3 | +| x `%=` 3 | x `=` x `%` 3 | +| x `&=` 3 | x `=` x `&` 3 | +| x \|= 3 | x `=` x \| 3 | +| x `^=` 3 | x `=` x `^` 3 | +| x `>>=` 3 | x `=` x `>>` 3 | +| x `<<=` 3 | x `=` x `<<` 3 | ### Comparison Operators @@ -574,30 +523,28 @@ printf("%d", x > y); // returns 1 (true) because 5 is greater than 3 ``` ----- +--- -| Symbol | Name | Example | -| --------| -------| -------| -| `==` | equals | x `==` y | -| `!=` | not equal to | x `!=` y | -| `>` | greater than | x `>` y | -| `<` | less than | x `<` y | -| `>=` | greater than or equal to | x `>=` y | -| `<=` | less than or equal to | x `<=` y | +| Symbol | Name | Example | +| ------ | ------------------------ | -------- | +| `==` | equals | x `==` y | +| `!=` | not equal to | x `!=` y | +| `>` | greater than | x `>` y | +| `<` | less than | x `<` y | +| `>=` | greater than or equal to | x `>=` y | +| `<=` | less than or equal to | x `<=` y | Comparison operators are used to compare two values - - ### Logical Operators {.col-span-2} -| Symbol | Name | Description | Example | -| --------| --------| --------| --------| -| `&&` | `and` logical | returns true if both statements are true | `x < 5 && x < 10` | -| `||` | `or` logical | returns true if one of the statements is true | `x < 5 || x < 4` | -| `!` | `not` logical | Invert result, return false if true | `!(x < 5 && x < 10)` | - +| Symbol | Name | Description | Example | +| ----------------- | ------------- | --------------------------------------------- | ----------------------------- | +| `&&` | `and` logical | returns true if both statements are true | `x < 5 && x < 10` | +| \|\| | `or` logical | returns true if one of the statements is true | x < 5 \|\| x < 4 | +| `!` | `not` logical | Invert result, return false if true | `!(x < 5 && x < 10)` | +{.show-header} ### Operator Examples {.row-span-2} @@ -621,45 +568,42 @@ c = a >> 2; /*15 = 0000 1111 */ printf("Line 6 -The value of c is %d\n", c); ``` - - ### Bitwise operators {.col-span-2} -operator | description | instance -:-|:-|:- -`&` | Bitwise AND operation, "AND" operation by binary digits | `(A & B)` will get `12` which is 0000 1100 -`|` | Bitwise OR operator, "or" operation by binary digit | `(A | B)` will get `61` which is 0011 1101 -`^` | XOR operator, perform "XOR" operation by binary digits | `(A ^ B)` will get `49` which is 0011 0001 -`~` | Inversion operator, perform "inversion" operation by binary bit | `(~A)` will get `-61` which is 1100 0011 -`<<` | binary left shift operator | `A << 2` will get `240` which is 1111 0000 -`>>` | binary right shift operator | `A >> 2` will get `15` which is 0000 1111 - -Data Types ---- +| Operator | Description | Instance | +| :-------------- | :-------------------------------------------------------------- | :---------------------------------------------------- | +| `&` | Bitwise AND operation, "AND" operation by binary digits | `(A & B)` will get `12` which is 0000 1100 | +| \| | Bitwise OR operator, "or" operation by binary digit | (A \| B) will get`61` which is 0011 1101 | +| `^` | XOR operator, perform "XOR" operation by binary digits | `(A ^ B)` will get `49` which is 0011 0001 | +| `~` | Inversion operator, perform "inversion" operation by binary bit | `(~A)` will get `-61` which is 1100 0011 | +| `<<` | binary left shift operator | `A << 2` will get `240` which is 1111 0000 | +| `>>` | binary right shift operator | `A >> 2` will get `15` which is 0000 1111 | +{.show-header} +## Data Types ### Basic data types {.col-span-2} -| Data Type | Size Size | Range Range | Description Description | -| -----| -----| -----| -----| -| `char` | 1 byte | `−128` ~ `127` | single character/alphanumeric/ASCII | -| `signed char` | 1 byte | `−128` ~ `127` | -| -| `unsigned char` | 1 byte | `0` ~ `255` | -| -| `int` | `2` to `4` bytes | `−32,768` ~ `32,767` | store integers | -| `signed int` | 2 bytes | `−32,768` ~ `32,767` | | -| `unsigned int` | 2 bytes | `0` ~ `65,535` | | -| `short int` | 2 bytes | `−32,768` ~ `32,767` | | -| `signed short int` | 2 bytes | `−32,768` ~ `32,767` | | -| `unsigned short int` | 2 bytes | `0` ~ `65,535` | | -| `long int` | 4 bytes | `-2,147,483,648` ~ `2,147,483,647` | | -| `signed long int` | 4 bytes | `-2,147,483,648` ~ `2,147,483,647` | | -| `unsigned long int` | 4 bytes | `0` ~ `4,294,967,295` | | -| `float` | 4 bytes | `3.4E-38` ~ `3.4E+38` | | -| `double` | 8 bytes | `1.7E-308` ~ `1.7E+308` | | -| `long double` | 10 bytes | `3.4E-4932` ~ `1.1E+4932` | | - - +| Data Type | Size | Range | Description | +| -------------------- | ---------------- | ---------------------------------- | :---------------------------------- | +| `char` | 1 byte | `−128` ~ `127` | single character/alphanumeric/ASCII | +| `signed char` | 1 byte | `−128` ~ `127` | | +| `unsigned char` | 1 byte | `0` ~ `255` | | +| `int` | `2` to `4` bytes | `−32,768` ~ `32,767` | store integers | +| `signed int` | 2 bytes | `−32,768` ~ `32,767` | | +| `unsigned int` | 2 bytes | `0` ~ `65,535` | | +| `short int` | 2 bytes | `−32,768` ~ `32,767` | | +| `signed short int` | 2 bytes | `−32,768` ~ `32,767` | | +| `unsigned short int` | 2 bytes | `0` ~ `65,535` | | +| `long int` | 4 bytes | `-2,147,483,648` ~ `2,147,483,647` | | +| `signed long int` | 4 bytes | `-2,147,483,648` ~ `2,147,483,647` | | +| `unsigned long int` | 4 bytes | `0` ~ `4,294,967,295` | | +| `float` | 4 bytes | `3.4E-38` ~ `3.4E+38` | | +| `double` | 8 bytes | `1.7E-308` ~ `1.7E+308` | | +| `long double` | 10 bytes | `3.4E-4932` ~ `1.1E+4932` | | + +{.show-header} ### Data types @@ -677,41 +621,39 @@ printf("%c\n", myLetter); printf("%lf\n", myDouble); ``` ----- - -Data Type | Description -:-| :- -`char` | character type -`short` | short integer -`int` | integer type -`long` | long integer -`float` | single-precision floating-point type -`double` | double-precision floating-point type -`void` | no type - +--- +| Data Type | Description | +| :-------- | :----------------------------------- | +| `char` | character type | +| `short` | short integer | +| `int` | integer type | +| `long` | long integer | +| `float` | single-precision floating-point type | +| `double` | double-precision floating-point type | +| `void` | no type | ### Basic format specifiers -| format specifier | data type | -| -----| -----| -| `%d` or `%i` | `int` integer | -| `%f` | `float` single-precision decimal type | -| `%lf` | `double` high precision floating point data or number | -| `%c` | `char` character | -| `%s` | for `strings` strings | - - +| Format Specifier | Data Type | +| ---------------- | :---------------------------------------------------- | +| `%d` or `%i` | `int` integer | +| `%f` | `float` single-precision decimal type | +| `%lf` | `double` high precision floating point data or number | +| `%c` | `char` character | +| `%s` | for `strings` strings | -### Basic format specifiers +{.show-header} -| | short | int | long | -| ----| ----| ----| ----| -| Octal | `%ho` | `%o` | `%lo` | -| Decimal | `%hd` | `%d` | `%ld` | -| Hexadecimal | `%hx` /`%hX` | `%x` /`%X` | `%lx` /`%lX` | +### Separate base format specifiers +| Format | Short | Int | Long | +| ----------- | ------------- | ----------- | :------------ | +| Octal | `%ho` | `%o` | `%lo` | +| Decimal | `%hd` | `%d` | `%ld` | +| Hexadecimal | `%hx` / `%hX` | `%x` / `%X` | `%lx` / `%lX` | +{.show-header} ### Data format example @@ -725,26 +667,25 @@ printf("%f\n", myFloatNum); printf("%c\n", myLetter); ``` -C Preprocessor ---- - - +## C Preprocessor ### Preprocessor Directives {.row-span-2} -command | description -----| ---- -`#define` | define a macro -`#include` | include a source code file -`#undef` | undefined macro -`#ifdef` | Returns true if the macro is defined -`#ifndef` | Returns true if the macro is not defined -`#if` | Compile the following code if the given condition is true -`#else` | Alternative to `#if` -`#elif` | If the `#if` condition is false, the current condition is `true` -`#endif` | End a `#if...#else` conditional compilation block -`#error` | Print an error message when standard error is encountered -`#pragma` | Issue special commands to the compiler using the standardized method +| Directive | Description | +| ---------- | :------------------------------------------------------------------- | +| `#define` | define a macro | +| `#include` | include a source code file | +| `#undef` | undefined macro | +| `#ifdef` | Returns true if the macro is defined | +| `#ifndef` | Returns true if the macro is not defined | +| `#if` | Compile the following code if the given condition is true | +| `#else` | Alternative to `#if` | +| `#elif` | If the `#if` condition is false, the current condition is `true` | +| `#endif` | End a `#if...#else` conditional compilation block | +| `#error` | Print an error message when standard error is encountered | +| `#pragma` | Issue special commands to the compiler using the standardized method | + +{.show-header} ```c // replace all MAX_ARRAY_LENGTH with 20 @@ -757,40 +698,35 @@ command | description #define FILE_SIZE 42 // undefine and define to 42 ``` - - ### Predefined macros {.row-span-2} -macro | description -----| ---- -`__DATE__` | The current date, a character constant in the format "MMM DD YYYY" -`__TIME__` | The current time, a character constant in the format "HH:MM:SS" -`__FILE__` | This will contain the current filename, a string constant -`__LINE__` | This will contain the current line number, a decimal constant -`__STDC__` | Defined as `1` when the compiler compiles against the `ANSI` standard - - -`ANSI C` defines a number of macros that you can use, but you cannot directly modify these predefined macros +| Macro | Description | +| ---------- | :-------------------------------------------------------------------- | +| `__DATE__` | The current date, a character constant in the format "MMM DD YYYY" | +| `__TIME__` | The current time, a character constant in the format "HH:MM:SS" | +| `__FILE__` | This will contain the current filename, a string constant | +| `__LINE__` | This will contain the current line number, a decimal constant | +| `__STDC__` | Defined as `1` when the compiler compiles against the `ANSI` standard | +{.show-header} +`ANSI C` defines a number of macros that you can use, but you cannot directly modify these predefined macros #### Predefined macro example ```c #include -int main() { - printf("File :%s\n", __FILE__); - printf("Date :%s\n", __DATE__); - printf("Time :%s\n", __TIME__); - printf("Line :%d\n", __LINE__); - printf("ANSI :%d\n", __STDC__); +int main(void) { + printf("File: %s\n", __FILE__); + printf("Date: %s\n", __DATE__); + printf("Time: %s\n", __TIME__); + printf("Line: %d\n", __LINE__); + printf("ANSI: %d\n", __STDC__); } ``` - - -### Macro continuation operator (\) +### Macro continuation operator (\\) A macro is usually written on a single line. @@ -801,8 +737,6 @@ A macro is usually written on a single line. If the macro is too long to fit on a single line, use the macro continuation operator `\` - - ### String Constantization Operator (#) ```c @@ -817,6 +751,7 @@ int main(void) { return 0; } ``` + When the above code is compiled and executed, it produces the following result: ``` @@ -825,14 +760,12 @@ Carole and Debra: We love you! When you need to convert a macro parameter to a string constant, use the string constant operator `#` - - ### tag paste operator (##) ```c #include -#define tokenpaster(n) printf ("token" #n " = %d", token##n) +#define tokenpaster(n) printf ("Token " #n " = %d\n", token##n) int main(void) { int token34 = 40; @@ -842,8 +775,6 @@ int main(void) { } ``` - - ### defined() operator ```c @@ -860,8 +791,6 @@ int main(void) { } ``` - - ### Parameterized macros ```c @@ -889,16 +818,13 @@ int main(void) { } ``` -C Function ----- - - +## C Function ### Function declaration and definition {.row-span-2} ```c int main(void) { - printf("Hello World!"); + printf("Hello World!\n"); return 0; } @@ -912,11 +838,12 @@ void myFunction() { // declaration declaration } ``` ----- +--- + - `Declaration` declares the function name, return type and parameters _(if any)_ - `Definition` function body _(code to execute)_ ----- +--- ```c // function declaration @@ -929,18 +856,16 @@ int main() { } void myFunction() {// Function definition - printf("Good evening!"); + printf("Good evening!\n"); } ``` - - ### Call function ```c // create function void myFunction() { - printf("Good evening!"); + printf("Good evening!\n"); } int main() { @@ -953,8 +878,6 @@ int main() { // Output -> "Good evening!" ``` - - ### Function parameters ```c @@ -972,8 +895,6 @@ int main() { // Hello Jenny ``` - - ### Multiple parameters ```c @@ -990,8 +911,6 @@ int main() { // Hi Jenny you are 14 years old. ``` - - ### Return value {.row-span-2} ```c @@ -1000,13 +919,13 @@ int myFunction(int x) { } int main() { - printf("Result: %d", myFunction(3)); + printf("Result: %d\n", myFunction(3)); return 0; } // output 8 (5 + 3) ``` -two parameters +Two parameters ```c int myFunction(int x, int y) { @@ -1014,10 +933,10 @@ int myFunction(int x, int y) { } int main() { - printf("Result: %d", myFunction(5, 3)); + printf("Result: %d\n", myFunction(5, 3)); // store the result in a variable int result = myFunction(5, 3); - printf("Result = %d", result); + printf("Result = %d\n", result); return 0; } @@ -1025,8 +944,6 @@ int main() { // result = 8 (5 + 3) ``` - - ### Recursive example ```c @@ -1034,7 +951,7 @@ int sum(int k); int main() { int result = sum(10); - printf("%d", result); + printf("%d\n", result); return 0; } @@ -1048,22 +965,20 @@ int sum(int k) { } ``` - - ### Mathematical functions ```c #include void main(void) { - printf("%f", sqrt(16)); // square root - printf("%f", ceil(1.4)); // round up (round) - printf("%f", floor(1.4)); // round down (round) - printf("%f", pow(4, 3)); // x(4) to the power of y(3) + printf("%f\n", sqrt(16)); // square root + printf("%f\n", ceil(1.4)); // round up (round) + printf("%f\n", floor(1.4)); // round down (round) + printf("%f\n", pow(4, 3)); // x(4) to the power of y(3) } ``` ----- +--- - `abs(x)` absolute value - `acos(x)` arc cosine value @@ -1075,10 +990,7 @@ void main(void) { - `sin(x)` the sine of x - tangent of `tan(x)` angle -C Structures ---- - - +## C Structures ### Create structure @@ -1104,8 +1016,6 @@ int main() { } ``` - - ### Strings in the structure ```c{9} @@ -1119,15 +1029,13 @@ int main() { struct myStructure s1; strcpy(s1. myString, "Some text"); // print value - printf("my string: %s", s1.myString); + printf("My string: %s\n", s1.myString); return 0; } ``` -Assigning values ​​to strings using the `strcpy` function - - +Assigning values to strings using the `strcpy` function ### Accessing structure members {.row-span-2} @@ -1169,8 +1077,6 @@ s2.myNum = 20; s2.myLetter = 'C'; ``` - - ### Copy structure ```c{6} @@ -1184,8 +1090,6 @@ s2 = s1; In the example, the value of `s1` is copied to `s2` - - ### Modify value ```c{6,7} @@ -1197,54 +1101,51 @@ struct myStructure s1 = { s1.myNum = 30; s1.myLetter = 'C'; // print value -printf("%d %c %s", +printf("%d %c", s1.myNum, s1.myLetter); ``` -file processing ---- - - +## File Processing ### File processing function -function | description Description -----| ---- -`fopen()` | `open` a new or existing file -`fprintf()` | write data to `file` -`fscanf()` | `read` data from a file -`fputc()` | write a character to `file` -`fgetc()` | `read` a character from a file -`fclose()` | `close` the file -`fseek()` | set the file pointer to `the given position` -`fputw()` | Write an integer `to` a file -`fgetw()` | `read` an integer from a file -`ftell()` | returns the current `position` -`rewind()` | set the file pointer to the beginning of the file +| Function | Description | +| ----------- | :------------------------------------------------ | +| `fopen()` | `open` a new or existing file | +| `fprintf()` | write data to `file` | +| `fscanf()` | `read` data from a file | +| `fputc()` | write a character to `file` | +| `fgetc()` | `read` a character from a file | +| `fclose()` | `close` the file | +| `fseek()` | set the file pointer to `the given position` | +| `fputw()` | Write an integer `to` a file | +| `fgetw()` | `read` an integer from a file | +| `ftell()` | returns the current `position` | +| `rewind()` | set the file pointer to the beginning of the file | + +{.show-header} There are many functions in the C library to `open`/`read`/`write`/`search` and `close` files - - ### Open mode parameter -Mode Mode | Description Description -----| ---- -`r` | Open a text file in `read` mode, allowing the file to be read -`w` | Open a text file in `write` mode, allowing writing to the file -`a` | Open a text file in `append` mode
If the file does not exist, a new one will be created -`r+` | Open a text file in `read-write` mode, allowing reading and writing of the file -`w+` | Open a text file in `read-write` mode, allowing reading and writing of the file -`a+` | Open a text file in `read-write` mode, allowing reading and writing of the file -`rb` | Open a binary file in `read` mode -`wb` | Open binary file in `write` mode -`ab` | Open a binary file in `append` mode -`rb+` | open binary file in `read-write` mode -`wb+` | Open binary file in `read-write` mode -`ab+` | open binary file in `read-write` mode - - +| Mode | Description | +| ----- | :---------------------------------------------------------------------------------------------------------- | +| `r` | Open a text file in `read` mode, allowing the file to be read | +| `w` | Open a text file in `write` mode, allowing writing to the file | +| `a` | Open a text file in `append` mode
If the file does not exist, a new one will be created | +| `r+` | Open a text file in `read-write` mode, allowing reading and writing of the file | +| `w+` | Open a text file in `read-write` mode, allowing reading and writing of the file | +| `a+` | Open a text file in `read-write` mode, allowing reading and writing of the file | +| `rb` | Open a binary file in `read` mode | +| `wb` | Open binary file in `write` mode | +| `ab` | Open a binary file in `append` mode | +| `rb+` | open binary file in `read-write` mode | +| `wb+` | Open binary file in `read-write` mode | +| `ab+` | open binary file in `read-write` mode | + +{.show-header} ### Open the file: fopen() @@ -1269,8 +1170,6 @@ void main() { After performing all operations on the file, the file must be closed with `fclose()` - - ### Write to file: fprintf() ```c{7} @@ -1286,8 +1185,6 @@ void main() { } ``` - - ### Read the file: fscanf() ```c{6} @@ -1306,8 +1203,6 @@ void main() { } ``` - - ### Write to file: fputc() ```c{6} @@ -1321,8 +1216,6 @@ void main() { } ``` - - ### Read the file: fgetc() ```c{8} @@ -1346,8 +1239,6 @@ void main() { } ``` - - ### Write to file: fputs() ```c {8} @@ -1367,8 +1258,6 @@ void main() { } ``` - - ### Read files: fgets() ```c {10} @@ -1389,8 +1278,6 @@ void main() { } ``` - - ### fseek() ```c{8} @@ -1410,9 +1297,7 @@ void main(void) { } ``` -set the file pointer to the given position - - +Set the file pointer to the given position ### rewind() @@ -1445,8 +1330,6 @@ void main() { // Hello World! Hello World! ``` - - ### ftell() ```c{11} diff --git a/source/_posts/canvas.md b/source/_posts/canvas.md new file mode 100644 index 00000000..256333f1 --- /dev/null +++ b/source/_posts/canvas.md @@ -0,0 +1,243 @@ +--- +title: HTML Canvas +date: 2024-05-28 22:16:42 +background: bg-[#cc5534] +tags: + - web +categories: + - Programming +intro: | + This HTML Canvas quick reference cheat sheet lists the common HTML5 Canvas design tags in readable layout. +plugins: + - copyCode + - runCode +--- + +## Getting Started + +### Basic Setup + +```html + + + + Canvas Example + + + + + + +``` + +### Getting the Context + +```js +const canvas = document.getElementById('myCanvas'); +const ctx = canvas.getContext('2d'); +``` + +## Drawing Shapes + +### Rectangles + +```js +ctx.fillStyle = 'red'; +ctx.fillRect(10, 10, 150, 100); // x, y, width, height + +ctx.strokeStyle = 'blue'; +ctx.lineWidth = 5; +ctx.strokeRect(200, 10, 150, 100); // x, y, width, height + +ctx.clearRect(15, 15, 30, 30); // x, y, width, height +``` + +## Paths + +### Lines + +```js +ctx.beginPath(); +ctx.moveTo(50, 50); // Starting point +ctx.lineTo(200, 50); // Ending point +ctx.lineTo(200, 200); // Next line ending point +ctx.closePath(); // Connects the end point to the start point +ctx.stroke(); +``` + +### Circles + +```js +ctx.beginPath(); +ctx.arc(150, 150, 75, 0, 2 * Math.PI); // x, y, radius, startAngle, endAngle +ctx.fillStyle = 'green'; +ctx.fill(); +ctx.stroke(); +``` + +### Arcs + +```js +ctx.beginPath(); +ctx.arc(150, 150, 75, 0, Math.PI); // x, y, radius, startAngle, endAngle +ctx.stroke(); +``` + +## Bezier and Quadratic Curves + +### Quadratic Curve + +```js +ctx.beginPath(); +ctx.moveTo(50, 250); +ctx.quadraticCurveTo(200, 100, 400, 250); // cpX, cpY, endX, endY +ctx.stroke(); +``` + +### Bezier Curve + +```js +ctx.beginPath(); +ctx.moveTo(50, 300); +ctx.bezierCurveTo(150, 100, 350, 500, 450, 300); // cp1X, cp1Y, cp2X, cp2Y, endX, endY +ctx.stroke(); +``` + +### Text + +```js +ctx.font = '30px Arial'; +ctx.fillStyle = 'black'; +ctx.fillText('Hello Canvas', 10, 50); // text, x, y + +ctx.strokeText('Hello Canvas', 10, 100); // text, x, y +``` + +### Images + +```js +const img = new Image(); +img.src = 'path/to/image.jpg'; +img.onload = () => { + ctx.drawImage(img, 10, 10); // img, x, y + ctx.drawImage(img, 50, 50, 100, 100); // img, x, y, width, height + ctx.drawImage(img, 100, 100, 100, 100, 150, 150, 200, 200); // img, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight +}; +``` + +## Transformations + +### Translation + +```js +ctx.translate(100, 100); // x, y +ctx.fillRect(0, 0, 50, 50); +``` + +### Rotation + +```js +ctx.rotate((Math.PI / 180) * 45); // Angle in radians +ctx.fillRect(100, 100, 50, 50); +``` + +### Scaling + +```js +ctx.scale(2, 2); // x, y +ctx.fillRect(50, 50, 50, 50); +``` + +## Gradients + +### Linear Gradient + +```js +const linearGradient = ctx.createLinearGradient(0, 0, 200, 0); // x0, y0, x1, y1 +linearGradient.addColorStop(0, 'red'); +linearGradient.addColorStop(1, 'blue'); +ctx.fillStyle = linearGradient; +ctx.fillRect(10, 10, 200, 100); +``` + +### Radial Gradient + +```js +const radialGradient = ctx.createRadialGradient(75, 50, 5, 90, 60, 100); // x0, y0, r0, x1, y1, r1 +radialGradient.addColorStop(0, 'red'); +radialGradient.addColorStop(1, 'blue'); +ctx.fillStyle = radialGradient; +ctx.fillRect(10, 10, 200, 100); +``` + +### Patterns + +```js +const img = new Image(); +img.src = 'path/to/image.jpg'; +img.onload = () => { + const pattern = ctx.createPattern(img, 'repeat'); // 'repeat', 'repeat-x', 'repeat-y', 'no-repeat' + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 300, 300); +}; +``` + +### Shadows + +```js +ctx.shadowColor = 'rgba(0, 0, 0, 0.5)'; +ctx.shadowBlur = 10; +ctx.shadowOffsetX = 5; +ctx.shadowOffsetY = 5; + +ctx.fillStyle = 'red'; +ctx.fillRect(100, 100, 100, 100); +``` + +## Compositing + +### Global Alpha + +```js +ctx.globalAlpha = 0.5; +ctx.fillStyle = 'red'; +ctx.fillRect(100, 100, 100, 100); + +ctx.fillStyle = 'blue'; +ctx.fillRect(150, 150, 100, 100); +``` + +### Global Composite Operation + +```js +ctx.globalCompositeOperation = 'source-over'; // Default +ctx.fillStyle = 'red'; +ctx.fillRect(100, 100, 100, 100); + +ctx.globalCompositeOperation = 'destination-over'; +ctx.fillStyle = 'blue'; +ctx.fillRect(150, 150, 100, 100); +``` + +### Animations + +```js +let x = 0; +function draw() { + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = 'blue'; + ctx.fillRect(x, 100, 50, 50); + x += 2; + requestAnimationFrame(draw); +} +draw(); +``` + +## Also read + +- [MDN doc ](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) diff --git a/source/_posts/chatgpt.md b/source/_posts/chatgpt.md index 7f176478..ab661d0e 100644 --- a/source/_posts/chatgpt.md +++ b/source/_posts/chatgpt.md @@ -3,725 +3,1015 @@ title: ChatGPT date: 2023-02-09 10:28:43 background: bg-[#4aa181] tags: - - AI - - OpenAI - - Prompts - - Tips + - AI + - OpenAI + - Prompts + - Tips categories: - - Toolkit + - Toolkit intro: This cheat sheet lists out prompts and tips from all over the world on how to use ChatGPT effectively plugins: - - copyCode + - copyCode --- -Getting Started ---------------- - - -### General -- **Name your business or idea** - ``` {.wrap} - Can you suggest a creative name for my tech startup? - ``` - ``` {.wrap} - Help me come up with a catchy name for my bakery business. - ``` -- **Create an outline for a course or training program** - ``` {.wrap} - Please create an outline for a course on web development for beginners. - ``` - ``` {.wrap} - Can you make a training program outline for a customer service workshop? - ``` -- **Ask you interview questions for a specific job** - ``` {.wrap} - I'm interviewing for a software engineer position, can you give me some interview questions? - ``` - ``` {.wrap} - Please provide me with some common interview questions for a marketing manager role. - ``` -- **Give you gift ideas for business partners, customers, or clients** - ``` {.wrap} - I need gift ideas for my clients, can you help? - ``` - ``` {.wrap} - What are some unique gifts I can give to my business partners? - ``` -- **Choose a random contest winner(s) from a long list of names or emails** - ``` {.wrap} - I want to choose a winner from a list of 100 names, can you help? - ``` - ``` {.wrap} - Can you randomly pick 5 email addresses from a list of 1000 for a giveaway contest? - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) - - - -### Coding - -- **Explain why a piece of code isn't working** - ``` {.wrap} - Why this code is not working? - var x = 5; - var y = 0; - console.log(x/y); - ``` -- **Explain what a piece of code means** - ``` {.wrap} - What this code does? - function addNumbers(a, b) { - return a + b; - } - ``` -- **Rewrite the code using the specified language** - ``` {.wrap} - Translate this code into Python: - function addNumbers(a, b) { - return a + b; - } - ``` -- **Code an entire software program** - ``` {.wrap} - Write a program that calculates the factorial of a given number in python? - ``` - ``` {.wrap} - How do I make an HTTP request in JavaScript? - ``` -- **Generate regular expressions (regex)** - ``` {.wrap} - Create a regex that matches all email addresses? - ``` - ``` {.wrap} - Generate 8-digit password regex - ``` - ``` -- **Add comments to your codebase** - ``` {.wrap} - Add comments to this code: - function addNumbers(a, b) { - return a + b; - } - ``` -- **Change the CSS of a line of code** - ``` {.wrap} - Update the CSS for this line to change the font color to blue? -

Hello, CheatSheets.zip!

- ``` -- **Change the HTML of a line of code** - ``` {.wrap} - Add a class of "header" to this header tag? -

Hello, CheatSheets.zip!

- ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +## Glossary + +### AI + +- Prompt: input or query that guides an AI model in generating a + response.[[s]](https://time.com/collections/the-ai-dictionary-from-allbusiness-com/7273982/definition-of-prompt-ai-prompt) +- Tokens: the smallest units of text processed by an AI model (e.g., words, subwords, characters, and punctuation marks) + that varies depending on the model and the tokenization + method.[[s]](https://time.com/collections/the-ai-dictionary-from-allbusiness-com/7273998/definition-of-token/) +- Token Limit: the maximum number of tokens an AI model can process in one + interaction.[[s]](https://time.com/collections/the-ai-dictionary-from-allbusiness-com/7273998/definition-of-token/) +- Artificial intelligence (AI): technology that enables machines to simulate human cognition (e.g., human learning, + comprehension, problem solving, decision making, creativity, and + autonomy).[[s]](https://www.ibm.com/think/topics/artificial-intelligence) +- AI Model: program trained on a set of data to recognize patterns or make decisions without further human + intervention.[[s]](https://www.ibm.com/think/topics/ai-model) +- Large language model (LLM): transformer-based AI model trained on large text datasets to understand and generate + natural language.[[s]](https://www.ibm.com/think/topics/large-language-models) +- Hallucination: AI response that detects nonexistent patterns and creates outputs that are nonsensical and + inaccurate.[[s]](https://www.ibm.com/think/topics/ai-hallucinations) +- Jailbreak: exploiting vulnerabilities in AI systems to bypass their ethical guidelines and perform restricted + actions.[[s]](https://www.ibm.com/think/insights/ai-jailbreak) + +### Prompt Engineering Techniques + +- Zero-shot: prompt with no examples.[[s]](https://www.ibm.com/think/topics/zero-shot-prompting) +- One-shot: prompt with one example.[[s]](https://www.ibm.com/think/topics/one-shot-prompting) +- Few-shot: prompt with multiple examples.[[s]](https://www.ibm.com/think/topics/few-shot-prompting) +- Chain of thought: prompt guiding the model to break down complex reasoning into intermediate + steps.[[s]](https://cloud.google.com/discover/what-is-prompt-engineering?hl=en) + +### Modes + +- Study and learn: interactive learning that encourages step by step problem solving instead of giving direct + answers.[[s]](https://openai.com/index/chatgpt-study-mode/) +- Create image: generate images from text + prompts.[[s]](https://help.openai.com/en/articles/9260256-chatgpt-capabilities-overview) +- Think longer: performs deeper reasoning and generates more accurate, thoughtful, and detailed + responses.[[s]](https://openai.com/index/introducing-gpt-5) +- Deep research: reads and synthesizes content across multiple online sources and produces cited structured + outputs.[[s]](https://help.openai.com/en/articles/9260256-chatgpt-capabilities-overview) +- Web search: finds recent and real-time information + online.[[s]](https://help.openai.com/en/articles/9260256-chatgpt-capabilities-overview) +- Canvas: separate interface for collaborative writing and coding that provides inline editing, suggestions, and + feedback.[[s]](https://openai.com/index/introducing-canvas/) + +## Prompt Tips + +### Efficiency + +- Use the latest model as it's generally more capable and easier to + prompt.[[s]](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api) +- Provide general instructions at the start of conversations or when changing direction to avoid repeating them. +- Don't say polite phrases to the AI (e.g., please, thank you) as it adds unecessary computational + costs.[[s]](https://www.techradar.com/computing/artificial-intelligence/chatgpt-spends-tens-of-millions-of-dollars-on-people-playing-please-and-thank-you-but-sam-altman-says-its-worth-it?utm_source=chatgpt.com) +- Don't explicitly ask the AI for help (e.g., can you help me do x?). +- Don't explicitly reference yourself unless clarifying multiple entities (e.g., I want to, do x for me). + +### Clarity + +- Be clear, specific, and provide enough context for the model to understand what you are + asking.[[s]](https://help.openai.com/en/articles/10032626-prompt-engineering-best-practices-for-chatgpt) +- Prompt engineering often requires iterative refinement by adjusting wording, adding context, and simplifying + requests.[[s]](https://help.openai.com/en/articles/10032626-prompt-engineering-best-practices-for-chatgpt) +- Break complex tasks into smaller focused + prompts.[[s]](https://help.openai.com/en/articles/4936848-how-do-i-create-a-good-prompt-for-an-ai-model) +- Specify focus areas, highlight important aspects, and ask for multiple + options.[[s]](https://help.openai.com/en/articles/4936848-how-do-i-create-a-good-prompt-for-an-ai-model) +- Provide examples of the desired output format to improve + accuracy.[[s]](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api) +- Focus on specifying what to do and not just what to + avoid.[[s]](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api) +- Before writing a prompt, identify the goal and expected + output.[[s]](https://www.techtarget.com/searchenterpriseai/definition/AI-prompt) +- Provide important keywords or phrases where possible to faciliate SEO and communicate term preferences to the AI + model.[[s]](https://www.techtarget.com/searchenterpriseai/definition/AI-prompt) +- Keep prompts precise and clean by omitting unnecessary or redundant + information.[[s]](https://www.techtarget.com/searchenterpriseai/definition/AI-prompt) +- Avoid conflicting terms that might confuse the + AI.[[s]](https://www.techtarget.com/searchenterpriseai/definition/AI-prompt) +- Open-ended questions usually provide more detailed responses than [closed-ended questions] and yes/no + questions.[[s]](https://www.techtarget.com/searchenterpriseai/definition/AI-prompt) +- When in doubt, ask AI to generate prompts for + you.[[s]](https://www.techtarget.com/searchenterpriseai/definition/AI-prompt) +### Security +- Don't share sensitive information with AI as you can't be certain how it's stored, if it will be shared, of if it's + vulnerable to data + breaches.[[s]](https://www.grantthornton.com/insights/articles/advisory/2023/anticipate-cybersecurity-and-privacy-risks-in-ai) +## Prompt Structure +### Prompt Frameworks + +General Purpose + +``` +[role] [task] [style] [output format] [constraint] +``` + +### Role + +Standard + +- Act as [occupation] with [specifications] +- [List of roles](https://github.com/f/awesome-chatgpt-prompts) + +Roleplay + +- Act as [name] with [visual description] [personality] [behaviour examples] [lore] in [scenario] + +### Tasks (Language And Text) {.secondary} + +[verb] [task] [specifics] + +Generate + +- Generate [content type] to [entity] about [topic] and cover [aspects] +- Generate random [names|numbers|words|ideas|X] matching [criteria] +- [Continue|extend|lengthen] + +Summarise + +- [Summarise|shorten|write concise|write key points|write main lesson] +- Create outline + +Refine + +- [Write better|improve] +- Paraphrase +- Correct spelling, grammar, and punctuation errors +- Change [narrative voice A] to [narrative voice B] +- Replace X with Y + +Explain + +- [Explain|elaborate] +- Explain [how to do|each step of] X +- Explain what X does +- Explain X [in simple terms|like I’m 5|simplify]; Simplify X +- Teach me about [topic|subject] +- Provide [example|analogy] + +Organize + +- Sort X by [key] in [order] +- Categorize + +Advise + +- Create [strategy|goals|milestones|roadmap|schedule|timeline] for X +- Recommend [media type] [on|similar to] [topic] +- Recommend [gifts|X] for [entity|occasion] +- Recommend improvements +- Provide [advice|feedback] for X + +Analyze + +- Extract [themes|keywords|info] about X +- Identify [similarities|differences] between X and Y +- Analyse the [sentiment|tone] of X +- Identify gaps in X +- Evaluate [strengths and weaknesses|pros and cons] of X +- Is X [comparison] Y? + +Translate + +- Translate [language A] into [language B] +- Convert [unit A] to [unit B] +- Reformat as [output format] + +Filter + +- Filter items where [condition] +- Choose best from [options] +- Choose [top|lowest|first|last|random] [quantity] from [options] + +Engage + +- Provide questions about X + +Research + +- Get up-to-date [facts|news|data] on X +- Find [sources|references|citations] for X +- Is this true? + +### Tasks (Meta) {.secondary} + +Chat Memory + +- Based on [previous context] do X + +### Tasks (Code) {.secondary} + +Generate + +- Generate code in [programming language] to do X + +Translate + +- Translate [programming language A] into [programming language B] + +Optimize + +- Optimize X for [benefit] + +Debug + +- Debug X and explain why it's doing Y + +### Tasks (Image) {.secondary} + +Generate + +- Generate image of X in [style] + +Edit + +- Edit image to have X + +### Tasks (File And Image Upload) {.secondary} + +Explain + +- Question what is shown +- Interpet visuals + +Analysis + +- Extract data + +### Task (5W1H Questions) {.secondary} + +Who + +- Who is X? +- Who is [involved|affected by|responsible] for X? +- Who should I contact for help with X? + +What + +- [What is|define|explain|describe] X? +- What are the key topics of X? +- What does [quote] mean? +- [What is done well?|what can be improved?] +- What is the best way to do X? + +When + +- When [did|will] X happen? +- When is the best time to do X? + +Where + +- Where did X take place? +- Where to find X? + +Why + +- Why did X happen? +- Why is this approach used? +- Why is X important? +- Why might X succeed or fail? +- Why is X preferable to Y? + +How + +- How to do X? +- How does X work? +- How did this happen? + +### Style + +Using [style] + +Imitate + +- Using style of [person|brand|genre|character] + +Formality + +- Formal +- Informal + +Directness + +- Direct +- Indirect + +Tones + +Positive + +- Optimistic +- Appreciative +- Assertive +- Calm +- Confident +- Encouraging +- Friendly +- Humorous +- Inspirational + +Negative + +- Pessimistic +- Accusatory +- Concerned +- Critical +- Regretful +- Sarcastic +- Urgent + +### Output Format (Text) {.secondary} + +In [output format] + +Paragraphs + +- Paragraphs **_(default)_** + +List + +- Bulleted list +- Numbered list +- Check list + +Code + +- Code + +Instructions + +- Step-by-step instructions + +Knowledge Base + +- Q&A +- FAQ + +Creative Writing + +- [Joke|humour] +- [Lyrics|song] +- [Metaphorical|stylized language] +- Poetry +- [Script|screenplay|dialogue] +- [Story|narrative] + +Games + +- [Quiz|test|flashcards|drills] +- [Riddle|puzzle] +- [rpg|choose-your-own-adventure] + +### Output Format (Visual) {.secondary} + +Data Visualization + +- Table +- [Chart type] chart + +Creative Visual + +- ASCII Art +- Emojis +- Word cloud + +### Output Format (File Type) {.secondary} + +Document + +- PDF + +Structured Data And Markup + +- Plain text +- Markdown +- HTML +- XML +- CSV +- JSON +- LaTeX + +Programming Code And Scripting + +- [Programming language] +- Pseudocode +- Regular expression + +### Constraint + +But [constraint] + +Length + +- Be [extremely detailed|concise] +- In [quantity] [words|sentences] + +Language + +- No jargon or technical terms + +Structure + +- Show [quantity] [examples|options] +- No headers +- No pretext titles + +Voice And Style + +- Use [first-person|second-person|third-person] narrative voice +- Don't change the wording +- Use pop culture references + +Edits + +- Do [minor|major] edits +- Only show [changed|unchanged] content + +## Examples + +### Job + +Name Business + +```{.wrap} +Suggest creative name for tech startup +``` + +```{.wrap} +Suggest catchy names for bakery business +``` + +Interview Questions + +```{.wrap} +Suggest common software engineer interview questions +``` + +Create Course Outline + +```{.wrap} +Create course outline on web development for beginners +``` + +```{.wrap} +Create training program outline for customer service workshop +``` + +### Relationship + +Gift Ideas + +```{.wrap} +Suggest gift ideas for clients +``` + +```{.wrap} +Suggest gift ideas for clients who work as flourists +``` + +```{.wrap} +Suggest gift ideas for my wife who loves steampunk art and crafts, mystery sci-fi, journalling +``` + +```{.wrap} +Suggest creative ideas for 10 year old’s birthday +``` + +### Competition + +Select Contest Winners + +```{.wrap} +Randomly select 1 name from this list +``` + +```{.wrap} +Randomly select 5 email addresses from this list +``` + +```{.wrap} +Select top 3 records with the shortest lap times from this list +``` + +### Programming + +Create Code + +```{.wrap} +Create program to calculate the factorial of given number in python +``` + +Create Regular Expressions + +```{.wrap} +Create regex to match all email addresses in list +``` + +```{.wrap} +Create regex to match all words that start with "ban" +``` + +```{.wrap} +Create regex to match 8-digit password +``` + +Explain Code + +```{.wrap} +Explain why code not working +``` + +```{.wrap} +Explain what code does +``` + +```{.wrap} +Explain how to make a HTTP request in javascript +``` + +Update Code + +```{.wrap} +Add code comments +``` + +```{.wrap} +Add class "header" to header tag +``` + +```{.wrap} +Update CSS to change font color to blue +``` + +Translate + +- Specifically called transpile when addressing programming languages. + +```{.wrap} +Translate code to Python +``` ### Email -- **Creating email campaigns** - ``` {.wrap} - Email inviting Jack to dinner on the weekend - ``` - ``` {.wrap} - Create an email sequence for our new customer onboarding process - ``` - ``` -- **Format and proofread email** - ``` {.wrap} - Proofread and format this email I just wrote: - Hello, do you have any actual tips or tricks for ChatGPT please? - ``` -- **Provides tips for effective email marketing** - ``` {.wrap} - Give me some tips on how to increase open and click-through rates for my email campaigns - ``` - ``` {.wrap} - Suggest ways to make my email content more engaging and relevant to my subscribers. - ``` - ``` -- **Automate email responses** - ``` {.wrap} - Email him, "That's a good suggestion, it's coming soon": - Hello, do you have any actual tips or tricks for ChatGPT please? - ``` -- **Extract email address from text** - ``` {.wrap} - Extract all email addresses for me: - Sed sit amet sodales tom@gmail.com, at jack@cheatsheets.zip enim. 18261@outlook.com ut eros - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) - - - - -### Spreadsheets -- **Help create a spreadsheet formula** - ``` {.wrap} - Can you help me create a formula to calculate the sum of cells A1 to A10? - ``` -- **Explain a formula to you** - ``` {.wrap} - Can you explain the meaning of the formula =SUM(A1:A10) in simple terms? - ``` -- **Create dummy data for placeholders** - ``` {.wrap} - Can you generate dummy data for me to use as placeholders in my spreadsheet? - ``` -- **Help create a complex macro** - ``` {.wrap} - I need to create a macro that calculates the average of cells B1 to B10 and inserts the result in cell C1. Can you help me with that? - ``` -- **Provide tips for improving spreadsheet efficiency** - ``` {.wrap} - Can you give me some tips on how to improve the efficiency of my spreadsheet? - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +Create Emails + +```{.wrap} +Write email inviting Jack to dinner on the weekend +``` + +```{.wrap} +Write email sequence for our new customer onboarding process +``` +```{.wrap} +Write email to inform staff of elevator maintenance on 23 June 2025, elevators unavailable for 24 hours, apologise for inconvenience +``` +```{.wrap} +Suggest response to message asking about project status +``` + +Format Email + +```{.wrap} +Proofread and format email +``` + +Email Marketing + +```{.wrap} +Suggest tips to increase open and click-through rates for my email campaigns +``` + +```{.wrap} +Suggest ways to make my email content more engaging and relevant to my subscribers +``` + +Extract Data + +```{.wrap} +Extract all email addresses in text +``` + +### Spreadsheet + +Create Something + +```{.wrap} +Create excel formula to calculate sum of cells A1 to A10 +``` + +```{.wrap} +Generate spreadsheet dummy data as a placeholder +``` + +```{.wrap} +Create macro to calculate average of cells B1 to B10 and insert result in cell C1 +``` + +Explain Something + +```{.wrap} +Explain formula =SUM(A1:A10) in simple terms +``` + +```{.wrap} +Suggest tips to improve spreadsheet efficiency +``` ### Social Media -- **Give you ideas for memes on any topic** - ``` {.wrap} - Can you give me some meme ideas for [dogs]? - ``` -- **Give you an idea for a post that can drive engagement on any topic** - ``` {.wrap} - I want to create a post about climate change that can engage my followers. Can you help me with some ideas? - ``` -- **Generate hashtags and captions** - ``` {.wrap} - I need some hashtags and a caption for a picture of a scenic sunset. Can you generate some for me? - ``` -- **Offer suggestions reply** - ``` {.wrap} - I just received an message asking about the status of a project. Can you suggest a reply for me? - ``` -{.collapsible} -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +Create Content +```{.wrap} +Suggest meme ideas for dogs +``` +```{.wrap} +Suggest climate change post ideas to engage my followers +``` +```{.wrap} +Generate hashtags and caption for a picture of scenic sunset +``` ### Reading -- **Summarize long selections of text** - ``` {.wrap} - Can you please summarize this article for me? [your text] - ``` -- **Translate foreign languages** - ``` {.wrap} - Can you translate this sentence into Spanish? [your text] - ``` -- **Books that are like another book** - ``` {.wrap} - Can you recommend books similar to 'The Hunger Games'? - ``` -{.collapsible} -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +Text Analysis + +```{.wrap} +Summarize article +``` + +```{.wrap} +Write concise main points +``` + +Translate +```{.wrap} +Translate to spanish +``` +Recommendations +```{.wrap} +Recommend books similar to Hunger Games +``` ### Design -- **Create an AI design prompt for you** - ``` {.wrap} - Can you help me generate a design prompt for a logo for a new sports brand? - ``` -- **Suggestions on thumbnails for blogs or videos** - ``` {.wrap} - Can you recommend some eye-catching thumbnail designs for my latest YouTube video on healthy eating? - ``` -- **Font pairings** - ``` {.wrap} - Can you suggest a font pairing for a travel blog header design? - ``` -- **Color pairings** - ``` {.wrap} - Can you recommend a color palette for a wedding photography website? - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) - - - -### Analyzing Data -- **Pull out numbers from large chunks of text** - ``` {.wrap} - Please extract all the numbers from this text: [your text] - ``` -- **Create tables from the text or data you provide** - ``` {.wrap} - Can you create a table from this data?: [your data] - ``` -- **Filter data from large lists** - ``` {.wrap} - Please filter this list based on certain criteria: [your list] - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +Design Prompts + +```{.wrap} +Create design prompt of logo for new sports brand +``` + +```{.wrap} +Suggest eye-catching thumbnail designs for youtube video on healthy eating +``` + +Aesthetic Pairings + +```{.wrap} +Suggest font pairing for travel blog header design +``` + +```{.wrap} +Suggest color palette for wedding photography website +``` + +### Data Analysis + +Data Extraction + +```{.wrap} +Extract all numbers from text +``` + +Data Filtering +```{.wrap} +Filter list based on [condition] +``` +Data Presentation + +```{.wrap} +Create table from data +``` ### Paid Ads -- **Give you ad creative ideas** - ``` {.wrap} - Give me ad creative ideas for a new product launch. - ``` -- **Review the tracking code for errors (tag manager, etc.)** - ``` {.wrap} - Review my tag manager code for errors - ``` -- **Give you ad copy ideas** - ``` {.wrap} - Suggest ad copy for a [travel] company - ``` -- **Facebook audience suggestions** - ``` {.wrap} - Recommend a Facebook audience for a clothing line ad campaign - ``` -- **Create body text, headlines and/or calls to action for your ads** - ``` {.wrap} - Create headlines, body text, and calls to action for a new fitness program ad. - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +Create Ad + +```{.wrap} +Suggest creative ideas for new product launch +``` + +```{.wrap} +Suggest ad copy for travel company +``` + +```{.wrap} +Create headlines, body text, and calls to action for new fitness program ad +``` +Ad Targeting +```{.wrap} +Recommend target Facebook audience for clothing line ad campaign +``` + +Ad Technical Support + +```{.wrap} +Review tag manager code for errors +``` ### Amazon FBA -- **Write or rewrite your product descriptions** - ``` {.wrap} - Please help me write a new and compelling product description for my latest item. - ``` -- **Write or rewrite appeal letters** - ``` {.wrap} - I need help rewriting my appeal letter to make it more persuasive. - ``` -- **Write or rewrite supplier outreach emails** - ``` {.wrap} - Can you please help me write an effective email to reach out to potential suppliers? - ``` -- **Help you find items that could be sold as bundles** - ``` {.wrap} - Please suggest some items that would make a good bundle for our customers. - ``` -- **Organize product and pricing data** - ``` {.wrap} - Can you help me organize my product and pricing information into a neat and manageable spreadsheet? - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) - - - - - -### Writing/Blogging -- **Create titles for any of your creative writing projects** - ``` {.wrap} - Titles for my short story collection: [your article] - ``` -- **Create outlines** - ``` {.wrap} - Outline for an essay on exercise - ``` -- **Generate content ideas** - ``` {.wrap} - Ideas for a blog on sustainable fashion? - ``` -- **Summarize any text you give it** - ``` {.wrap} - Summarize this article on renewable energy? [your article] - ``` -- **Create entire blog posts** - ``` {.wrap} - Blog post on [financial planning]? - ``` -- **Expand on a sentence, paragraph, or long text selection** - ``` {.wrap} - Expand this sentence on jazz music? [your sentence] - ``` -- **Change the tone of your writing** - ``` {.wrap} - Change tone of this report to conversational? [your report] - ``` -- **Proofread or edit your writing** - ``` {.wrap} - Proofread this article? [your article] - ``` -- **Format text with headings (great for blog posts)** - ``` {.wrap} - Format headings for my blog post? [your post] - ``` -- **Check any text for bias** - ``` {.wrap} - Check this article for bias? [your article] - ``` -- **Detect plagiarism in any text** - ``` {.wrap} - Detect plagiarism in this paper? [your paper] - ``` -- **Provide you with domain name ideas** - ``` {.wrap} - Domain name for my [gardening blog]? - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) - - - -### Teachers/Course Creators -- **Turn a list of facts or statistics into multiple-choice quizzes** - ``` {.wrap} - Can you turn this list of facts about world history into a multiple-choice quiz? [your list] - ``` -- **Assignment ideas on a specific topic** - ``` {.wrap} - I need some ideas for a history assignment on the American Revolution. Can you suggest some? - ``` -- **Create assigned groups from a list of students** - ``` {.wrap} - I have a list of 30 students in my class. Can you divide them into groups of 6 for group projects? - ``` -- **Create a curve based on test scores** - ``` {.wrap} - I need to create a grading curve for my class based on their test scores. Can you help? - ``` -- **Grade an assignment** - ``` {.wrap} - Can you grade this history essay and provide feedback on any areas for improvement? - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +Product Content +```{.wrap} +Write compelling product description for latest item +``` +Communication +```{.wrap} +Rewrite appeal letter to make it more persuasive +``` -### YouTube -- **Create timestamps from a transcript** - ``` {.wrap} - Can you create timestamps for this transcript of a podcast episode? [your transcript] - ``` -- **Convert YouTube videos to blog posts with formatting** - ``` {.wrap} - Can you turn this YouTube video about cooking into a blog post with headings and bullet points? [video link] - ``` -- **Come up with a video outline or script** - ``` {.wrap} - I need an outline for a video about the benefits of meditation. Can you help? - ``` -- **Create a response to a comment** - ``` {.wrap} - Can you write a thoughtful and polite response to this negative comment on my YouTube video? - ``` -- **Give you ideas for your thumbnails** - ``` {.wrap} - I need some ideas for a thumbnail for my video on 'DIY home decor'. Can you suggest some? - ``` -- **Analyze your script or transcript and tell you the tone of it** - ``` {.wrap} - Can you analyze this script for a video about environmental issues and tell me what the tone is? [your script] - ``` -- **Video ideas on any topic** - ``` {.wrap} - I want to make a series of videos about fashion. Can you suggest some ideas for individual episodes? - ``` -{.collapsible} - -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +```{.wrap} +Write effective email to reach out to potential suppliers +``` +Product Strategy +```{.wrap} +Suggest items that would make a good bundle for our customers +``` +```{.wrap} +Organize product and pricing information into a neat and manageable spreadsheet +``` -### Research -- **Help research anything that happened before 2021** - ``` {.wrap} - Explain quantum computing in simple terms - ``` +### Writing - ``` {.wrap} - Got any creative ideas for a 10 year old’s birthday? - ``` +Name Something - ``` {.wrap} - How do I make an HTTP request in JavaScript? - ``` +```{.wrap} +Suggest titles for short story +``` - ``` {.wrap} - Can you tell me about the events leading up to the American Civil War? - ``` +```{.wrap} +Suggest titles for article 10 options +``` - ``` {.wrap} - What can you tell me about the invention of the printing press? - ``` +```{.wrap} +Suggest domain name for gardening blog +``` - ``` {.wrap} - Can you research the history of the Olympic Games? - ``` +Content Creation - ``` {.wrap} - Can you give me information about the French Revolution? - ``` +```{.wrap} +Create outline for essay on exercise +``` - ``` {.wrap} - I'm interested in the history of the Byzantine Empire. Can you help me learn more? - ``` +```{.wrap} +Suggest ideas for blog on sustainable fashion +``` - ``` {.wrap} - etc... - ``` +```{.wrap} +Create blog post on financial planning +``` - ``` -{.collapsible} +```{.wrap} +Expand jazz music sentence +``` -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +Editing And Formatting +```{.wrap} +Change report tone to conversational +``` +```{.wrap} +Proofread article +``` -### SEO -- **Generate or find keywords** - ``` {.wrap} - Generate a list of related keywords for [topic] - ``` - - ``` {.wrap} - Identify long-tail keywords for [topic] content optimization - ``` - - ``` {.wrap} - Find top-performing keywords for [topic] - ``` - - ``` {.wrap} - Generate a list of LSI keywords for [topic] - ``` - - ``` {.wrap} - Find keywords with low competition for [topic] - ``` - - ``` {.wrap} - Create a list of synonyms for [topic] keywords - ``` - - ``` {.wrap} - Find the best keywords for [topic] PPC campaigns - ``` - - ``` {.wrap} - Find the best keywords for [topic] voice search optimization - ``` - - ``` {.wrap} - List the best keywords for [topic] featured snippets - ``` - - ``` {.wrap} - Find the best keywords for [topic] video optimization - ``` - - ``` {.wrap} - Find the best keywords for [topic] - ``` - - ``` {.wrap} - Find the best keywords for [topic] AMP optimization - ``` - - ``` {.wrap} - Find the best keywords for [topic] social media optimization - ``` - - ``` -- **More ChatGPT prompts about SEO** {.active} - ``` {.wrap} - Create meta descriptions and title tags for [topic] - ``` +```{.wrap} +Format headings for blog post +``` + +Evaluation + +```{.wrap} +Check for bias +``` + +```{.wrap} +Check for plagiarism +``` + +### Teacher - ``` {.wrap} - Find opportunities for internal linking related to [topic] - ``` +Teaching Support - ``` {.wrap} - Generate ideas for blog posts and article topics on [topic] - ``` +```{.wrap} +Convert work history fact list into multiple-choice quiz +``` - ``` {.wrap} - Research industry-specific terminology for use in [topic] content - ``` +```{.wrap} +Suggest ideas for history assignment on American Revolution +``` - ``` {.wrap} - Find authoritative websites to acquire backlinks for [topic] content - ``` +```{.wrap} +Divide list of 30 students into groups of 6 +``` - ``` {.wrap} - Create an XML sitemap example related to [topic] - ``` +```{.wrap} +Create grading curve for class based on their test scores +``` - ``` {.wrap} - Research the best meta tags for [topic] - ``` +```{.wrap} +Grade history essay and provide feedback on any areas for improvement +``` - ``` {.wrap} - Research the best internal linking structure for [topic] content - ``` +### YouTube + +Content Creation + +```{.wrap} +Create timestamps for podcast episode transcript +``` + +```{.wrap} +Convert youtube cooking video into blog post with headings and bullet points +``` - ``` {.wrap} - Generate a list of questions people ask about [topic] - ``` +```{.wrap} +Create outline for a video about the benefits of meditation +``` - ``` {.wrap} - Create a list of the best alt tags for images related to [topic] - ``` +```{.wrap} +Suggest thumbnail ideas for video on "DIY home decor" +``` - ``` {.wrap} - Create a list of related subtopics for [topic] - ``` +```{.wrap} +Suggest fashion video ideas for individual episodes +``` - ``` {.wrap} - Find the best time to publish content related to [topic] - ``` +Analyse - ``` {.wrap} - Research the best external linking strategies for [topic] - ``` - - ``` {.wrap} - Find the most popular tools used for [topic] SEO - ``` +```{.wrap} +What is the script tone for environmental issues video +``` - ``` {.wrap} - Create a list of potential influencers for [topic] - ``` +Communication + +```{.wrap} +Create thoughtful and polite response to negative comment on youtube video +``` + +### Research - ``` {.wrap} - Research the best schema markup for [topic] - ``` +History Research - ``` {.wrap} - Find the best header tags for [topic] content - ``` +```{.wrap} +Explain events leading up to American Civil War +``` - ``` {.wrap} - Create a list of potential link-building opportunities for [topic] - ``` +```{.wrap} +Provide key details about printing press invention +``` - ``` {.wrap} - Research the best anchor text for [topic] backlinks - ``` +```{.wrap} +Research olympic games history +``` - ``` {.wrap} - Create a list of potential guest blogging opportunities for [topic] - ``` +```{.wrap} +Provide key details about French Revolution +``` + +```{.wrap} +Explain history of Byzantine Empire +``` + +Science Reseearch + +```{.wrap} +Explain quantum computing in simple terms +``` + +```{.wrap} +Explain rocket science like i'm five +``` + +### SEO - ``` {.wrap} - Research the best local SEO strategies for [topic] - ``` +Keywords - ``` {.wrap} - Research the best analytics tools for [topic] website performance - ``` +```{.wrap} +Find best keywords for [topic] with low competition +``` - ``` {.wrap} - Create a list of potential partnerships for [topic] - ``` +```{.wrap} +Generate list of keywords targeting multiple geographic locations +``` - ``` {.wrap} - Research the best tactics for [topic] mobile optimization - ``` +```{.wrap} +Generate list of keyword synonyms for [topic] +``` - ``` {.wrap} - Research the best tactics for [topic] e-commerce optimization. Provide keyword clusters. - ``` +Content Optimization - ``` {.wrap} - Create a list of potential affiliate marketing opportunities for [topic] - ``` +```{.wrap} +Find opportunities for internal linking related to [topic] +``` - ``` {.wrap} - What are the best affiliate marketing websites for [topic] - ``` +```{.wrap} +Research industry-specific terminology for use in [topic] content +``` - ``` {.wrap} - What are the best tactics for [topic] international SEO - ``` +```{.wrap} +Find best time to publish content related to [topic] +``` - ``` {.wrap} - Create a list of potential podcast or podcast guest opportunities for [topic] - ``` +Link Building - ``` {.wrap} - Research the best tactics for [topic] Google My Business optimization - ``` +```{.wrap} +Find authoritative websites to acquire backlinks for [topic] content +``` - ``` {.wrap} - Find popular content topics related to [topic] - ``` +```{.wrap} +Research best external linking strategies for [topic] +``` - ``` {.wrap} - Research the best SEO tactics for [topic] and provide actionable steps - ``` +Tools - ``` {.wrap} - Create a list of potential video series or webinar ideas related to [topic] - ``` +```{.wrap} +Find most popular tools used for [topic] seo +``` - ``` {.wrap} - Research competitor strategies related to [topic] - ``` +Tactics - ``` {.wrap} - Find canonical tag examples related to [topic] - ``` +```{.wrap} +Research best tactics for [topic] mobile optimization +``` - ``` {.wrap} - Create an example keyword list targeting multiple geographic locations for [topic] - ``` +```{.wrap} +What are the best tactics for [topic] international seo? +``` - ``` {.wrap} - Generate keyword ideas targeting different stages of the customer purchase funnel for [topic] - ``` +Competitors - ``` {.wrap} - Identify industry hashtags related to [topic]. - ``` -{.collapsible} +```{.wrap} +Research competitor strategies related to [topic] +``` -[💡 I Got an IDEA](https://github.com/Fechin/reference/blob/main/source/_posts/chatgpt.md) +```{.wrap} +What are the best affiliate marketing websites for [topic]? +``` +### Roleplay +```{.wrap} +Name: William Shakespeare +Visual description: +- Wearing Elizabethan attire. +- Holding quill. -Also see --------- +Personality: +- Keen observer and a masterful weaver of tales. +- Knack for finding humor in the most unlikely places. -- [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts) _(github.com)_ +Behaviour examples: +- "To be, or not to be: that is the question: Whether 'tis nobler in the mind to suffer The slings and arrows of outrageous fortune, Or to take arms against a sea of troubles, And by opposing end them?" +- "Canst thou not minister to a mind diseased?" +Lore: +- Grew up in Stratford-upon-Avon and later moved to London. +- Famous for his tragedies, comedies, and historical plays. +Scenario: +- Night of a grand performance at the Globe Theatre. +- Lead actor is missing and staff are concerned about how to achieve the performance. +``` + \ No newline at end of file diff --git a/source/_posts/chmod.md b/source/_posts/chmod.md index c0dcf6f0..09175651 100644 --- a/source/_posts/chmod.md +++ b/source/_posts/chmod.md @@ -1,49 +1,52 @@ --- title: Chmod date: 2021-07-01 10:51:44 -background: bg-emerald-600 +background: bg-indigo-600 tags: - - permission + - permission categories: - - Linux Command + - Linux Command intro: | - This quick reference cheat sheet provides a brief overview of file permissions, and the operation of the chmod command + This quick reference cheat sheet provides a brief overview of file permissions, and the operation of the chmod command plugins: - - copyCode + - copyCode --- - -Getting Started --------- - +## Getting Started ### Syntax + ```shell script -$ chmod [options] +$ chmod [options] ``` + #### Example + ```shell $ chmod 755 foo.txt $ chmod +x cheatsheets.py $ chmod u-x cheatsheets.py $ chmod u=rwx,g=rx,o= cheatsheets.sh ``` + #### Change files and directories recursively + ```shell $ chmod -R 755 my_directory ``` -The `chmod` command stands for "change mode" +The `chmod` command stands for "change mode" ### Chmod Generator + Chmod Generator allows you to quickly and visually generate permissions in numerical and symbolic. - ### Common Permissions + | Command | s | Meaning | -|---------|-----------|------------------------------| +| ------- | --------- | ---------------------------- | | `400` | r-------- | Readable by owner only | | `500` | r-x------ | Avoid Changing | | `600` | rw------- | Changeable by user | @@ -54,28 +57,30 @@ Chmod Generator allows you to quickly and visually generate permissions in numer | `775` | rwxrwxr-x | Sharing mode for a group | | `777` | rwxrwxrwx | Everybody can do everything | - ### Explains + ```shell $ ls -l -rw-r--r-- 1 root root 3 Jun 29 15:35 a.log drwxr-xr-x 2 root root 2 Jun 30 18:06 dir ``` + #### Permission analysis of "dir" + ```text d rwx r-x r-x -┬ ─┬─ ─┬─ ─┬─ -│ │ │ │ +┬ ─┬─ ─┬─ ─┬─ +│ │ │ │ │ │ │ └─ 4. Other|5 (4+0+1) │ │ └────── 3. Group|5 (4+0+1) │ └─────────── 2. User |7 (4+2+1) └─────────────── 1. File Type | directory ``` - ### Permission Modes {.col-span-2} + | Permission | Description | Octal | Decimal | -|------------|-------------------------|-------|-----------| +| ---------- | ----------------------- | ----- | --------- | | `---` | No Permission | 000 | 0 (0+0+0) | | `--x` | Execute | 001 | 1 (0+0+1) | | `-w-` | Write | 010 | 2 (0+2+0) | @@ -84,61 +89,61 @@ d rwx r-x r-x | `r-x` | Read and Execute | 101 | 5 (4+0+1) | | `rw-` | Read and Write | 110 | 6 (4+2+0) | | `rwx` | Read, Write and Execute | 111 | 7 (4+2+1) | -{.show-header} - +{.show-header} ### Objects + | Who (abbr.) | Meaning | -|-------------|--------------------| +| ----------- | ------------------ | | `u` | `U`ser | | `g` | `G`roup | | `o` | `O`thers | | `a` | `A`ll, same as ugo | -{.show-header} +{.show-header} ### Permissions + | Abbreviation | Permission | Value | -|--------------|---------------|-------| +| ------------ | ------------- | ----- | | `r` | `R`ead | 4 | | `w` | `W`rite | 2 | | `x` | E`x`ecute | 1 | | `-` | No permission | 0 | -{.show-header} +{.show-header} ### File Types + | Abbreviation | File Type | -|--------------|-----------------| +| ------------ | --------------- | | `d` | `D`irectory | | `-` | Regular file | | `l` | Symbolic `L`ink | -{.show-header} - - -Chmod Examples --------- +{.show-header} +## Chmod Examples ### Operators + | Symbol | Description | -|--------|-------------| +| ------ | ----------- | | `+` | Add | | `-` | Remove | | `=` | Set | - ### chmod 600 + ```shell $ chmod 600 example.txt $ chmod u=rw,g=,o= example.txt $ chmod a+rwx,u-x,g-rwx,o-rwx example.txt ``` - ### chmod 664 + ```shell $ chmod 664 example.txt $ chmod u=rw,g=rw,o=r example.txt @@ -146,54 +151,74 @@ $ chmod a+rwx,u-x,g-x,o-wx example.txt ``` ### chmod 777 + ```shell $ chmod 777 example.txt $ chmod u=rwx,g=rwx,o=rwx example.txt $ chmod a=rwx example.txt ``` - ### Symbolic mode {.row-span-3} + Deny execute permission to everyone. + ```shell $ chmod a-x chmodExampleFile.txt ``` + Allow read permission to everyone. + ```shell $ chmod a+r chmodExampleFile.txt ``` + Make a file readable and writable by the group and others. + ```shell $ chmod go+rw chmodExampleFile.txt ``` + Make a shell script executable by the user/owner. + ```shell $ chmod u+x chmodExampleScript.sh ``` + Allow everyone to read, write, and execute the file and turn on the set group-ID. + ```shell $ chmod =rwx,g+s chmodExampleScript.sh ``` -### Removing Permissions {.row-span-3} +### Removing Permissions {.row-span-3} + In order to remove read write permissions given to a file, use the following syntax: + ```shell $ chmod o-rw example.txt ``` + For our file example.txt, we can remove read write permissions using chmod for group by running the following command: + ```shell $ chmod g-rx example.txt ``` -To remove chmod read write permissions from the group while adding read write permission to public/others, we can use the following command: + +To remove chmod read write permissions from the group while adding read write permission to public/others, we can use +the following command: + ```shell $ chmod g-rx, o+rx example.txt ``` + But, if you wish to remove all permissions for group and others, you can do so using the go= instead: + ```shell $ chmod go= example.txt ``` ### Executable + ```shell $ chmod +x ~/example.py $ chmod u+x ~/example.py @@ -201,17 +226,16 @@ $ chmod a+x ~/example.py ``` ### chmod 754 + ```shell $ chmod 754 foo.sh $ chmod u=rwx,g=rx,o=r foo.sh ``` - - -Chmod Practices ---------------- +## Chmod Practices ### SSH Permissions + ```shell script $ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keys @@ -221,6 +245,7 @@ $ chmod 400 /path/to/access_key.pem ``` ### Web Permissions + ```shell script $ chmod -R 644 /var/www/html/ $ chmod 644 .htaccess @@ -230,13 +255,16 @@ $ find /var/www/html -type d -exec chmod 755 {} \; ``` ### Batch Change + ```shell script $ chmod -R 644 /your_path $ find /path -type d -exec chmod 755 {} \; $ find /path -type f -exec chmod 644 {} \; ``` -See: [Command Substitution](https://tldp.org/LDP/abs/html/commandsub.html) +See: [Command Substitution](https://tldp.org/LDP/abs/html/commandsub.html) ## Also see -* [Modify File Permissions with chmod](https://www.linode.com/docs/guides/modify-file-permissions-with-chmod/) _(linode.com)_ + +- [Modify File Permissions with chmod](https://www.linode.com/docs/guides/modify-file-permissions-with-chmod/) + _(linode.com)_ diff --git a/source/_posts/chrome-devtools.md b/source/_posts/chrome-devtools.md index f2b18035..59e6b928 100644 --- a/source/_posts/chrome-devtools.md +++ b/source/_posts/chrome-devtools.md @@ -2,137 +2,131 @@ title: Chrome Developer Tools date: 2022-11-23 16:23:31.696017 background: bg-[#c64d3e] -label: -tags: - - - - +label: +tags: + - + - categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 56 keyboard shortcuts found in Chrome's Developer Tools + A visual cheat-sheet for the 56 keyboard shortcuts found in Chrome's Developer Tools --- - - -Keyboard Shortcuts ------------------- - - +## Keyboard Shortcuts ### Opening DevTools -Shortcut | Action ----|--- -`Ctrl` `Shift` `I` | Open whatever panel you used last -`Ctrl` `Shift` `J` | Open the Console panel -`Ctrl` `Shift` `C` | Open the Elements panel +| Shortcut | Action | +| ------------------ | --------------------------------- | +| `Ctrl` `Shift` `I` | Open whatever panel you used last | +| `Ctrl` `Shift` `J` | Open the Console panel | +| `Ctrl` `Shift` `C` | Open the Elements panel | + {.shortcuts} +### Global Shortcuts {.row-span-2} + +| Shortcut | Action | +| ------------------ | ------------------------------------------------------ | +| `F1` | Show Settings | +| `Ctrl` `]` | Focus the next panel | +| `Ctrl` `[` | Focus the previous panel | +| `Ctrl` `Shift` `D` | Switch back to whatever docking position you last used | +| `Ctrl` `Shift` `M` | Toggle Device Mode | +| `Ctrl` `Shift` `C` | Toggle Inspect Element Mode | +| `Ctrl` `Shift` `P` | Open the Command Menu | +| `Esc` | Toggle the Drawer | +| `Ctrl` `R` | Normal reload | +| `Ctrl` `Shift` `R` | Hard reload | +| `Ctrl` `F` | Search for text within the current panel | +| `Ctrl` `Shift` `F` | Opens the Search tab in the Drawer | +| `Ctrl` `P` | Open a file in the Sources panel | +| `Ctrl` `Shift` `+` | Zoom in | +| `Ctrl` `-` | Zoom out | +| `Ctrl` `0` | Restore default zoom level | +| `Ctrl` `O` `!` | Run snippet | -### Global Shortcuts {.row-span-2} - -Shortcut | Action ----|--- -`F1` | Show Settings -`Ctrl` `]` | Focus the next panel -`Ctrl` `[` | Focus the previous panel -`Ctrl` `Shift` `D` | Switch back to whatever docking position you last used -`Ctrl` `Shift` `M` | Toggle Device Mode -`Ctrl` `Shift` `C` | Toggle Inspect Element Mode -`Ctrl` `Shift` `P` | Open the Command Menu -`Esc` | Toggle the Drawer -`Ctrl` `R` | Normal reload -`Ctrl` `Shift` `R` | Hard reload -`Ctrl` `F` | Search for text within the current panel -`Ctrl` `Shift` `F` | Opens the Search tab in the Drawer -`Ctrl` `P` | Open a file in the Sources panel -`Ctrl` `Shift` `+` | Zoom in -`Ctrl` `-` | Zoom out -`Ctrl` `0` | Restore default zoom level -`Ctrl` `O` `!` | Run snippet {.shortcuts} - ### Elements Panel -Shortcut | Action ----|--- -`Ctrl` `Z` | Undo change -`Ctrl` `Y` | Redo change -`Up/Down` | Select the element above or below the currently-selected element -`Right` | Expand the currently-selected node -`Left` | Collapse the currently-selected node -`Enter` | Toggle Edit Attributes mode on the currently-selected element -`Tab` | Select the next attribute after entering Edit Attributes mode -`Shift` `Tab` | Select the previous attribute after entering Edit Attributes mode -`H` | Hide the currently-selected element -`F2` | Toggle Edit as HTML mode on the currently-selected element -{.shortcuts} +| Shortcut | Action | +| ------------- | ----------------------------------------------------------------- | +| `Ctrl` `Z` | Undo change | +| `Ctrl` `Y` | Redo change | +| `Up/Down` | Select the element above or below the currently-selected element | +| `Right` | Expand the currently-selected node | +| `Left` | Collapse the currently-selected node | +| `Enter` | Toggle Edit Attributes mode on the currently-selected element | +| `Tab` | Select the next attribute after entering Edit Attributes mode | +| `Shift` `Tab` | Select the previous attribute after entering Edit Attributes mode | +| `H` | Hide the currently-selected element | +| `F2` | Toggle Edit as HTML mode on the currently-selected element | +{.shortcuts} ### Sources Panel -Shortcut | Action ----|--- -`Ctrl` `\` | Pause script execution (if running), or resume (if paused) -`Ctrl` `'` | Step over next function call -`Ctrl` `;` | Step into next function call -`Ctrl` `Shift` `;` | Step out of current function -`Ctrl` `./,` | Select the call frame below or above the currently-selected frame -`Ctrl` `S` | Save changes to local modifications -`Ctrl` `Alt` `S` | Save all changes -`Ctrl` `G` | Go to line -`Alt` `W` | Close the active tab -{.shortcuts} +| Shortcut | Action | +| ------------------ | ----------------------------------------------------------------- | +| `Ctrl` `\` | Pause script execution (if running), or resume (if paused) | +| `Ctrl` `'` | Step over next function call | +| `Ctrl` `;` | Step into next function call | +| `Ctrl` `Shift` `;` | Step out of current function | +| `Ctrl` `./,` | Select the call frame below or above the currently-selected frame | +| `Ctrl` `S` | Save changes to local modifications | +| `Ctrl` `Alt` `S` | Save all changes | +| `Ctrl` `G` | Go to line | +| `Alt` `W` | Close the active tab | +{.shortcuts} ### Code Editor -Shortcut | Action ----|--- -`Ctrl` `Del` | Delete all characters in the last word, up to the cursor -`Ctrl` `M` | Go to matching bracket -`Ctrl` `/` | Toggle single-line comment -`Ctrl` `D` | Select the next occurrence of whatever word the cursor is on -`Ctrl` `U` | Deselect the next occurrence of whatever word the cursor is on -{.shortcuts} +| Shortcut | Action | +| ------------ | -------------------------------------------------------------- | +| `Ctrl` `Del` | Delete all characters in the last word, up to the cursor | +| `Ctrl` `M` | Go to matching bracket | +| `Ctrl` `/` | Toggle single-line comment | +| `Ctrl` `D` | Select the next occurrence of whatever word the cursor is on | +| `Ctrl` `U` | Deselect the next occurrence of whatever word the cursor is on | +{.shortcuts} ### Performance Panel -Shortcut | Action ----|--- -`Ctrl` `E` | Start or stop recording -`Ctrl` `S` | Save recording -`Ctrl` `O` | Load recording -{.shortcuts} +| Shortcut | Action | +| ---------- | ----------------------- | +| `Ctrl` `E` | Start or stop recording | +| `Ctrl` `S` | Save recording | +| `Ctrl` `O` | Load recording | +{.shortcuts} ### Memory Panel -Shortcut | Action ----|--- -`Ctrl` `E` | Start or stop recording -{.shortcuts} +| Shortcut | Action | +| ---------- | ----------------------- | +| `Ctrl` `E` | Start or stop recording | +{.shortcuts} ### Console Panel -Shortcut | Action ----|--- -`Tab` | Accept autocomplete suggestion -`Esc` | Reject autocomplete suggestion -`Up` | Get previous statement -`Down` | Get next statement -`Ctrl` \` | Focus the Console -`Ctrl` `L` | Clear the console -`Shift` `Enter` | Force a multi-line entry -`Enter` | Execute -{.shortcuts} - +| Shortcut | Action | +| ---------------------- | ------------------------------ | +| `Tab` | Accept autocomplete suggestion | +| `Esc` | Reject autocomplete suggestion | +| `Up` | Get previous statement | +| `Down` | Get next statement | +| `Ctrl` \` | Focus the Console | +| `Ctrl` `L` | Clear the console | +| `Shift` `Enter` | Force a multi-line entry | +| `Enter` | Execute | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/shortcuts) _(developers.google.com)_ +- [Keyboard shortcuts for Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/shortcuts) + _(developers.google.com)_ diff --git a/source/_posts/code-editor-ios.md b/source/_posts/code-editor-ios.md index 86b9901c..a107d310 100644 --- a/source/_posts/code-editor-ios.md +++ b/source/_posts/code-editor-ios.md @@ -3,81 +3,75 @@ title: Code Editor for iOS date: 2022-11-23 16:23:31.697110 background: bg-[#4880c2] label: Mac -tags: - - - - mac +tags: + - + - mac categories: - - Keyboard Shortcuts + - Keyboard Shortcuts intro: | - A visual cheat-sheet for the 43 keyboard shortcuts found in the Code Editor for iOS app. This application is MacOS-only. + A visual cheat-sheet for the 43 keyboard shortcuts found in the Code Editor for iOS app. This application is MacOS-only. --- - - -Keyboard Shortcuts {.cols-2} ------------------- - - +## Keyboard Shortcuts {.cols-2} ### General Shortcuts I -Shortcut | Action ----|--- -`Esc` | Show completions -`Tab` | Insert indent, depending on the preferences of tabs or spaces -`Cmd` `N` | New document tab -`Cmd` `W` | Close tab -`Cmd` `S` | Save -`Cmd` `Z` | Undo -`Cmd` `Shift` `Z` | Redo -`Cmd` `A` | Select all -`Cmd` `X` | Cut -`Cmd` `C` | Copy -`Cmd` `V` | Paste -`Cmd` `F` | Find -`Cmd` `G` | Find next -`Cmd` `Shift` `G` | Find previous -`Cmd` `/` | Toggle comment -`Cmd` `[` | Indent selection -`Cmd` `]` | Dedent selection -`Cmd` `Shift` `[` | Move to previous tab -`Cmd` `Shift` `]` | Move to next tab -`Cmd` `4` | Toggle preview, in editor only -`Cmd` `K` | Clear scrollback, in terminal and playgrounds only -{.shortcuts} +| Shortcut | Action | +| ----------------- | ------------------------------------------------------------- | +| `Esc` | Show completions | +| `Tab` | Insert indent, depending on the preferences of tabs or spaces | +| `Cmd` `N` | New document tab | +| `Cmd` `W` | Close tab | +| `Cmd` `S` | Save | +| `Cmd` `Z` | Undo | +| `Cmd` `Shift` `Z` | Redo | +| `Cmd` `A` | Select all | +| `Cmd` `X` | Cut | +| `Cmd` `C` | Copy | +| `Cmd` `V` | Paste | +| `Cmd` `F` | Find | +| `Cmd` `G` | Find next | +| `Cmd` `Shift` `G` | Find previous | +| `Cmd` `/` | Toggle comment | +| `Cmd` `[` | Indent selection | +| `Cmd` `]` | Dedent selection | +| `Cmd` `Shift` `[` | Move to previous tab | +| `Cmd` `Shift` `]` | Move to next tab | +| `Cmd` `4` | Toggle preview, in editor only | +| `Cmd` `K` | Clear scrollback, in terminal and playgrounds only | +{.shortcuts} ### General Shortcuts II -Shortcut | Action ----|--- -`Cmd` `R` | Reload, in preview only -`Cmd` `Left` | Back, in preview only -`Cmd` `Right` | Forward, in preview only -`Shift` `Left` | Select the previous character -`Shift` `Right` | Select the next character -`Cmd` `Left` | Move to the beginning of the current line -`Cmd` `Right` | Move to the end of the current line -`Cmd` `Shift` `Left` | Select to the beginning of the current line -`Cmd` `Shift` `Right` | Select to the end of the current line -`Opt` `Left` | Move to the beginning of the current word -`Opt` `Right` | Move to the end of the current word -`Opt` `Shift` `Left` | Select to the beginning of the current word -`Opt` `Shift` `Right` | Select to the end of the current word -`Cmd` `Del` | Delete to the beginning of the current line -`Cmd` `Opt` `Del` | Delete to the beginning of the current word -`Cmd` `Del (forward)` | Delete to the end of the current line -`Cmd` `Opt` `Del (forward)` | Delete to the end of the current word -`Ctrl` `A` | Move to the beginning of the current line -`Ctrl` `Shift` `A` | Select to the beginning of the current line -`Ctrl` `E` | Move to the end of the current line -`Ctrl` `Shift` `E` | Select to the end of the current line -`Ctrl` `K` | Delete to the end of the current line -{.shortcuts} - +| Shortcut | Action | +| --------------------------- | ------------------------------------------- | +| `Cmd` `R` | Reload, in preview only | +| `Cmd` `Left` | Back, in preview only | +| `Cmd` `Right` | Forward, in preview only | +| `Shift` `Left` | Select the previous character | +| `Shift` `Right` | Select the next character | +| `Cmd` `Left` | Move to the beginning of the current line | +| `Cmd` `Right` | Move to the end of the current line | +| `Cmd` `Shift` `Left` | Select to the beginning of the current line | +| `Cmd` `Shift` `Right` | Select to the end of the current line | +| `Opt` `Left` | Move to the beginning of the current word | +| `Opt` `Right` | Move to the end of the current word | +| `Opt` `Shift` `Left` | Select to the beginning of the current word | +| `Opt` `Shift` `Right` | Select to the end of the current word | +| `Cmd` `Del` | Delete to the beginning of the current line | +| `Cmd` `Opt` `Del` | Delete to the beginning of the current word | +| `Cmd` `Del (forward)` | Delete to the end of the current line | +| `Cmd` `Opt` `Del (forward)` | Delete to the end of the current word | +| `Ctrl` `A` | Move to the beginning of the current line | +| `Ctrl` `Shift` `A` | Select to the beginning of the current line | +| `Ctrl` `E` | Move to the end of the current line | +| `Ctrl` `Shift` `E` | Select to the end of the current line | +| `Ctrl` `K` | Delete to the end of the current line | +{.shortcuts} +## Also see -Also see --------- -- [Keyboard shortcuts for the Code Editor iOS app](https://library.panic.com/code-editor/shortcut-keys/) _(library.panic.com)_ +- [Keyboard shortcuts for the Code Editor iOS app](https://library.panic.com/code-editor/shortcut-keys/) + _(library.panic.com)_ diff --git a/source/_posts/color-picker.md b/source/_posts/color-picker.md new file mode 100644 index 00000000..f789ec57 --- /dev/null +++ b/source/_posts/color-picker.md @@ -0,0 +1,61 @@ +--- +title: Color Picker +date: 2025-07-01 18:28:43 +background: bg-[#2a6387] +tags: + - html + - color +categories: + - Toolkit +intro: The Color Picker cheat sheet provides you basic color info and choices +plugins: + - copyCode +--- + +## Getting Started + + +### Color Basics {.col-span-3} + + +| **Category** | **Description** | +|:---------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Color Models** | **RGB**: Red, Green, Blue – additive model used in screens.
**HEX**: Hexadecimal color codes, e.g., #FFFFFF.
**HSL**: Hue, Saturation, Lightness – intuitive for color adjustments.
**HSV**: Hue, Saturation, Value – similar to HSL but with different brightness handling. | +| **Color Terminology** | **Saturation**: Intensity or purity of a color.
**Hue**: The color type (e.g., red, blue).
**Lightness**: Brightness or darkness of a color.
**Opacity**: Transparency level of a color, often defined as alpha in RGBA. | +| **Color Representation Formats** | **HEX**: `#RRGGBB` or `#RRGGBBAA` (with alpha).
**RGB**: `rgb(255, 255, 255)`
**RGBA**: `rgba(255, 255, 255, 0.5)`
**HSL**: `hsl(120, 100%, 50%)`
**HSLA**: `hsla(120, 100%, 50%, 0.5)` | + + + +### Main Frameworks {.col-span-3} + +| **Framework** | **Color Notation / Syntax** | **Description** | **Documentation Link** | +|:-----------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------|:-------------------------------------------------------------------------------------------| +| **CSS** | `color: red;`
`color: #ff0000;`
`color: rgb(255, 0, 0);`
`color: rgba(255, 0, 0, 0.5);`
`color: hsl(0, 100%, 50%);`
`color: hsla(0, 100%, 50%, 0.5);` | Standard CSS color properties and formats. | [CSS Color Documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/color) | +| **SASS/SCSS** | `$color: #ff0000;`
`color: $color;` | Variables for colors, can use same formats as CSS. | [SASS Color Documentation](https://sass-lang.com/documentation/values/colors) | +| **Tailwind CSS** | `class="bg-red-500"`
`class="text-green-300"` | Utility classes with predefined color shades. | [Tailwind CSS Colors](https://tailwindcss.com/docs/customizing-colors) | +| **Bootstrap** | `class="text-primary"`
`class="bg-success"` | Named color classes for quick styling. | [Bootstrap Colors](https://getbootstrap.com/docs/5.0/getting-started/introduction/#colors) | +| **Material UI** | `style={{ color: 'primary' }}` or theme palette | Uses theme palette, can override with specific color codes. | [Material UI Color](https://mui.com/customization/color/) | + + +## Color Palette + +### Tailwind Palette {.col-span-3} + + + + +## Gradient CSS + +### Gradient Maker {.col-span-3} + + + + +| Parameter | Description | Example | +|:--------------|:----------------------------------|:-----------------------------------------------| +| **to right** | Gradient goes from left to right | `linear-gradient(to right, #ff7e5f, #feb47b)` | +| **to left** | Gradient goes from right to left | `linear-gradient(to left, #ff7e5f, #feb47b)` | +| **to bottom** | Gradient goes from top to bottom | `linear-gradient(to bottom, #ff7e5f, #feb47b)` | +| **to top** | Gradient goes from bottom to top | `linear-gradient(to top, #ff7e5f, #feb47b)` | +| **deg** | Specify an angle in degrees | `linear-gradient(45deg, ...)` | + diff --git a/source/_posts/colorscreen.md b/source/_posts/colorscreen.md new file mode 100644 index 00000000..7cdcbb14 --- /dev/null +++ b/source/_posts/colorscreen.md @@ -0,0 +1,102 @@ +--- +title: ColorScreen +date: 2026-01-04 12:00:00 +background: bg-gradient-to-br from-slate-800 via-slate-900 to-black +tags: + - Tool + - Display + - Productivity +categories: + - Other +intro: A quick reference collection of full-screen color pages, monitor tests, prank screens, screensavers, and timers. +plugins: + - copyCode +--- + +## Overview {.cols-2} + +### What is ColorScreen? {.col-span-2} + +**[ColorScreen](https://colorscreen.co/)** is a collection of browser-based screen utilities designed for simplicity and privacy. It provides full-screen tools without ads or login requirements. + +- **Utilities**: Pure color pages, monitor diagnostics, prank screens, screensavers, and timers. +- **Features**: System-level fullscreen support, local storage for settings, static web app. +- **Use Cases**: Bias lighting, display testing (dead pixels/bleed), streaming backdrops, and productivity timing. + +[Visit ColorScreen.co](https://colorscreen.co/) {.link-arrow} + +## Tools Directory {.cols-3} + +### Pure Colors {.col-span-2} + +- [White Screen for Light](https://colorscreen.co/white-screen) — full-screen white page for lighting & testing +- [Black Screen for OLED](https://colorscreen.co/black-screen) — pure black screen for OLED power saving & bleed tests +- [Red Screen for Night Vision](https://colorscreen.co/red-screen) — red light for dark adaptation +- [Green Screen for Chroma Key](https://colorscreen.co/green-screen) — green background for keying / streaming +- [Blue Screen for Chroma Key](https://colorscreen.co/blue-screen) — blue background for keying / video +- [Yellow Screen for Warm Light](https://colorscreen.co/yellow-screen) — warm yellow light +- [Purple Screen for Ambient Light](https://colorscreen.co/purple-screen) — ambient purple vibe +- [Orange Screen for Creativity](https://colorscreen.co/orange-screen) — energetic orange glow +- [Pink Screen for Beauty Light](https://colorscreen.co/pink-screen) — soft pink beauty light + +{.cols-2 .marker-none} + +### Lighting + +- [Meeting Zoom Lighting](https://colorscreen.co/meeting-zoom-lighting) — monitor-as-softbox lighting +- [Live Streaming Lighting](https://colorscreen.co/live-streaming-lighting) — adjustable softbox screen + +{.marker-none} + +### Screen Tests + +- [Online Dead Pixel Monitor Test](https://colorscreen.co/dead-pixel-test) — detect dead / stuck pixels +- [Burn-in Fixer & Stuck Pixel Tool](https://colorscreen.co/burn-in-fixer) — reduce image retention +- [Gradient / Color Banding Test](https://colorscreen.co/gradient-test) — check banding & transitions +- [Grid Alignment & Projector Calibration](https://colorscreen.co/grid-alignment-test) — alignment / overscan test + +{.marker-none} + +### Fake Update Screens (Prank) {.col-span-2} + +- [Windows 11 fake update](https://colorscreen.co/fake-update-screen-windows-11) +- [Windows 10 fake update](https://colorscreen.co/fake-update-screen-windows-10) +- [Windows 8 fake update](https://colorscreen.co/fake-update-screen-windows-8) +- [Windows 7 fake update](https://colorscreen.co/fake-update-screen-windows-7) +- [Windows XP fake update](https://colorscreen.co/fake-update-screen-windows-xp) +- [Mac fake update](https://colorscreen.co/fake-update-screen-mac) +- [Android fake update](https://colorscreen.co/fake-update-screen-android) +- [iPad fake update](https://colorscreen.co/fake-update-screen-apple-ipad) +- [iOS fake update](https://colorscreen.co/fake-update-screen-apple-iphone-ios) +- [Ubuntu fake update](https://colorscreen.co/fake-update-screen-ubuntu) +- [Steam fake update](https://colorscreen.co/fake-update-screen-steam) +- [Sarcastic fake update](https://colorscreen.co/fake-update-screen-sarcastic) + +{.cols-2 .marker-none} + +### Prank Screens + +- [Blue Screen of Death (BSOD)](https://colorscreen.co/bsod-prank) +- [Broken Screen Simulator](https://colorscreen.co/broken-screen-prank) +- [Hacker Typer](https://colorscreen.co/hacker-typer-prank) +- [Matrix Rain Code](https://colorscreen.co/matrix-rain-prank) + +{.marker-none} + +### Screensavers + +- [No Signal / SMPTE Bars](https://colorscreen.co/no-signal-screensaver) +- [DVD Bounce](https://colorscreen.co/dvd-screensaver) +- [Radar Scan](https://colorscreen.co/radar-screensaver) +- [White Noise / TV Static](https://colorscreen.co/white-noise-screensaver) + +{.marker-none} + +### Clocks & Timers + +- [Stopwatch (Lap Timer)](https://colorscreen.co/stopwatch) +- [Countdown Timer](https://colorscreen.co/countdown-timer) +- [Pomodoro Timer](https://colorscreen.co/pomodoro-timer) +- [Flip Clock](https://colorscreen.co/flip-clock-screensaver) + +{.marker-none} diff --git a/source/_posts/conventional-commits.md b/source/_posts/conventional-commits.md new file mode 100644 index 00000000..02b6cfb1 --- /dev/null +++ b/source/_posts/conventional-commits.md @@ -0,0 +1,115 @@ +--- +title: Conventional Commits +date: 2024-03-11 09:51:44 +background: bg-[#e86d7a] +tags: + - permission +categories: + - Other +intro: | + A cheat sheet of the Conventional Commits and Conventional Comments standards +plugins: +--- + +## Getting Started {.cols-3} + +### Quick Guide + +#### Why Conventional Commits + +- Easy-to-follow structure for commit messages. +- Clearly states the nature of changes. +- Ensures uniformity in commit messages across teams. +- Enables automated versioning and changelog generation. +- Makes commit history easy to browse. +- Allows the specification of 'scope' for more clarity. +- Has a special notation for breaking changes. +- Facilitates better understanding among team members. +- Makes the review process efficient. +- Helps in future troubleshooting with descriptive commit messages. + +#### Structure + +```javascript +[optional scope]: + +[optional body] + +[optional footer(s)] +``` + +[Official Website](https://www.conventionalcommits.org/en) {.link-arrow} + +### Examples + +- feat: add jwt support +- feat!: breaking change in API +- feat(ui)!: redesign user profile page +- fix: fix SQL injection vulnerability +- fix(database): resolve data race condition +- docs: update setup section of README +- style(login): correct indentation in login component +- refactor: refactor user database schema +- perf: optimize user retrieval code for faster response +- test: add tests for jwt authentication +- test(payment): add tests for the payment gateway +- chore: update build script +- chore(deps): update dependencies +- build(docker): update Dockerfile to use node 14 +- ci: add job for integration tests +- revert: revert commit a1b2c3d4e5f + +### Types + +| Type | Description | +| -------- | ---------------------------------------------------------------------------------------------------------------- | +| `feat` | Introduces a new feature | +| `fix` | Fixes a bug | +| `docs` | Changes in documentation only | +| `style` | Code changes that do not impact the functionality (e.g., formatting, white-space, etc) | +| refactor | Code changes that neither fix a bug nor introduce a feature, typically improving code readability or structure | +| perf | Code changes that improve performance | +| test | Addition of missing tests or corrections to existing tests | +| `chore` | Changes that do not modify the source code or test files, like tweaking the build process or adding dependencies | +| build | Changes affecting the build system or external dependencies (e.g., changes in webpack, npm packages) | +| ci | Changes to Continuous Integration configuration files and scripts (e.g., Travis, CircleCI, Jenkins) | +| revert | Reverts a previously made commit | + +{.bold-first} + +## Specification {.cols-1} + +### Specification + +- Commits MUST be prefixed with a type, which consists of a noun, feat, fix, etc., followed by the OPTIONAL scope, + OPTIONAL !, and REQUIRED terminal colon and space. +- The type feat MUST be used when a commit adds a new feature to your application or library. +- The type fix MUST be used when a commit represents a bug fix for your application. +- A scope MAY be provided after a type. A scope MUST consist of a noun describing a section of the codebase surrounded + by parenthesis, e.g., fix(parser): +- A description MUST immediately follow the colon and space after the type/scope prefix. The description is a short + summary of the code changes, e.g., fix: array parsing issue when multiple spaces were contained in string. +- A longer commit body MAY be provided after the short description, providing additional contextual information about + the code changes. The body MUST begin one blank line after the description. +- A commit body is free-form and MAY consist of any number of newline separated paragraphs. +- One or more footers MAY be provided one blank line after the body. Each footer MUST consist of a word token, followed + by either a : or # separator, followed by a string value (this is inspired by the + [git trailer convention](https://git-scm.com/docs/git-interpret-trailers)). +- A footer’s token MUST use - in place of whitespace characters, e.g., Acked-by (this helps differentiate the footer + section from a multi-paragraph body). An exception is made for BREAKING CHANGE, which MAY also be used as a token. +- A footer’s value MAY contain spaces and newlines, and parsing MUST terminate when the next valid footer + token/separator pair is observed. +- Breaking changes MUST be indicated in the type/scope prefix of a commit, or as an entry in the footer. +- If included as a footer, a breaking change MUST consist of the uppercase text BREAKING CHANGE, followed by a colon, + space, and description, e.g., BREAKING CHANGE: environment variables now take precedence over config files. +- If included in the type/scope prefix, breaking changes MUST be indicated by a ! immediately before the :. If ! is + used, BREAKING CHANGE: MAY be omitted from the footer section, and the commit description SHALL be used to describe + the breaking change. +- Types other than feat and fix MAY be used in your commit messages, e.g., docs: update ref docs. +- The units of information that make up Conventional Commits MUST NOT be treated as case sensitive by implementors, with + the exception of BREAKING CHANGE which MUST be uppercase. +- BREAKING-CHANGE MUST be synonymous with BREAKING CHANGE, when used as a token in a footer. + +## Also see + +- [Conventional Commits](https://conventionalcommits.org/) _(conventionalcommits.org)_ diff --git a/source/_posts/cpp.md b/source/_posts/cpp.md index c5d73b85..2c017939 100644 --- a/source/_posts/cpp.md +++ b/source/_posts/cpp.md @@ -6,14 +6,13 @@ tags: categories: - Programming intro: | - C++ quick reference cheat sheet that provides basic syntax and methods. + C++ quick reference cheat sheet that provides basic syntax and methods. plugins: - - copyCode + - copyCode + - runCode --- - -Getting Started --------- +## Getting Started ### hello.cpp @@ -48,7 +47,7 @@ bool isRight = true; // Boolean const float RATE = 0.8; ``` ----- +--- ```cpp int age {25}; // Since C++11 @@ -58,7 +57,7 @@ std::cout << age; // Print 25 ### Primitive Data Types | Data Type | Size | Range | -|-----------|----------------|---------------------| +| --------- | -------------- | ------------------- | | `int` | 4 bytes | -2^31^ ^to^ 2^31^-1 | | `float` | 4 bytes | _N/A_ | | `double` | 8 bytes | _N/A_ | @@ -66,6 +65,7 @@ std::cout << age; // Print 25 | `bool` | 1 byte | true / false | | `void` | _N/A_ | _N/A_ | | `wchar_t` | 2 ^or^ 4 bytes | 1 wide character | + {.show-header} ### User Input @@ -122,13 +122,13 @@ See: [Loops](#c-loops) ```cpp #include - + void hello(); // Declaring - + int main() { // main function hello(); // Calling } - + void hello() { // Defining std::cout << "Hello CheatSheets!\n"; } @@ -171,14 +171,13 @@ using namespace ns1; using namespace std; int main() { - cout << val(); + cout << val(); } ``` Namespaces allow global identifiers under a name -C++ Arrays ------- +## C++ Arrays ### Declaration @@ -258,11 +257,10 @@ for (int i = 0; i < 2; ++i) { std::cout << x[i][j] << " "; } } -// Outputs: 1 2 3 4 5 6 6 5 4 3 2 1 +// Outputs: 1 2 3 4 5 6 6 5 4 3 2 1 ``` -C++ Conditionals ------------- +## C++ Conditionals ### If Clause @@ -316,7 +314,7 @@ else #### Relational Operators | | | -|----------|------------------------------| +| -------- | ---------------------------- | | `a == b` | a is equal to b | | `a != b` | a is NOT equal to b | | `a < b` | a is less than b | @@ -326,32 +324,32 @@ else #### Assignment Operators -| Example | Equivalent to | -|----------|-----------------| -| `a += b` | _Aka_ a = a + b | -| `a -= b` | _Aka_ a = a - b | -| `a *= b` | _Aka_ a = a * b | -| `a /= b` | _Aka_ a = a / b | -| `a %= b` | _Aka_ a = a % b | +| Example | Equivalent to | +| -------- | ---------------- | +| `a += b` | _Aka_ a = a + b | +| `a -= b` | _Aka_ a = a - b | +| `a *= b` | _Aka_ a = a \* b | +| `a /= b` | _Aka_ a = a / b | +| `a %= b` | _Aka_ a = a % b | #### Logical Operators -| Example | Meaning | -|----------------|------------------------| -| `exp1 && exp2` | Both are true _(AND)_ | -| `exp1 || exp2` | Either is true _(OR)_ | -| `!exp` | `exp` is false _(NOT)_ | +| Example | Meaning | +| --------------------------- | ---------------------- | +| `exp1 && exp2` | Both are true _(AND)_ | +| exp1 \|\| exp2 | Either is true _(OR)_ | +| `!exp` | `exp` is false _(NOT)_ | #### Bitwise Operators -| Operator | Description | -|----------|-------------------------| -| `a & b` | Binary AND | -| `a | b` | Binary OR | -| `a ^ b` | Binary XOR | -| `~ a` | Binary One's Complement | -| `a << b` | Binary Shift Left | -| `a >> b` | Binary Shift Right | +| Operator | Description | +| ------------------- | ----------------------- | +| `a & b` | Binary AND | +| a \| b | Binary OR | +| `a ^ b` | Binary XOR | +| `~ a` | Binary One's Complement | +| `a << b` | Binary Shift Left | +| `a >> b` | Binary Shift Right | ### Ternary Operator @@ -407,8 +405,7 @@ switch (num) { } ``` -C++ Loops ------------- +## C++ Loops ### While @@ -471,6 +468,7 @@ for(int i = 1; i > 0; i++) { ```cpp #include +#include int main() { @@ -499,7 +497,7 @@ for (char c: hello) { std::cout << c << " "; } -// Outputs: Q u i c k R e f . M E +// Outputs: Q u i c k R e f . M E ``` ### Break statements @@ -526,8 +524,7 @@ for (int i = 0, j = 2; i < 3; i++, j--){ // Outputs: i=0,j=2;i=1,j=1;i=2,j=0; ``` -C++ Functions ------------- +## C++ Functions ### Arguments & Returns @@ -535,11 +532,11 @@ C++ Functions #include int add(int a, int b) { - return a + b; + return a + b; } int main() { - std::cout << add(10, 20); + std::cout << add(10, 20); } ``` @@ -564,15 +561,14 @@ void fun(int a) { ```cpp #include #include // import library - + int main() { // sqrt() is from cmath std::cout << sqrt(9); } ``` -C++ Classes & Objects {.cols-2} ------------------ +## C++ Classes & Objects {.cols-2} ### Defining a Class @@ -643,7 +639,6 @@ MyClass myObj; // Create an object of MyClass ``` - ### Class Methods ```cpp @@ -660,7 +655,6 @@ MyClass myObj; // Create an object of MyClass myObj.myMethod(); // Call the method ``` - ### Access Modifiers ```cpp @@ -680,7 +674,6 @@ myObj.z = 75; // Not allowed (protected) ``` - ### Getters and Setters ```cpp @@ -702,7 +695,6 @@ cout << myObj.getMyNum() << endl; // Output 15 ``` - ### Inheritance ```cpp @@ -724,10 +716,7 @@ myCar.honk(); // Output "Tuut, tuut!" cout << myCar.brand + " " + myCar.model << endl; // Output "Ford Mustang" ``` - - -C++ Preprocessor ------------- +## C++ Preprocessor ### Preprocessor {.row-span-3} @@ -744,11 +733,12 @@ C++ Preprocessor - [error](https://en.cppreference.com/w/cpp/preprocessor/error) - [pragma](https://en.cppreference.com/w/cpp/preprocessor/impl) - [defined](https://en.cppreference.com/w/cpp/preprocessor/conditional) -- [__has_include](https://en.cppreference.com/w/cpp/feature_test) -- [__has_cpp_attribute](https://en.cppreference.com/w/cpp/feature_test) +- [\_\_has_include](https://en.cppreference.com/w/cpp/feature_test) +- [\_\_has_cpp_attribute](https://en.cppreference.com/w/cpp/feature_test) - [export](https://en.cppreference.com/w/cpp/keyword/export) -- [import](https://en.cppreference.com/mwiki/index.php?title=cpp/keyword/import&action=edit&redlink=1) -- [module](https://en.cppreference.com/mwiki/index.php?title=cpp/keyword/module&action=edit&redlink=1) +- [import](https://en.cppreference.com/mwiki/index.php?title=cpp/keyword/import&action=edit&redlink=1) +- [module](https://en.cppreference.com/mwiki/index.php?title=cpp/keyword/module&action=edit&redlink=1) + {.marker-none .cols-2} ### Includes @@ -815,13 +805,12 @@ char * a = STR(object); #=> char * a = "object"; #=> console.log("file.txt", 3, "hey") ``` -Miscellaneous -------------- +## Miscellaneous ### Escape Sequences | Escape Sequences | Characters | -|------------------|-----------------------| +| ---------------- | --------------------- | | `\b` | Backspace | | `\f` | Form feed | | `\n` | Newline | @@ -834,7 +823,7 @@ Miscellaneous | `\?` | Question mark | | `\0` | Null Character | -### Keywords {.col-span-2 .row-span-2} +### Keywords {.col-span-2 .row-span-2} - [alignas](https://en.cppreference.com/w/cpp/keyword/alignas) - [alignof](https://en.cppreference.com/w/cpp/keyword/alignof) @@ -936,8 +925,7 @@ Miscellaneous - [final](https://en.cppreference.com/w/cpp/language/final) - [override](https://en.cppreference.com/w/cpp/language/override) - [transaction_safe](https://en.cppreference.com/w/cpp/language/transactional_memory) -- [transaction_safe_dynamic](https://en.cppreference.com/w/cpp/language/transactional_memory) -{.marker-none .cols-5} +- [transaction_safe_dynamic](https://en.cppreference.com/w/cpp/language/transactional_memory) {.marker-none .cols-5} ### Preprocessor @@ -954,12 +942,12 @@ Miscellaneous - [error](https://en.cppreference.com/w/cpp/preprocessor/error) - [pragma](https://en.cppreference.com/w/cpp/preprocessor/impl) - [defined](https://en.cppreference.com/w/cpp/preprocessor/conditional) -- [__has_include](https://en.cppreference.com/w/cpp/feature_test) -- [__has_cpp_attribute](https://en.cppreference.com/w/cpp/feature_test) +- [\_\_has_include](https://en.cppreference.com/w/cpp/feature_test) +- [\_\_has_cpp_attribute](https://en.cppreference.com/w/cpp/feature_test) - [export](https://en.cppreference.com/w/cpp/keyword/export) -- [import](https://en.cppreference.com/mwiki/index.php?title=cpp/keyword/import&action=edit&redlink=1) -- [module](https://en.cppreference.com/mwiki/index.php?title=cpp/keyword/module&action=edit&redlink=1) -{.marker-none .cols-2} +- [import](https://en.cppreference.com/mwiki/index.php?title=cpp/keyword/import&action=edit&redlink=1) +- [module](https://en.cppreference.com/mwiki/index.php?title=cpp/keyword/module&action=edit&redlink=1) {.marker-none + .cols-2} ## Also see diff --git a/source/_posts/cron.md b/source/_posts/cron.md index 5c7fb00f..cb427ba1 100644 --- a/source/_posts/cron.md +++ b/source/_posts/cron.md @@ -3,20 +3,18 @@ title: Cron date: 2020-12-16 18:28:43 background: bg-red-500 tags: - - schedule - - crontab - - time + - schedule + - crontab + - time categories: - - Linux Command + - Linux Command intro: | - [Cron](https://en.wikipedia.org/wiki/Cron) is most suitable for scheduling repetitive tasks. Scheduling one-time tasks can be accomplished using the associated at utility. + [Cron](https://en.wikipedia.org/wiki/Cron) is most suitable for scheduling repetitive tasks. Scheduling one-time tasks can be accomplished using the associated at utility. plugins: - - copyCode + - copyCode --- - -Crontab Format {.cols-2} ------- +## Crontab Format {.cols-2} ### Format @@ -24,7 +22,7 @@ Crontab Format {.cols-2} Min Hour Day Mon Weekday ``` -------- +--- ``` * * * * * command to be executed @@ -39,81 +37,79 @@ Min Hour Day Mon Weekday └───────────────────── Minute (0..59) ``` ------- ------- +--- | Field | Range | Special characters | -|--------------|--------|--------------------| -| Minute | 0 - 59 | , - * / | -| Hour | 0 - 23 | , - * / | -| Day of Month | 1 - 31 | , - * ? / L W | -| Month | 1 - 12 | , - * / | -| Day of Week | 0 - 6 | , - * ? / L # | -{.show-header} +| ------------ | ------ | ------------------ | +| Minute | 0 - 59 | , - \* / | +| Hour | 0 - 23 | , - \* / | +| Day of Month | 1 - 31 | , - \* ? / L W | +| Month | 1 - 12 | , - \* / | +| Day of Week | 0 - 6 | , - \* ? / L # | +{.show-header} ### Examples -| Example | Description | -|----------------|------------------------| -| `*/15 * * * *` | Every 15 mins | -| `0 * * * *` | Every hour | -| `0 */2 * * *` | Every 2 hours | -| `15 2 * * *` | At 2:15AM of every day | -| `15 2 * * ?` | At 2:15AM of every day | +| Example | Description | +| -------------- |--------------------------------------------------------------------| +| `*/15 * * * *` | Every 15 mins | +| `0 * * * *` | Every hour | +| `0 */2 * * *` | Every 2 hours | +| `15 2 * * *` | At 2:15AM (of every day) | +| `15 2 * * ?` | At 2:15AM (of every day) | +| `10 9 * * 5` | At 9:10AM (of every Friday) | +| `0 0 * * 0` | At 12:00 AM, only on Sunday | +| `15 2 * * 1L` | At 2:15am on the last monday of every month | +| `15 0 * * 4#2` | At 00:15am on the second thursday of every month | +| `0 0 1 * *` | At 12:00 AM, on day 1 of the month (1st of month / monthly) | +| `0 0 1 1 *` | At 12:00 AM, on day 1 of the month, only in January (1st of month) | +| `@reboot` | Every reboot
_(non-standard)_ | -| `10 9 * * 5` | At 9:10AM of every Friday | -| `0 0 * * 0` | At midnight of every Sunday | -| `15 2 * * 1L` | At 2:15am on the last monday of every month | -| `15 0 * * 4#2` | At 00:15am on the second thursday of every month | -| `0 0 1 * *` | Every 1st of month (monthly) | -| `0 0 1 1 *` | Every 1st of january (yearly) | +### Cron Generator {.col-span-3} -| `@reboot` | Every reboot
_(non-standard)_ | + ### Special strings -| Special String | Meaning | -|----------------|----------------------------------------------------| -| @reboot | Run once, at system startup _(non-standard)_ | -| @yearly | Run once every year, "0 0 1 1 *" _(non-standard)_ | -| @annually | (same as @yearly) _(non-standard)_ | -| @monthly | Run once every month, "0 0 1 * *" _(non-standard)_ | -| @weekly | Run once every week, "0 0 * * 0" _(non-standard)_ | -| @daily | Run once each day, "0 0 * * *" _(non-standard)_ | -| @midnight | (same as @daily) _(non-standard)_ | -| @hourly | Run once an hour, "0 * * * *" _(non-standard)_ | - +| Special String | Meaning | +| -------------- | ---------------------------------------------------- | +| @reboot | Run once, at system startup _(non-standard)_ | +| @yearly | Run once every year, "0 0 1 1 \*" _(non-standard)_ | +| @annually | (same as @yearly) _(non-standard)_ | +| @monthly | Run once every month, "0 0 1 \* \*" _(non-standard)_ | +| @weekly | Run once every week, "0 0 \* \* 0" _(non-standard)_ | +| @daily | Run once each day, "0 0 \* \* \*" _(non-standard)_ | +| @midnight | (same as @daily) _(non-standard)_ | +| @hourly | Run once an hour, "0 \* \* \* \*" _(non-standard)_ | ### Crontab command - | - | - | -|--------------|-------------------------------------------------------------------------| +| ------------ | ----------------------------------------------------------------------- | | `crontab -e` | Edit or create a crontab file if doesn’t already exist. | | `crontab -l` | Display the crontab file. | | `crontab -r` | Remove the crontab file. | | `crontab -v` | Display the last time you edited your crontab file.
_(non-standard)_ | -{.shortcuts} +{.shortcuts} ### Special characters {.col-span-2} + | Special Character | Description | -|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| +| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `Asterik(*)` | Matches all values in the field or any possible value. | | `Hyphen(-)` | Used to define a range.Ex: 1-5 in 5th field(Day Of Week) Every Weekday i.e., Monday to Friday | | `Slash (/)` | 1st field(Minute) /15 meaning every fifteen minute or increment of range. | | `Comma (,)` | Used to separate items.Ex: 2,6,8 in 2nd fields(Hour) executes at 2am,6am and 8am | | `L` | It is allowed only for Day of Month or Day Of Week field, 2L in Day of week indicates Last tuesday of every month | | `Hash (#)` | It is allowed only for Day Of Week field, which must be followed within range of 1 to 5. For example, 4#1 means "The first Thursday" of given month. | -| `Question mark (?)` | Can be instead of '*' and allowed for Day of Month and Day Of Week. Usage is restricted to either Day of Month or Day Of Week in a cron expression. | - - +| `Question mark (?)` | Can be instead of '\*' and allowed for Day of Month and Day Of Week. Usage is restricted to either Day of Month or Day Of Week in a cron expression. | ## Also see {.cols-1} -* [Devhints](https://devhints.io/cron) _(devhints.io)_ -* [Crontab Generator](https://crontab-generator.org/) _(crontab-generator.org)_ -* [Crontab guru](https://crontab.guru/) _(crontab.guru)_ +- [Devhints](https://devhints.io/cron) _(devhints.io)_ +- [Crontab Generator](https://crontab-generator.org/) _(crontab-generator.org)_ +- [Crontab guru](https://crontab.guru/) _(crontab.guru)_ diff --git a/source/_posts/cs.md b/source/_posts/cs.md index e4f510c3..14d585f3 100644 --- a/source/_posts/cs.md +++ b/source/_posts/cs.md @@ -3,21 +3,20 @@ title: C# date: 2021-12-14 12:22:00 background: bg-[#8c4c8a] tags: - - object-oriented - - class + - object-oriented + - class categories: - - Programming + - Programming intro: | - C# quick reference cheat sheet that provides basic syntax and methods. + C# quick reference cheat sheet that provides basic syntax and methods. plugins: - - copyCode + - copyCode --- - -Getting Started --------- +## Getting Started ### Hello.cs + ```cs class Hello { // main method @@ -30,24 +29,26 @@ class Hello { ``` Creates a project directory for new console application + ```cs $ dotnet new console ``` -lists all the applications templates +Lists all the applications templates + ```cs -$ dotnet new list +$ dotnet new list ``` Compiling and running (make sure you are in the project directory) + ```shell script $ dotnet run Hello, world! ``` - - ### Variables + ```cs int intNum = 9; long longNum = 9999999; @@ -63,40 +64,40 @@ var str = "999"; var bo = false; ``` +### Primitive Data Types -### Primitive Data Types -| Data Type | Size | Range | -| --------- | ---------------- | ----------------------- | -| `int` | 4 bytes | -2^31^ ^to^ 2^31^-1 | -| `long` | 8 bytes | -2^63^ ^to^ 2^63^-1 | +| Data Type | Size | Range | +| --------- | ---------------- | ------------------------- | +| `int` | 4 bytes | -2^31^ ^to^ 2^31^-1 | +| `long` | 8 bytes | -2^63^ ^to^ 2^63^-1 | | `float` | 4 bytes | 6 ^to^ 7 decimal digits | -| `double` | 8 bytes | 15 decimal digits | +| `double` | 8 bytes | 15 decimal digits | | `decimal` | 16 bytes | 28 ^to^ 29 decimal digits | -| `char` | 2 bytes | 0 ^to^ 65535 | -| `bool` | 1 bit | true / false | -| `string` | 2 bytes per char | _N/A_ | -{.show-header} - +| `char` | 2 bytes | 0 ^to^ 65535 | +| `bool` | 1 bit | true / false | +| `string` | 2 bytes per char | _N/A_ | +{.show-header} ### Comments + ```cs // Single-line comment -/* Multi-line +/* Multi-line comment */ // TODO: Adds comment to a task list in Visual Studio /// Single-line comment used for documentation -/** Multi-line comment +/** Multi-line comment used for documentation **/ ``` - ### Strings + ```cs string first = "John"; string last = "Doe"; @@ -105,9 +106,11 @@ string last = "Doe"; string name = first + " " + last; Console.WriteLine(name); // => John Doe ``` + See: [Strings](#c-strings) ### User Input + ```cs Console.WriteLine("Enter number:"); if(int.TryParse(Console.ReadLine(),out int input)) @@ -117,8 +120,8 @@ if(int.TryParse(Console.ReadLine(),out int input)) } ``` - ### Conditionals + ```cs int j = 10; @@ -131,8 +134,8 @@ if (j == 10) { } ``` - ### Arrays + ```cs char[] chars = new char[10]; chars[0] = 'a'; @@ -143,8 +146,8 @@ int[] mylist = {100, 200}; bool[] answers = {true, false}; ``` - ### Loops + ```cs int[] numbers = {1, 2, 3, 4, 5}; @@ -152,21 +155,19 @@ for(int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers[i]); } ``` + --- + ```cs foreach(int num in numbers) { Console.WriteLine(num); } ``` - - - - -C# Strings ----------------- +## C# Strings ### String concatenation + ```cs string first = "John"; string last = "Doe"; @@ -176,6 +177,7 @@ Console.WriteLine(name); // => John Doe ``` ### String interpolation + ```cs string first = "John"; string last = "Doe"; @@ -185,25 +187,27 @@ Console.WriteLine(name); // => John Doe ``` ### String Members {.row-span-2} -| Member | Description | -|------------ |-------------| -| Length | A property that returns the length of the string. | -| Compare() | A static method that compares two strings. | -| Contains() | Determines if the string contains a specific substring. | -| Equals() | Determines if the two strings have the same character data. | -| Format() | Formats a string via the {0} notation and by using other primitives. | -| Trim() | Removes all instances of specific characters from trailing and leading characters. Defaults to removing leading and trailing spaces. | -| Split() | Removes the provided character and creates an array out of the remaining characters on either side. | -{.show-header} +| Member | Description | +| ---------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| Length | A property that returns the length of the string. | +| Compare() | A static method that compares two strings. | +| Contains() | Determines if the string contains a specific substring. | +| Equals() | Determines if the two strings have the same character data. | +| Format() | Formats a string via the {0} notation and by using other primitives. | +| Trim() | Removes all instances of specific characters from trailing and leading characters. Defaults to removing leading and trailing spaces. | +| Split() | Removes the provided character and creates an array out of the remaining characters on either side. | + +{.show-header} ### Verbatim strings + ```cs {.wrap} string longString = @"I can type any characters in here !#@$%^&*()__+ '' \n \t except double quotes and I will be taken literally. I even work with multiple lines."; ``` - ### Member Example + ```cs // Using property of System.String string lengthOfString = "How long?"; @@ -213,20 +217,15 @@ lengthOfString.Length // => 9 lengthOfString.Contains("How"); // => true ``` - - - -Misc ------------ +## Misc ### General .NET Terms {.col-span-2} -| Term | Definition | -|------------|------------| -| Runtime | A collection of services that are required to execute a given compiled unit of code. | -| Common Language Runtime (CLR) | Primarily locates, loads, and managed .NET objects. The CLR also handles memory management, application hosting, coordination of threads, performaing security checks, and other low-level details. | -| Managed code | Code that compiles and runs on .NET runtime. C#/F#/VB are examples. | -| Unmanaged code | Code that compiles straight to machine code and cannot be directly hosted by the .NET runtime. Contains no free memory management, garbage collection, etc. DLLs created from C/C++ are examples. | -{.show-header} - +| Term | Definition | +| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Runtime | A collection of services that are required to execute a given compiled unit of code. | +| Common Language Runtime (CLR) | Primarily locates, loads, and managed .NET objects. The CLR also handles memory management, application hosting, coordination of threads, performing security checks, and other low-level details. | +| Managed code | Code that compiles and runs on .NET runtime. C#/F#/VB are examples. | +| Unmanaged code | Code that compiles straight to machine code and cannot be directly hosted by the .NET runtime. Contains no free memory management, garbage collection, etc. DLLs created from C/C++ are examples. | +{.show-header} diff --git a/source/_posts/css3.md b/source/_posts/css3.md index 1cfc1976..d0fa6cc4 100644 --- a/source/_posts/css3.md +++ b/source/_posts/css3.md @@ -3,81 +3,82 @@ title: CSS 3 date: 2020-12-25 20:22:47 background: bg-[#3473b5] tags: - - web - - css - - style + - web + - css + - style categories: - - Programming + - Programming intro: | - This is a quick reference cheat sheet for CSS goodness, listing selector syntax, properties, units and other useful bits of information. + This is a quick reference cheat sheet for CSS goodness, listing selector syntax, properties, units and other useful bits of information. plugins: - - copyCode + - copyCode + - runCode --- - - -Getting Started ------------- +## Getting Started ### Introduction {.row-span-3} + CSS is rich in capabilities and is more than simply laying out pages. #### External stylesheet + ```html {.wrap} - + ``` #### Internal stylesheet + ```html ``` -#### Inline styles +#### Inline styles + ```html {.wrap}

Centered text

Blue, 18-point text

``` - ### Add class ```html
-
+
``` -Support multiple classes on one element. - +Support multiple classes on one element. ### !important ```css .post-title { - color: blue !important; + color: blue !important; } ``` Overrides all previous styling rules. - ### Selector ```css -h1 { } -#job-title { } -div.hero { } -div > p { } +h1 { +} +#job-title { +} +div.hero { +} +div > p { +} ``` See: [Selectors](#css-selectors) - - ### Text color ```css @@ -89,88 +90,74 @@ color: hsla(30 100% 50% / 0.6); See: [Colors](#css-colors) - - - ### Background ```css background-color: blue; -background-image: url("nyan-cat.gif"); -background-image: url("../image.png"); +background-image: url('nyan-cat.gif'); +background-image: url('../image.png'); ``` See: [Backgrounds](#css-backgrounds) - - ### Font ```css .page-title { - font-weight: bold; - font-size: 30px; - font-family: "Courier New"; + font-weight: bold; + font-size: 30px; + font-family: 'Courier New'; } ``` -See: [Fonts](#css-fonts) - - +See: [Fonts](#css-fonts) ### Position ```css .box { - position: relative; - top: 20px; - left: 20px; + position: relative; + top: 20px; + left: 20px; } ``` See also: [Position](https://learn-the-web.algonquindesign.ca/topics/css-layout-cheat-sheet/) - - ### Animation -```css +```css animation: 300ms linear 0s infinite; animation: bounce 300ms linear infinite; - ``` -See: [Animation](#css-animation) +See: [Animation](#css-animation) ### Comment -```css +```css /* This is a single line comment */ /* This is a multi-line comment */ ``` - ### Flex layout ```css div { - display: flex; - justify-content: center; + display: flex; + justify-content: center; } div { - display: flex; - justify-content: flex-start; + display: flex; + justify-content: flex-start; } ``` See: [Flexbox](#css-flexbox) | [Flex Tricks](#css-flexbox-tricks) - - - ### Grid layout ```css @@ -188,9 +175,8 @@ See: [Flexbox](#css-flexbox) | [Flex Tricks](#css-flexbox-tricks) See: [Grid Layout](#css-grid-layout) - - ### Variable & Counter + ```css counter-set: subsection; counter-increment: subsection; @@ -206,38 +192,45 @@ element { See: [Dynamic content](#css-dynamic-content) +## CSS Selectors -CSS Selectors ------------ - - -### Examples {.row-span-2} +### Examples {.row-span-2} #### Groups Selector + ```css -h1, h2 { - color: red; +h1, +h2 { + color: red; } ``` -#### Chaining Selector + +#### Chaining Selector + ```css h3.section-heading { - color: blue; + color: blue; } ``` + #### Attribute Selector + ```css -div[attribute="SomeValue"] { - background-color: red; +div[attribute='SomeValue'] { + background-color: red; } ``` + #### First Child Selector + ```css p:first-child { - font-weight: bold; + font-weight: bold; } ``` + #### No Children Selector + ```css .box:empty { background: lime; @@ -246,42 +239,45 @@ p:first-child { } ``` - ### Basic | | | -|--------------|-----------------------------| +| ------------ | --------------------------- | | `*` | All elements | | `div` | All div tags | | `.classname` | All elements with class | | `#idname` | Element with ID | | `div,p` | All divs and paragraphs | | `#idname *` | All elements inside #idname | -See also: [Type](https://developer.mozilla.org/en-US/docs/Web/CSS/Type_selectors) / [Class](https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors) / [ID](https://developer.mozilla.org/en-US/docs/Web/CSS/ID_selectors) / [Universal](https://developer.mozilla.org/en-US/docs/Web/CSS/Universal_selectors) selectors +See also: [Type](https://developer.mozilla.org/en-US/docs/Web/CSS/Type_selectors) / +[Class](https://developer.mozilla.org/en-US/docs/Web/CSS/Class_selectors) / +[ID](https://developer.mozilla.org/en-US/docs/Web/CSS/ID_selectors) / +[Universal](https://developer.mozilla.org/en-US/docs/Web/CSS/Universal_selectors) selectors ### Combinators | Selector | Description | -|-----------------|---------------------------------------| +| --------------- | ------------------------------------- | | `div.classname` | Div with certain classname | | `div#idname` | Div with certain ID | | `div p` | Paragraphs inside divs | | `div > p` | All p tags
_one level deep in div_ | | `div + p` | P tags immediately after div | | `div ~ p` | P tags preceded by div | -See also: [Adjacent](https://developer.mozilla.org/en-US/docs/Web/CSS/Adjacent_sibling_combinator) / [Sibling](https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_combinator) / [Child](https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator) selectors - +See also: [Adjacent](https://developer.mozilla.org/en-US/docs/Web/CSS/Adjacent_sibling_combinator) / +[Sibling](https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_combinator) / +[Child](https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator) selectors ### Attribute selectors | | | -|----------------------|------------------------------------| +| -------------------- | ---------------------------------- | ---------------------------- | | `a[target]` | With a target attribute | | `a[target="_blank"]` | Open in new tab | | `a[href^="/index"]` | Starts with /index | -| `[class|="chair"]` | Starts with chair | +| `[class | ="chair"]` | Starts with chair | | `[class*="chair"]` | containing chair | | `[title~="chair"]` | Contains the word chair | | `a[href$=".doc"]` | Ends with .doc | @@ -289,22 +285,19 @@ See also: [Adjacent](https://developer.mozilla.org/en-US/docs/Web/CSS/Adjacent_s See also: [Attribute selectors](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors) - - - ### User action pseudo classes + | | | -|--------------|-------------------------| +| ------------ | ----------------------- | | `a:link ` | Link in normal state | | `a:active ` | Link in clicked state | | `a:hover ` | Link with mouse over it | | `a:visited ` | Visited link | - - ### Pseudo classes + | | | -|-------------------|-----------------------------------------------------------------------------------------| +| ----------------- | --------------------------------------------------------------------------------------- | | `p::after` | Add content after p | | `p::before` | Add content before p | | `p::first-letter` | First letter in p | @@ -317,11 +310,10 @@ See also: [Attribute selectors](https://developer.mozilla.org/en-US/docs/Web/CSS | `p:lang(en)` | P with en language attribute | | `:not(span)` | Element that's not a span | - - ### Input pseudo classes + | | | -|-----------------------|---------------------------------------------------------------------------------------------| +| --------------------- | ------------------------------------------------------------------------------------------- | | `input:checked` | Checked inputs | | `input:disabled` | Disabled inputs | | `input:enabled` | Enabled inputs | @@ -336,11 +328,10 @@ See also: [Attribute selectors](https://developer.mozilla.org/en-US/docs/Web/CSS | `input:read-write` | No readonly attribute | | `input:indeterminate` | With [indeterminate](https://developer.mozilla.org/en-US/docs/Web/CSS/:indeterminate) state | - - ### Structural pseudo classes + | | | -|-------------------------|----------------------------| +| ----------------------- | -------------------------- | | `p:first-child` | First child | | `p:last-child` | Last child | | `p:first-of-type` | First of some type | @@ -353,27 +344,21 @@ See also: [Attribute selectors](https://developer.mozilla.org/en-US/docs/Web/CSS | `p:only-of-type` | Unique of its parent | | `p:only-child` | Only child of its parent | - - -CSS Fonts ------- - +## CSS Fonts ### Properties {.row-span-3} | Property | Description | -|-------------------|-----------------| +| ----------------- | --------------- | | `font-family:` | \ | | `font-size:` | \ | | `letter-spacing:` | \ | | `line-height:` | \ | -| `font-weight:` | \ / bold / normal | -| `font-style:` | italic / normal | -| `text-decoration:` | underline / none | +| `font-weight:` | \ / bold / normal | | `font-style:` | italic / normal | | `text-decoration:` | underline / +none | -| `text-align:` | left / right
center / justify | -| `text-transform:` | capitalize / uppercase / lowercase | +| `text-align:` | left / right
center / justify | | `text-transform:` | capitalize / uppercase / lowercase | {.left-text} See also: [Font](https://developer.mozilla.org/en-US/docs/Web/CSS/font) @@ -381,7 +366,7 @@ See also: [Font](https://developer.mozilla.org/en-US/docs/Web/CSS/font) ### Shorthand {.secondary .col-span-2} | | style | weight | size (required) | | line-height | family | -|---------|----------|--------|-----------------|-----|-------------|-------------------| +| ------- | -------- | ------ | --------------- | --- | ----------- | ----------------- | | `font:` | `italic` | `400` | `14px` | `/` | `1.5` | `sans-serif` | | | style | weight | size (required) | | line-height | family (required) | @@ -393,11 +378,9 @@ font-size: 12pt; letter-spacing: 0.02em; ``` - ### Case {.row-span-2} ```css - /* Hello */ text-transform: capitalize; @@ -408,22 +391,16 @@ text-transform: uppercase; text-transform: lowercase; ``` - ### @font-face ```css @font-face { - font-family: 'Glegoo'; - src: url('../Glegoo.woff'); + font-family: 'Glegoo'; + src: url('../Glegoo.woff'); } ``` - - - -CSS Colors ------------- - +## CSS Colors ### Named color @@ -434,7 +411,6 @@ color: tan; color: rebeccapurple; ``` - ### Hexadecimal color ```css @@ -444,8 +420,6 @@ color: #090a; color: #009900aa; ``` - - ### rgb() Colors ```css @@ -453,11 +427,10 @@ color: rgb(34, 12, 64, 0.6); color: rgba(34, 12, 64, 0.6); color: rgb(34 12 64 / 0.6); color: rgba(34 12 64 / 0.3); -color: rgb(34.0 12 64 / 60%); +color: rgb(34 12 64 / 60%); color: rgba(34.6 12 64 / 30%); ``` - ### HSL Colors ```css @@ -465,11 +438,12 @@ color: hsl(30, 100%, 50%, 0.6); color: hsla(30, 100%, 50%, 0.6); color: hsl(30 100% 50% / 0.6); color: hsla(30 100% 50% / 0.6); -color: hsl(30.0 100% 50% / 60%); +color: hsl(30 100% 50% / 60%); color: hsla(30.2 100% 50% / 60%); ``` ### Other + ```css color: inherit; color: initial; @@ -479,34 +453,23 @@ color: transparent; color: currentcolor; /* keyword */ ``` - - - - - - -CSS Backgrounds ----------- +## CSS Backgrounds ### Properties {.row-span-2} | Property | Description | -|---------------|---------------| +| ------------- | ------------- | | `background:` | _(Shorthand)_ | -| `background-color:` | See: [Colors](#css-colors) | -| `background-image:` | url(...) | -| `background-position:` | left/center/right
top/center/bottom | -| `background-size:` | cover X Y | -| `background-clip:` | border-box
padding-box
content-box | -| `background-repeat:` | no-repeat
repeat-x
repeat-y | -| `background-attachment:` | scroll/fixed/local | -{.left-text} +| `background-color:` | See: [Colors](#css-colors) | | `background-image:` | url(...) | | `background-position:` | +left/center/right
top/center/bottom | | `background-size:` | cover X Y | | `background-clip:` | +border-box
padding-box
content-box | | `background-repeat:` | no-repeat
repeat-x
repeat-y | | +`background-attachment:` | scroll/fixed/local | {.left-text} ### Shorthand {.secondary .col-span-2} | | color | image | positionX | positionY | | size | repeat | attachment | -|---------------|--------|--------------|-----------|-----------|-----|----------------|-------------|------------| +| ------------- | ------ | ------------ | --------- | --------- | --- | -------------- | ----------- | ---------- | | `background:` | `#ff0` | `url(a.jpg)` | `left` | `top` | `/` | `100px` `auto` | `no-repeat` | `fixed;` | | `background:` | `#abc` | `url(b.png)` | `center` | `center` | `/` | `cover` | `repeat-x` | `local;` | | | color | image | posX | posY | | size | repeat | attach.. | @@ -516,100 +479,100 @@ CSS Backgrounds ```css {.wrap} background: url(img_man.jpg) no-repeat center; -background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat; +background: + url(img_flwr.gif) right bottom no-repeat, + url(paper.gif) left top repeat; -background: rgb(2,0,36); -background: linear-gradient(90deg, rgba(2,0,36,1) 0%, rgba(13,232,230,1) 35%, rgba(0,212,255,1) 100%); +background: rgb(2, 0, 36); +background: linear-gradient( + 90deg, + rgba(2, 0, 36, 1) 0%, + rgba(13, 232, 230, 1) 35%, + rgba(0, 212, 255, 1) 100% +); ``` - - - -CSS The Box Model ------------- - +## CSS The Box Model ### Maximums/Minimums ```css .column { - max-width: 200px; - width: 500px; + max-width: 200px; + width: 500px; } ``` -See also: [max-width](https://developer.mozilla.org/en-US/docs/Web/CSS/max-width) / [min-width](https://developer.mozilla.org/en-US/docs/Web/CSS/min-width) / [max-height](https://developer.mozilla.org/en-US/docs/Web/CSS/max-height) / [min-height](https://developer.mozilla.org/en-US/docs/Web/CSS/min-height) - +See also: [max-width](https://developer.mozilla.org/en-US/docs/Web/CSS/max-width) / +[min-width](https://developer.mozilla.org/en-US/docs/Web/CSS/min-width) / +[max-height](https://developer.mozilla.org/en-US/docs/Web/CSS/max-height) / +[min-height](https://developer.mozilla.org/en-US/docs/Web/CSS/min-height) ### Margin / Padding ```css .block-one { - margin: 20px; - padding: 10px; + margin: 20px; + padding: 10px; } ``` -See also: [Margin](https://developer.mozilla.org/en-US/docs/Web/CSS/margin) / [Padding](https://developer.mozilla.org/en-US/docs/Web/CSS/padding) +See also: [Margin](https://developer.mozilla.org/en-US/docs/Web/CSS/margin) / +[Padding](https://developer.mozilla.org/en-US/docs/Web/CSS/padding) ### Box-sizing ```css .container { - box-sizing: border-box; + box-sizing: border-box; } ``` -See also: [Box-sizing](https://developer.mozilla.org/en-US/docs/Web/CSS/Box-sizing) - +See also: [Box-sizing](https://developer.mozilla.org/en-US/docs/Web/CSS/Box-sizing) -### Visibility +### Visibility ```css .invisible-elements { - visibility: hidden; + visibility: hidden; } ``` -See also: [Visibility](https://developer.mozilla.org/en-US/docs/Web/CSS/visibility) +See also: [Visibility](https://developer.mozilla.org/en-US/docs/Web/CSS/visibility) ### Auto keyword ```css div { - margin: auto; + margin: auto; } ``` -See also: [Margin](https://developer.mozilla.org/en-US/docs/Web/CSS/margin) +See also: [Margin](https://developer.mozilla.org/en-US/docs/Web/CSS/margin) ### Overflow ```css .small-block { - overflow: scroll; + overflow: scroll; } ``` -See also: [Overflow](https://developer.mozilla.org/en-US/docs/Web/CSS/overflow) +See also: [Overflow](https://developer.mozilla.org/en-US/docs/Web/CSS/overflow) - - -CSS Animation {.cols-5} ---------- - +## CSS Animation {.cols-5} ### Shorthand {.col-span-5 .secondary} | | name | duration | timing-function | delay | count | direction | fill-mode | play-state | -|--------------|----------|----------|-----------------|---------|------------|---------------------|-----------|------------| +| ------------ | -------- | -------- | --------------- | ------- | ---------- | ------------------- | --------- | ---------- | | `animation:` | `bounce` | `300ms` | `linear` | `100ms` | `infinite` | `alternate-reverse` | `both` | `reverse` | | | name | duration | timing-function | delay | count | direction | fill-mode | play-state | ### Properties {.row-span-2 .col-span-2} | Property | Value | -|------------------------------|--------------------------------------------------------| +| ---------------------------- | ------------------------------------------------------ | | `animation:` | _(shorthand)_ | | `animation-name:` | \ | | `animation-duration:` | \