diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1b0255d198..9f9f6f27d1 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,12 +1,12 @@ { "name": "Gitea DevContainer", - "image": "mcr.microsoft.com/devcontainers/go:1.22-bullseye", + "image": "mcr.microsoft.com/devcontainers/go:1.23-bookworm", "features": { // installs nodejs into container "ghcr.io/devcontainers/features/node:1": { "version": "20" }, - "ghcr.io/devcontainers/features/git-lfs:1.1.0": {}, + "ghcr.io/devcontainers/features/git-lfs:1.2.2": {}, "ghcr.io/devcontainers-contrib/features/poetry:2": {}, "ghcr.io/devcontainers/features/python:1": { "version": "3.12" diff --git a/.github/ISSUE_TEMPLATE/bug-report.yaml b/.github/ISSUE_TEMPLATE/bug-report.yaml index ed29bdb4e6..4dbe1a4c56 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yaml +++ b/.github/ISSUE_TEMPLATE/bug-report.yaml @@ -11,7 +11,7 @@ body: value: | 1. Please speak English, this is the language all maintainers can speak and write. 2. Please ask questions or configuration/deploy problems on our Discord - server (https://discord.gg/gitea) or forum (https://discourse.gitea.io). + server (https://discord.gg/gitea) or forum (https://forum.gitea.com). 3. Make sure you are using the latest release and take a moment to check that your issue hasn't been reported before. 4. Make sure it's not mentioned in the FAQ (https://docs.gitea.com/help/faq) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index e769873f47..d37ce219c3 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -7,7 +7,7 @@ contact_links: url: https://discord.gg/Gitea about: Please ask questions and discuss configuration or deployment problems here. - name: Discourse Forum - url: https://discourse.gitea.io + url: https://forum.gitea.com about: Questions and configuration or deployment problems can also be discussed on our forum. - name: Frequently Asked Questions url: https://docs.gitea.com/help/faq diff --git a/.github/ISSUE_TEMPLATE/feature-request.yaml b/.github/ISSUE_TEMPLATE/feature-request.yaml index 3c9953019d..d5c480d202 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.yaml +++ b/.github/ISSUE_TEMPLATE/feature-request.yaml @@ -7,7 +7,7 @@ body: value: | 1. Please speak English, this is the language all maintainers can speak and write. 2. Please ask questions or configuration/deploy problems on our Discord - server (https://discord.gg/gitea) or forum (https://discourse.gitea.io). + server (https://discord.gg/gitea) or forum (https://forum.gitea.com). 3. Please take a moment to check that your feature hasn't already been suggested. - type: textarea id: description diff --git a/.github/ISSUE_TEMPLATE/ui.bug-report.yaml b/.github/ISSUE_TEMPLATE/ui.bug-report.yaml index 1560879674..3ad5dbaf54 100644 --- a/.github/ISSUE_TEMPLATE/ui.bug-report.yaml +++ b/.github/ISSUE_TEMPLATE/ui.bug-report.yaml @@ -11,7 +11,7 @@ body: value: | 1. Please speak English, this is the language all maintainers can speak and write. 2. Please ask questions or configuration/deploy problems on our Discord - server (https://discord.gg/gitea) or forum (https://discourse.gitea.io). + server (https://discord.gg/gitea) or forum (https://forum.gitea.com). 3. Please take a moment to check that your issue doesn't already exist. 4. Make sure it's not mentioned in the FAQ (https://docs.gitea.com/help/faq) 5. Please give all relevant information below for bug reports, because diff --git a/.github/labeler.yml b/.github/labeler.yml index 265616baed..46efbcb194 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -70,10 +70,11 @@ modifies/go: - any-glob-to-any-file: - "**/*.go" -modifies/js: +modifies/frontend: - changed-files: - any-glob-to-any-file: - "**/*.js" + - "**/*.ts" - "**/*.vue" docs-update-needed: diff --git a/.github/workflows/pull-db-tests.yml b/.github/workflows/pull-db-tests.yml index 246884f24b..22cb784245 100644 --- a/.github/workflows/pull-db-tests.yml +++ b/.github/workflows/pull-db-tests.yml @@ -198,7 +198,9 @@ jobs: test-mssql: if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true' needs: files-changed - runs-on: ubuntu-latest + # specifying the version of ubuntu in use as mssql fails on newer kernels + # pending resolution from vendor + runs-on: ubuntu-20.04 services: mssql: image: mcr.microsoft.com/mssql/server:2017-latest diff --git a/Dockerfile b/Dockerfile index 6621dded9d..2a6b1dd6b7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM docker.io/library/golang:1.22-alpine3.20 AS build-env +FROM docker.io/library/golang:1.23-alpine3.20 AS build-env ARG GOPROXY ENV GOPROXY=${GOPROXY:-direct} diff --git a/Dockerfile.rootless b/Dockerfile.rootless index 736cea5d05..26f02205a7 100644 --- a/Dockerfile.rootless +++ b/Dockerfile.rootless @@ -1,5 +1,5 @@ # Build stage -FROM docker.io/library/golang:1.22-alpine3.20 AS build-env +FROM docker.io/library/golang:1.23-alpine3.20 AS build-env ARG GOPROXY ENV GOPROXY=${GOPROXY:-direct} diff --git a/Makefile b/Makefile index 0f72f97673..b9e940b248 100644 --- a/Makefile +++ b/Makefile @@ -23,12 +23,12 @@ SHASUM ?= shasum -a 256 HAS_GO := $(shell hash $(GO) > /dev/null 2>&1 && echo yes) COMMA := , -XGO_VERSION := go-1.22.x +XGO_VERSION := go-1.23.x AIR_PACKAGE ?= github.com/air-verse/air@v1 EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker@2.7.0 -GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.6.0 -GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.59.0 +GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.7.0 +GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60.3 GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11 MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.5.1 SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.31.0 @@ -179,6 +179,7 @@ TEST_PGSQL_DBNAME ?= testgitea TEST_PGSQL_USERNAME ?= postgres TEST_PGSQL_PASSWORD ?= postgres TEST_PGSQL_SCHEMA ?= gtestschema +TEST_MINIO_ENDPOINT ?= minio:9000 TEST_MSSQL_HOST ?= mssql:1433 TEST_MSSQL_DBNAME ?= gitea TEST_MSSQL_USERNAME ?= sa @@ -574,6 +575,7 @@ generate-ini-pgsql: -e 's|{{TEST_PGSQL_USERNAME}}|${TEST_PGSQL_USERNAME}|g' \ -e 's|{{TEST_PGSQL_PASSWORD}}|${TEST_PGSQL_PASSWORD}|g' \ -e 's|{{TEST_PGSQL_SCHEMA}}|${TEST_PGSQL_SCHEMA}|g' \ + -e 's|{{TEST_MINIO_ENDPOINT}}|${TEST_MINIO_ENDPOINT}|g' \ -e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \ -e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \ -e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \ diff --git a/assets/go-licenses.json b/assets/go-licenses.json index 1b6c2d9e78..4b78a12030 100644 --- a/assets/go-licenses.json +++ b/assets/go-licenses.json @@ -74,6 +74,11 @@ "path": "gitea.com/lunny/levelqueue/LICENSE", "licenseText": "Copyright (c) 2019 Lunny Xiao\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n" }, + { + "name": "github.com/42wim/httpsig", + "path": "github.com/42wim/httpsig/LICENSE", + "licenseText": "BSD 3-Clause License\n\nCopyright (c) 2018, go-fed\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + }, { "name": "github.com/42wim/sshsig", "path": "github.com/42wim/sshsig/LICENSE", @@ -144,6 +149,56 @@ "path": "github.com/anmitsu/go-shlex/LICENSE", "licenseText": "Copyright (c) anmitsu \u003canmitsu.s@gmail.com\u003e\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" }, + { + "name": "github.com/aws/aws-sdk-go-v2", + "path": "github.com/aws/aws-sdk-go-v2/LICENSE.txt", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, + { + "name": "github.com/aws/aws-sdk-go-v2/credentials", + "path": "github.com/aws/aws-sdk-go-v2/credentials/LICENSE.txt", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, + { + "name": "github.com/aws/aws-sdk-go-v2/internal/configsources", + "path": "github.com/aws/aws-sdk-go-v2/internal/configsources/LICENSE.txt", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, + { + "name": "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2", + "path": "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/LICENSE.txt", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, + { + "name": "github.com/aws/aws-sdk-go-v2/internal/sync/singleflight", + "path": "github.com/aws/aws-sdk-go-v2/internal/sync/singleflight/LICENSE", + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n" + }, + { + "name": "github.com/aws/aws-sdk-go-v2/service/codecommit", + "path": "github.com/aws/aws-sdk-go-v2/service/codecommit/LICENSE.txt", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, + { + "name": "github.com/aws/aws-sdk-go", + "path": "github.com/aws/aws-sdk-go/LICENSE.txt", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, + { + "name": "github.com/aws/aws-sdk-go/internal/sync/singleflight", + "path": "github.com/aws/aws-sdk-go/internal/sync/singleflight/LICENSE", + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + }, + { + "name": "github.com/aws/smithy-go", + "path": "github.com/aws/smithy-go/LICENSE", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n" + }, + { + "name": "github.com/aws/smithy-go/internal/sync/singleflight", + "path": "github.com/aws/smithy-go/internal/sync/singleflight/LICENSE", + "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n" + }, { "name": "github.com/aymerick/douceur", "path": "github.com/aymerick/douceur/LICENSE", @@ -289,6 +344,11 @@ "path": "github.com/cespare/xxhash/v2/LICENSE.txt", "licenseText": "Copyright (c) 2016 Caleb Spare\n\nMIT License\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" }, + { + "name": "github.com/charmbracelet/git-lfs-transfer/transfer", + "path": "github.com/charmbracelet/git-lfs-transfer/transfer/LICENSE", + "licenseText": "MIT License\n\nCopyright (c) 2022-2023 Charmbracelet, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" + }, { "name": "github.com/chi-middleware/proxy", "path": "github.com/chi-middleware/proxy/LICENSE", @@ -409,6 +469,11 @@ "path": "github.com/fxamacker/cbor/v2/LICENSE", "licenseText": "MIT License\n\nCopyright (c) 2019-present Faye Amacker\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." }, + { + "name": "github.com/git-lfs/pktline", + "path": "github.com/git-lfs/pktline/LICENSE.md", + "licenseText": "MIT License\n\nCopyright (c) 2014- GitHub, Inc. and Git LFS contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nNote that Git LFS uses components from other Go modules (included in `vendor/`)\nwhich are under different licenses. See those LICENSE files for details.\n" + }, { "name": "github.com/gliderlabs/ssh", "path": "github.com/gliderlabs/ssh/LICENSE", @@ -484,11 +549,21 @@ "path": "github.com/go-git/go-git/v5/LICENSE", "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright 2018 Sourced Technologies, S.L.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, + { + "name": "github.com/go-ini/ini", + "path": "github.com/go-ini/ini/LICENSE", + "licenseText": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the terms and conditions for use, reproduction, and\ndistribution as defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or entity authorized by the copyright\nowner that is granting the License.\n\n\"Legal Entity\" shall mean the union of the acting entity and all other entities\nthat control, are controlled by, or are under common control with that entity.\nFor the purposes of this definition, \"control\" means (i) the power, direct or\nindirect, to cause the direction or management of such entity, whether by\ncontract or otherwise, or (ii) ownership of fifty percent (50%) or more of the\noutstanding shares, or (iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising\npermissions granted by this License.\n\n\"Source\" form shall mean the preferred form for making modifications, including\nbut not limited to software source code, documentation source, and configuration\nfiles.\n\n\"Object\" form shall mean any form resulting from mechanical transformation or\ntranslation of a Source form, including but not limited to compiled object code,\ngenerated documentation, and conversions to other media types.\n\n\"Work\" shall mean the work of authorship, whether in Source or Object form, made\navailable under the License, as indicated by a copyright notice that is included\nin or attached to the work (an example is provided in the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in Source or Object form, that\nis based on (or derived from) the Work and for which the editorial revisions,\nannotations, elaborations, or other modifications represent, as a whole, an\noriginal work of authorship. For the purposes of this License, Derivative Works\nshall not include works that remain separable from, or merely link (or bind by\nname) to the interfaces of, the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work of authorship, including the original version\nof the Work and any modifications or additions to that Work or Derivative Works\nthereof, that is intentionally submitted to Licensor for inclusion in the Work\nby the copyright owner or by an individual or Legal Entity authorized to submit\non behalf of the copyright owner. For the purposes of this definition,\n\"submitted\" means any form of electronic, verbal, or written communication sent\nto the Licensor or its representatives, including but not limited to\ncommunication on electronic mailing lists, source code control systems, and\nissue tracking systems that are managed by, or on behalf of, the Licensor for\nthe purpose of discussing and improving the Work, but excluding communication\nthat is conspicuously marked or otherwise designated in writing by the copyright\nowner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf\nof whom a Contribution has been received by Licensor and subsequently\nincorporated within the Work.\n\n2. Grant of Copyright License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable copyright license to reproduce, prepare Derivative Works of,\npublicly display, publicly perform, sublicense, and distribute the Work and such\nDerivative Works in Source or Object form.\n\n3. Grant of Patent License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable (except as stated in this section) patent license to make, have\nmade, use, offer to sell, sell, import, and otherwise transfer the Work, where\nsuch license applies only to those patent claims licensable by such Contributor\nthat are necessarily infringed by their Contribution(s) alone or by combination\nof their Contribution(s) with the Work to which such Contribution(s) was\nsubmitted. If You institute patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Work or a\nContribution incorporated within the Work constitutes direct or contributory\npatent infringement, then any patent licenses granted to You under this License\nfor that Work shall terminate as of the date such litigation is filed.\n\n4. Redistribution.\n\nYou may reproduce and distribute copies of the Work or Derivative Works thereof\nin any medium, with or without modifications, and in Source or Object form,\nprovided that You meet the following conditions:\n\nYou must give any other recipients of the Work or Derivative Works a copy of\nthis License; and\nYou must cause any modified files to carry prominent notices stating that You\nchanged the files; and\nYou must retain, in the Source form of any Derivative Works that You distribute,\nall copyright, patent, trademark, and attribution notices from the Source form\nof the Work, excluding those notices that do not pertain to any part of the\nDerivative Works; and\nIf the Work includes a \"NOTICE\" text file as part of its distribution, then any\nDerivative Works that You distribute must include a readable copy of the\nattribution notices contained within such NOTICE file, excluding those notices\nthat do not pertain to any part of the Derivative Works, in at least one of the\nfollowing places: within a NOTICE text file distributed as part of the\nDerivative Works; within the Source form or documentation, if provided along\nwith the Derivative Works; or, within a display generated by the Derivative\nWorks, if and wherever such third-party notices normally appear. The contents of\nthe NOTICE file are for informational purposes only and do not modify the\nLicense. You may add Your own attribution notices within Derivative Works that\nYou distribute, alongside or as an addendum to the NOTICE text from the Work,\nprovided that such additional attribution notices cannot be construed as\nmodifying the License.\nYou may add Your own copyright statement to Your modifications and may provide\nadditional or different license terms and conditions for use, reproduction, or\ndistribution of Your modifications, or for any such Derivative Works as a whole,\nprovided Your use, reproduction, and distribution of the Work otherwise complies\nwith the conditions stated in this License.\n\n5. Submission of Contributions.\n\nUnless You explicitly state otherwise, any Contribution intentionally submitted\nfor inclusion in the Work by You to the Licensor shall be under the terms and\nconditions of this License, without any additional terms or conditions.\nNotwithstanding the above, nothing herein shall supersede or modify the terms of\nany separate license agreement you may have executed with Licensor regarding\nsuch Contributions.\n\n6. Trademarks.\n\nThis License does not grant permission to use the trade names, trademarks,\nservice marks, or product names of the Licensor, except as required for\nreasonable and customary use in describing the origin of the Work and\nreproducing the content of the NOTICE file.\n\n7. Disclaimer of Warranty.\n\nUnless required by applicable law or agreed to in writing, Licensor provides the\nWork (and each Contributor provides its Contributions) on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,\nincluding, without limitation, any warranties or conditions of TITLE,\nNON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are\nsolely responsible for determining the appropriateness of using or\nredistributing the Work and assume any risks associated with Your exercise of\npermissions under this License.\n\n8. Limitation of Liability.\n\nIn no event and under no legal theory, whether in tort (including negligence),\ncontract, or otherwise, unless required by applicable law (such as deliberate\nand grossly negligent acts) or agreed to in writing, shall any Contributor be\nliable to You for damages, including any direct, indirect, special, incidental,\nor consequential damages of any character arising as a result of this License or\nout of the use or inability to use the Work (including but not limited to\ndamages for loss of goodwill, work stoppage, computer failure or malfunction, or\nany and all other commercial damages or losses), even if such Contributor has\nbeen advised of the possibility of such damages.\n\n9. Accepting Warranty or Additional Liability.\n\nWhile redistributing the Work or Derivative Works thereof, You may choose to\noffer, and charge a fee for, acceptance of support, warranty, indemnity, or\nother liability obligations and/or rights consistent with this License. However,\nin accepting such obligations, You may act only on Your own behalf and on Your\nsole responsibility, not on behalf of any other Contributor, and only if You\nagree to indemnify, defend, and hold each Contributor harmless for any liability\nincurred by, or claims asserted against, such Contributor by reason of your\naccepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work\n\nTo apply the Apache License to your work, attach the following boilerplate\nnotice, with the fields enclosed by brackets \"[]\" replaced with your own\nidentifying information. (Don't include the brackets!) The text should be\nenclosed in the appropriate comment syntax for the file format. We also\nrecommend that a file or class name and description of purpose be included on\nthe same \"printed page\" as the copyright notice for easier identification within\nthird-party archives.\n\n Copyright 2014 Unknwon\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "github.com/go-ldap/ldap/v3", "path": "github.com/go-ldap/ldap/v3/LICENSE", "licenseText": "The MIT License (MIT)\n\nCopyright (c) 2011-2015 Michael Mitton (mmitton@gmail.com)\nPortions copyright (c) 2015-2016 go-ldap Authors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n" }, + { + "name": "github.com/go-redsync/redsync/v4", + "path": "github.com/go-redsync/redsync/v4/LICENSE", + "licenseText": "Copyright (c) 2023, Mahmud Ridwan\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the Redsync nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + }, { "name": "github.com/go-sql-driver/mysql", "path": "github.com/go-sql-driver/mysql/LICENSE", @@ -589,6 +664,11 @@ "path": "github.com/google/go-tpm/LICENSE", "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, + { + "name": "github.com/google/licenseclassifier/v2", + "path": "github.com/google/licenseclassifier/v2/LICENSE", + "licenseText": "\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" + }, { "name": "github.com/google/pprof/profile", "path": "github.com/google/pprof/profile/LICENSE", @@ -624,11 +704,21 @@ "path": "github.com/gorilla/sessions/LICENSE", "licenseText": "Copyright (c) 2023 The Gorilla Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n\t * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n\t * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, + { + "name": "github.com/hashicorp/errwrap", + "path": "github.com/hashicorp/errwrap/LICENSE", + "licenseText": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. “Contributorâ€\n\n means each individual or legal entity that creates, contributes to the\n creation of, or owns Covered Software.\n\n1.2. “Contributor Versionâ€\n\n means the combination of the Contributions of others (if any) used by a\n Contributor and that particular Contributor’s Contribution.\n\n1.3. “Contributionâ€\n\n means Covered Software of a particular Contributor.\n\n1.4. “Covered Softwareâ€\n\n means Source Code Form to which the initial Contributor has attached the\n notice in Exhibit A, the Executable Form of such Source Code Form, and\n Modifications of such Source Code Form, in each case including portions\n thereof.\n\n1.5. “Incompatible With Secondary Licensesâ€\n means\n\n a. that the initial Contributor has attached the notice described in\n Exhibit B to the Covered Software; or\n\n b. that the Covered Software was made available under the terms of version\n 1.1 or earlier of the License, but not also under the terms of a\n Secondary License.\n\n1.6. “Executable Formâ€\n\n means any form of the work other than Source Code Form.\n\n1.7. “Larger Workâ€\n\n means a work that combines Covered Software with other material, in a separate\n file or files, that is not Covered Software.\n\n1.8. “Licenseâ€\n\n means this document.\n\n1.9. “Licensableâ€\n\n means having the right to grant, to the maximum extent possible, whether at the\n time of the initial grant or subsequently, any and all of the rights conveyed by\n this License.\n\n1.10. “Modificationsâ€\n\n means any of the following:\n\n a. any file in Source Code Form that results from an addition to, deletion\n from, or modification of the contents of Covered Software; or\n\n b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. “Patent Claims†of a Contributor\n\n means any patent claim(s), including without limitation, method, process,\n and apparatus claims, in any patent Licensable by such Contributor that\n would be infringed, but for the grant of the License, by the making,\n using, selling, offering for sale, having made, import, or transfer of\n either its Contributions or its Contributor Version.\n\n1.12. “Secondary Licenseâ€\n\n means either the GNU General Public License, Version 2.0, the GNU Lesser\n General Public License, Version 2.1, the GNU Affero General Public\n License, Version 3.0, or any later versions of those licenses.\n\n1.13. “Source Code Formâ€\n\n means the form of the work preferred for making modifications.\n\n1.14. “You†(or “Yourâ€)\n\n means an individual or a legal entity exercising rights under this\n License. For legal entities, “You†includes any entity that controls, is\n controlled by, or is under common control with You. For purposes of this\n definition, “control†means (a) the power, direct or indirect, to cause\n the direction or management of such entity, whether by contract or\n otherwise, or (b) ownership of more than fifty percent (50%) of the\n outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n Each Contributor hereby grants You a world-wide, royalty-free,\n non-exclusive license:\n\n a. under intellectual property rights (other than patent or trademark)\n Licensable by such Contributor to use, reproduce, make available,\n modify, display, perform, distribute, and otherwise exploit its\n Contributions, either on an unmodified basis, with Modifications, or as\n part of a Larger Work; and\n\n b. under Patent Claims of such Contributor to make, use, sell, offer for\n sale, have made, import, and otherwise transfer either its Contributions\n or its Contributor Version.\n\n2.2. Effective Date\n\n The licenses granted in Section 2.1 with respect to any Contribution become\n effective for each Contribution on the date the Contributor first distributes\n such Contribution.\n\n2.3. Limitations on Grant Scope\n\n The licenses granted in this Section 2 are the only rights granted under this\n License. No additional rights or licenses will be implied from the distribution\n or licensing of Covered Software under this License. Notwithstanding Section\n 2.1(b) above, no patent license is granted by a Contributor:\n\n a. for any code that a Contributor has removed from Covered Software; or\n\n b. for infringements caused by: (i) Your and any other third party’s\n modifications of Covered Software, or (ii) the combination of its\n Contributions with other software (except as part of its Contributor\n Version); or\n\n c. under Patent Claims infringed by Covered Software in the absence of its\n Contributions.\n\n This License does not grant any rights in the trademarks, service marks, or\n logos of any Contributor (except as may be necessary to comply with the\n notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n No Contributor makes additional grants as a result of Your choice to\n distribute the Covered Software under a subsequent version of this License\n (see Section 10.2) or under the terms of a Secondary License (if permitted\n under the terms of Section 3.3).\n\n2.5. Representation\n\n Each Contributor represents that the Contributor believes its Contributions\n are its original creation(s) or it has sufficient rights to grant the\n rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n This License is not intended to limit any rights You have under applicable\n copyright doctrines of fair use, fair dealing, or other equivalents.\n\n2.7. Conditions\n\n Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n All distribution of Covered Software in Source Code Form, including any\n Modifications that You create or to which You contribute, must be under the\n terms of this License. You must inform recipients that the Source Code Form\n of the Covered Software is governed by the terms of this License, and how\n they can obtain a copy of this License. You may not attempt to alter or\n restrict the recipients’ rights in the Source Code Form.\n\n3.2. Distribution of Executable Form\n\n If You distribute Covered Software in Executable Form then:\n\n a. such Covered Software must also be made available in Source Code Form,\n as described in Section 3.1, and You must inform recipients of the\n Executable Form how they can obtain a copy of such Source Code Form by\n reasonable means in a timely manner, at a charge no more than the cost\n of distribution to the recipient; and\n\n b. You may distribute such Executable Form under the terms of this License,\n or sublicense it under different terms, provided that the license for\n the Executable Form does not attempt to limit or alter the recipients’\n rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n You may create and distribute a Larger Work under terms of Your choice,\n provided that You also comply with the requirements of this License for the\n Covered Software. If the Larger Work is a combination of Covered Software\n with a work governed by one or more Secondary Licenses, and the Covered\n Software is not Incompatible With Secondary Licenses, this License permits\n You to additionally distribute such Covered Software under the terms of\n such Secondary License(s), so that the recipient of the Larger Work may, at\n their option, further distribute the Covered Software under the terms of\n either this License or such Secondary License(s).\n\n3.4. Notices\n\n You may not remove or alter the substance of any license notices (including\n copyright notices, patent notices, disclaimers of warranty, or limitations\n of liability) contained within the Source Code Form of the Covered\n Software, except that You may alter any license notices to the extent\n required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n You may choose to offer, and to charge a fee for, warranty, support,\n indemnity or liability obligations to one or more recipients of Covered\n Software. However, You may do so only on Your own behalf, and not on behalf\n of any Contributor. You must make it absolutely clear that any such\n warranty, support, indemnity, or liability obligation is offered by You\n alone, and You hereby agree to indemnify every Contributor for any\n liability incurred by such Contributor as a result of warranty, support,\n indemnity or liability terms You offer. You may include additional\n disclaimers of warranty and limitations of liability specific to any\n jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n If it is impossible for You to comply with any of the terms of this License\n with respect to some or all of the Covered Software due to statute, judicial\n order, or regulation then You must: (a) comply with the terms of this License\n to the maximum extent possible; and (b) describe the limitations and the code\n they affect. Such description must be placed in a text file included with all\n distributions of the Covered Software under this License. Except to the\n extent prohibited by statute or regulation, such description must be\n sufficiently detailed for a recipient of ordinary skill to be able to\n understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n fail to comply with any of its terms. However, if You become compliant,\n then the rights granted under this License from a particular Contributor\n are reinstated (a) provisionally, unless and until such Contributor\n explicitly and finally terminates Your grants, and (b) on an ongoing basis,\n if such Contributor fails to notify You of the non-compliance by some\n reasonable means prior to 60 days after You have come back into compliance.\n Moreover, Your grants from a particular Contributor are reinstated on an\n ongoing basis if such Contributor notifies You of the non-compliance by\n some reasonable means, this is the first time You have received notice of\n non-compliance with this License from such Contributor, and You become\n compliant prior to 30 days after Your receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n infringement claim (excluding declaratory judgment actions, counter-claims,\n and cross-claims) alleging that a Contributor Version directly or\n indirectly infringes any patent, then the rights granted to You by any and\n all Contributors for the Covered Software under Section 2.1 of this License\n shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n license agreements (excluding distributors and resellers) which have been\n validly granted by You or Your distributors under this License prior to\n termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n Covered Software is provided under this License on an “as is†basis, without\n warranty of any kind, either expressed, implied, or statutory, including,\n without limitation, warranties that the Covered Software is free of defects,\n merchantable, fit for a particular purpose or non-infringing. The entire\n risk as to the quality and performance of the Covered Software is with You.\n Should any Covered Software prove defective in any respect, You (not any\n Contributor) assume the cost of any necessary servicing, repair, or\n correction. This disclaimer of warranty constitutes an essential part of this\n License. No use of any Covered Software is authorized under this License\n except under this disclaimer.\n\n7. Limitation of Liability\n\n Under no circumstances and under no legal theory, whether tort (including\n negligence), contract, or otherwise, shall any Contributor, or anyone who\n distributes Covered Software as permitted above, be liable to You for any\n direct, indirect, special, incidental, or consequential damages of any\n character including, without limitation, damages for lost profits, loss of\n goodwill, work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses, even if such party shall have been\n informed of the possibility of such damages. This limitation of liability\n shall not apply to liability for death or personal injury resulting from such\n party’s negligence to the extent applicable law prohibits such limitation.\n Some jurisdictions do not allow the exclusion or limitation of incidental or\n consequential damages, so this exclusion and limitation may not apply to You.\n\n8. Litigation\n\n Any litigation relating to this License may be brought only in the courts of\n a jurisdiction where the defendant maintains its principal place of business\n and such litigation shall be governed by laws of that jurisdiction, without\n reference to its conflict-of-law provisions. Nothing in this Section shall\n prevent a party’s ability to bring cross-claims or counter-claims.\n\n9. Miscellaneous\n\n This License represents the complete agreement concerning the subject matter\n hereof. If any provision of this License is held to be unenforceable, such\n provision shall be reformed only to the extent necessary to make it\n enforceable. Any law or regulation which provides that the language of a\n contract shall be construed against the drafter shall not be used to construe\n this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n Mozilla Foundation is the license steward. Except as provided in Section\n 10.3, no one other than the license steward has the right to modify or\n publish new versions of this License. Each version will be given a\n distinguishing version number.\n\n10.2. Effect of New Versions\n\n You may distribute the Covered Software under the terms of the version of\n the License under which You originally received the Covered Software, or\n under the terms of any subsequent version published by the license\n steward.\n\n10.3. Modified Versions\n\n If you create software not governed by this License, and you want to\n create a new license for such software, you may create and use a modified\n version of this License if you rename the license and remove any\n references to the name of the license steward (except to note that such\n modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n If You choose to distribute Source Code Form that is Incompatible With\n Secondary Licenses under the terms of this version of the License, the\n notice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n\n This Source Code Form is subject to the\n terms of the Mozilla Public License, v.\n 2.0. If a copy of the MPL was not\n distributed with this file, You can\n obtain one at\n http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file, then\nYou may include the notice in a location (such as a LICENSE file in a relevant\ndirectory) where a recipient would be likely to look for such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - “Incompatible With Secondary Licenses†Notice\n\n This Source Code Form is “Incompatible\n With Secondary Licensesâ€, as defined by\n the Mozilla Public License, v. 2.0.\n\n" + }, { "name": "github.com/hashicorp/go-cleanhttp", "path": "github.com/hashicorp/go-cleanhttp/LICENSE", "licenseText": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. \"Contributor\"\n\n means each individual or legal entity that creates, contributes to the\n creation of, or owns Covered Software.\n\n1.2. \"Contributor Version\"\n\n means the combination of the Contributions of others (if any) used by a\n Contributor and that particular Contributor's Contribution.\n\n1.3. \"Contribution\"\n\n means Covered Software of a particular Contributor.\n\n1.4. \"Covered Software\"\n\n means Source Code Form to which the initial Contributor has attached the\n notice in Exhibit A, the Executable Form of such Source Code Form, and\n Modifications of such Source Code Form, in each case including portions\n thereof.\n\n1.5. \"Incompatible With Secondary Licenses\"\n means\n\n a. that the initial Contributor has attached the notice described in\n Exhibit B to the Covered Software; or\n\n b. that the Covered Software was made available under the terms of\n version 1.1 or earlier of the License, but not also under the terms of\n a Secondary License.\n\n1.6. \"Executable Form\"\n\n means any form of the work other than Source Code Form.\n\n1.7. \"Larger Work\"\n\n means a work that combines Covered Software with other material, in a\n separate file or files, that is not Covered Software.\n\n1.8. \"License\"\n\n means this document.\n\n1.9. \"Licensable\"\n\n means having the right to grant, to the maximum extent possible, whether\n at the time of the initial grant or subsequently, any and all of the\n rights conveyed by this License.\n\n1.10. \"Modifications\"\n\n means any of the following:\n\n a. any file in Source Code Form that results from an addition to,\n deletion from, or modification of the contents of Covered Software; or\n\n b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. \"Patent Claims\" of a Contributor\n\n means any patent claim(s), including without limitation, method,\n process, and apparatus claims, in any patent Licensable by such\n Contributor that would be infringed, but for the grant of the License,\n by the making, using, selling, offering for sale, having made, import,\n or transfer of either its Contributions or its Contributor Version.\n\n1.12. \"Secondary License\"\n\n means either the GNU General Public License, Version 2.0, the GNU Lesser\n General Public License, Version 2.1, the GNU Affero General Public\n License, Version 3.0, or any later versions of those licenses.\n\n1.13. \"Source Code Form\"\n\n means the form of the work preferred for making modifications.\n\n1.14. \"You\" (or \"Your\")\n\n means an individual or a legal entity exercising rights under this\n License. For legal entities, \"You\" includes any entity that controls, is\n controlled by, or is under common control with You. For purposes of this\n definition, \"control\" means (a) the power, direct or indirect, to cause\n the direction or management of such entity, whether by contract or\n otherwise, or (b) ownership of more than fifty percent (50%) of the\n outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n Each Contributor hereby grants You a world-wide, royalty-free,\n non-exclusive license:\n\n a. under intellectual property rights (other than patent or trademark)\n Licensable by such Contributor to use, reproduce, make available,\n modify, display, perform, distribute, and otherwise exploit its\n Contributions, either on an unmodified basis, with Modifications, or\n as part of a Larger Work; and\n\n b. under Patent Claims of such Contributor to make, use, sell, offer for\n sale, have made, import, and otherwise transfer either its\n Contributions or its Contributor Version.\n\n2.2. Effective Date\n\n The licenses granted in Section 2.1 with respect to any Contribution\n become effective for each Contribution on the date the Contributor first\n distributes such Contribution.\n\n2.3. Limitations on Grant Scope\n\n The licenses granted in this Section 2 are the only rights granted under\n this License. No additional rights or licenses will be implied from the\n distribution or licensing of Covered Software under this License.\n Notwithstanding Section 2.1(b) above, no patent license is granted by a\n Contributor:\n\n a. for any code that a Contributor has removed from Covered Software; or\n\n b. for infringements caused by: (i) Your and any other third party's\n modifications of Covered Software, or (ii) the combination of its\n Contributions with other software (except as part of its Contributor\n Version); or\n\n c. under Patent Claims infringed by Covered Software in the absence of\n its Contributions.\n\n This License does not grant any rights in the trademarks, service marks,\n or logos of any Contributor (except as may be necessary to comply with\n the notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n No Contributor makes additional grants as a result of Your choice to\n distribute the Covered Software under a subsequent version of this\n License (see Section 10.2) or under the terms of a Secondary License (if\n permitted under the terms of Section 3.3).\n\n2.5. Representation\n\n Each Contributor represents that the Contributor believes its\n Contributions are its original creation(s) or it has sufficient rights to\n grant the rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n This License is not intended to limit any rights You have under\n applicable copyright doctrines of fair use, fair dealing, or other\n equivalents.\n\n2.7. Conditions\n\n Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n All distribution of Covered Software in Source Code Form, including any\n Modifications that You create or to which You contribute, must be under\n the terms of this License. You must inform recipients that the Source\n Code Form of the Covered Software is governed by the terms of this\n License, and how they can obtain a copy of this License. You may not\n attempt to alter or restrict the recipients' rights in the Source Code\n Form.\n\n3.2. Distribution of Executable Form\n\n If You distribute Covered Software in Executable Form then:\n\n a. such Covered Software must also be made available in Source Code Form,\n as described in Section 3.1, and You must inform recipients of the\n Executable Form how they can obtain a copy of such Source Code Form by\n reasonable means in a timely manner, at a charge no more than the cost\n of distribution to the recipient; and\n\n b. You may distribute such Executable Form under the terms of this\n License, or sublicense it under different terms, provided that the\n license for the Executable Form does not attempt to limit or alter the\n recipients' rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n You may create and distribute a Larger Work under terms of Your choice,\n provided that You also comply with the requirements of this License for\n the Covered Software. If the Larger Work is a combination of Covered\n Software with a work governed by one or more Secondary Licenses, and the\n Covered Software is not Incompatible With Secondary Licenses, this\n License permits You to additionally distribute such Covered Software\n under the terms of such Secondary License(s), so that the recipient of\n the Larger Work may, at their option, further distribute the Covered\n Software under the terms of either this License or such Secondary\n License(s).\n\n3.4. Notices\n\n You may not remove or alter the substance of any license notices\n (including copyright notices, patent notices, disclaimers of warranty, or\n limitations of liability) contained within the Source Code Form of the\n Covered Software, except that You may alter any license notices to the\n extent required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n You may choose to offer, and to charge a fee for, warranty, support,\n indemnity or liability obligations to one or more recipients of Covered\n Software. However, You may do so only on Your own behalf, and not on\n behalf of any Contributor. You must make it absolutely clear that any\n such warranty, support, indemnity, or liability obligation is offered by\n You alone, and You hereby agree to indemnify every Contributor for any\n liability incurred by such Contributor as a result of warranty, support,\n indemnity or liability terms You offer. You may include additional\n disclaimers of warranty and limitations of liability specific to any\n jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n If it is impossible for You to comply with any of the terms of this License\n with respect to some or all of the Covered Software due to statute,\n judicial order, or regulation then You must: (a) comply with the terms of\n this License to the maximum extent possible; and (b) describe the\n limitations and the code they affect. Such description must be placed in a\n text file included with all distributions of the Covered Software under\n this License. Except to the extent prohibited by statute or regulation,\n such description must be sufficiently detailed for a recipient of ordinary\n skill to be able to understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n fail to comply with any of its terms. However, if You become compliant,\n then the rights granted under this License from a particular Contributor\n are reinstated (a) provisionally, unless and until such Contributor\n explicitly and finally terminates Your grants, and (b) on an ongoing\n basis, if such Contributor fails to notify You of the non-compliance by\n some reasonable means prior to 60 days after You have come back into\n compliance. Moreover, Your grants from a particular Contributor are\n reinstated on an ongoing basis if such Contributor notifies You of the\n non-compliance by some reasonable means, this is the first time You have\n received notice of non-compliance with this License from such\n Contributor, and You become compliant prior to 30 days after Your receipt\n of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n infringement claim (excluding declaratory judgment actions,\n counter-claims, and cross-claims) alleging that a Contributor Version\n directly or indirectly infringes any patent, then the rights granted to\n You by any and all Contributors for the Covered Software under Section\n 2.1 of this License shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n license agreements (excluding distributors and resellers) which have been\n validly granted by You or Your distributors under this License prior to\n termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n Covered Software is provided under this License on an \"as is\" basis,\n without warranty of any kind, either expressed, implied, or statutory,\n including, without limitation, warranties that the Covered Software is free\n of defects, merchantable, fit for a particular purpose or non-infringing.\n The entire risk as to the quality and performance of the Covered Software\n is with You. Should any Covered Software prove defective in any respect,\n You (not any Contributor) assume the cost of any necessary servicing,\n repair, or correction. This disclaimer of warranty constitutes an essential\n part of this License. No use of any Covered Software is authorized under\n this License except under this disclaimer.\n\n7. Limitation of Liability\n\n Under no circumstances and under no legal theory, whether tort (including\n negligence), contract, or otherwise, shall any Contributor, or anyone who\n distributes Covered Software as permitted above, be liable to You for any\n direct, indirect, special, incidental, or consequential damages of any\n character including, without limitation, damages for lost profits, loss of\n goodwill, work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses, even if such party shall have been\n informed of the possibility of such damages. This limitation of liability\n shall not apply to liability for death or personal injury resulting from\n such party's negligence to the extent applicable law prohibits such\n limitation. Some jurisdictions do not allow the exclusion or limitation of\n incidental or consequential damages, so this exclusion and limitation may\n not apply to You.\n\n8. Litigation\n\n Any litigation relating to this License may be brought only in the courts\n of a jurisdiction where the defendant maintains its principal place of\n business and such litigation shall be governed by laws of that\n jurisdiction, without reference to its conflict-of-law provisions. Nothing\n in this Section shall prevent a party's ability to bring cross-claims or\n counter-claims.\n\n9. Miscellaneous\n\n This License represents the complete agreement concerning the subject\n matter hereof. If any provision of this License is held to be\n unenforceable, such provision shall be reformed only to the extent\n necessary to make it enforceable. Any law or regulation which provides that\n the language of a contract shall be construed against the drafter shall not\n be used to construe this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n Mozilla Foundation is the license steward. Except as provided in Section\n 10.3, no one other than the license steward has the right to modify or\n publish new versions of this License. Each version will be given a\n distinguishing version number.\n\n10.2. Effect of New Versions\n\n You may distribute the Covered Software under the terms of the version\n of the License under which You originally received the Covered Software,\n or under the terms of any subsequent version published by the license\n steward.\n\n10.3. Modified Versions\n\n If you create software not governed by this License, and you want to\n create a new license for such software, you may create and use a\n modified version of this License if you rename the license and remove\n any references to the name of the license steward (except to note that\n such modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary\n Licenses If You choose to distribute Source Code Form that is\n Incompatible With Secondary Licenses under the terms of this version of\n the License, the notice described in Exhibit B of this License must be\n attached.\n\nExhibit A - Source Code Form License Notice\n\n This Source Code Form is subject to the\n terms of the Mozilla Public License, v.\n 2.0. If a copy of the MPL was not\n distributed with this file, You can\n obtain one at\n http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file,\nthen You may include the notice in a location (such as a LICENSE file in a\nrelevant directory) where a recipient would be likely to look for such a\nnotice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - \"Incompatible With Secondary Licenses\" Notice\n\n This Source Code Form is \"Incompatible\n With Secondary Licenses\", as defined by\n the Mozilla Public License, v. 2.0.\n\n" }, + { + "name": "github.com/hashicorp/go-multierror", + "path": "github.com/hashicorp/go-multierror/LICENSE", + "licenseText": "Mozilla Public License, version 2.0\n\n1. Definitions\n\n1.1. “Contributorâ€\n\n means each individual or legal entity that creates, contributes to the\n creation of, or owns Covered Software.\n\n1.2. “Contributor Versionâ€\n\n means the combination of the Contributions of others (if any) used by a\n Contributor and that particular Contributor’s Contribution.\n\n1.3. “Contributionâ€\n\n means Covered Software of a particular Contributor.\n\n1.4. “Covered Softwareâ€\n\n means Source Code Form to which the initial Contributor has attached the\n notice in Exhibit A, the Executable Form of such Source Code Form, and\n Modifications of such Source Code Form, in each case including portions\n thereof.\n\n1.5. “Incompatible With Secondary Licensesâ€\n means\n\n a. that the initial Contributor has attached the notice described in\n Exhibit B to the Covered Software; or\n\n b. that the Covered Software was made available under the terms of version\n 1.1 or earlier of the License, but not also under the terms of a\n Secondary License.\n\n1.6. “Executable Formâ€\n\n means any form of the work other than Source Code Form.\n\n1.7. “Larger Workâ€\n\n means a work that combines Covered Software with other material, in a separate\n file or files, that is not Covered Software.\n\n1.8. “Licenseâ€\n\n means this document.\n\n1.9. “Licensableâ€\n\n means having the right to grant, to the maximum extent possible, whether at the\n time of the initial grant or subsequently, any and all of the rights conveyed by\n this License.\n\n1.10. “Modificationsâ€\n\n means any of the following:\n\n a. any file in Source Code Form that results from an addition to, deletion\n from, or modification of the contents of Covered Software; or\n\n b. any new file in Source Code Form that contains any Covered Software.\n\n1.11. “Patent Claims†of a Contributor\n\n means any patent claim(s), including without limitation, method, process,\n and apparatus claims, in any patent Licensable by such Contributor that\n would be infringed, but for the grant of the License, by the making,\n using, selling, offering for sale, having made, import, or transfer of\n either its Contributions or its Contributor Version.\n\n1.12. “Secondary Licenseâ€\n\n means either the GNU General Public License, Version 2.0, the GNU Lesser\n General Public License, Version 2.1, the GNU Affero General Public\n License, Version 3.0, or any later versions of those licenses.\n\n1.13. “Source Code Formâ€\n\n means the form of the work preferred for making modifications.\n\n1.14. “You†(or “Yourâ€)\n\n means an individual or a legal entity exercising rights under this\n License. For legal entities, “You†includes any entity that controls, is\n controlled by, or is under common control with You. For purposes of this\n definition, “control†means (a) the power, direct or indirect, to cause\n the direction or management of such entity, whether by contract or\n otherwise, or (b) ownership of more than fifty percent (50%) of the\n outstanding shares or beneficial ownership of such entity.\n\n\n2. License Grants and Conditions\n\n2.1. Grants\n\n Each Contributor hereby grants You a world-wide, royalty-free,\n non-exclusive license:\n\n a. under intellectual property rights (other than patent or trademark)\n Licensable by such Contributor to use, reproduce, make available,\n modify, display, perform, distribute, and otherwise exploit its\n Contributions, either on an unmodified basis, with Modifications, or as\n part of a Larger Work; and\n\n b. under Patent Claims of such Contributor to make, use, sell, offer for\n sale, have made, import, and otherwise transfer either its Contributions\n or its Contributor Version.\n\n2.2. Effective Date\n\n The licenses granted in Section 2.1 with respect to any Contribution become\n effective for each Contribution on the date the Contributor first distributes\n such Contribution.\n\n2.3. Limitations on Grant Scope\n\n The licenses granted in this Section 2 are the only rights granted under this\n License. No additional rights or licenses will be implied from the distribution\n or licensing of Covered Software under this License. Notwithstanding Section\n 2.1(b) above, no patent license is granted by a Contributor:\n\n a. for any code that a Contributor has removed from Covered Software; or\n\n b. for infringements caused by: (i) Your and any other third party’s\n modifications of Covered Software, or (ii) the combination of its\n Contributions with other software (except as part of its Contributor\n Version); or\n\n c. under Patent Claims infringed by Covered Software in the absence of its\n Contributions.\n\n This License does not grant any rights in the trademarks, service marks, or\n logos of any Contributor (except as may be necessary to comply with the\n notice requirements in Section 3.4).\n\n2.4. Subsequent Licenses\n\n No Contributor makes additional grants as a result of Your choice to\n distribute the Covered Software under a subsequent version of this License\n (see Section 10.2) or under the terms of a Secondary License (if permitted\n under the terms of Section 3.3).\n\n2.5. Representation\n\n Each Contributor represents that the Contributor believes its Contributions\n are its original creation(s) or it has sufficient rights to grant the\n rights to its Contributions conveyed by this License.\n\n2.6. Fair Use\n\n This License is not intended to limit any rights You have under applicable\n copyright doctrines of fair use, fair dealing, or other equivalents.\n\n2.7. Conditions\n\n Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in\n Section 2.1.\n\n\n3. Responsibilities\n\n3.1. Distribution of Source Form\n\n All distribution of Covered Software in Source Code Form, including any\n Modifications that You create or to which You contribute, must be under the\n terms of this License. You must inform recipients that the Source Code Form\n of the Covered Software is governed by the terms of this License, and how\n they can obtain a copy of this License. You may not attempt to alter or\n restrict the recipients’ rights in the Source Code Form.\n\n3.2. Distribution of Executable Form\n\n If You distribute Covered Software in Executable Form then:\n\n a. such Covered Software must also be made available in Source Code Form,\n as described in Section 3.1, and You must inform recipients of the\n Executable Form how they can obtain a copy of such Source Code Form by\n reasonable means in a timely manner, at a charge no more than the cost\n of distribution to the recipient; and\n\n b. You may distribute such Executable Form under the terms of this License,\n or sublicense it under different terms, provided that the license for\n the Executable Form does not attempt to limit or alter the recipients’\n rights in the Source Code Form under this License.\n\n3.3. Distribution of a Larger Work\n\n You may create and distribute a Larger Work under terms of Your choice,\n provided that You also comply with the requirements of this License for the\n Covered Software. If the Larger Work is a combination of Covered Software\n with a work governed by one or more Secondary Licenses, and the Covered\n Software is not Incompatible With Secondary Licenses, this License permits\n You to additionally distribute such Covered Software under the terms of\n such Secondary License(s), so that the recipient of the Larger Work may, at\n their option, further distribute the Covered Software under the terms of\n either this License or such Secondary License(s).\n\n3.4. Notices\n\n You may not remove or alter the substance of any license notices (including\n copyright notices, patent notices, disclaimers of warranty, or limitations\n of liability) contained within the Source Code Form of the Covered\n Software, except that You may alter any license notices to the extent\n required to remedy known factual inaccuracies.\n\n3.5. Application of Additional Terms\n\n You may choose to offer, and to charge a fee for, warranty, support,\n indemnity or liability obligations to one or more recipients of Covered\n Software. However, You may do so only on Your own behalf, and not on behalf\n of any Contributor. You must make it absolutely clear that any such\n warranty, support, indemnity, or liability obligation is offered by You\n alone, and You hereby agree to indemnify every Contributor for any\n liability incurred by such Contributor as a result of warranty, support,\n indemnity or liability terms You offer. You may include additional\n disclaimers of warranty and limitations of liability specific to any\n jurisdiction.\n\n4. Inability to Comply Due to Statute or Regulation\n\n If it is impossible for You to comply with any of the terms of this License\n with respect to some or all of the Covered Software due to statute, judicial\n order, or regulation then You must: (a) comply with the terms of this License\n to the maximum extent possible; and (b) describe the limitations and the code\n they affect. Such description must be placed in a text file included with all\n distributions of the Covered Software under this License. Except to the\n extent prohibited by statute or regulation, such description must be\n sufficiently detailed for a recipient of ordinary skill to be able to\n understand it.\n\n5. Termination\n\n5.1. The rights granted under this License will terminate automatically if You\n fail to comply with any of its terms. However, if You become compliant,\n then the rights granted under this License from a particular Contributor\n are reinstated (a) provisionally, unless and until such Contributor\n explicitly and finally terminates Your grants, and (b) on an ongoing basis,\n if such Contributor fails to notify You of the non-compliance by some\n reasonable means prior to 60 days after You have come back into compliance.\n Moreover, Your grants from a particular Contributor are reinstated on an\n ongoing basis if such Contributor notifies You of the non-compliance by\n some reasonable means, this is the first time You have received notice of\n non-compliance with this License from such Contributor, and You become\n compliant prior to 30 days after Your receipt of the notice.\n\n5.2. If You initiate litigation against any entity by asserting a patent\n infringement claim (excluding declaratory judgment actions, counter-claims,\n and cross-claims) alleging that a Contributor Version directly or\n indirectly infringes any patent, then the rights granted to You by any and\n all Contributors for the Covered Software under Section 2.1 of this License\n shall terminate.\n\n5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user\n license agreements (excluding distributors and resellers) which have been\n validly granted by You or Your distributors under this License prior to\n termination shall survive termination.\n\n6. Disclaimer of Warranty\n\n Covered Software is provided under this License on an “as is†basis, without\n warranty of any kind, either expressed, implied, or statutory, including,\n without limitation, warranties that the Covered Software is free of defects,\n merchantable, fit for a particular purpose or non-infringing. The entire\n risk as to the quality and performance of the Covered Software is with You.\n Should any Covered Software prove defective in any respect, You (not any\n Contributor) assume the cost of any necessary servicing, repair, or\n correction. This disclaimer of warranty constitutes an essential part of this\n License. No use of any Covered Software is authorized under this License\n except under this disclaimer.\n\n7. Limitation of Liability\n\n Under no circumstances and under no legal theory, whether tort (including\n negligence), contract, or otherwise, shall any Contributor, or anyone who\n distributes Covered Software as permitted above, be liable to You for any\n direct, indirect, special, incidental, or consequential damages of any\n character including, without limitation, damages for lost profits, loss of\n goodwill, work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses, even if such party shall have been\n informed of the possibility of such damages. This limitation of liability\n shall not apply to liability for death or personal injury resulting from such\n party’s negligence to the extent applicable law prohibits such limitation.\n Some jurisdictions do not allow the exclusion or limitation of incidental or\n consequential damages, so this exclusion and limitation may not apply to You.\n\n8. Litigation\n\n Any litigation relating to this License may be brought only in the courts of\n a jurisdiction where the defendant maintains its principal place of business\n and such litigation shall be governed by laws of that jurisdiction, without\n reference to its conflict-of-law provisions. Nothing in this Section shall\n prevent a party’s ability to bring cross-claims or counter-claims.\n\n9. Miscellaneous\n\n This License represents the complete agreement concerning the subject matter\n hereof. If any provision of this License is held to be unenforceable, such\n provision shall be reformed only to the extent necessary to make it\n enforceable. Any law or regulation which provides that the language of a\n contract shall be construed against the drafter shall not be used to construe\n this License against a Contributor.\n\n\n10. Versions of the License\n\n10.1. New Versions\n\n Mozilla Foundation is the license steward. Except as provided in Section\n 10.3, no one other than the license steward has the right to modify or\n publish new versions of this License. Each version will be given a\n distinguishing version number.\n\n10.2. Effect of New Versions\n\n You may distribute the Covered Software under the terms of the version of\n the License under which You originally received the Covered Software, or\n under the terms of any subsequent version published by the license\n steward.\n\n10.3. Modified Versions\n\n If you create software not governed by this License, and you want to\n create a new license for such software, you may create and use a modified\n version of this License if you rename the license and remove any\n references to the name of the license steward (except to note that such\n modified license differs from this License).\n\n10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n If You choose to distribute Source Code Form that is Incompatible With\n Secondary Licenses under the terms of this version of the License, the\n notice described in Exhibit B of this License must be attached.\n\nExhibit A - Source Code Form License Notice\n\n This Source Code Form is subject to the\n terms of the Mozilla Public License, v.\n 2.0. If a copy of the MPL was not\n distributed with this file, You can\n obtain one at\n http://mozilla.org/MPL/2.0/.\n\nIf it is not possible or desirable to put the notice in a particular file, then\nYou may include the notice in a location (such as a LICENSE file in a relevant\ndirectory) where a recipient would be likely to look for such a notice.\n\nYou may add additional accurate notices of copyright ownership.\n\nExhibit B - “Incompatible With Secondary Licenses†Notice\n\n This Source Code Form is “Incompatible\n With Secondary Licensesâ€, as defined by\n the Mozilla Public License, v. 2.0.\n" + }, { "name": "github.com/hashicorp/go-retryablehttp", "path": "github.com/hashicorp/go-retryablehttp/LICENSE", @@ -829,6 +919,11 @@ "path": "github.com/modern-go/reflect2/LICENSE", "licenseText": " Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"[]\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright [yyyy] [name of copyright owner]\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n" }, + { + "name": "github.com/munnerz/goautoneg", + "path": "github.com/munnerz/goautoneg/LICENSE", + "licenseText": "Copyright (c) 2011, Open Knowledge Foundation Ltd.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n Neither the name of the Open Knowledge Foundation Ltd. nor the\n names of its contributors may be used to endorse or promote\n products derived from this software without specific prior written\n permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + }, { "name": "github.com/nektos/act/pkg", "path": "github.com/nektos/act/pkg/LICENSE", @@ -1112,7 +1207,7 @@ { "name": "golang.org/x/crypto", "path": "golang.org/x/crypto/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/image", @@ -1122,12 +1217,12 @@ { "name": "golang.org/x/mod/semver", "path": "golang.org/x/mod/semver/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/net", "path": "golang.org/x/net/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/oauth2", @@ -1137,17 +1232,17 @@ { "name": "golang.org/x/sync", "path": "golang.org/x/sync/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/sys", "path": "golang.org/x/sys/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/text", "path": "golang.org/x/text/LICENSE", - "licenseText": "Copyright (c) 2009 The Go Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" + "licenseText": "Copyright 2009 The Go Authors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google LLC nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n" }, { "name": "golang.org/x/time/rate", diff --git a/build/generate-licenses.go b/build/generate-licenses.go index 9a111bc811..66e1d37755 100644 --- a/build/generate-licenses.go +++ b/build/generate-licenses.go @@ -1,3 +1,6 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + //go:build ignore package main @@ -5,6 +8,8 @@ package main import ( "archive/tar" "compress/gzip" + "crypto/md5" + "encoding/hex" "flag" "fmt" "io" @@ -15,6 +20,8 @@ import ( "path/filepath" "strings" + "code.gitea.io/gitea/build/license" + "code.gitea.io/gitea/modules/json" "code.gitea.io/gitea/modules/util" ) @@ -77,7 +84,7 @@ func main() { } tr := tar.NewReader(gz) - + aliasesFiles := make(map[string][]string) for { hdr, err := tr.Next() @@ -97,26 +104,73 @@ func main() { continue } - if strings.HasPrefix(filepath.Base(hdr.Name), "README") { + fileBaseName := filepath.Base(hdr.Name) + licenseName := strings.TrimSuffix(fileBaseName, ".txt") + + if strings.HasPrefix(fileBaseName, "README") { continue } - if strings.HasPrefix(filepath.Base(hdr.Name), "deprecated_") { + if strings.HasPrefix(fileBaseName, "deprecated_") { continue } - out, err := os.Create(path.Join(destination, strings.TrimSuffix(filepath.Base(hdr.Name), ".txt"))) + out, err := os.Create(path.Join(destination, licenseName)) if err != nil { log.Fatalf("Failed to create new file. %s", err) } defer out.Close() - if _, err := io.Copy(out, tr); err != nil { + // some license files have same content, so we need to detect these files and create a convert map into a json file + // Later we use this convert map to avoid adding same license content with different license name + h := md5.New() + // calculate md5 and write file in the same time + r := io.TeeReader(tr, h) + if _, err := io.Copy(out, r); err != nil { log.Fatalf("Failed to write new file. %s", err) } else { fmt.Printf("Written %s\n", out.Name()) + + md5 := hex.EncodeToString(h.Sum(nil)) + aliasesFiles[md5] = append(aliasesFiles[md5], licenseName) } } + // generate convert license name map + licenseAliases := make(map[string]string) + for _, fileNames := range aliasesFiles { + if len(fileNames) > 1 { + licenseName := license.GetLicenseNameFromAliases(fileNames) + if licenseName == "" { + // license name should not be empty as expected + // if it is empty, we need to rewrite the logic of GetLicenseNameFromAliases + log.Fatalf("GetLicenseNameFromAliases: license name is empty") + } + for _, fileName := range fileNames { + licenseAliases[fileName] = licenseName + } + } + } + // save convert license name map to file + b, err := json.Marshal(licenseAliases) + if err != nil { + log.Fatalf("Failed to create json bytes. %s", err) + } + + licenseAliasesDestination := filepath.Join(destination, "etc", "license-aliases.json") + if err := os.MkdirAll(filepath.Dir(licenseAliasesDestination), 0o755); err != nil { + log.Fatalf("Failed to create directory for license aliases json file. %s", err) + } + + f, err := os.Create(licenseAliasesDestination) + if err != nil { + log.Fatalf("Failed to create license aliases json file. %s", err) + } + defer f.Close() + + if _, err = f.Write(b); err != nil { + log.Fatalf("Failed to write license aliases json file. %s", err) + } + fmt.Println("Done") } diff --git a/build/license/aliasgenerator.go b/build/license/aliasgenerator.go new file mode 100644 index 0000000000..7de1e6fbd6 --- /dev/null +++ b/build/license/aliasgenerator.go @@ -0,0 +1,41 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package license + +import "strings" + +func GetLicenseNameFromAliases(fnl []string) string { + if len(fnl) == 0 { + return "" + } + + shortestItem := func(list []string) string { + s := list[0] + for _, l := range list[1:] { + if len(l) < len(s) { + s = l + } + } + return s + } + allHasPrefix := func(list []string, s string) bool { + for _, l := range list { + if !strings.HasPrefix(l, s) { + return false + } + } + return true + } + + sl := shortestItem(fnl) + slv := strings.Split(sl, "-") + var result string + for i := len(slv); i >= 0; i-- { + result = strings.Join(slv[:i], "-") + if allHasPrefix(fnl, result) { + return result + } + } + return "" +} diff --git a/build/license/aliasgenerator_test.go b/build/license/aliasgenerator_test.go new file mode 100644 index 0000000000..239181b736 --- /dev/null +++ b/build/license/aliasgenerator_test.go @@ -0,0 +1,39 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package license + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGetLicenseNameFromAliases(t *testing.T) { + tests := []struct { + target string + inputs []string + }{ + { + // real case which you can find in license-aliases.json + target: "AGPL-1.0", + inputs: []string{ + "AGPL-1.0-only", + "AGPL-1.0-or-late", + }, + }, + { + target: "", + inputs: []string{ + "APSL-1.0", + "AGPL-1.0-only", + "AGPL-1.0-or-late", + }, + }, + } + + for _, tt := range tests { + result := GetLicenseNameFromAliases(tt.inputs) + assert.Equal(t, result, tt.target) + } +} diff --git a/cmd/admin_user_create.go b/cmd/admin_user_create.go index f328b753d8..106d14b25a 100644 --- a/cmd/admin_user_create.go +++ b/cmd/admin_user_create.go @@ -158,7 +158,7 @@ func runCreateUser(c *cli.Context) error { IsRestricted: restricted, } - if err := user_model.CreateUser(ctx, u, overwriteDefault); err != nil { + if err := user_model.CreateUser(ctx, u, &user_model.Meta{}, overwriteDefault); err != nil { return fmt.Errorf("CreateUser: %w", err) } diff --git a/cmd/hook.go b/cmd/hook.go index 6e31710caf..11d0d072c9 100644 --- a/cmd/hook.go +++ b/cmd/hook.go @@ -290,8 +290,22 @@ Gitea or set your environment appropriately.`, "") return nil } +// runHookUpdate avoid to do heavy operations on update hook because it will be +// invoked for every ref update which does not like pre-receive and post-receive func runHookUpdate(c *cli.Context) error { + if isInternal, _ := strconv.ParseBool(os.Getenv(repo_module.EnvIsInternal)); isInternal { + return nil + } + // Update is empty and is kept only for backwards compatibility + if len(os.Args) < 3 { + return nil + } + refName := git.RefName(os.Args[len(os.Args)-3]) + if refName.IsPull() { + // ignore update to refs/pull/xxx/head, so we don't need to output any information + os.Exit(1) + } return nil } @@ -528,14 +542,14 @@ Gitea or set your environment appropriately.`, "") index := bytes.IndexByte(rs.Data, byte(0)) if index >= len(rs.Data) { - return fail(ctx, "Protocol: format error", "pkt-line: format error "+fmt.Sprint(rs.Data)) + return fail(ctx, "Protocol: format error", "pkt-line: format error %s", rs.Data) } if index < 0 { if len(rs.Data) == 10 && rs.Data[9] == '\n' { index = 9 } else { - return fail(ctx, "Protocol: format error", "pkt-line: format error "+fmt.Sprint(rs.Data)) + return fail(ctx, "Protocol: format error", "pkt-line: format error %s", rs.Data) } } diff --git a/cmd/serv.go b/cmd/serv.go index 2bfd111061..2d2df8aa23 100644 --- a/cmd/serv.go +++ b/cmd/serv.go @@ -20,8 +20,10 @@ import ( asymkey_model "code.gitea.io/gitea/models/asymkey" git_model "code.gitea.io/gitea/models/git" "code.gitea.io/gitea/models/perm" + "code.gitea.io/gitea/modules/container" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/json" + "code.gitea.io/gitea/modules/lfstransfer" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/pprof" "code.gitea.io/gitea/modules/private" @@ -36,7 +38,11 @@ import ( ) const ( - lfsAuthenticateVerb = "git-lfs-authenticate" + verbUploadPack = "git-upload-pack" + verbUploadArchive = "git-upload-archive" + verbReceivePack = "git-receive-pack" + verbLfsAuthenticate = "git-lfs-authenticate" + verbLfsTransfer = "git-lfs-transfer" ) // CmdServ represents the available serv sub-command. @@ -73,12 +79,18 @@ func setup(ctx context.Context, debug bool) { } var ( - allowedCommands = map[string]perm.AccessMode{ - "git-upload-pack": perm.AccessModeRead, - "git-upload-archive": perm.AccessModeRead, - "git-receive-pack": perm.AccessModeWrite, - lfsAuthenticateVerb: perm.AccessModeNone, - } + // keep getAccessMode() in sync + allowedCommands = container.SetOf( + verbUploadPack, + verbUploadArchive, + verbReceivePack, + verbLfsAuthenticate, + verbLfsTransfer, + ) + allowedCommandsLfs = container.SetOf( + verbLfsAuthenticate, + verbLfsTransfer, + ) alphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`) ) @@ -124,6 +136,45 @@ func handleCliResponseExtra(extra private.ResponseExtra) error { return nil } +func getAccessMode(verb, lfsVerb string) perm.AccessMode { + switch verb { + case verbUploadPack, verbUploadArchive: + return perm.AccessModeRead + case verbReceivePack: + return perm.AccessModeWrite + case verbLfsAuthenticate, verbLfsTransfer: + switch lfsVerb { + case "upload": + return perm.AccessModeWrite + case "download": + return perm.AccessModeRead + } + } + // should be unreachable + return perm.AccessModeNone +} + +func getLFSAuthToken(ctx context.Context, lfsVerb string, results *private.ServCommandResults) (string, error) { + now := time.Now() + claims := lfs.Claims{ + RegisteredClaims: jwt.RegisteredClaims{ + ExpiresAt: jwt.NewNumericDate(now.Add(setting.LFS.HTTPAuthExpiry)), + NotBefore: jwt.NewNumericDate(now), + }, + RepoID: results.RepoID, + Op: lfsVerb, + UserID: results.UserID, + } + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + + // Sign and get the complete encoded token as a string using the secret + tokenString, err := token.SignedString(setting.LFS.JWTSecretBytes) + if err != nil { + return "", fail(ctx, "Failed to sign JWT Token", "Failed to sign JWT token: %v", err) + } + return fmt.Sprintf("Bearer %s", tokenString), nil +} + func runServ(c *cli.Context) error { ctx, cancel := installSignals() defer cancel() @@ -143,6 +194,12 @@ func runServ(c *cli.Context) error { return nil } + defer func() { + if err := recover(); err != nil { + _ = fail(ctx, "Internal Server Error", "Panic: %v\n%s", err, log.Stack(2)) + } + }() + keys := strings.Split(c.Args().First(), "-") if len(keys) != 2 || keys[0] != "key" { return fail(ctx, "Key ID format error", "Invalid key argument: %s", c.Args().First()) @@ -189,21 +246,9 @@ func runServ(c *cli.Context) error { } verb := words[0] - repoPath := words[1] - if repoPath[0] == '/' { - repoPath = repoPath[1:] - } + repoPath := strings.TrimPrefix(words[1], "/") var lfsVerb string - if verb == lfsAuthenticateVerb { - if !setting.LFS.StartServer { - return fail(ctx, "Unknown git command", "LFS authentication request over SSH denied, LFS support is disabled") - } - - if len(words) > 2 { - lfsVerb = words[2] - } - } rr := strings.SplitN(repoPath, "/", 2) if len(rr) != 2 { @@ -240,53 +285,52 @@ func runServ(c *cli.Context) error { }() } - requestedMode, has := allowedCommands[verb] - if !has { + if allowedCommands.Contains(verb) { + if allowedCommandsLfs.Contains(verb) { + if !setting.LFS.StartServer { + return fail(ctx, "Unknown git command", "LFS authentication request over SSH denied, LFS support is disabled") + } + if verb == verbLfsTransfer && !setting.LFS.AllowPureSSH { + return fail(ctx, "Unknown git command", "LFS SSH transfer connection denied, pure SSH protocol is disabled") + } + if len(words) > 2 { + lfsVerb = words[2] + } + } + } else { return fail(ctx, "Unknown git command", "Unknown git command %s", verb) } - if verb == lfsAuthenticateVerb { - if lfsVerb == "upload" { - requestedMode = perm.AccessModeWrite - } else if lfsVerb == "download" { - requestedMode = perm.AccessModeRead - } else { - return fail(ctx, "Unknown LFS verb", "Unknown lfs verb %s", lfsVerb) - } - } + requestedMode := getAccessMode(verb, lfsVerb) results, extra := private.ServCommand(ctx, keyID, username, reponame, requestedMode, verb, lfsVerb) if extra.HasError() { return fail(ctx, extra.UserMsg, "ServCommand failed: %s", extra.Error) } + // LFS SSH protocol + if verb == verbLfsTransfer { + token, err := getLFSAuthToken(ctx, lfsVerb, results) + if err != nil { + return err + } + return lfstransfer.Main(ctx, repoPath, lfsVerb, token) + } + // LFS token authentication - if verb == lfsAuthenticateVerb { + if verb == verbLfsAuthenticate { url := fmt.Sprintf("%s%s/%s.git/info/lfs", setting.AppURL, url.PathEscape(results.OwnerName), url.PathEscape(results.RepoName)) - now := time.Now() - claims := lfs.Claims{ - RegisteredClaims: jwt.RegisteredClaims{ - ExpiresAt: jwt.NewNumericDate(now.Add(setting.LFS.HTTPAuthExpiry)), - NotBefore: jwt.NewNumericDate(now), - }, - RepoID: results.RepoID, - Op: lfsVerb, - UserID: results.UserID, - } - token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) - - // Sign and get the complete encoded token as a string using the secret - tokenString, err := token.SignedString(setting.LFS.JWTSecretBytes) + token, err := getLFSAuthToken(ctx, lfsVerb, results) if err != nil { - return fail(ctx, "Failed to sign JWT Token", "Failed to sign JWT token: %v", err) + return err } tokenAuthentication := &git_model.LFSTokenResponse{ Header: make(map[string]string), Href: url, } - tokenAuthentication.Header["Authorization"] = fmt.Sprintf("Bearer %s", tokenString) + tokenAuthentication.Header["Authorization"] = token enc := json.NewEncoder(os.Stdout) err = enc.Encode(tokenAuthentication) diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index adec5aff36..69d541ff8d 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -306,6 +306,8 @@ RUN_USER = ; git ;; Enables git-lfs support. true or false, default is false. ;LFS_START_SERVER = false ;; +;; Enables git-lfs SSH protocol support. true or false, default is false. +;LFS_ALLOW_PURE_SSH = false ;; ;; LFS authentication secret, change this yourself ;LFS_JWT_SECRET = @@ -507,6 +509,9 @@ INTERNAL_TOKEN = ;; stemming from cached/logged plain-text API tokens. ;; In future releases, this will become the default behavior ;DISABLE_QUERY_AUTH_TOKEN = false +;; +;; On user registration, record the IP address and user agent of the user to help identify potential abuse. +;; RECORD_USER_SIGNUP_METADATA = false ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -523,7 +528,8 @@ INTERNAL_TOKEN = ;; HMAC to encode urls with, it **is required** if camo is enabled. ;HMAC_KEY = ;; Set to true to use camo for https too lese only non https urls are proxyed -;ALLWAYS = false +;; ALLWAYS is deprecated and will be removed in the future +;ALWAYS = false ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2692,7 +2698,7 @@ LEVEL = Info ;; It's always recommended to use compression when using local disk as log storage if CPU or memory is not a bottleneck. ;; And for object storage services like S3, which is billed for requests, it would cause extra 2 times of get requests for each log view. ;; But it will save storage space and network bandwidth, so it's still recommended to use compression. -;LOG_COMPRESSION = none +;LOG_COMPRESSION = zstd ;; Default artifact retention time in days. Artifacts could have their own retention periods by setting the `retention-days` option in `actions/upload-artifact` step. ;ARTIFACT_RETENTION_DAYS = 90 ;; Timeout to stop the task which have running status, but haven't been updated for a long time @@ -2713,3 +2719,9 @@ LEVEL = Info ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; storage type ;STORAGE_TYPE = local + +;[global_lock] +;; Lock service type, could be memory or redis +;SERVICE_TYPE = memory +;; Ignored for the "memory" type. For "redis" use something like `redis://127.0.0.1:6379/0` +;SERVICE_CONN_STR = diff --git a/go.mod b/go.mod index f5c189893f..8dd6947925 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,11 @@ module code.gitea.io/gitea -go 1.22 +go 1.23 + +// rfc5280 said: "The serial number is an integer assigned by the CA to each certificate." +// But some CAs use negative serial number, just relax the check. related: +// Default TLS cert uses negative serial number #895 https://github.com/microsoft/mssql-docker/issues/895 +godebug x509negativeserial=1 require ( code.gitea.io/actions-proto-go v0.4.0 @@ -9,11 +14,12 @@ require ( codeberg.org/gusted/mcaptcha v0.0.0-20220723083913-4f3072e1d570 connectrpc.com/connect v1.15.0 gitea.com/go-chi/binding v0.0.0-20240430071103-39a851e106ed - gitea.com/go-chi/cache v0.2.0 + gitea.com/go-chi/cache v0.2.1 gitea.com/go-chi/captcha v0.0.0-20240315150714-fb487f629098 gitea.com/go-chi/session v0.0.0-20240316035857-16768d98ec96 gitea.com/lunny/dingtalk_webhook v0.0.0-20171025031554-e3534c89ef96 gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4 + github.com/42wim/httpsig v1.2.2 github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.2 @@ -22,10 +28,14 @@ require ( github.com/PuerkitoBio/goquery v1.9.2 github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.7.2 github.com/alecthomas/chroma/v2 v2.14.0 + github.com/aws/aws-sdk-go v1.43.21 + github.com/aws/aws-sdk-go-v2/credentials v1.17.30 + github.com/aws/aws-sdk-go-v2/service/codecommit v1.25.1 github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb github.com/blevesearch/bleve/v2 v2.4.2 github.com/buildkite/terminal-to-html/v3 v3.12.1 github.com/caddyserver/certmagic v0.21.3 + github.com/charmbracelet/git-lfs-transfer v0.2.0 github.com/chi-middleware/proxy v1.1.1 github.com/dimiro1/reply v0.0.0-20200315094148-d0136a4c9e21 github.com/djherbis/buffer v1.2.0 @@ -45,10 +55,10 @@ require ( github.com/go-chi/cors v1.2.1 github.com/go-co-op/gocron v1.37.0 github.com/go-enry/go-enry/v2 v2.8.8 - github.com/go-fed/httpsig v1.1.1-0.20201223112313-55836744818e github.com/go-git/go-billy/v5 v5.5.0 github.com/go-git/go-git/v5 v5.12.0 github.com/go-ldap/ldap/v3 v3.4.6 + github.com/go-redsync/redsync/v4 v4.13.0 github.com/go-sql-driver/mysql v1.8.1 github.com/go-swagger/go-swagger v0.31.0 github.com/go-testfixtures/testfixtures/v3 v3.11.0 @@ -58,6 +68,7 @@ require ( github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85 github.com/golang-jwt/jwt/v5 v5.2.1 github.com/google/go-github/v61 v61.0.0 + github.com/google/licenseclassifier/v2 v2.0.0 github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8 github.com/google/uuid v1.6.0 github.com/gorilla/feeds v1.2.0 @@ -81,7 +92,7 @@ require ( github.com/mholt/archiver/v3 v3.5.1 github.com/microcosm-cc/bluemonday v1.0.26 github.com/microsoft/go-mssqldb v1.7.2 - github.com/minio/minio-go/v7 v7.0.71 + github.com/minio/minio-go/v7 v7.0.77 github.com/msteinert/pam v1.2.0 github.com/nektos/act v0.2.63 github.com/niklasfasching/go-org v1.7.0 @@ -109,13 +120,13 @@ require ( github.com/yuin/goldmark v1.7.2 github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc github.com/yuin/goldmark-meta v1.1.0 - golang.org/x/crypto v0.24.0 + golang.org/x/crypto v0.26.0 golang.org/x/image v0.18.0 - golang.org/x/net v0.26.0 + golang.org/x/net v0.28.0 golang.org/x/oauth2 v0.21.0 - golang.org/x/sys v0.21.0 - golang.org/x/text v0.16.0 - golang.org/x/tools v0.22.0 + golang.org/x/sys v0.24.0 + golang.org/x/text v0.17.0 + golang.org/x/tools v0.24.0 google.golang.org/grpc v1.62.1 google.golang.org/protobuf v1.34.2 gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df @@ -145,6 +156,10 @@ require ( github.com/andybalholm/cascadia v1.3.2 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect + github.com/aws/aws-sdk-go-v2 v1.30.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 // indirect + github.com/aws/smithy-go v1.20.4 // indirect github.com/aymerick/douceur v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.13.0 // indirect @@ -184,12 +199,15 @@ require ( github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fxamacker/cbor/v2 v2.6.0 // indirect + github.com/git-lfs/pktline v0.0.0-20230103162542-ca444d533ef1 // indirect github.com/go-ap/errors v0.0.0-20240304112515-6077fa9c17b0 // indirect github.com/go-asn1-ber/asn1-ber v1.5.7 // indirect github.com/go-enry/go-oniguruma v1.2.1 // indirect github.com/go-faster/city v1.0.1 // indirect github.com/go-faster/errors v0.7.1 // indirect + github.com/go-fed/httpsig v1.1.1-0.20201223112313-55836744818e // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-ini/ini v1.67.0 // indirect github.com/go-openapi/analysis v0.23.0 // indirect github.com/go-openapi/errors v0.22.0 // indirect github.com/go-openapi/inflect v0.21.0 // indirect @@ -218,7 +236,9 @@ require ( github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/securecookie v1.1.2 // indirect github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.16 // indirect @@ -245,22 +265,24 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mrjones/oauth v0.0.0-20190623134757-126b35219450 // indirect github.com/mschoch/smat v0.2.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nwaples/rardecode v1.1.3 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/onsi/ginkgo v1.16.5 // indirect + github.com/onsi/gomega v1.33.1 // indirect github.com/paulmach/orb v0.11.1 // indirect - github.com/pelletier/go-toml/v2 v2.1.1 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.50.0 // indirect - github.com/prometheus/procfs v0.13.0 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rhysd/actionlint v1.7.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/rs/xid v1.5.0 // indirect + github.com/rs/xid v1.6.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect @@ -296,8 +318,8 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f // indirect - golang.org/x/mod v0.18.0 // indirect - golang.org/x/sync v0.7.0 // indirect + golang.org/x/mod v0.20.0 // indirect + golang.org/x/sync v0.8.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect @@ -311,6 +333,8 @@ replace github.com/shurcooL/vfsgen => github.com/lunny/vfsgen v0.0.0-20220105142 replace github.com/nektos/act => gitea.com/gitea/act v0.259.1 +replace github.com/charmbracelet/git-lfs-transfer => gitea.com/gitea/git-lfs-transfer v0.2.0 + // TODO: This could be removed after https://github.com/mholt/archiver/pull/396 merged replace github.com/mholt/archiver/v3 => github.com/anchore/archiver/v3 v3.5.2 diff --git a/go.sum b/go.sum index f1780fada7..aa592053b5 100644 --- a/go.sum +++ b/go.sum @@ -18,10 +18,12 @@ git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 h1:cliQ4H git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078/go.mod h1:g/V2Hjas6Z1UHUp4yIx6bATpNzJ7DYtD0FG3+xARWxs= gitea.com/gitea/act v0.259.1 h1:8GG1o/xtUHl3qjn5f0h/2FXrT5ubBn05TJOM5ry+FBw= gitea.com/gitea/act v0.259.1/go.mod h1:UxZWRYqQG2Yj4+4OqfGWW5a3HELwejyWFQyU7F1jUD8= +gitea.com/gitea/git-lfs-transfer v0.2.0 h1:baHaNoBSRaeq/xKayEXwiDQtlIjps4Ac/Ll4KqLMB40= +gitea.com/gitea/git-lfs-transfer v0.2.0/go.mod h1:UrXUCm3xLQkq15fu7qlXHUMlrhdlXHoi13KH2Dfiits= gitea.com/go-chi/binding v0.0.0-20240430071103-39a851e106ed h1:EZZBtilMLSZNWtHHcgq2mt6NSGhJSZBuduAlinMEmso= gitea.com/go-chi/binding v0.0.0-20240430071103-39a851e106ed/go.mod h1:E3i3cgB04dDx0v3CytCgRTTn9Z/9x891aet3r456RVw= -gitea.com/go-chi/cache v0.2.0 h1:E0npuTfDW6CT1yD8NMDVc1SK6IeRjfmRL2zlEsCEd7w= -gitea.com/go-chi/cache v0.2.0/go.mod h1:iQlVK2aKTZ/rE9UcHyz9pQWGvdP9i1eI2spOpzgCrtE= +gitea.com/go-chi/cache v0.2.1 h1:bfAPkvXlbcZxPCpcmDVCWoHgiBSBmZN/QosnZvEC0+g= +gitea.com/go-chi/cache v0.2.1/go.mod h1:Qic0HZ8hOHW62ETGbonpwz8WYypj9NieU9659wFUJ8Q= gitea.com/go-chi/captcha v0.0.0-20240315150714-fb487f629098 h1:p2ki+WK0cIeNQuqjR98IP2KZQKRzJJiV7aTeMAFwaWo= gitea.com/go-chi/captcha v0.0.0-20240315150714-fb487f629098/go.mod h1:LjzIOHlRemuUyO7WR12fmm18VZIlCAaOt9L3yKw40pk= gitea.com/go-chi/session v0.0.0-20240316035857-16768d98ec96 h1:IFDiMBObsP6CZIRaDLd54SR6zPYAffPXiXck5Xslu0Q= @@ -32,6 +34,8 @@ gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4 h1:IFT+hup2xejHq gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU= gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s= gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU= +github.com/42wim/httpsig v1.2.2 h1:ofAYoHUNs/MJOLqQ8hIxeyz2QxOz8qdSVvp3PX/oPgA= +github.com/42wim/httpsig v1.2.2/go.mod h1:P/UYo7ytNBFwc+dg35IubuAUIs8zj5zzFIgUCEl55WY= github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121 h1:r3qt8PCHnfjOv9PN3H+XXKmDA1dfFMIN1AislhlA/ps= github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121/go.mod h1:Ock8XgA7pvULhIaHGAk/cDnRfNrF9Jey81nPcc403iU= github.com/6543/go-version v1.3.1 h1:HvOp+Telns7HWJ2Xo/05YXQSB2bE0WmVgbHqwMPZT4U= @@ -107,6 +111,20 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/aws/aws-sdk-go v1.43.21 h1:E4S2eX3d2gKJyI/ISrcIrSwXwqjIvCK85gtBMt4sAPE= +github.com/aws/aws-sdk-go v1.43.21/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go-v2 v1.30.4 h1:frhcagrVNrzmT95RJImMHgabt99vkXGslubDaDagTk8= +github.com/aws/aws-sdk-go-v2 v1.30.4/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.30 h1:aau/oYFtibVovr2rDt8FHlU17BTicFEMAi29V1U+L5Q= +github.com/aws/aws-sdk-go-v2/credentials v1.17.30/go.mod h1:BPJ/yXV92ZVq6G8uYvbU0gSl8q94UB63nMT5ctNO38g= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 h1:TNyt/+X43KJ9IJJMjKfa3bNTiZbUP7DeCxfbTROESwY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16/go.mod h1:2DwJF39FlNAUiX5pAc0UNeiz16lK2t7IaFcm0LFHEgc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 h1:jYfy8UPmd+6kJW5YhY0L1/KftReOGxI/4NtVSTh9O/I= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16/go.mod h1:7ZfEPZxkW42Afq4uQB8H2E2e6ebh6mXTueEpYzjCzcs= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.25.1 h1:mOOALIM4JzhYkq3voCBbmZqmyEVEhHsfasMTbVxLkNs= +github.com/aws/aws-sdk-go-v2/service/codecommit v1.25.1/go.mod h1:6zf5j3mIUXKM0s2iz5ttR2Qwq+o47D0jotpAyaKgZRA= +github.com/aws/smithy-go v1.20.4 h1:2HK1zBdPgRbjFOHlfeQZfpC4r72MOb9bZkiFwggKO+4= +github.com/aws/smithy-go v1.20.4/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -170,7 +188,6 @@ github.com/blevesearch/zapx/v16 v16.1.5/go.mod h1:J4mSF39w1QELc11EWRSBFkPeZuO7r/ github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bradfitz/gomemcache v0.0.0-20190329173943-551aad21a668/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874 h1:N7oVaKyGp8bttX0bfZGmcGkjz7DLQXhAn3DNd3T0ous= github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874/go.mod h1:r5xuitiExdLAJ09PR7vBVENGvp4ZuTBeWTGtxuX3K+c= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= @@ -214,7 +231,6 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGiisLwp9rITslkFNpZD5rz43tf41QFkTWY= github.com/cyphar/filepath-securejoin v0.2.5 h1:6iR5tXJ/e6tJZzzdMc1km3Sa7RRIVBKAK32O2s7AYfo= github.com/cyphar/filepath-securejoin v0.2.5/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -247,7 +263,6 @@ github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+m github.com/dvyukov/go-fuzz v0.0.0-20210429054444-fca39067bc72/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= github.com/editorconfig/editorconfig-core-go/v2 v2.6.2 h1:dKG8sc7n321deIVRcQtwlMNoBEra7j0qQ8RwxO8RN0w= github.com/editorconfig/editorconfig-core-go/v2 v2.6.2/go.mod h1:7dvD3GCm7eBw53xZ/lsiq72LqobdMg3ITbMBxnmJmqY= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elazarl/go-bindata-assetfs v1.0.1/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= @@ -278,6 +293,8 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fxamacker/cbor/v2 v2.6.0 h1:sU6J2usfADwWlYDAFhZBQ6TnLFBHxgesMrQfQgk1tWA= github.com/fxamacker/cbor/v2 v2.6.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/git-lfs/pktline v0.0.0-20230103162542-ca444d533ef1 h1:mtDjlmloH7ytdblogrMz1/8Hqua1y8B4ID+bh3rvod0= +github.com/git-lfs/pktline v0.0.0-20230103162542-ca444d533ef1/go.mod h1:fenKRzpXDjNpsIBhuhUzvjCKlDjKam0boRAenTE0Q6A= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= github.com/glycerine/go-unsnap-stream v0.0.0-20181221182339-f9677308dec2/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= @@ -317,6 +334,8 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= +github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-ldap/ldap/v3 v3.4.6 h1:ert95MdbiG7aWo/oPYp9btL3KJlMPKnP58r09rI8T+A= github.com/go-ldap/ldap/v3 v3.4.6/go.mod h1:IGMQANNtxpsOzj7uUAMjpGBaOVTC4DYyIy8VsTdxmtc= github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= @@ -341,8 +360,14 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= -github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= +github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= +github.com/go-redis/redis/v7 v7.4.1/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-redsync/redsync/v4 v4.13.0 h1:49X6GJfnbLGaIpBBREM/zA4uIMDXKAh1NDkvQ1EkZKA= +github.com/go-redsync/redsync/v4 v4.13.0/go.mod h1:HMW4Q224GZQz6x1Xc7040Yfgacukdzu7ifTDAKiyErQ= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-swagger/go-swagger v0.31.0 h1:H8eOYQnY2u7vNKWDNykv2xJP3pBhRG/R+SOCAmKrLlc= @@ -381,7 +406,6 @@ github.com/golang/geo v0.0.0-20230421003525-6adc56603217/go.mod h1:8wI0hitZ3a1Ix github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -397,6 +421,8 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws= +github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -415,6 +441,8 @@ github.com/google/go-tpm v0.9.0/go.mod h1:FkNVkc6C+IsvDI9Jw1OveJmxGZUUaKxtrpOS47 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/licenseclassifier/v2 v2.0.0 h1:1Y57HHILNf4m0ABuMVb6xk4vAJYEUO0gDxNpog0pyeA= +github.com/google/licenseclassifier/v2 v2.0.0/go.mod h1:cOjbdH0kyC9R22sdQbYsFkto4NGCAc+ZSwbeThazEtM= github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8 h1:ASJ/LAqdCHOyMYI+dwNxn7Rd8FscNkMyTr1KZU1JI/M= github.com/google/pprof v0.0.0-20240618054019-d3b898a103f8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= @@ -423,7 +451,6 @@ github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99 h1:twflg0XRTjwKpxb/jFExr4HGq6on2dEOmnL6FV+fgPw= github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -449,10 +476,15 @@ github.com/h2non/gock v1.2.0 h1:K6ol8rfrRkUOefooBC8elXoaNGYkpp7y2qcxGG6BzUE= github.com/h2non/gock v1.2.0/go.mod h1:tNhoxHYW2W42cYkYb1WqzdbYIieALC99kpYr7rH/BQk= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -494,6 +526,9 @@ github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LF github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jhillyerd/enmime v1.2.0 h1:dIu1IPEymQgoT2dzuB//ttA/xcV40NMPpQtmd4wslHk= github.com/jhillyerd/enmime v1.2.0/go.mod h1:FRFuUPCLh8PByQv+8xRcLO9QHqaqTqreYhopv5eyk4I= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -539,13 +574,10 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libdns/libdns v0.2.2 h1:O6ws7bAfRPaBsgAYt8MDe2HcNBGC29hkZ9MX2eUSX3s= github.com/libdns/libdns v0.2.2/go.mod h1:4Bj9+5CQiNMVGf87wjX4CY3HQJypUHRuLvlsfsZqLWQ= -github.com/lunny/log v0.0.0-20160921050905-7887c61bf0de/go.mod h1:3q8WtuPQsoRbatJuy3nvq/hRSvuBJrHHr+ybPPiNvHQ= -github.com/lunny/nodb v0.0.0-20160621015157-fc1ef06ad4af/go.mod h1:Cqz6pqow14VObJ7peltM+2n3PWOz7yTrfUuGbVFkzN0= github.com/lunny/vfsgen v0.0.0-20220105142115-2c99e1ffdfa0 h1:F/3FfGmKdiKFa8kL3YrpZ7pe9H4l4AzA1pbaOUnRvPI= github.com/lunny/vfsgen v0.0.0-20220105142115-2c99e1ffdfa0/go.mod h1:JEfTc3+2DF9Z4PXhLLvXL42zexJyh8rIq3OzUj/0rAk= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -565,7 +597,6 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/meilisearch/meilisearch-go v0.26.3 h1:EYt+C1n7IvjKzgXM3xqce5iJzNBq33F7ayZOKx96TKY= @@ -580,8 +611,8 @@ github.com/miekg/dns v1.1.61 h1:nLxbwF3XxhwVSm8g9Dghm9MHPaUZuqhPiGL+675ZmEs= github.com/miekg/dns v1.1.61/go.mod h1:mnAarhS3nWaW+NVP2wTkYVIZyHNJ098SJZUki3eykwQ= github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= -github.com/minio/minio-go/v7 v7.0.71 h1:No9XfOKTYi6i0GnBj+WZwD8WP5GZfL7n7GOjRqCdAjA= -github.com/minio/minio-go/v7 v7.0.71/go.mod h1:4yBA8v80xGA30cfM3fz0DKYMXunWl/AV/6tWEs9ryzo= +github.com/minio/minio-go/v7 v7.0.77 h1:GaGghJRg9nwDVlNbwYjSDJT1rqltQkBFDsypWX1v3Bw= +github.com/minio/minio-go/v7 v7.0.77/go.mod h1:AVM3IUN6WwKzmwBxVdjzhH8xq+f57JSbbvzqvUzR6eg= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= @@ -605,6 +636,8 @@ github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= github.com/msteinert/pam v1.2.0 h1:mYfjlvN2KYs2Pb9G6nb/1f/nPfAttT/Jee5Sq9r3bGE= github.com/msteinert/pam v1.2.0/go.mod h1:d2n0DCUK8rGecChV3JzvmsDjOY4R7AYbsNxAT+ftQl0= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/niklasfasching/go-org v1.7.0 h1:vyMdcMWWTe/XmANk19F4k8XGBYg0GQ/gJGMimOjGMek= @@ -623,16 +656,14 @@ github.com/olivere/elastic/v7 v7.0.32 h1:R7CXvbu8Eq+WlsLgxmKVKPox0oOwAE/2T9Si5Bn github.com/olivere/elastic/v7 v7.0.32/go.mod h1:c7PVmLe3Fxq77PIfY/bZmxY/TAamBhCzZ8xDOE09a9k= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= +github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -642,9 +673,8 @@ github.com/paulmach/orb v0.11.1 h1:3koVegMC4X/WeiXYz9iswopaTwMem53NzTJuTF20JzU= github.com/paulmach/orb v0.11.1/go.mod h1:5mULz1xQfs3bmQm63QEJA6lNGujuRafwA5S/EnuLaLU= github.com/paulmach/protoscan v0.2.1/go.mod h1:SpcSwydNLrxUGSDvXvO0P7g7AuhJ7lcKfDlhJCDw2gY= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/pelletier/go-toml/v2 v2.1.1 h1:LWAJwfNvjQZCFIDKWYQaM62NcYeYViCmWIwmOStowAI= -github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= @@ -663,17 +693,19 @@ github.com/pquerna/otp v1.4.0 h1:wZvl1TIVxKRThZIBiwOOHOGP/1+nZyWBil9Y2XNEDzg= github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= -github.com/prometheus/common v0.50.0 h1:YSZE6aa9+luNa2da6/Tik0q0A5AbR+U003TItK57CPQ= -github.com/prometheus/common v0.50.0/go.mod h1:wHFBCEVWVmHMUpg7pYcOm2QUR/ocQdYSJVQJKnHc3xQ= -github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= -github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/quasoft/websspi v1.1.2 h1:/mA4w0LxWlE3novvsoEL6BBA1WnjJATbjkh1kFrTidw= github.com/quasoft/websspi v1.1.2/go.mod h1:HmVdl939dQ0WIXZhyik+ARdI03M6bQzaSEKcgpFmewk= github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/redis/go-redis/v9 v9.6.0 h1:NLck+Rab3AOTHw21CGRpvQpgTrAU4sgdCswqGtlhGRA= github.com/redis/go-redis/v9 v9.6.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= +github.com/redis/rueidis v1.0.19 h1:s65oWtotzlIFN8eMPhyYwxlwLR1lUdhza2KtWprKYSo= +github.com/redis/rueidis v1.0.19/go.mod h1:8B+r5wdnjwK3lTFml5VtxjzGOQAC+5UmujoD12pDrEo= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rhysd/actionlint v1.7.1 h1:WJaDzyT1StBWVKGSsZPYnbV0HF9Y9/vD6KFdZQL42qE= @@ -689,8 +721,8 @@ github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4 github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -705,6 +737,7 @@ github.com/sassoftware/go-rpmutils v0.4.0/go.mod h1:3goNWi7PGAT3/dlql2lv3+MSN5jN github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -712,16 +745,11 @@ github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs= github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c/go.mod h1:owqhoLW1qZoYLZzLnBw+QkPP9WZnjlSWihhxAJC1+/M= -github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw= -github.com/siddontang/go-snappy v0.0.0-20140704025258-d8f7bb82a96d/go.mod h1:vq0tzqLRu6TS7Id0wMo2N5QzJoKedVeovOpHjnykSzY= -github.com/siddontang/ledisdb v0.0.0-20190202134119-8ceb77e66a92/go.mod h1:mF1DpOSOUiJRMR+FDqaqu3EBqrybQtrDDszLUZ6oxPg= -github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d/go.mod h1:AMEsy7v5z92TR1JKMkLLoaOQk++LVnOKL3ScbJ8GNGA= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.1.1 h1:T/YLemO5Yp7KPzS+lVtu+WsHn8yoSwTfItdAd1r3cck= github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= @@ -752,6 +780,7 @@ github.com/steveyen/gtreap v0.1.0/go.mod h1:kl/5J7XbrOmlIbYIXdRHDDE5QxHqpk0cmkT7 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -765,6 +794,8 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203 h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM= +github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= @@ -780,7 +811,6 @@ github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oW github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/unknwon/com v0.0.0-20190804042917-757f69c95f3e/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM= github.com/unknwon/com v1.0.1 h1:3d1LTxD+Lnf3soQiD4Cp/0BRB+Rsa/+RTvz8GMMzIXs= github.com/unknwon/com v1.0.1/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM= github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= @@ -856,7 +886,6 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= @@ -868,8 +897,8 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f h1:3CW0unweImhOzd5FmYuRsD4Y4oQFKZIjAnKbjV4WIrw= golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= @@ -880,20 +909,18 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= @@ -902,8 +929,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -914,15 +941,13 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181221143128-b4a75ba826a6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190730183949-1393eb018365/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -953,8 +978,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -964,10 +989,9 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= @@ -977,13 +1001,11 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -993,13 +1015,12 @@ golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c h1:lfpJ/2rWPa/kJgxyyXM8PrNnfCzcmxJ265mADgwmvLI= google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= @@ -1025,7 +1046,6 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= -gopkg.in/ini.v1 v1.44.2/go.mod h1:M3Cogqpuv0QCi3ExAY5V4uOt4qb/R3xZubo9m8lK5wg= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= diff --git a/models/activities/action.go b/models/activities/action.go index d23f2bd986..9b4ffd7725 100644 --- a/models/activities/action.go +++ b/models/activities/action.go @@ -450,17 +450,38 @@ func GetFeeds(ctx context.Context, opts GetFeedsOptions) (ActionList, int64, err return nil, 0, err } - sess := db.GetEngine(ctx).Where(cond). - Select("`action`.*"). // this line will avoid select other joined table's columns - Join("INNER", "repository", "`repository`.id = `action`.repo_id") - - opts.SetDefaultValues() - sess = db.SetSessionPagination(sess, &opts) - actions := make([]*Action, 0, opts.PageSize) - count, err := sess.Desc("`action`.created_unix").FindAndCount(&actions) - if err != nil { - return nil, 0, fmt.Errorf("FindAndCount: %w", err) + var count int64 + opts.SetDefaultValues() + + if opts.Page < 10 { // TODO: why it's 10 but other values? It's an experience value. + sess := db.GetEngine(ctx).Where(cond) + sess = db.SetSessionPagination(sess, &opts) + + count, err = sess.Desc("`action`.created_unix").FindAndCount(&actions) + if err != nil { + return nil, 0, fmt.Errorf("FindAndCount: %w", err) + } + } else { + // First, only query which IDs are necessary, and only then query all actions to speed up the overall query + sess := db.GetEngine(ctx).Where(cond).Select("`action`.id") + sess = db.SetSessionPagination(sess, &opts) + + actionIDs := make([]int64, 0, opts.PageSize) + if err := sess.Table("action").Desc("`action`.created_unix").Find(&actionIDs); err != nil { + return nil, 0, fmt.Errorf("Find(actionsIDs): %w", err) + } + + count, err = db.GetEngine(ctx).Where(cond). + Table("action"). + Cols("`action`.id").Count() + if err != nil { + return nil, 0, fmt.Errorf("Count: %w", err) + } + + if err := db.GetEngine(ctx).In("`action`.id", actionIDs).Desc("`action`.created_unix").Find(&actions); err != nil { + return nil, 0, fmt.Errorf("Find: %w", err) + } } if err := ActionList(actions).LoadAttributes(ctx); err != nil { diff --git a/models/activities/action_test.go b/models/activities/action_test.go index 36a38c7863..e5dee33ae0 100644 --- a/models/activities/action_test.go +++ b/models/activities/action_test.go @@ -228,6 +228,8 @@ func TestNotifyWatchers(t *testing.T) { } func TestGetFeedsCorrupted(t *testing.T) { + // Now we will not check for corrupted data in the feeds + // users should run doctor to fix their data assert.NoError(t, unittest.PrepareTestDatabase()) user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1}) unittest.AssertExistsAndLoadBean(t, &activities_model.Action{ @@ -241,8 +243,8 @@ func TestGetFeedsCorrupted(t *testing.T) { IncludePrivate: true, }) assert.NoError(t, err) - assert.Len(t, actions, 0) - assert.Equal(t, int64(0), count) + assert.Len(t, actions, 1) + assert.Equal(t, int64(1), count) } func TestConsistencyUpdateAction(t *testing.T) { diff --git a/models/activities/repo_activity.go b/models/activities/repo_activity.go index ba5e4959f0..3ffad035b7 100644 --- a/models/activities/repo_activity.go +++ b/models/activities/repo_activity.go @@ -34,6 +34,7 @@ type ActivityStats struct { OpenedPRAuthorCount int64 MergedPRs issues_model.PullRequestList MergedPRAuthorCount int64 + ActiveIssues issues_model.IssueList OpenedIssues issues_model.IssueList OpenedIssueAuthorCount int64 ClosedIssues issues_model.IssueList @@ -172,7 +173,7 @@ func (stats *ActivityStats) MergedPRPerc() int { // ActiveIssueCount returns total active issue count func (stats *ActivityStats) ActiveIssueCount() int { - return stats.OpenedIssueCount() + stats.ClosedIssueCount() + return len(stats.ActiveIssues) } // OpenedIssueCount returns open issue count @@ -285,13 +286,21 @@ func (stats *ActivityStats) FillIssues(ctx context.Context, repoID int64, fromTi stats.ClosedIssueAuthorCount = count // New issues - sess = issuesForActivityStatement(ctx, repoID, fromTime, false, false) + sess = newlyCreatedIssues(ctx, repoID, fromTime) sess.OrderBy("issue.created_unix ASC") stats.OpenedIssues = make(issues_model.IssueList, 0) if err = sess.Find(&stats.OpenedIssues); err != nil { return err } + // Active issues + sess = activeIssues(ctx, repoID, fromTime) + sess.OrderBy("issue.created_unix ASC") + stats.ActiveIssues = make(issues_model.IssueList, 0) + if err = sess.Find(&stats.ActiveIssues); err != nil { + return err + } + // Opened issue authors sess = issuesForActivityStatement(ctx, repoID, fromTime, false, false) if _, err = sess.Select("count(distinct issue.poster_id) as `count`").Table("issue").Get(&count); err != nil { @@ -317,6 +326,23 @@ func (stats *ActivityStats) FillUnresolvedIssues(ctx context.Context, repoID int return sess.Find(&stats.UnresolvedIssues) } +func newlyCreatedIssues(ctx context.Context, repoID int64, fromTime time.Time) *xorm.Session { + sess := db.GetEngine(ctx).Where("issue.repo_id = ?", repoID). + And("issue.is_pull = ?", false). // Retain the is_pull check to exclude pull requests + And("issue.created_unix >= ?", fromTime.Unix()) // Include all issues created after fromTime + + return sess +} + +func activeIssues(ctx context.Context, repoID int64, fromTime time.Time) *xorm.Session { + sess := db.GetEngine(ctx).Where("issue.repo_id = ?", repoID). + And("issue.is_pull = ?", false). + And("issue.created_unix >= ?", fromTime.Unix()). + Or("issue.closed_unix >= ?", fromTime.Unix()) + + return sess +} + func issuesForActivityStatement(ctx context.Context, repoID int64, fromTime time.Time, closed, unresolved bool) *xorm.Session { sess := db.GetEngine(ctx).Where("issue.repo_id = ?", repoID). And("issue.is_closed = ?", closed) diff --git a/models/admin/task.go b/models/admin/task.go index c8bc95f981..10f8e6d570 100644 --- a/models/admin/task.go +++ b/models/admin/task.go @@ -179,27 +179,6 @@ func GetMigratingTask(ctx context.Context, repoID int64) (*Task, error) { return &task, nil } -// GetMigratingTaskByID returns the migrating task by repo's id -func GetMigratingTaskByID(ctx context.Context, id, doerID int64) (*Task, *migration.MigrateOptions, error) { - task := Task{ - ID: id, - DoerID: doerID, - Type: structs.TaskTypeMigrateRepo, - } - has, err := db.GetEngine(ctx).Get(&task) - if err != nil { - return nil, nil, err - } else if !has { - return nil, nil, ErrTaskDoesNotExist{id, 0, task.Type} - } - - var opts migration.MigrateOptions - if err := json.Unmarshal([]byte(task.PayloadContent), &opts); err != nil { - return nil, nil, err - } - return &task, &opts, nil -} - // CreateTask creates a task on database func CreateTask(ctx context.Context, task *Task) error { return db.Insert(ctx, task) diff --git a/models/asymkey/gpg_key_common.go b/models/asymkey/gpg_key_common.go index 9c015582f1..28cb8f4e76 100644 --- a/models/asymkey/gpg_key_common.go +++ b/models/asymkey/gpg_key_common.go @@ -114,7 +114,7 @@ func readArmoredSign(r io.Reader) (body io.Reader, err error) { return nil, err } if block.Type != openpgp.SignatureType { - return nil, fmt.Errorf("expected '" + openpgp.SignatureType + "', got: " + block.Type) + return nil, fmt.Errorf("expected '%s', got: %s", openpgp.SignatureType, block.Type) } return block.Body, nil } @@ -139,7 +139,7 @@ func tryGetKeyIDFromSignature(sig *packet.Signature) string { if sig.IssuerKeyId != nil && (*sig.IssuerKeyId) != 0 { return fmt.Sprintf("%016X", *sig.IssuerKeyId) } - if sig.IssuerFingerprint != nil && len(sig.IssuerFingerprint) > 0 { + if len(sig.IssuerFingerprint) > 0 { return fmt.Sprintf("%016X", sig.IssuerFingerprint[12:20]) } return "" diff --git a/models/asymkey/ssh_key_test.go b/models/asymkey/ssh_key_test.go index 18c23dc78c..3650f1892f 100644 --- a/models/asymkey/ssh_key_test.go +++ b/models/asymkey/ssh_key_test.go @@ -28,7 +28,6 @@ func Test_SSHParsePublicKey(t *testing.T) { length int content string }{ - {"dsa-1024", false, "dsa", 1024, "ssh-dss AAAAB3NzaC1kc3MAAACBAOChCC7lf6Uo9n7BmZ6M8St19PZf4Tn59NriyboW2x/DZuYAz3ibZ2OkQ3S0SqDIa0HXSEJ1zaExQdmbO+Ux/wsytWZmCczWOVsaszBZSl90q8UnWlSH6P+/YA+RWJm5SFtuV9PtGIhyZgoNuz5kBQ7K139wuQsecdKktISwTakzAAAAFQCzKsO2JhNKlL+wwwLGOcLffoAmkwAAAIBpK7/3xvduajLBD/9vASqBQIHrgK2J+wiQnIb/Wzy0UsVmvfn8A+udRbBo+csM8xrSnlnlJnjkJS3qiM5g+eTwsLIV1IdKPEwmwB+VcP53Cw6lSyWyJcvhFb0N6s08NZysLzvj0N+ZC/FnhKTLzIyMtkHf/IrPCwlM+pV/M/96YgAAAIEAqQcGn9CKgzgPaguIZooTAOQdvBLMI5y0bQjOW6734XOpqQGf/Kra90wpoasLKZjSYKNPjE+FRUOrStLrxcNs4BeVKhy2PYTRnybfYVk1/dmKgH6P1YSRONsGKvTsH6c5IyCRG0ncCgYeF8tXppyd642982daopE7zQ/NPAnJfag= nocomment"}, {"rsa-1024", false, "rsa", 1024, "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAu7tvIvX6ZHrRXuZNfkR3XLHSsuCK9Zn3X58lxBcQzuo5xZgB6vRwwm/QtJuF+zZPtY5hsQILBLmF+BZ5WpKZp1jBeSjH2G7lxet9kbcH+kIVj0tPFEoyKI9wvWqIwC4prx/WVk2wLTJjzBAhyNxfEq7C9CeiX9pQEbEqJfkKCQ== nocomment\n"}, {"rsa-2048", false, "rsa", 2048, "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMZXh+1OBUwSH9D45wTaxErQIN9IoC9xl7MKJkqvTvv6O5RR9YW/IK9FbfjXgXsppYGhsCZo1hFOOsXHMnfOORqu/xMDx4yPuyvKpw4LePEcg4TDipaDFuxbWOqc/BUZRZcXu41QAWfDLrInwsltWZHSeG7hjhpacl4FrVv9V1pS6Oc5Q1NxxEzTzuNLS/8diZrTm/YAQQ/+B+mzWI3zEtF4miZjjAljWd1LTBPvU23d29DcBmmFahcZ441XZsTeAwGxG/Q6j8NgNXj9WxMeWwxXV2jeAX/EBSpZrCVlCQ1yJswT6xCp8TuBnTiGWYMBNTbOZvPC4e0WI2/yZW/s5F nocomment"}, {"ecdsa-256", false, "ecdsa", 256, "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFQacN3PrOll7PXmN5B/ZNVahiUIqI05nbBlZk1KXsO3d06ktAWqbNflv2vEmA38bTFTfJ2sbn2B5ksT52cDDbA= nocomment"}, @@ -172,7 +171,6 @@ func Test_calcFingerprint(t *testing.T) { fp string content string }{ - {"dsa-1024", false, "SHA256:fSIHQlpKMDsGPVAXI8BPYfRp+e2sfvSt1sMrPsFiXrc", "ssh-dss AAAAB3NzaC1kc3MAAACBAOChCC7lf6Uo9n7BmZ6M8St19PZf4Tn59NriyboW2x/DZuYAz3ibZ2OkQ3S0SqDIa0HXSEJ1zaExQdmbO+Ux/wsytWZmCczWOVsaszBZSl90q8UnWlSH6P+/YA+RWJm5SFtuV9PtGIhyZgoNuz5kBQ7K139wuQsecdKktISwTakzAAAAFQCzKsO2JhNKlL+wwwLGOcLffoAmkwAAAIBpK7/3xvduajLBD/9vASqBQIHrgK2J+wiQnIb/Wzy0UsVmvfn8A+udRbBo+csM8xrSnlnlJnjkJS3qiM5g+eTwsLIV1IdKPEwmwB+VcP53Cw6lSyWyJcvhFb0N6s08NZysLzvj0N+ZC/FnhKTLzIyMtkHf/IrPCwlM+pV/M/96YgAAAIEAqQcGn9CKgzgPaguIZooTAOQdvBLMI5y0bQjOW6734XOpqQGf/Kra90wpoasLKZjSYKNPjE+FRUOrStLrxcNs4BeVKhy2PYTRnybfYVk1/dmKgH6P1YSRONsGKvTsH6c5IyCRG0ncCgYeF8tXppyd642982daopE7zQ/NPAnJfag= nocomment"}, {"rsa-1024", false, "SHA256:vSnDkvRh/xM6kMxPidLgrUhq3mCN7CDaronCEm2joyQ", "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAu7tvIvX6ZHrRXuZNfkR3XLHSsuCK9Zn3X58lxBcQzuo5xZgB6vRwwm/QtJuF+zZPtY5hsQILBLmF+BZ5WpKZp1jBeSjH2G7lxet9kbcH+kIVj0tPFEoyKI9wvWqIwC4prx/WVk2wLTJjzBAhyNxfEq7C9CeiX9pQEbEqJfkKCQ== nocomment\n"}, {"rsa-2048", false, "SHA256:ZHD//a1b9VuTq9XSunAeYjKeU1xDa2tBFZYrFr2Okkg", "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMZXh+1OBUwSH9D45wTaxErQIN9IoC9xl7MKJkqvTvv6O5RR9YW/IK9FbfjXgXsppYGhsCZo1hFOOsXHMnfOORqu/xMDx4yPuyvKpw4LePEcg4TDipaDFuxbWOqc/BUZRZcXu41QAWfDLrInwsltWZHSeG7hjhpacl4FrVv9V1pS6Oc5Q1NxxEzTzuNLS/8diZrTm/YAQQ/+B+mzWI3zEtF4miZjjAljWd1LTBPvU23d29DcBmmFahcZ441XZsTeAwGxG/Q6j8NgNXj9WxMeWwxXV2jeAX/EBSpZrCVlCQ1yJswT6xCp8TuBnTiGWYMBNTbOZvPC4e0WI2/yZW/s5F nocomment"}, {"ecdsa-256", false, "SHA256:Bqx/xgWqRKLtkZ0Lr4iZpgb+5lYsFpSwXwVZbPwuTRw", "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFQacN3PrOll7PXmN5B/ZNVahiUIqI05nbBlZk1KXsO3d06ktAWqbNflv2vEmA38bTFTfJ2sbn2B5ksT52cDDbA= nocomment"}, diff --git a/models/auth/access_token_scope.go b/models/auth/access_token_scope.go index fe57276700..897ff3fc9e 100644 --- a/models/auth/access_token_scope.go +++ b/models/auth/access_token_scope.go @@ -309,6 +309,22 @@ func (s AccessTokenScope) HasScope(scopes ...AccessTokenScope) (bool, error) { return true, nil } +// HasAnyScope returns true if any of the scopes is contained in the string +func (s AccessTokenScope) HasAnyScope(scopes ...AccessTokenScope) (bool, error) { + bitmap, err := s.parse() + if err != nil { + return false, err + } + + for _, s := range scopes { + if has, err := bitmap.hasScope(s); has || err != nil { + return has, err + } + } + + return false, nil +} + // hasScope returns true if the string has the given scope func (bitmap accessTokenScopeBitmap) hasScope(scope AccessTokenScope) (bool, error) { expectedBits, ok := allAccessTokenScopeBits[scope] diff --git a/models/db/sql_postgres_with_schema.go b/models/db/sql_postgres_with_schema.go index ec63447f6f..64b61b2ef3 100644 --- a/models/db/sql_postgres_with_schema.go +++ b/models/db/sql_postgres_with_schema.go @@ -39,7 +39,7 @@ func (d *postgresSchemaDriver) Open(name string) (driver.Conn, error) { // golangci lint is incorrect here - there is no benefit to using driver.ExecerContext here // and in any case pq does not implement it - if execer, ok := conn.(driver.Execer); ok { //nolint + if execer, ok := conn.(driver.Execer); ok { //nolint:staticcheck _, err := execer.Exec(`SELECT set_config( 'search_path', $1 || ',' || current_setting('search_path'), @@ -64,7 +64,7 @@ func (d *postgresSchemaDriver) Open(name string) (driver.Conn, error) { // driver.String.ConvertValue will never return err for string // golangci lint is incorrect here - there is no benefit to using stmt.ExecWithContext here - _, err = stmt.Exec([]driver.Value{schemaValue}) //nolint + _, err = stmt.Exec([]driver.Value{schemaValue}) //nolint:staticcheck if err != nil { _ = conn.Close() return nil, err diff --git a/models/fixtures/comment.yml b/models/fixtures/comment.yml index 74fc716180..8fde386e22 100644 --- a/models/fixtures/comment.yml +++ b/models/fixtures/comment.yml @@ -83,3 +83,22 @@ issue_id: 2 # in repo_id 1 review_id: 20 created_unix: 946684810 + +- + id: 10 + type: 22 # review + poster_id: 5 + issue_id: 3 # in repo_id 1 + content: "reviewed by user5" + review_id: 21 + created_unix: 946684816 + +- + id: 11 + type: 27 # review request + poster_id: 2 + issue_id: 3 # in repo_id 1 + content: "review request for user5" + review_id: 22 + assignee_id: 5 + created_unix: 946684817 diff --git a/models/fixtures/repo_license.yml b/models/fixtures/repo_license.yml new file mode 100644 index 0000000000..ca780a73aa --- /dev/null +++ b/models/fixtures/repo_license.yml @@ -0,0 +1 @@ +[] # empty diff --git a/models/fixtures/repository.yml b/models/fixtures/repository.yml index e1f1dd7367..e141593f41 100644 --- a/models/fixtures/repository.yml +++ b/models/fixtures/repository.yml @@ -26,7 +26,7 @@ fork_id: 0 is_template: false template_id: 0 - size: 7320 + size: 8478 is_fsck_enabled: true close_issues_via_commit_in_any_branch: false diff --git a/models/fixtures/review.yml b/models/fixtures/review.yml index ac97e24c2b..0438ceadae 100644 --- a/models/fixtures/review.yml +++ b/models/fixtures/review.yml @@ -179,3 +179,22 @@ content: "Review Comment" updated_unix: 946684810 created_unix: 946684810 + +- + id: 21 + type: 2 + reviewer_id: 5 + issue_id: 3 + content: "reviewed by user5" + commit_id: 4a357436d925b5c974181ff12a994538ddc5a269 + updated_unix: 946684816 + created_unix: 946684816 + +- + id: 22 + type: 4 + reviewer_id: 5 + issue_id: 3 + content: "review request for user5" + updated_unix: 946684817 + created_unix: 946684817 diff --git a/models/issues/issue_project.go b/models/issues/issue_project.go index 835ea1db52..c4515fd898 100644 --- a/models/issues/issue_project.go +++ b/models/issues/issue_project.go @@ -48,12 +48,12 @@ func (issue *Issue) ProjectColumnID(ctx context.Context) int64 { } // LoadIssuesFromColumn load issues assigned to this column -func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueList, error) { - issueList, err := Issues(ctx, &IssuesOptions{ - ProjectColumnID: b.ID, - ProjectID: b.ProjectID, - SortType: "project-column-sorting", - }) +func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column, opts *IssuesOptions) (IssueList, error) { + issueList, err := Issues(ctx, opts.Copy(func(o *IssuesOptions) { + o.ProjectColumnID = b.ID + o.ProjectID = b.ProjectID + o.SortType = "project-column-sorting" + })) if err != nil { return nil, err } @@ -78,10 +78,10 @@ func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueLi } // LoadIssuesFromColumnList load issues assigned to the columns -func LoadIssuesFromColumnList(ctx context.Context, bs project_model.ColumnList) (map[int64]IssueList, error) { +func LoadIssuesFromColumnList(ctx context.Context, bs project_model.ColumnList, opts *IssuesOptions) (map[int64]IssueList, error) { issuesMap := make(map[int64]IssueList, len(bs)) for i := range bs { - il, err := LoadIssuesFromColumn(ctx, bs[i]) + il, err := LoadIssuesFromColumn(ctx, bs[i], opts) if err != nil { return nil, err } diff --git a/models/issues/issue_search.go b/models/issues/issue_search.go index e9f116bfc6..5948a67d4e 100644 --- a/models/issues/issue_search.go +++ b/models/issues/issue_search.go @@ -54,6 +54,19 @@ type IssuesOptions struct { //nolint User *user_model.User // issues permission scope } +// Copy returns a copy of the options. +// Be careful, it's not a deep copy, so `IssuesOptions.RepoIDs = {...}` is OK while `IssuesOptions.RepoIDs[0] = ...` is not. +func (o *IssuesOptions) Copy(edit ...func(options *IssuesOptions)) *IssuesOptions { + if o == nil { + return nil + } + v := *o + for _, e := range edit { + e(&v) + } + return &v +} + // applySorts sort an issues-related session based on the provided // sortType string func applySorts(sess *xorm.Session, sortType string, priorityRepoID int64) { diff --git a/models/issues/pull.go b/models/issues/pull.go index 5fe95d56cc..b327ebc625 100644 --- a/models/issues/pull.go +++ b/models/issues/pull.go @@ -268,6 +268,10 @@ func (pr *PullRequest) LoadAttributes(ctx context.Context) (err error) { return nil } +func (pr *PullRequest) IsAgitFlow() bool { + return pr.Flow == PullRequestFlowAGit +} + // LoadHeadRepo loads the head repository, pr.HeadRepo will remain nil if it does not exist // and thus ErrRepoNotExist will never be returned func (pr *PullRequest) LoadHeadRepo(ctx context.Context) (err error) { @@ -410,7 +414,7 @@ func (pr *PullRequest) getReviewedByLines(ctx context.Context, writer io.Writer) // Note: This doesn't page as we only expect a very limited number of reviews reviews, err := FindLatestReviews(ctx, FindReviewOptions{ - Type: ReviewTypeApprove, + Types: []ReviewType{ReviewTypeApprove}, IssueID: pr.IssueID, OfficialOnly: setting.Repository.PullRequest.DefaultMergeMessageOfficialApproversOnly, }) diff --git a/models/issues/review.go b/models/issues/review.go index ca6fd6035b..8b345e5fd8 100644 --- a/models/issues/review.go +++ b/models/issues/review.go @@ -214,9 +214,13 @@ func (r *Review) LoadAttributes(ctx context.Context) (err error) { return err } +// HTMLTypeColorName returns the color used in the ui indicating the review func (r *Review) HTMLTypeColorName() string { switch r.Type { case ReviewTypeApprove: + if !r.Official { + return "grey" + } if r.Stale { return "yellow" } @@ -231,6 +235,27 @@ func (r *Review) HTMLTypeColorName() string { return "grey" } +// TooltipContent returns the locale string describing the review type +func (r *Review) TooltipContent() string { + switch r.Type { + case ReviewTypeApprove: + if r.Stale { + return "repo.issues.review.stale" + } + if !r.Official { + return "repo.issues.review.unofficial" + } + return "repo.issues.review.official" + case ReviewTypeComment: + return "repo.issues.review.commented" + case ReviewTypeReject: + return "repo.issues.review.rejected" + case ReviewTypeRequest: + return "repo.issues.review.requested" + } + return "" +} + // GetReviewByID returns the review by the given ID func GetReviewByID(ctx context.Context, id int64) (*Review, error) { review := new(Review) @@ -364,7 +389,7 @@ func GetCurrentReview(ctx context.Context, reviewer *user_model.User, issue *Iss return nil, nil } reviews, err := FindReviews(ctx, FindReviewOptions{ - Type: ReviewTypePending, + Types: []ReviewType{ReviewTypePending}, IssueID: issue.ID, ReviewerID: reviewer.ID, }) diff --git a/models/issues/review_list.go b/models/issues/review_list.go index 0ee28874ec..a5ceb21791 100644 --- a/models/issues/review_list.go +++ b/models/issues/review_list.go @@ -92,7 +92,7 @@ func (reviews ReviewList) LoadIssues(ctx context.Context) error { // FindReviewOptions represent possible filters to find reviews type FindReviewOptions struct { db.ListOptions - Type ReviewType + Types []ReviewType IssueID int64 ReviewerID int64 OfficialOnly bool @@ -107,8 +107,8 @@ func (opts *FindReviewOptions) toCond() builder.Cond { if opts.ReviewerID > 0 { cond = cond.And(builder.Eq{"reviewer_id": opts.ReviewerID}) } - if opts.Type != ReviewTypeUnknown { - cond = cond.And(builder.Eq{"type": opts.Type}) + if len(opts.Types) > 0 { + cond = cond.And(builder.In("type", opts.Types)) } if opts.OfficialOnly { cond = cond.And(builder.Eq{"official": true}) diff --git a/models/issues/review_test.go b/models/issues/review_test.go index ac1b84adeb..942121fd8f 100644 --- a/models/issues/review_test.go +++ b/models/issues/review_test.go @@ -63,7 +63,7 @@ func TestReviewType_Icon(t *testing.T) { func TestFindReviews(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) reviews, err := issues_model.FindReviews(db.DefaultContext, issues_model.FindReviewOptions{ - Type: issues_model.ReviewTypeApprove, + Types: []issues_model.ReviewType{issues_model.ReviewTypeApprove}, IssueID: 2, ReviewerID: 1, }) @@ -75,7 +75,7 @@ func TestFindReviews(t *testing.T) { func TestFindLatestReviews(t *testing.T) { assert.NoError(t, unittest.PrepareTestDatabase()) reviews, err := issues_model.FindLatestReviews(db.DefaultContext, issues_model.FindReviewOptions{ - Type: issues_model.ReviewTypeApprove, + Types: []issues_model.ReviewType{issues_model.ReviewTypeApprove}, IssueID: 11, }) assert.NoError(t, err) diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index a3264160e5..f99718ead2 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -500,7 +500,7 @@ var migrations = []Migration{ // v259 -> v260 NewMigration("Convert scoped access tokens", v1_20.ConvertScopedAccessTokens), - // Gitea 1.20.0 ends at 260 + // Gitea 1.20.0 ends at v260 // v260 -> v261 NewMigration("Drop custom_labels column of action_runner table", v1_21.DropCustomLabelsColumnOfActionRunner), @@ -599,6 +599,10 @@ var migrations = []Migration{ NewMigration("Add index to action_task stopped log_expired", v1_23.AddIndexToActionTaskStoppedLogExpired), // v303 -> v304 NewMigration("Add metadata column for comment table", v1_23.AddCommentMetaDataColumn), + // v304 -> v305 + NewMigration("Add index for release sha1", v1_23.AddIndexForReleaseSha1), + // v305 -> v306 + NewMigration("Add Repository Licenses", v1_23.AddRepositoryLicenses), } // GetCurrentDBVersion returns the current db version diff --git a/models/migrations/v1_16/v189.go b/models/migrations/v1_16/v189.go index afd93b0eac..5649645051 100644 --- a/models/migrations/v1_16/v189.go +++ b/models/migrations/v1_16/v189.go @@ -83,7 +83,7 @@ func UnwrapLDAPSourceCfg(x *xorm.Engine) error { if err != nil { return fmt.Errorf("failed to unmarshal %s: %w", source.Cfg, err) } - if wrapped.Source != nil && len(wrapped.Source) > 0 { + if len(wrapped.Source) > 0 { bs, err := json.Marshal(wrapped.Source) if err != nil { return err diff --git a/models/migrations/v1_23/v304.go b/models/migrations/v1_23/v304.go new file mode 100644 index 0000000000..65cffedbd9 --- /dev/null +++ b/models/migrations/v1_23/v304.go @@ -0,0 +1,13 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package v1_23 //nolint + +import "xorm.io/xorm" + +func AddIndexForReleaseSha1(x *xorm.Engine) error { + type Release struct { + Sha1 string `xorm:"INDEX VARCHAR(64)"` + } + return x.Sync(new(Release)) +} diff --git a/models/migrations/v1_23/v305.go b/models/migrations/v1_23/v305.go new file mode 100644 index 0000000000..4d881192b2 --- /dev/null +++ b/models/migrations/v1_23/v305.go @@ -0,0 +1,23 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package v1_23 //nolint + +import ( + "code.gitea.io/gitea/modules/timeutil" + + "xorm.io/xorm" +) + +func AddRepositoryLicenses(x *xorm.Engine) error { + type RepoLicense struct { + ID int64 `xorm:"pk autoincr"` + RepoID int64 `xorm:"UNIQUE(s) NOT NULL"` + CommitID string + License string `xorm:"VARCHAR(255) UNIQUE(s) NOT NULL"` + CreatedUnix timeutil.TimeStamp `xorm:"INDEX CREATED"` + UpdatedUnix timeutil.TimeStamp `xorm:"INDEX UPDATED"` + } + + return x.Sync(new(RepoLicense)) +} diff --git a/models/organization/org_user.go b/models/organization/org_user.go index 5fe3a178d2..1d3b2fab44 100644 --- a/models/organization/org_user.go +++ b/models/organization/org_user.go @@ -9,7 +9,9 @@ import ( "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/perm" + "code.gitea.io/gitea/models/unit" user_model "code.gitea.io/gitea/models/user" + "code.gitea.io/gitea/modules/container" "code.gitea.io/gitea/modules/log" "xorm.io/builder" @@ -112,6 +114,49 @@ func IsUserOrgOwner(ctx context.Context, users user_model.UserList, orgID int64) return results } +// GetOrgAssignees returns all users that have write access and can be assigned to issues +// of the any repository in the organization. +func GetOrgAssignees(ctx context.Context, orgID int64) (_ []*user_model.User, err error) { + e := db.GetEngine(ctx) + userIDs := make([]int64, 0, 10) + if err = e.Table("access"). + Join("INNER", "repository", "`repository`.id = `access`.repo_id"). + Where("`repository`.owner_id = ? AND `access`.mode >= ?", orgID, perm.AccessModeWrite). + Select("user_id"). + Find(&userIDs); err != nil { + return nil, err + } + + additionalUserIDs := make([]int64, 0, 10) + if err = e.Table("team_user"). + Join("INNER", "team_repo", "`team_repo`.team_id = `team_user`.team_id"). + Join("INNER", "team_unit", "`team_unit`.team_id = `team_user`.team_id"). + Join("INNER", "repository", "`repository`.id = `team_repo`.repo_id"). + Where("`repository`.owner_id = ? AND (`team_unit`.access_mode >= ? OR (`team_unit`.access_mode = ? AND `team_unit`.`type` = ?))", + orgID, perm.AccessModeWrite, perm.AccessModeRead, unit.TypePullRequests). + Distinct("`team_user`.uid"). + Select("`team_user`.uid"). + Find(&additionalUserIDs); err != nil { + return nil, err + } + + uniqueUserIDs := make(container.Set[int64]) + uniqueUserIDs.AddMultiple(userIDs...) + uniqueUserIDs.AddMultiple(additionalUserIDs...) + + users := make([]*user_model.User, 0, len(uniqueUserIDs)) + if len(userIDs) > 0 { + if err = e.In("id", uniqueUserIDs.Values()). + Where(builder.Eq{"`user`.is_active": true}). + OrderBy(user_model.GetOrderByName()). + Find(&users); err != nil { + return nil, err + } + } + + return users, nil +} + func loadOrganizationOwners(ctx context.Context, users user_model.UserList, orgID int64) (map[int64]*TeamUser, error) { if len(users) == 0 { return nil, nil diff --git a/models/repo/license.go b/models/repo/license.go new file mode 100644 index 0000000000..366b4598cc --- /dev/null +++ b/models/repo/license.go @@ -0,0 +1,120 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package repo + +import ( + "context" + + "code.gitea.io/gitea/models/db" + "code.gitea.io/gitea/modules/timeutil" +) + +func init() { + db.RegisterModel(new(RepoLicense)) +} + +type RepoLicense struct { //revive:disable-line:exported + ID int64 `xorm:"pk autoincr"` + RepoID int64 `xorm:"UNIQUE(s) NOT NULL"` + CommitID string + License string `xorm:"VARCHAR(255) UNIQUE(s) NOT NULL"` + CreatedUnix timeutil.TimeStamp `xorm:"INDEX CREATED"` + UpdatedUnix timeutil.TimeStamp `xorm:"INDEX UPDATED"` +} + +// RepoLicenseList defines a list of repo licenses +type RepoLicenseList []*RepoLicense //revive:disable-line:exported + +func (rll RepoLicenseList) StringList() []string { + var licenses []string + for _, rl := range rll { + licenses = append(licenses, rl.License) + } + return licenses +} + +// GetRepoLicenses returns the license statistics for a repository +func GetRepoLicenses(ctx context.Context, repo *Repository) (RepoLicenseList, error) { + licenses := make(RepoLicenseList, 0) + if err := db.GetEngine(ctx).Where("`repo_id` = ?", repo.ID).Asc("`license`").Find(&licenses); err != nil { + return nil, err + } + return licenses, nil +} + +// UpdateRepoLicenses updates the license statistics for repository +func UpdateRepoLicenses(ctx context.Context, repo *Repository, commitID string, licenses []string) error { + oldLicenses, err := GetRepoLicenses(ctx, repo) + if err != nil { + return err + } + for _, license := range licenses { + upd := false + for _, o := range oldLicenses { + // Update already existing license + if o.License == license { + if _, err := db.GetEngine(ctx).ID(o.ID).Cols("`commit_id`").Update(o); err != nil { + return err + } + upd = true + break + } + } + // Insert new license + if !upd { + if err := db.Insert(ctx, &RepoLicense{ + RepoID: repo.ID, + CommitID: commitID, + License: license, + }); err != nil { + return err + } + } + } + // Delete old licenses + licenseToDelete := make([]int64, 0, len(oldLicenses)) + for _, o := range oldLicenses { + if o.CommitID != commitID { + licenseToDelete = append(licenseToDelete, o.ID) + } + } + if len(licenseToDelete) > 0 { + if _, err := db.GetEngine(ctx).In("`id`", licenseToDelete).Delete(&RepoLicense{}); err != nil { + return err + } + } + + return nil +} + +// CopyLicense Copy originalRepo license information to destRepo (use for forked repo) +func CopyLicense(ctx context.Context, originalRepo, destRepo *Repository) error { + repoLicenses, err := GetRepoLicenses(ctx, originalRepo) + if err != nil { + return err + } + if len(repoLicenses) > 0 { + newRepoLicenses := make(RepoLicenseList, 0, len(repoLicenses)) + + for _, rl := range repoLicenses { + newRepoLicense := &RepoLicense{ + RepoID: destRepo.ID, + CommitID: rl.CommitID, + License: rl.License, + } + newRepoLicenses = append(newRepoLicenses, newRepoLicense) + } + if err := db.Insert(ctx, &newRepoLicenses); err != nil { + return err + } + } + return nil +} + +// CleanRepoLicenses will remove all license record of the repo +func CleanRepoLicenses(ctx context.Context, repo *Repository) error { + return db.DeleteBeans(ctx, &RepoLicense{ + RepoID: repo.ID, + }) +} diff --git a/models/repo/release.go b/models/repo/release.go index 3123edd978..7c66cbc1af 100644 --- a/models/repo/release.go +++ b/models/repo/release.go @@ -77,7 +77,7 @@ type Release struct { Target string TargetBehind string `xorm:"-"` // to handle non-existing or empty target Title string - Sha1 string `xorm:"VARCHAR(64)"` + Sha1 string `xorm:"INDEX VARCHAR(64)"` NumCommits int64 NumCommitsBehind int64 `xorm:"-"` Note string `xorm:"TEXT"` @@ -234,6 +234,7 @@ type FindReleasesOptions struct { IsDraft optional.Option[bool] TagNames []string HasSha1 optional.Option[bool] // useful to find draft releases which are created with existing tags + NamePattern optional.Option[string] } func (opts FindReleasesOptions) ToConds() builder.Cond { @@ -261,6 +262,11 @@ func (opts FindReleasesOptions) ToConds() builder.Cond { cond = cond.And(builder.Eq{"sha1": ""}) } } + + if opts.NamePattern.Has() && opts.NamePattern.Value() != "" { + cond = cond.And(builder.Like{"lower_tag_name", strings.ToLower(opts.NamePattern.Value())}) + } + return cond } @@ -537,3 +543,17 @@ func InsertReleases(ctx context.Context, rels ...*Release) error { return committer.Commit() } + +func FindTagsByCommitIDs(ctx context.Context, repoID int64, commitIDs ...string) (map[string][]*Release, error) { + releases := make([]*Release, 0, len(commitIDs)) + if err := db.GetEngine(ctx).Where("repo_id=?", repoID). + In("sha1", commitIDs). + Find(&releases); err != nil { + return nil, err + } + res := make(map[string][]*Release, len(releases)) + for _, r := range releases { + res[r.Sha1] = append(res[r.Sha1], r) + } + return res, nil +} diff --git a/models/repo/release_test.go b/models/repo/release_test.go index 3643bff7f1..41ea083229 100644 --- a/models/repo/release_test.go +++ b/models/repo/release_test.go @@ -25,3 +25,16 @@ func TestMigrate_InsertReleases(t *testing.T) { err := InsertReleases(db.DefaultContext, r) assert.NoError(t, err) } + +func Test_FindTagsByCommitIDs(t *testing.T) { + assert.NoError(t, unittest.PrepareTestDatabase()) + + sha1Rels, err := FindTagsByCommitIDs(db.DefaultContext, 1, "65f1bf27bc3bf70f64657658635e66094edbcb4d") + assert.NoError(t, err) + assert.Len(t, sha1Rels, 1) + rels := sha1Rels["65f1bf27bc3bf70f64657658635e66094edbcb4d"] + assert.Len(t, rels, 3) + assert.Equal(t, "v1.1", rels[0].TagName) + assert.Equal(t, "delete-tag", rels[1].TagName) + assert.Equal(t, "v1.0", rels[2].TagName) +} diff --git a/models/repo/repo_list.go b/models/repo/repo_list.go index e22d872ae4..1bffadbf0a 100644 --- a/models/repo/repo_list.go +++ b/models/repo/repo_list.go @@ -749,7 +749,7 @@ func GetUserRepositories(ctx context.Context, opts *SearchRepoOptions) (Reposito cond = cond.And(builder.Eq{"is_private": false}) } - if opts.LowerNames != nil && len(opts.LowerNames) > 0 { + if len(opts.LowerNames) > 0 { cond = cond.And(builder.In("lower_name", opts.LowerNames)) } diff --git a/models/user/setting_keys.go b/models/user/setting_keys.go index 72b3974eee..3149aae18b 100644 --- a/models/user/setting_keys.go +++ b/models/user/setting_keys.go @@ -14,4 +14,8 @@ const ( UserActivityPubPrivPem = "activitypub.priv_pem" // UserActivityPubPubPem is user's public key UserActivityPubPubPem = "activitypub.pub_pem" + // SignupIP is the IP address that the user signed up with + SignupIP = "signup.ip" + // SignupUserAgent is the user agent that the user signed up with + SignupUserAgent = "signup.user_agent" ) diff --git a/models/user/user.go b/models/user/user.go index 2a3c1833b9..f93fba8ae0 100644 --- a/models/user/user.go +++ b/models/user/user.go @@ -150,6 +150,14 @@ type User struct { KeepActivityPrivate bool `xorm:"NOT NULL DEFAULT false"` } +// Meta defines the meta information of a user, to be stored in the K/V table +type Meta struct { + // Store the initial registration of the user, to aid in spam prevention + // Ensure that one IP isn't creating many accounts (following mediawiki approach) + InitialIP string + InitialUserAgent string +} + func init() { db.RegisterModel(new(User)) } @@ -615,17 +623,17 @@ type CreateUserOverwriteOptions struct { } // CreateUser creates record of a new user. -func CreateUser(ctx context.Context, u *User, overwriteDefault ...*CreateUserOverwriteOptions) (err error) { - return createUser(ctx, u, false, overwriteDefault...) +func CreateUser(ctx context.Context, u *User, meta *Meta, overwriteDefault ...*CreateUserOverwriteOptions) (err error) { + return createUser(ctx, u, meta, false, overwriteDefault...) } // AdminCreateUser is used by admins to manually create users -func AdminCreateUser(ctx context.Context, u *User, overwriteDefault ...*CreateUserOverwriteOptions) (err error) { - return createUser(ctx, u, true, overwriteDefault...) +func AdminCreateUser(ctx context.Context, u *User, meta *Meta, overwriteDefault ...*CreateUserOverwriteOptions) (err error) { + return createUser(ctx, u, meta, true, overwriteDefault...) } // createUser creates record of a new user. -func createUser(ctx context.Context, u *User, createdByAdmin bool, overwriteDefault ...*CreateUserOverwriteOptions) (err error) { +func createUser(ctx context.Context, u *User, meta *Meta, createdByAdmin bool, overwriteDefault ...*CreateUserOverwriteOptions) (err error) { if err = IsUsableUsername(u.Name); err != nil { return err } @@ -745,6 +753,22 @@ func createUser(ctx context.Context, u *User, createdByAdmin bool, overwriteDefa return err } + if setting.RecordUserSignupMetadata { + // insert initial IP and UserAgent + if err = SetUserSetting(ctx, u.ID, SignupIP, meta.InitialIP); err != nil { + return err + } + + // trim user agent string to a reasonable length, if necessary + userAgent := strings.TrimSpace(meta.InitialUserAgent) + if len(userAgent) > 255 { + userAgent = userAgent[:255] + } + if err = SetUserSetting(ctx, u.ID, SignupUserAgent, userAgent); err != nil { + return err + } + } + // insert email address if err := db.Insert(ctx, &EmailAddress{ UID: u.ID, diff --git a/models/user/user_test.go b/models/user/user_test.go index 26cda3f89e..67efb3859f 100644 --- a/models/user/user_test.go +++ b/models/user/user_test.go @@ -227,7 +227,7 @@ func TestCreateUserInvalidEmail(t *testing.T) { MustChangePassword: false, } - err := user_model.CreateUser(db.DefaultContext, user) + err := user_model.CreateUser(db.DefaultContext, user, &user_model.Meta{}) assert.Error(t, err) assert.True(t, user_model.IsErrEmailCharIsNotSupported(err)) } @@ -241,7 +241,7 @@ func TestCreateUserEmailAlreadyUsed(t *testing.T) { user.Name = "testuser" user.LowerName = strings.ToLower(user.Name) user.ID = 0 - err := user_model.CreateUser(db.DefaultContext, user) + err := user_model.CreateUser(db.DefaultContext, user, &user_model.Meta{}) assert.Error(t, err) assert.True(t, user_model.IsErrEmailAlreadyUsed(err)) } @@ -258,7 +258,7 @@ func TestCreateUserCustomTimestamps(t *testing.T) { user.ID = 0 user.Email = "unique@example.com" user.CreatedUnix = creationTimestamp - err := user_model.CreateUser(db.DefaultContext, user) + err := user_model.CreateUser(db.DefaultContext, user, &user_model.Meta{}) assert.NoError(t, err) fetched, err := user_model.GetUserByID(context.Background(), user.ID) @@ -283,7 +283,7 @@ func TestCreateUserWithoutCustomTimestamps(t *testing.T) { user.Email = "unique@example.com" user.CreatedUnix = 0 user.UpdatedUnix = 0 - err := user_model.CreateUser(db.DefaultContext, user) + err := user_model.CreateUser(db.DefaultContext, user, &user_model.Meta{}) assert.NoError(t, err) timestampEnd := time.Now().Unix() diff --git a/modules/actions/task_state.go b/modules/actions/task_state.go index 31a74be3fd..1f36e021a5 100644 --- a/modules/actions/task_state.go +++ b/modules/actions/task_state.go @@ -18,8 +18,32 @@ func FullSteps(task *actions_model.ActionTask) []*actions_model.ActionTaskStep { return fullStepsOfEmptySteps(task) } - firstStep := task.Steps[0] + // firstStep is the first step that has run or running, not include preStep. + // For example, + // 1. preStep(Success) -> step1(Success) -> step2(Running) -> step3(Waiting) -> postStep(Waiting): firstStep is step1. + // 2. preStep(Success) -> step1(Skipped) -> step2(Success) -> postStep(Success): firstStep is step2. + // 3. preStep(Success) -> step1(Running) -> step2(Waiting) -> postStep(Waiting): firstStep is step1. + // 4. preStep(Success) -> step1(Skipped) -> step2(Skipped) -> postStep(Skipped): firstStep is nil. + // 5. preStep(Success) -> step1(Cancelled) -> step2(Cancelled) -> postStep(Cancelled): firstStep is nil. + var firstStep *actions_model.ActionTaskStep + // lastHasRunStep is the last step that has run. + // For example, + // 1. preStep(Success) -> step1(Success) -> step2(Running) -> step3(Waiting) -> postStep(Waiting): lastHasRunStep is step1. + // 2. preStep(Success) -> step1(Success) -> step2(Success) -> step3(Success) -> postStep(Success): lastHasRunStep is step3. + // 3. preStep(Success) -> step1(Success) -> step2(Failure) -> step3 -> postStep(Waiting): lastHasRunStep is step2. + // So its Stopped is the Started of postStep when there are no more steps to run. + var lastHasRunStep *actions_model.ActionTaskStep + var logIndex int64 + for _, step := range task.Steps { + if firstStep == nil && (step.Status.HasRun() || step.Status.IsRunning()) { + firstStep = step + } + if step.Status.HasRun() { + lastHasRunStep = step + } + logIndex += step.LogLength + } preStep := &actions_model.ActionTaskStep{ Name: preStepName, @@ -28,32 +52,17 @@ func FullSteps(task *actions_model.ActionTask) []*actions_model.ActionTaskStep { Status: actions_model.StatusRunning, } - if firstStep.Status.HasRun() || firstStep.Status.IsRunning() { + // No step has run or is running, so preStep is equal to the task + if firstStep == nil { + preStep.Stopped = task.Stopped + preStep.Status = task.Status + } else { preStep.LogLength = firstStep.LogIndex preStep.Stopped = firstStep.Started preStep.Status = actions_model.StatusSuccess - } else if task.Status.IsDone() { - preStep.Stopped = task.Stopped - preStep.Status = actions_model.StatusFailure - if task.Status.IsSkipped() { - preStep.Status = actions_model.StatusSkipped - } } logIndex += preStep.LogLength - // lastHasRunStep is the last step that has run. - // For example, - // 1. preStep(Success) -> step1(Success) -> step2(Running) -> step3(Waiting) -> postStep(Waiting): lastHasRunStep is step1. - // 2. preStep(Success) -> step1(Success) -> step2(Success) -> step3(Success) -> postStep(Success): lastHasRunStep is step3. - // 3. preStep(Success) -> step1(Success) -> step2(Failure) -> step3 -> postStep(Waiting): lastHasRunStep is step2. - // So its Stopped is the Started of postStep when there are no more steps to run. - var lastHasRunStep *actions_model.ActionTaskStep - for _, step := range task.Steps { - if step.Status.HasRun() { - lastHasRunStep = step - } - logIndex += step.LogLength - } if lastHasRunStep == nil { lastHasRunStep = preStep } diff --git a/modules/actions/task_state_test.go b/modules/actions/task_state_test.go index 28213d781b..ff0fd57195 100644 --- a/modules/actions/task_state_test.go +++ b/modules/actions/task_state_test.go @@ -137,6 +137,25 @@ func TestFullSteps(t *testing.T) { {Name: postStepName, Status: actions_model.StatusSkipped, LogIndex: 0, LogLength: 0, Started: 0, Stopped: 0}, }, }, + { + name: "first step is skipped", + task: &actions_model.ActionTask{ + Steps: []*actions_model.ActionTaskStep{ + {Status: actions_model.StatusSkipped, LogIndex: 0, LogLength: 0, Started: 0, Stopped: 0}, + {Status: actions_model.StatusSuccess, LogIndex: 10, LogLength: 80, Started: 10010, Stopped: 10090}, + }, + Status: actions_model.StatusSuccess, + Started: 10000, + Stopped: 10100, + LogLength: 100, + }, + want: []*actions_model.ActionTaskStep{ + {Name: preStepName, Status: actions_model.StatusSuccess, LogIndex: 0, LogLength: 10, Started: 10000, Stopped: 10010}, + {Status: actions_model.StatusSkipped, LogIndex: 0, LogLength: 0, Started: 0, Stopped: 0}, + {Status: actions_model.StatusSuccess, LogIndex: 10, LogLength: 80, Started: 10010, Stopped: 10090}, + {Name: postStepName, Status: actions_model.StatusSuccess, LogIndex: 90, LogLength: 10, Started: 10090, Stopped: 10100}, + }, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/modules/activitypub/client.go b/modules/activitypub/client.go index 66b977c01f..a9941f9b75 100644 --- a/modules/activitypub/client.go +++ b/modules/activitypub/client.go @@ -18,7 +18,7 @@ import ( "code.gitea.io/gitea/modules/proxy" "code.gitea.io/gitea/modules/setting" - "github.com/go-fed/httpsig" + "github.com/42wim/httpsig" ) const ( diff --git a/modules/activitypub/user_settings_test.go b/modules/activitypub/user_settings_test.go index 2d77906521..55862357f1 100644 --- a/modules/activitypub/user_settings_test.go +++ b/modules/activitypub/user_settings_test.go @@ -10,7 +10,7 @@ import ( "code.gitea.io/gitea/models/unittest" user_model "code.gitea.io/gitea/models/user" - _ "code.gitea.io/gitea/models" // https://discourse.gitea.io/t/testfixtures-could-not-clean-table-access-no-such-table-access/4137/4 + _ "code.gitea.io/gitea/models" // https://forum.gitea.com/t/testfixtures-could-not-clean-table-access-no-such-table-access/4137/4 "github.com/stretchr/testify/assert" ) diff --git a/modules/cache/context.go b/modules/cache/context.go index 62bbf5dcba..484cee659a 100644 --- a/modules/cache/context.go +++ b/modules/cache/context.go @@ -63,9 +63,9 @@ func (cc *cacheContext) isDiscard() bool { } // cacheContextLifetime is the max lifetime of cacheContext. -// Since cacheContext is used to cache data in a request level context, 10s is enough. -// If a cacheContext is used more than 10s, it's probably misuse. -const cacheContextLifetime = 10 * time.Second +// Since cacheContext is used to cache data in a request level context, 5 minutes is enough. +// If a cacheContext is used more than 5 minutes, it's probably misuse. +const cacheContextLifetime = 5 * time.Minute var timeNow = time.Now @@ -109,7 +109,8 @@ func WithCacheContext(ctx context.Context) context.Context { return ctx } } - return context.WithValue(ctx, cacheContextKey, &cacheContext{ + // FIXME: review the use of this nolint directive + return context.WithValue(ctx, cacheContextKey, &cacheContext{ //nolint:staticcheck data: make(map[any]map[any]any), created: timeNow(), }) @@ -131,7 +132,7 @@ func GetContextData(ctx context.Context, tp, key any) any { if c.Expired() { // The warning means that the cache context is misused for long-life task, // it can be resolved with WithNoCacheContext(ctx). - log.Warn("cache context is expired, may be misused for long-life tasks: %v", c) + log.Warn("cache context is expired, is highly likely to be misused for long-life tasks: %v", c) return nil } return c.Get(tp, key) @@ -144,7 +145,7 @@ func SetContextData(ctx context.Context, tp, key, value any) { if c.Expired() { // The warning means that the cache context is misused for long-life task, // it can be resolved with WithNoCacheContext(ctx). - log.Warn("cache context is expired, may be misused for long-life tasks: %v", c) + log.Warn("cache context is expired, is highly likely to be misused for long-life tasks: %v", c) return } c.Put(tp, key, value) @@ -157,7 +158,7 @@ func RemoveContextData(ctx context.Context, tp, key any) { if c.Expired() { // The warning means that the cache context is misused for long-life task, // it can be resolved with WithNoCacheContext(ctx). - log.Warn("cache context is expired, may be misused for long-life tasks: %v", c) + log.Warn("cache context is expired, is highly likely to be misused for long-life tasks: %v", c) return } c.Delete(tp, key) diff --git a/modules/cache/context_test.go b/modules/cache/context_test.go index 5315547865..c01b9e8d84 100644 --- a/modules/cache/context_test.go +++ b/modules/cache/context_test.go @@ -45,7 +45,7 @@ func TestWithCacheContext(t *testing.T) { timeNow = now }() timeNow = func() time.Time { - return now().Add(10 * time.Second) + return now().Add(5 * time.Minute) } v = GetContextData(ctx, field, "my_config1") assert.Nil(t, v) diff --git a/modules/git/batch.go b/modules/git/batch.go new file mode 100644 index 0000000000..3ec4f1ddcc --- /dev/null +++ b/modules/git/batch.go @@ -0,0 +1,46 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package git + +import ( + "bufio" + "context" +) + +type Batch struct { + cancel context.CancelFunc + Reader *bufio.Reader + Writer WriteCloserError +} + +func (repo *Repository) NewBatch(ctx context.Context) (*Batch, error) { + // Now because of some insanity with git cat-file not immediately failing if not run in a valid git directory we need to run git rev-parse first! + if err := ensureValidGitRepository(ctx, repo.Path); err != nil { + return nil, err + } + + var batch Batch + batch.Writer, batch.Reader, batch.cancel = catFileBatch(ctx, repo.Path) + return &batch, nil +} + +func (repo *Repository) NewBatchCheck(ctx context.Context) (*Batch, error) { + // Now because of some insanity with git cat-file not immediately failing if not run in a valid git directory we need to run git rev-parse first! + if err := ensureValidGitRepository(ctx, repo.Path); err != nil { + return nil, err + } + + var check Batch + check.Writer, check.Reader, check.cancel = catFileBatchCheck(ctx, repo.Path) + return &check, nil +} + +func (b *Batch) Close() { + if b.cancel != nil { + b.cancel() + b.Reader = nil + b.Writer = nil + b.cancel = nil + } +} diff --git a/modules/git/batch_reader.go b/modules/git/batch_reader.go index c988d6ab86..3b1a466b2e 100644 --- a/modules/git/batch_reader.go +++ b/modules/git/batch_reader.go @@ -26,10 +26,10 @@ type WriteCloserError interface { CloseWithError(err error) error } -// EnsureValidGitRepository runs git rev-parse in the repository path - thus ensuring that the repository is a valid repository. +// ensureValidGitRepository runs git rev-parse in the repository path - thus ensuring that the repository is a valid repository. // Run before opening git cat-file. // This is needed otherwise the git cat-file will hang for invalid repositories. -func EnsureValidGitRepository(ctx context.Context, repoPath string) error { +func ensureValidGitRepository(ctx context.Context, repoPath string) error { stderr := strings.Builder{} err := NewCommand(ctx, "rev-parse"). SetDescription(fmt.Sprintf("%s rev-parse [repo_path: %s]", GitExecutable, repoPath)). @@ -43,8 +43,8 @@ func EnsureValidGitRepository(ctx context.Context, repoPath string) error { return nil } -// CatFileBatchCheck opens git cat-file --batch-check in the provided repo and returns a stdin pipe, a stdout reader and cancel function -func CatFileBatchCheck(ctx context.Context, repoPath string) (WriteCloserError, *bufio.Reader, func()) { +// catFileBatchCheck opens git cat-file --batch-check in the provided repo and returns a stdin pipe, a stdout reader and cancel function +func catFileBatchCheck(ctx context.Context, repoPath string) (WriteCloserError, *bufio.Reader, func()) { batchStdinReader, batchStdinWriter := io.Pipe() batchStdoutReader, batchStdoutWriter := io.Pipe() ctx, ctxCancel := context.WithCancel(ctx) @@ -93,8 +93,8 @@ func CatFileBatchCheck(ctx context.Context, repoPath string) (WriteCloserError, return batchStdinWriter, batchReader, cancel } -// CatFileBatch opens git cat-file --batch in the provided repo and returns a stdin pipe, a stdout reader and cancel function -func CatFileBatch(ctx context.Context, repoPath string) (WriteCloserError, *bufio.Reader, func()) { +// catFileBatch opens git cat-file --batch in the provided repo and returns a stdin pipe, a stdout reader and cancel function +func catFileBatch(ctx context.Context, repoPath string) (WriteCloserError, *bufio.Reader, func()) { // We often want to feed the commits in order into cat-file --batch, followed by their trees and sub trees as necessary. // so let's create a batch stdin and stdout batchStdinReader, batchStdinWriter := io.Pipe() diff --git a/modules/git/blob_nogogit.go b/modules/git/blob_nogogit.go index 945a6bc432..af3ce376d6 100644 --- a/modules/git/blob_nogogit.go +++ b/modules/git/blob_nogogit.go @@ -26,9 +26,12 @@ type Blob struct { // DataAsync gets a ReadCloser for the contents of a blob without reading it all. // Calling the Close function on the result will discard all unread output. func (b *Blob) DataAsync() (io.ReadCloser, error) { - wr, rd, cancel := b.repo.CatFileBatch(b.repo.Ctx) + wr, rd, cancel, err := b.repo.CatFileBatch(b.repo.Ctx) + if err != nil { + return nil, err + } - _, err := wr.Write([]byte(b.ID.String() + "\n")) + _, err = wr.Write([]byte(b.ID.String() + "\n")) if err != nil { cancel() return nil, err @@ -64,9 +67,13 @@ func (b *Blob) Size() int64 { return b.size } - wr, rd, cancel := b.repo.CatFileBatchCheck(b.repo.Ctx) + wr, rd, cancel, err := b.repo.CatFileBatchCheck(b.repo.Ctx) + if err != nil { + log.Debug("error whilst reading size for %s in %s. Error: %v", b.ID.String(), b.repo.Path, err) + return 0 + } defer cancel() - _, err := wr.Write([]byte(b.ID.String() + "\n")) + _, err = wr.Write([]byte(b.ID.String() + "\n")) if err != nil { log.Debug("error whilst reading size for %s in %s. Error: %v", b.ID.String(), b.repo.Path, err) return 0 diff --git a/modules/git/commit_info_nogogit.go b/modules/git/commit_info_nogogit.go index 7c369b07f9..cfde64a033 100644 --- a/modules/git/commit_info_nogogit.go +++ b/modules/git/commit_info_nogogit.go @@ -124,7 +124,10 @@ func GetLastCommitForPaths(ctx context.Context, commit *Commit, treePath string, return nil, err } - batchStdinWriter, batchReader, cancel := commit.repo.CatFileBatch(ctx) + batchStdinWriter, batchReader, cancel, err := commit.repo.CatFileBatch(ctx) + if err != nil { + return nil, err + } defer cancel() commitsMap := map[string]*Commit{} diff --git a/modules/git/log_name_status.go b/modules/git/log_name_status.go index 9e345f3ee0..1fd58abfcd 100644 --- a/modules/git/log_name_status.go +++ b/modules/git/log_name_status.go @@ -114,7 +114,7 @@ type LogNameStatusCommitData struct { // Next returns the next LogStatusCommitData func (g *LogNameStatusRepoParser) Next(treepath string, paths2ids map[string]int, changed []bool, maxpathlen int) (*LogNameStatusCommitData, error) { var err error - if g.next == nil || len(g.next) == 0 { + if len(g.next) == 0 { g.buffull = false g.next, err = g.rd.ReadSlice('\x00') if err != nil { diff --git a/modules/git/pipeline/lfs_nogogit.go b/modules/git/pipeline/lfs_nogogit.go index 349cfbd9ce..b22805c132 100644 --- a/modules/git/pipeline/lfs_nogogit.go +++ b/modules/git/pipeline/lfs_nogogit.go @@ -46,7 +46,10 @@ func FindLFSFile(repo *git.Repository, objectID git.ObjectID) ([]*LFSResult, err // Next feed the commits in order into cat-file --batch, followed by their trees and sub trees as necessary. // so let's create a batch stdin and stdout - batchStdinWriter, batchReader, cancel := repo.CatFileBatch(repo.Ctx) + batchStdinWriter, batchReader, cancel, err := repo.CatFileBatch(repo.Ctx) + if err != nil { + return nil, err + } defer cancel() // We'll use a scanner for the revList because it's simpler than a bufio.Reader diff --git a/modules/git/repo_base_nogogit.go b/modules/git/repo_base_nogogit.go index bc241cdd79..3eb2e2ee6b 100644 --- a/modules/git/repo_base_nogogit.go +++ b/modules/git/repo_base_nogogit.go @@ -25,15 +25,11 @@ type Repository struct { gpgSettings *GPGSettings - batchInUse bool - batchCancel context.CancelFunc - batchReader *bufio.Reader - batchWriter WriteCloserError + batchInUse bool + batch *Batch - checkInUse bool - checkCancel context.CancelFunc - checkReader *bufio.Reader - checkWriter WriteCloserError + checkInUse bool + check *Batch Ctx context.Context LastCommitCache *LastCommitCache @@ -55,63 +51,75 @@ func OpenRepository(ctx context.Context, repoPath string) (*Repository, error) { return nil, util.NewNotExistErrorf("no such file or directory") } - // Now because of some insanity with git cat-file not immediately failing if not run in a valid git directory we need to run git rev-parse first! - if err := EnsureValidGitRepository(ctx, repoPath); err != nil { - return nil, err - } - - repo := &Repository{ + return &Repository{ Path: repoPath, tagCache: newObjectCache(), Ctx: ctx, - } - - repo.batchWriter, repo.batchReader, repo.batchCancel = CatFileBatch(ctx, repoPath) - repo.checkWriter, repo.checkReader, repo.checkCancel = CatFileBatchCheck(ctx, repoPath) - - return repo, nil + }, nil } // CatFileBatch obtains a CatFileBatch for this repository -func (repo *Repository) CatFileBatch(ctx context.Context) (WriteCloserError, *bufio.Reader, func()) { - if repo.batchCancel == nil || repo.batchInUse { - log.Debug("Opening temporary cat file batch for: %s", repo.Path) - return CatFileBatch(ctx, repo.Path) +func (repo *Repository) CatFileBatch(ctx context.Context) (WriteCloserError, *bufio.Reader, func(), error) { + if repo.batch == nil { + var err error + repo.batch, err = repo.NewBatch(ctx) + if err != nil { + return nil, nil, nil, err + } } - repo.batchInUse = true - return repo.batchWriter, repo.batchReader, func() { - repo.batchInUse = false + + if !repo.batchInUse { + repo.batchInUse = true + return repo.batch.Writer, repo.batch.Reader, func() { + repo.batchInUse = false + }, nil } + + log.Debug("Opening temporary cat file batch for: %s", repo.Path) + tempBatch, err := repo.NewBatch(ctx) + if err != nil { + return nil, nil, nil, err + } + return tempBatch.Writer, tempBatch.Reader, tempBatch.Close, nil } // CatFileBatchCheck obtains a CatFileBatchCheck for this repository -func (repo *Repository) CatFileBatchCheck(ctx context.Context) (WriteCloserError, *bufio.Reader, func()) { - if repo.checkCancel == nil || repo.checkInUse { - log.Debug("Opening temporary cat file batch-check for: %s", repo.Path) - return CatFileBatchCheck(ctx, repo.Path) +func (repo *Repository) CatFileBatchCheck(ctx context.Context) (WriteCloserError, *bufio.Reader, func(), error) { + if repo.check == nil { + var err error + repo.check, err = repo.NewBatchCheck(ctx) + if err != nil { + return nil, nil, nil, err + } } - repo.checkInUse = true - return repo.checkWriter, repo.checkReader, func() { - repo.checkInUse = false + + if !repo.checkInUse { + repo.checkInUse = true + return repo.check.Writer, repo.check.Reader, func() { + repo.checkInUse = false + }, nil } + + log.Debug("Opening temporary cat file batch-check for: %s", repo.Path) + tempBatchCheck, err := repo.NewBatchCheck(ctx) + if err != nil { + return nil, nil, nil, err + } + return tempBatchCheck.Writer, tempBatchCheck.Reader, tempBatchCheck.Close, nil } func (repo *Repository) Close() error { if repo == nil { return nil } - if repo.batchCancel != nil { - repo.batchCancel() - repo.batchReader = nil - repo.batchWriter = nil - repo.batchCancel = nil + if repo.batch != nil { + repo.batch.Close() + repo.batch = nil repo.batchInUse = false } - if repo.checkCancel != nil { - repo.checkCancel() - repo.checkCancel = nil - repo.checkReader = nil - repo.checkWriter = nil + if repo.check != nil { + repo.check.Close() + repo.check = nil repo.checkInUse = false } repo.LastCommitCache = nil diff --git a/modules/git/repo_branch_nogogit.go b/modules/git/repo_branch_nogogit.go index 63d0f7268a..0d2efd4a6b 100644 --- a/modules/git/repo_branch_nogogit.go +++ b/modules/git/repo_branch_nogogit.go @@ -22,9 +22,13 @@ func (repo *Repository) IsObjectExist(name string) bool { return false } - wr, rd, cancel := repo.CatFileBatchCheck(repo.Ctx) + wr, rd, cancel, err := repo.CatFileBatchCheck(repo.Ctx) + if err != nil { + log.Debug("Error writing to CatFileBatchCheck %v", err) + return false + } defer cancel() - _, err := wr.Write([]byte(name + "\n")) + _, err = wr.Write([]byte(name + "\n")) if err != nil { log.Debug("Error writing to CatFileBatchCheck %v", err) return false @@ -39,9 +43,13 @@ func (repo *Repository) IsReferenceExist(name string) bool { return false } - wr, rd, cancel := repo.CatFileBatchCheck(repo.Ctx) + wr, rd, cancel, err := repo.CatFileBatchCheck(repo.Ctx) + if err != nil { + log.Debug("Error writing to CatFileBatchCheck %v", err) + return false + } defer cancel() - _, err := wr.Write([]byte(name + "\n")) + _, err = wr.Write([]byte(name + "\n")) if err != nil { log.Debug("Error writing to CatFileBatchCheck %v", err) return false diff --git a/modules/git/repo_commit_nogogit.go b/modules/git/repo_commit_nogogit.go index ae4c21aaa3..f5ed282a45 100644 --- a/modules/git/repo_commit_nogogit.go +++ b/modules/git/repo_commit_nogogit.go @@ -33,9 +33,12 @@ func (repo *Repository) ResolveReference(name string) (string, error) { // GetRefCommitID returns the last commit ID string of given reference (branch or tag). func (repo *Repository) GetRefCommitID(name string) (string, error) { - wr, rd, cancel := repo.CatFileBatchCheck(repo.Ctx) + wr, rd, cancel, err := repo.CatFileBatchCheck(repo.Ctx) + if err != nil { + return "", err + } defer cancel() - _, err := wr.Write([]byte(name + "\n")) + _, err = wr.Write([]byte(name + "\n")) if err != nil { return "", err } @@ -61,12 +64,19 @@ func (repo *Repository) RemoveReference(name string) error { // IsCommitExist returns true if given commit exists in current repository. func (repo *Repository) IsCommitExist(name string) bool { + if err := ensureValidGitRepository(repo.Ctx, repo.Path); err != nil { + log.Error("IsCommitExist: %v", err) + return false + } _, _, err := NewCommand(repo.Ctx, "cat-file", "-e").AddDynamicArguments(name).RunStdString(&RunOpts{Dir: repo.Path}) return err == nil } func (repo *Repository) getCommit(id ObjectID) (*Commit, error) { - wr, rd, cancel := repo.CatFileBatch(repo.Ctx) + wr, rd, cancel, err := repo.CatFileBatch(repo.Ctx) + if err != nil { + return nil, err + } defer cancel() _, _ = wr.Write([]byte(id.String() + "\n")) @@ -143,7 +153,10 @@ func (repo *Repository) ConvertToGitID(commitID string) (ObjectID, error) { } } - wr, rd, cancel := repo.CatFileBatchCheck(repo.Ctx) + wr, rd, cancel, err := repo.CatFileBatchCheck(repo.Ctx) + if err != nil { + return nil, err + } defer cancel() _, err = wr.Write([]byte(commitID + "\n")) if err != nil { diff --git a/modules/git/repo_language_stats_nogogit.go b/modules/git/repo_language_stats_nogogit.go index 318fc091ce..de7707bd6c 100644 --- a/modules/git/repo_language_stats_nogogit.go +++ b/modules/git/repo_language_stats_nogogit.go @@ -20,7 +20,10 @@ import ( func (repo *Repository) GetLanguageStats(commitID string) (map[string]int64, error) { // We will feed the commit IDs in order into cat-file --batch, followed by blobs as necessary. // so let's create a batch stdin and stdout - batchStdinWriter, batchReader, cancel := repo.CatFileBatch(repo.Ctx) + batchStdinWriter, batchReader, cancel, err := repo.CatFileBatch(repo.Ctx) + if err != nil { + return nil, err + } defer cancel() writeID := func(id string) error { diff --git a/modules/git/repo_tag_nogogit.go b/modules/git/repo_tag_nogogit.go index cbab39f8c5..8b06a6a1c3 100644 --- a/modules/git/repo_tag_nogogit.go +++ b/modules/git/repo_tag_nogogit.go @@ -31,9 +31,12 @@ func (repo *Repository) GetTags(skip, limit int) (tags []string, err error) { // GetTagType gets the type of the tag, either commit (simple) or tag (annotated) func (repo *Repository) GetTagType(id ObjectID) (string, error) { - wr, rd, cancel := repo.CatFileBatchCheck(repo.Ctx) + wr, rd, cancel, err := repo.CatFileBatchCheck(repo.Ctx) + if err != nil { + return "", err + } defer cancel() - _, err := wr.Write([]byte(id.String() + "\n")) + _, err = wr.Write([]byte(id.String() + "\n")) if err != nil { return "", err } @@ -89,7 +92,10 @@ func (repo *Repository) getTag(tagID ObjectID, name string) (*Tag, error) { } // The tag is an annotated tag with a message. - wr, rd, cancel := repo.CatFileBatch(repo.Ctx) + wr, rd, cancel, err := repo.CatFileBatch(repo.Ctx) + if err != nil { + return nil, err + } defer cancel() if _, err := wr.Write([]byte(tagID.String() + "\n")); err != nil { diff --git a/modules/git/repo_tree_nogogit.go b/modules/git/repo_tree_nogogit.go index e82012de6f..d74769ccb2 100644 --- a/modules/git/repo_tree_nogogit.go +++ b/modules/git/repo_tree_nogogit.go @@ -10,7 +10,10 @@ import ( ) func (repo *Repository) getTree(id ObjectID) (*Tree, error) { - wr, rd, cancel := repo.CatFileBatch(repo.Ctx) + wr, rd, cancel, err := repo.CatFileBatch(repo.Ctx) + if err != nil { + return nil, err + } defer cancel() _, _ = wr.Write([]byte(id.String() + "\n")) diff --git a/modules/git/tree_entry_nogogit.go b/modules/git/tree_entry_nogogit.go index 89244e27ee..1c3bcd197a 100644 --- a/modules/git/tree_entry_nogogit.go +++ b/modules/git/tree_entry_nogogit.go @@ -42,9 +42,13 @@ func (te *TreeEntry) Size() int64 { return te.size } - wr, rd, cancel := te.ptree.repo.CatFileBatchCheck(te.ptree.repo.Ctx) + wr, rd, cancel, err := te.ptree.repo.CatFileBatchCheck(te.ptree.repo.Ctx) + if err != nil { + log.Debug("error whilst reading size for %s in %s. Error: %v", te.ID.String(), te.ptree.repo.Path, err) + return 0 + } defer cancel() - _, err := wr.Write([]byte(te.ID.String() + "\n")) + _, err = wr.Write([]byte(te.ID.String() + "\n")) if err != nil { log.Debug("error whilst reading size for %s in %s. Error: %v", te.ID.String(), te.ptree.repo.Path, err) return 0 diff --git a/modules/git/tree_nogogit.go b/modules/git/tree_nogogit.go index e0a72de5b8..993b98edc2 100644 --- a/modules/git/tree_nogogit.go +++ b/modules/git/tree_nogogit.go @@ -33,7 +33,10 @@ func (t *Tree) ListEntries() (Entries, error) { } if t.repo != nil { - wr, rd, cancel := t.repo.CatFileBatch(t.repo.Ctx) + wr, rd, cancel, err := t.repo.CatFileBatch(t.repo.Ctx) + if err != nil { + return nil, err + } defer cancel() _, _ = wr.Write([]byte(t.ID.String() + "\n")) diff --git a/modules/globallock/globallock.go b/modules/globallock/globallock.go new file mode 100644 index 0000000000..24e91881bb --- /dev/null +++ b/modules/globallock/globallock.go @@ -0,0 +1,74 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package globallock + +import ( + "context" + "sync" + + "code.gitea.io/gitea/modules/setting" +) + +var ( + defaultLocker Locker + initOnce sync.Once + initFunc = func() { + switch setting.GlobalLock.ServiceType { + case "redis": + defaultLocker = NewRedisLocker(setting.GlobalLock.ServiceConnStr) + case "memory": + fallthrough + default: + defaultLocker = NewMemoryLocker() + } + } // define initFunc as a variable to make it possible to change it in tests +) + +// DefaultLocker returns the default locker. +func DefaultLocker() Locker { + initOnce.Do(func() { + initFunc() + }) + return defaultLocker +} + +// Lock tries to acquire a lock for the given key, it uses the default locker. +// Read the documentation of Locker.Lock for more information about the behavior. +func Lock(ctx context.Context, key string) (ReleaseFunc, error) { + return DefaultLocker().Lock(ctx, key) +} + +// TryLock tries to acquire a lock for the given key, it uses the default locker. +// Read the documentation of Locker.TryLock for more information about the behavior. +func TryLock(ctx context.Context, key string) (bool, ReleaseFunc, error) { + return DefaultLocker().TryLock(ctx, key) +} + +// LockAndDo tries to acquire a lock for the given key and then calls the given function. +// It uses the default locker, and it will return an error if failed to acquire the lock. +func LockAndDo(ctx context.Context, key string, f func(context.Context) error) error { + release, err := Lock(ctx, key) + if err != nil { + return err + } + defer release() + + return f(ctx) +} + +// TryLockAndDo tries to acquire a lock for the given key and then calls the given function. +// It uses the default locker, and it will return false if failed to acquire the lock. +func TryLockAndDo(ctx context.Context, key string, f func(context.Context) error) (bool, error) { + ok, release, err := TryLock(ctx, key) + if err != nil { + return false, err + } + defer release() + + if !ok { + return false, nil + } + + return true, f(ctx) +} diff --git a/modules/globallock/globallock_test.go b/modules/globallock/globallock_test.go new file mode 100644 index 0000000000..88a555c86f --- /dev/null +++ b/modules/globallock/globallock_test.go @@ -0,0 +1,96 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package globallock + +import ( + "context" + "os" + "sync" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestLockAndDo(t *testing.T) { + t.Run("redis", func(t *testing.T) { + url := "redis://127.0.0.1:6379/0" + if os.Getenv("CI") == "" { + // Make it possible to run tests against a local redis instance + url = os.Getenv("TEST_REDIS_URL") + if url == "" { + t.Skip("TEST_REDIS_URL not set and not running in CI") + return + } + } + + oldDefaultLocker := defaultLocker + oldInitFunc := initFunc + defer func() { + defaultLocker = oldDefaultLocker + initFunc = oldInitFunc + if defaultLocker == nil { + initOnce = sync.Once{} + } + }() + + initOnce = sync.Once{} + initFunc = func() { + defaultLocker = NewRedisLocker(url) + } + + testLockAndDo(t) + require.NoError(t, defaultLocker.(*redisLocker).Close()) + }) + t.Run("memory", func(t *testing.T) { + oldDefaultLocker := defaultLocker + oldInitFunc := initFunc + defer func() { + defaultLocker = oldDefaultLocker + initFunc = oldInitFunc + if defaultLocker == nil { + initOnce = sync.Once{} + } + }() + + initOnce = sync.Once{} + initFunc = func() { + defaultLocker = NewMemoryLocker() + } + + testLockAndDo(t) + }) +} + +func testLockAndDo(t *testing.T) { + const concurrency = 1000 + + ctx := context.Background() + count := 0 + wg := sync.WaitGroup{} + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + go func() { + defer wg.Done() + err := LockAndDo(ctx, "test", func(ctx context.Context) error { + count++ + + // It's impossible to acquire the lock inner the function + ok, err := TryLockAndDo(ctx, "test", func(ctx context.Context) error { + assert.Fail(t, "should not acquire the lock") + return nil + }) + assert.False(t, ok) + assert.NoError(t, err) + + return nil + }) + require.NoError(t, err) + }() + } + + wg.Wait() + + assert.Equal(t, concurrency, count) +} diff --git a/modules/globallock/locker.go b/modules/globallock/locker.go new file mode 100644 index 0000000000..682e24d052 --- /dev/null +++ b/modules/globallock/locker.go @@ -0,0 +1,38 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package globallock + +import ( + "context" +) + +type Locker interface { + // Lock tries to acquire a lock for the given key, it blocks until the lock is acquired or the context is canceled. + // + // Lock returns a ReleaseFunc to release the lock, it cannot be nil. + // It's always safe to call this function even if it fails to acquire the lock, and it will do nothing in that case. + // And it's also safe to call it multiple times, but it will only release the lock once. + // That's why it's called ReleaseFunc, not UnlockFunc. + // But be aware that it's not safe to not call it at all; it could lead to a memory leak. + // So a recommended pattern is to use defer to call it: + // release, err := locker.Lock(ctx, "key") + // if err != nil { + // return err + // } + // defer release() + // + // Lock returns an error if failed to acquire the lock. + // Be aware that even the context is not canceled, it's still possible to fail to acquire the lock. + // For example, redis is down, or it reached the maximum number of tries. + Lock(ctx context.Context, key string) (ReleaseFunc, error) + + // TryLock tries to acquire a lock for the given key, it returns immediately. + // It follows the same pattern as Lock, but it doesn't block. + // And if it fails to acquire the lock because it's already locked, not other reasons like redis is down, + // it will return false without any error. + TryLock(ctx context.Context, key string) (bool, ReleaseFunc, error) +} + +// ReleaseFunc is a function that releases a lock. +type ReleaseFunc func() diff --git a/modules/globallock/locker_test.go b/modules/globallock/locker_test.go new file mode 100644 index 0000000000..bee4d34b34 --- /dev/null +++ b/modules/globallock/locker_test.go @@ -0,0 +1,181 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package globallock + +import ( + "context" + "os" + "sync" + "testing" + "time" + + "github.com/go-redsync/redsync/v4" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestLocker(t *testing.T) { + t.Run("redis", func(t *testing.T) { + url := "redis://127.0.0.1:6379/0" + if os.Getenv("CI") == "" { + // Make it possible to run tests against a local redis instance + url = os.Getenv("TEST_REDIS_URL") + if url == "" { + t.Skip("TEST_REDIS_URL not set and not running in CI") + return + } + } + oldExpiry := redisLockExpiry + redisLockExpiry = 5 * time.Second // make it shorter for testing + defer func() { + redisLockExpiry = oldExpiry + }() + + locker := NewRedisLocker(url) + testLocker(t, locker) + testRedisLocker(t, locker.(*redisLocker)) + require.NoError(t, locker.(*redisLocker).Close()) + }) + t.Run("memory", func(t *testing.T) { + locker := NewMemoryLocker() + testLocker(t, locker) + testMemoryLocker(t, locker.(*memoryLocker)) + }) +} + +func testLocker(t *testing.T, locker Locker) { + t.Run("lock", func(t *testing.T) { + parentCtx := context.Background() + release, err := locker.Lock(parentCtx, "test") + defer release() + + assert.NoError(t, err) + + func() { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + release, err := locker.Lock(ctx, "test") + defer release() + + assert.Error(t, err) + }() + + release() + + func() { + release, err := locker.Lock(context.Background(), "test") + defer release() + + assert.NoError(t, err) + }() + }) + + t.Run("try lock", func(t *testing.T) { + parentCtx := context.Background() + ok, release, err := locker.TryLock(parentCtx, "test") + defer release() + + assert.True(t, ok) + assert.NoError(t, err) + + func() { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + ok, release, err := locker.TryLock(ctx, "test") + defer release() + + assert.False(t, ok) + assert.NoError(t, err) + }() + + release() + + func() { + ok, release, _ := locker.TryLock(context.Background(), "test") + defer release() + + assert.True(t, ok) + }() + }) + + t.Run("wait and acquired", func(t *testing.T) { + ctx := context.Background() + release, err := locker.Lock(ctx, "test") + require.NoError(t, err) + + wg := &sync.WaitGroup{} + wg.Add(1) + go func() { + defer wg.Done() + started := time.Now() + release, err := locker.Lock(context.Background(), "test") // should be blocked for seconds + defer release() + assert.Greater(t, time.Since(started), time.Second) + assert.NoError(t, err) + }() + + time.Sleep(2 * time.Second) + release() + + wg.Wait() + }) + + t.Run("multiple release", func(t *testing.T) { + ctx := context.Background() + + release1, err := locker.Lock(ctx, "test") + require.NoError(t, err) + + release1() + + release2, err := locker.Lock(ctx, "test") + defer release2() + require.NoError(t, err) + + // Call release1 again, + // it should not panic or block, + // and it shouldn't affect the other lock + release1() + + ok, release3, err := locker.TryLock(ctx, "test") + defer release3() + require.NoError(t, err) + // It should be able to acquire the lock; + // otherwise, it means the lock has been released by release1 + assert.False(t, ok) + }) +} + +// testMemoryLocker does specific tests for memoryLocker +func testMemoryLocker(t *testing.T, locker *memoryLocker) { + // nothing to do +} + +// testRedisLocker does specific tests for redisLocker +func testRedisLocker(t *testing.T, locker *redisLocker) { + defer func() { + // This case should be tested at the end. + // Otherwise, it will affect other tests. + t.Run("close", func(t *testing.T) { + assert.NoError(t, locker.Close()) + _, err := locker.Lock(context.Background(), "test") + assert.Error(t, err) + }) + }() + + t.Run("failed extend", func(t *testing.T) { + release, err := locker.Lock(context.Background(), "test") + defer release() + require.NoError(t, err) + + // It simulates that there are some problems with extending like network issues or redis server down. + v, ok := locker.mutexM.Load("test") + require.True(t, ok) + m := v.(*redsync.Mutex) + _, _ = m.Unlock() // release it to make it impossible to extend + + // In current design, callers can't know the lock can't be extended. + // Just keep this case to improve the test coverage. + }) +} diff --git a/modules/globallock/memory_locker.go b/modules/globallock/memory_locker.go new file mode 100644 index 0000000000..3f818d8d43 --- /dev/null +++ b/modules/globallock/memory_locker.go @@ -0,0 +1,67 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package globallock + +import ( + "context" + "sync" + "time" +) + +type memoryLocker struct { + locks sync.Map +} + +var _ Locker = &memoryLocker{} + +func NewMemoryLocker() Locker { + return &memoryLocker{} +} + +func (l *memoryLocker) Lock(ctx context.Context, key string) (ReleaseFunc, error) { + if l.tryLock(key) { + releaseOnce := sync.Once{} + return func() { + releaseOnce.Do(func() { + l.locks.Delete(key) + }) + }, nil + } + + ticker := time.NewTicker(time.Millisecond * 100) + defer ticker.Stop() + for { + select { + case <-ctx.Done(): + return func() {}, ctx.Err() + case <-ticker.C: + if l.tryLock(key) { + releaseOnce := sync.Once{} + return func() { + releaseOnce.Do(func() { + l.locks.Delete(key) + }) + }, nil + } + } + } +} + +func (l *memoryLocker) TryLock(_ context.Context, key string) (bool, ReleaseFunc, error) { + if l.tryLock(key) { + releaseOnce := sync.Once{} + return true, func() { + releaseOnce.Do(func() { + l.locks.Delete(key) + }) + }, nil + } + + return false, func() {}, nil +} + +func (l *memoryLocker) tryLock(key string) bool { + _, loaded := l.locks.LoadOrStore(key, struct{}{}) + return !loaded +} diff --git a/modules/globallock/redis_locker.go b/modules/globallock/redis_locker.go new file mode 100644 index 0000000000..34ed9e389b --- /dev/null +++ b/modules/globallock/redis_locker.go @@ -0,0 +1,137 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package globallock + +import ( + "context" + "errors" + "fmt" + "sync" + "sync/atomic" + "time" + + "code.gitea.io/gitea/modules/nosql" + + "github.com/go-redsync/redsync/v4" + "github.com/go-redsync/redsync/v4/redis/goredis/v9" +) + +const redisLockKeyPrefix = "gitea:globallock:" + +// redisLockExpiry is the default expiry time for a lock. +// Define it as a variable to make it possible to change it in tests. +var redisLockExpiry = 30 * time.Second + +type redisLocker struct { + rs *redsync.Redsync + + mutexM sync.Map + closed atomic.Bool + extendWg sync.WaitGroup +} + +var _ Locker = &redisLocker{} + +func NewRedisLocker(connection string) Locker { + l := &redisLocker{ + rs: redsync.New( + goredis.NewPool( + nosql.GetManager().GetRedisClient(connection), + ), + ), + } + + l.extendWg.Add(1) + l.startExtend() + + return l +} + +func (l *redisLocker) Lock(ctx context.Context, key string) (ReleaseFunc, error) { + return l.lock(ctx, key, 0) +} + +func (l *redisLocker) TryLock(ctx context.Context, key string) (bool, ReleaseFunc, error) { + f, err := l.lock(ctx, key, 1) + + var ( + errTaken *redsync.ErrTaken + errNodeTaken *redsync.ErrNodeTaken + ) + if errors.As(err, &errTaken) || errors.As(err, &errNodeTaken) { + return false, f, nil + } + return err == nil, f, err +} + +// Close closes the locker. +// It will stop extending the locks and refuse to acquire new locks. +// In actual use, it is not necessary to call this function. +// But it's useful in tests to release resources. +// It could take some time since it waits for the extending goroutine to finish. +func (l *redisLocker) Close() error { + l.closed.Store(true) + l.extendWg.Wait() + return nil +} + +func (l *redisLocker) lock(ctx context.Context, key string, tries int) (ReleaseFunc, error) { + if l.closed.Load() { + return func() {}, fmt.Errorf("locker is closed") + } + + options := []redsync.Option{ + redsync.WithExpiry(redisLockExpiry), + } + if tries > 0 { + options = append(options, redsync.WithTries(tries)) + } + mutex := l.rs.NewMutex(redisLockKeyPrefix+key, options...) + if err := mutex.LockContext(ctx); err != nil { + return func() {}, err + } + + l.mutexM.Store(key, mutex) + + releaseOnce := sync.Once{} + return func() { + releaseOnce.Do(func() { + l.mutexM.Delete(key) + + // It's safe to ignore the error here, + // if it failed to unlock, it will be released automatically after the lock expires. + // Do not call mutex.UnlockContext(ctx) here, or it will fail to release when ctx has timed out. + _, _ = mutex.Unlock() + }) + }, nil +} + +func (l *redisLocker) startExtend() { + if l.closed.Load() { + l.extendWg.Done() + return + } + + toExtend := make([]*redsync.Mutex, 0) + l.mutexM.Range(func(_, value any) bool { + m := value.(*redsync.Mutex) + + // Extend the lock if it is not expired. + // Although the mutex will be removed from the map before it is released, + // it still can be expired because of a failed extension. + // If it happens, it does not need to be extended anymore. + if time.Now().After(m.Until()) { + return true + } + + toExtend = append(toExtend, m) + return true + }) + for _, v := range toExtend { + // If it failed to extend, it will be released automatically after the lock expires. + _, _ = v.Extend() + } + + time.AfterFunc(redisLockExpiry/2, l.startExtend) +} diff --git a/modules/hostmatcher/http.go b/modules/hostmatcher/http.go index c743f6efb3..8828902034 100644 --- a/modules/hostmatcher/http.go +++ b/modules/hostmatcher/http.go @@ -13,11 +13,7 @@ import ( ) // NewDialContext returns a DialContext for Transport, the DialContext will do allow/block list check -func NewDialContext(usage string, allowList, blockList *HostMatchList) func(ctx context.Context, network, addr string) (net.Conn, error) { - return NewDialContextWithProxy(usage, allowList, blockList, nil) -} - -func NewDialContextWithProxy(usage string, allowList, blockList *HostMatchList, proxy *url.URL) func(ctx context.Context, network, addr string) (net.Conn, error) { +func NewDialContext(usage string, allowList, blockList *HostMatchList, proxy *url.URL) func(ctx context.Context, network, addr string) (net.Conn, error) { // How Go HTTP Client works with redirection: // transport.RoundTrip URL=http://domain.com, Host=domain.com // transport.DialContext addrOrHost=domain.com:80 diff --git a/modules/httpcache/httpcache.go b/modules/httpcache/httpcache.go index 40458dfc33..2c9af94405 100644 --- a/modules/httpcache/httpcache.go +++ b/modules/httpcache/httpcache.go @@ -75,7 +75,8 @@ func HandleGenericETagTimeCache(req *http.Request, w http.ResponseWriter, etag s w.Header().Set("Etag", etag) } if lastModified != nil && !lastModified.IsZero() { - w.Header().Set("Last-Modified", lastModified.Format(http.TimeFormat)) + // http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat + w.Header().Set("Last-Modified", lastModified.UTC().Format(http.TimeFormat)) } if len(etag) > 0 { diff --git a/modules/httplib/serve.go b/modules/httplib/serve.go index 6e147d76f5..2e3e6a7c42 100644 --- a/modules/httplib/serve.go +++ b/modules/httplib/serve.go @@ -79,6 +79,7 @@ func ServeSetHeaders(w http.ResponseWriter, opts *ServeHeaderOptions) { httpcache.SetCacheControlInHeader(header, duration) if !opts.LastModified.IsZero() { + // http.TimeFormat required a UTC time, refer to https://pkg.go.dev/net/http#TimeFormat header.Set("Last-Modified", opts.LastModified.UTC().Format(http.TimeFormat)) } } diff --git a/modules/httplib/url.go b/modules/httplib/url.go index 219dfe695c..e3bad1e5fb 100644 --- a/modules/httplib/url.go +++ b/modules/httplib/url.go @@ -52,11 +52,6 @@ func getRequestScheme(req *http.Request) string { return "" } -func getForwardedHost(req *http.Request) string { - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host - return req.Header.Get("X-Forwarded-Host") -} - // GuessCurrentAppURL tries to guess the current full app URL (with sub-path) by http headers. It always has a '/' suffix, exactly the same as setting.AppURL func GuessCurrentAppURL(ctx context.Context) string { return GuessCurrentHostURL(ctx) + setting.AppSubURL + "/" @@ -81,11 +76,9 @@ func GuessCurrentHostURL(ctx context.Context) string { if reqScheme == "" { return strings.TrimSuffix(setting.AppURL, setting.AppSubURL+"/") } - reqHost := getForwardedHost(req) - if reqHost == "" { - reqHost = req.Host - } - return reqScheme + "://" + reqHost + // X-Forwarded-Host has many problems: non-standard, not well-defined (X-Forwarded-Port or not), conflicts with Host header. + // So do not use X-Forwarded-Host, just use Host header directly. + return reqScheme + "://" + req.Host } // MakeAbsoluteURL tries to make a link to an absolute URL: diff --git a/modules/httplib/url_test.go b/modules/httplib/url_test.go index 28aaee6e12..fc6c91cd3a 100644 --- a/modules/httplib/url_test.go +++ b/modules/httplib/url_test.go @@ -70,7 +70,7 @@ func TestMakeAbsoluteURL(t *testing.T) { "X-Forwarded-Proto": {"https"}, }, }) - assert.Equal(t, "https://forwarded-host/foo", MakeAbsoluteURL(ctx, "/foo")) + assert.Equal(t, "https://user-host/foo", MakeAbsoluteURL(ctx, "/foo")) } func TestIsCurrentGiteaSiteURL(t *testing.T) { @@ -119,5 +119,6 @@ func TestIsCurrentGiteaSiteURL(t *testing.T) { }, }) assert.True(t, IsCurrentGiteaSiteURL(ctx, "http://localhost:3000")) - assert.True(t, IsCurrentGiteaSiteURL(ctx, "https://forwarded-host")) + assert.True(t, IsCurrentGiteaSiteURL(ctx, "https://user-host")) + assert.False(t, IsCurrentGiteaSiteURL(ctx, "https://forwarded-host")) } diff --git a/modules/indexer/code/bleve/bleve.go b/modules/indexer/code/bleve/bleve.go index 8056b58ec2..c17f56d3cf 100644 --- a/modules/indexer/code/bleve/bleve.go +++ b/modules/indexer/code/bleve/bleve.go @@ -16,10 +16,10 @@ import ( "code.gitea.io/gitea/modules/analyze" "code.gitea.io/gitea/modules/charset" "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/gitrepo" "code.gitea.io/gitea/modules/indexer/code/internal" indexer_internal "code.gitea.io/gitea/modules/indexer/internal" inner_bleve "code.gitea.io/gitea/modules/indexer/internal/bleve" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/typesniffer" @@ -189,21 +189,23 @@ func (b *Indexer) addDelete(filename string, repo *repo_model.Repository, batch func (b *Indexer) Index(ctx context.Context, repo *repo_model.Repository, sha string, changes *internal.RepoChanges) error { batch := inner_bleve.NewFlushingBatch(b.inner.Indexer, maxBatchSize) if len(changes.Updates) > 0 { - // Now because of some insanity with git cat-file not immediately failing if not run in a valid git directory we need to run git rev-parse first! - if err := git.EnsureValidGitRepository(ctx, repo.RepoPath()); err != nil { - log.Error("Unable to open git repo: %s for %-v: %v", repo.RepoPath(), repo, err) + r, err := gitrepo.OpenRepository(ctx, repo) + if err != nil { return err } - - batchWriter, batchReader, cancel := git.CatFileBatch(ctx, repo.RepoPath()) - defer cancel() + defer r.Close() + gitBatch, err := r.NewBatch(ctx) + if err != nil { + return err + } + defer gitBatch.Close() for _, update := range changes.Updates { - if err := b.addUpdate(ctx, batchWriter, batchReader, sha, update, repo, batch); err != nil { + if err := b.addUpdate(ctx, gitBatch.Writer, gitBatch.Reader, sha, update, repo, batch); err != nil { return err } } - cancel() + gitBatch.Close() } for _, filename := range changes.RemovedFilenames { if err := b.addDelete(filename, repo, batch); err != nil { @@ -282,6 +284,8 @@ func (b *Indexer) Search(ctx context.Context, opts *internal.SearchOptions) (int searchRequest.AddFacet("languages", bleve.NewFacetRequest("Language", 10)) } + searchRequest.SortBy([]string{"-_score", "UpdatedAt"}) + result, err := b.inner.Indexer.SearchInContext(ctx, searchRequest) if err != nil { return 0, nil, nil, err diff --git a/modules/indexer/code/elasticsearch/elasticsearch.go b/modules/indexer/code/elasticsearch/elasticsearch.go index e4622fd66e..d64d99433d 100644 --- a/modules/indexer/code/elasticsearch/elasticsearch.go +++ b/modules/indexer/code/elasticsearch/elasticsearch.go @@ -15,11 +15,11 @@ import ( "code.gitea.io/gitea/modules/analyze" "code.gitea.io/gitea/modules/charset" "code.gitea.io/gitea/modules/git" + "code.gitea.io/gitea/modules/gitrepo" "code.gitea.io/gitea/modules/indexer/code/internal" indexer_internal "code.gitea.io/gitea/modules/indexer/internal" inner_elasticsearch "code.gitea.io/gitea/modules/indexer/internal/elasticsearch" "code.gitea.io/gitea/modules/json" - "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/timeutil" "code.gitea.io/gitea/modules/typesniffer" @@ -154,17 +154,19 @@ func (b *Indexer) addDelete(filename string, repo *repo_model.Repository) elasti func (b *Indexer) Index(ctx context.Context, repo *repo_model.Repository, sha string, changes *internal.RepoChanges) error { reqs := make([]elastic.BulkableRequest, 0) if len(changes.Updates) > 0 { - // Now because of some insanity with git cat-file not immediately failing if not run in a valid git directory we need to run git rev-parse first! - if err := git.EnsureValidGitRepository(ctx, repo.RepoPath()); err != nil { - log.Error("Unable to open git repo: %s for %-v: %v", repo.RepoPath(), repo, err) + r, err := gitrepo.OpenRepository(ctx, repo) + if err != nil { return err } - - batchWriter, batchReader, cancel := git.CatFileBatch(ctx, repo.RepoPath()) - defer cancel() + defer r.Close() + batch, err := r.NewBatch(ctx) + if err != nil { + return err + } + defer batch.Close() for _, update := range changes.Updates { - updateReqs, err := b.addUpdate(ctx, batchWriter, batchReader, sha, update, repo) + updateReqs, err := b.addUpdate(ctx, batch.Writer, batch.Reader, sha, update, repo) if err != nil { return err } @@ -172,7 +174,7 @@ func (b *Indexer) Index(ctx context.Context, repo *repo_model.Repository, sha st reqs = append(reqs, updateReqs...) } } - cancel() + batch.Close() } for _, filename := range changes.RemovedFilenames { @@ -316,7 +318,8 @@ func (b *Indexer) Search(ctx context.Context, opts *internal.SearchOptions) (int NumOfFragments(0). // return all highting content on fragments HighlighterType("fvh"), ). - Sort("repo_id", true). + Sort("_score", false). + Sort("updated_at", true). From(start).Size(pageSize). Do(ctx) if err != nil { @@ -347,7 +350,8 @@ func (b *Indexer) Search(ctx context.Context, opts *internal.SearchOptions) (int NumOfFragments(0). // return all highting content on fragments HighlighterType("fvh"), ). - Sort("repo_id", true). + Sort("_score", false). + Sort("updated_at", true). From(start).Size(pageSize). Do(ctx) if err != nil { diff --git a/modules/indexer/code/git.go b/modules/indexer/code/git.go index bc345f2325..df9783288b 100644 --- a/modules/indexer/code/git.go +++ b/modules/indexer/code/git.go @@ -113,7 +113,24 @@ func nonGenesisChanges(ctx context.Context, repo *repo_model.Repository, revisio var changes internal.RepoChanges var err error updatedFilenames := make([]string, 0, 10) - for _, line := range strings.Split(stdout, "\n") { + + updateChanges := func() error { + cmd := git.NewCommand(ctx, "ls-tree", "--full-tree", "-l").AddDynamicArguments(revision). + AddDashesAndList(updatedFilenames...) + lsTreeStdout, _, err := cmd.RunStdBytes(&git.RunOpts{Dir: repo.RepoPath()}) + if err != nil { + return err + } + + updates, err1 := parseGitLsTreeOutput(lsTreeStdout) + if err1 != nil { + return err1 + } + changes.Updates = append(changes.Updates, updates...) + return nil + } + lines := strings.Split(stdout, "\n") + for _, line := range lines { line = strings.TrimSpace(line) if len(line) == 0 { continue @@ -161,15 +178,22 @@ func nonGenesisChanges(ctx context.Context, repo *repo_model.Repository, revisio default: log.Warn("Unrecognized status: %c (line=%s)", status, line) } + + // According to https://learn.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/command-line-string-limitation#more-information + // the command line length should less than 8191 characters, assume filepath is 256, then 8191/256 = 31, so we use 30 + if len(updatedFilenames) >= 30 { + if err := updateChanges(); err != nil { + return nil, err + } + updatedFilenames = updatedFilenames[0:0] + } } - cmd := git.NewCommand(ctx, "ls-tree", "--full-tree", "-l").AddDynamicArguments(revision). - AddDashesAndList(updatedFilenames...) - lsTreeStdout, _, err := cmd.RunStdBytes(&git.RunOpts{Dir: repo.RepoPath()}) - if err != nil { - return nil, err + if len(updatedFilenames) > 0 { + if err := updateChanges(); err != nil { + return nil, err + } } - changes.Updates, err = parseGitLsTreeOutput(lsTreeStdout) return &changes, err } diff --git a/modules/issue/template/template.go b/modules/issue/template/template.go index 0a105c723c..a2b9d6b33e 100644 --- a/modules/issue/template/template.go +++ b/modules/issue/template/template.go @@ -401,7 +401,7 @@ func (f *valuedField) Render() string { } func (f *valuedField) Value() string { - return strings.TrimSpace(f.Get(fmt.Sprintf("form-field-" + f.ID))) + return strings.TrimSpace(f.Get(fmt.Sprintf("form-field-%s", f.ID))) } func (f *valuedField) Options() []*valuedOption { diff --git a/modules/lfstransfer/backend/backend.go b/modules/lfstransfer/backend/backend.go new file mode 100644 index 0000000000..d4523e1abf --- /dev/null +++ b/modules/lfstransfer/backend/backend.go @@ -0,0 +1,301 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package backend + +import ( + "bytes" + "context" + "encoding/base64" + "fmt" + "io" + "net/http" + "net/url" + "strconv" + + "code.gitea.io/gitea/modules/json" + "code.gitea.io/gitea/modules/lfs" + "code.gitea.io/gitea/modules/setting" + + "github.com/charmbracelet/git-lfs-transfer/transfer" +) + +// Version is the git-lfs-transfer protocol version number. +const Version = "1" + +// Capabilities is a list of Git LFS capabilities supported by this package. +var Capabilities = []string{ + "version=" + Version, + "locking", +} + +var _ transfer.Backend = &GiteaBackend{} + +// GiteaBackend is an adapter between git-lfs-transfer library and Gitea's internal LFS API +type GiteaBackend struct { + ctx context.Context + server *url.URL + op string + token string + itoken string + logger transfer.Logger +} + +func New(ctx context.Context, repo, op, token string, logger transfer.Logger) (transfer.Backend, error) { + // runServ guarantees repo will be in form [owner]/[name].git + server, err := url.Parse(setting.LocalURL) + if err != nil { + return nil, err + } + server = server.JoinPath("api/internal/repo", repo, "info/lfs") + return &GiteaBackend{ctx: ctx, server: server, op: op, token: token, itoken: fmt.Sprintf("Bearer %s", setting.InternalToken), logger: logger}, nil +} + +// Batch implements transfer.Backend +func (g *GiteaBackend) Batch(_ string, pointers []transfer.BatchItem, args transfer.Args) ([]transfer.BatchItem, error) { + reqBody := lfs.BatchRequest{Operation: g.op} + if transfer, ok := args[argTransfer]; ok { + reqBody.Transfers = []string{transfer} + } + if ref, ok := args[argRefname]; ok { + reqBody.Ref = &lfs.Reference{Name: ref} + } + reqBody.Objects = make([]lfs.Pointer, len(pointers)) + for i := range pointers { + reqBody.Objects[i].Oid = pointers[i].Oid + reqBody.Objects[i].Size = pointers[i].Size + } + + bodyBytes, err := json.Marshal(reqBody) + if err != nil { + g.logger.Log("json marshal error", err) + return nil, err + } + url := g.server.JoinPath("objects/batch").String() + headers := map[string]string{ + headerAuthorisation: g.itoken, + headerAuthX: g.token, + headerAccept: mimeGitLFS, + headerContentType: mimeGitLFS, + } + req := newInternalRequest(g.ctx, url, http.MethodPost, headers, bodyBytes) + resp, err := req.Response() + if err != nil { + g.logger.Log("http request error", err) + return nil, err + } + if resp.StatusCode != http.StatusOK { + g.logger.Log("http statuscode error", resp.StatusCode, statusCodeToErr(resp.StatusCode)) + return nil, statusCodeToErr(resp.StatusCode) + } + defer resp.Body.Close() + respBytes, err := io.ReadAll(resp.Body) + if err != nil { + g.logger.Log("http read error", err) + return nil, err + } + var respBody lfs.BatchResponse + err = json.Unmarshal(respBytes, &respBody) + if err != nil { + g.logger.Log("json umarshal error", err) + return nil, err + } + + // rebuild slice, we can't rely on order in resp being the same as req + pointers = pointers[:0] + opNum := opMap[g.op] + for _, obj := range respBody.Objects { + pointer := transfer.Pointer{Oid: obj.Pointer.Oid, Size: obj.Pointer.Size} + item := transfer.BatchItem{Pointer: pointer, Args: map[string]string{}} + switch opNum { + case opDownload: + if action, ok := obj.Actions[actionDownload]; ok { + item.Present = true + idMap := obj.Actions + idMapBytes, err := json.Marshal(idMap) + if err != nil { + g.logger.Log("json marshal error", err) + return nil, err + } + idMapStr := base64.StdEncoding.EncodeToString(idMapBytes) + item.Args[argID] = idMapStr + if authHeader, ok := action.Header[headerAuthorisation]; ok { + authHeaderB64 := base64.StdEncoding.EncodeToString([]byte(authHeader)) + item.Args[argToken] = authHeaderB64 + } + if action.ExpiresAt != nil { + item.Args[argExpiresAt] = action.ExpiresAt.String() + } + } else { + // must be an error, but the SSH protocol can't propagate individual errors + g.logger.Log("object not found", obj.Pointer.Oid, obj.Pointer.Size) + item.Present = false + } + case opUpload: + if action, ok := obj.Actions[actionUpload]; ok { + item.Present = false + idMap := obj.Actions + idMapBytes, err := json.Marshal(idMap) + if err != nil { + g.logger.Log("json marshal error", err) + return nil, err + } + idMapStr := base64.StdEncoding.EncodeToString(idMapBytes) + item.Args[argID] = idMapStr + if authHeader, ok := action.Header[headerAuthorisation]; ok { + authHeaderB64 := base64.StdEncoding.EncodeToString([]byte(authHeader)) + item.Args[argToken] = authHeaderB64 + } + if action.ExpiresAt != nil { + item.Args[argExpiresAt] = action.ExpiresAt.String() + } + } else { + item.Present = true + } + } + pointers = append(pointers, item) + } + return pointers, nil +} + +// Download implements transfer.Backend. The returned reader must be closed by the +// caller. +func (g *GiteaBackend) Download(oid string, args transfer.Args) (io.ReadCloser, int64, error) { + idMapStr, exists := args[argID] + if !exists { + return nil, 0, ErrMissingID + } + idMapBytes, err := base64.StdEncoding.DecodeString(idMapStr) + if err != nil { + g.logger.Log("base64 decode error", err) + return nil, 0, transfer.ErrCorruptData + } + idMap := map[string]*lfs.Link{} + err = json.Unmarshal(idMapBytes, &idMap) + if err != nil { + g.logger.Log("json unmarshal error", err) + return nil, 0, transfer.ErrCorruptData + } + action, exists := idMap[actionDownload] + if !exists { + g.logger.Log("argument id incorrect") + return nil, 0, transfer.ErrCorruptData + } + url := action.Href + headers := map[string]string{ + headerAuthorisation: g.itoken, + headerAuthX: g.token, + headerAccept: mimeOctetStream, + } + req := newInternalRequest(g.ctx, url, http.MethodGet, headers, nil) + resp, err := req.Response() + if err != nil { + return nil, 0, err + } + if resp.StatusCode != http.StatusOK { + return nil, 0, statusCodeToErr(resp.StatusCode) + } + defer resp.Body.Close() + respBytes, err := io.ReadAll(resp.Body) + if err != nil { + return nil, 0, err + } + respSize := int64(len(respBytes)) + respBuf := io.NopCloser(bytes.NewBuffer(respBytes)) + return respBuf, respSize, nil +} + +// StartUpload implements transfer.Backend. +func (g *GiteaBackend) Upload(oid string, size int64, r io.Reader, args transfer.Args) error { + idMapStr, exists := args[argID] + if !exists { + return ErrMissingID + } + idMapBytes, err := base64.StdEncoding.DecodeString(idMapStr) + if err != nil { + g.logger.Log("base64 decode error", err) + return transfer.ErrCorruptData + } + idMap := map[string]*lfs.Link{} + err = json.Unmarshal(idMapBytes, &idMap) + if err != nil { + g.logger.Log("json unmarshal error", err) + return transfer.ErrCorruptData + } + action, exists := idMap[actionUpload] + if !exists { + g.logger.Log("argument id incorrect") + return transfer.ErrCorruptData + } + url := action.Href + headers := map[string]string{ + headerAuthorisation: g.itoken, + headerAuthX: g.token, + headerContentType: mimeOctetStream, + headerContentLength: strconv.FormatInt(size, 10), + } + reqBytes, err := io.ReadAll(r) + if err != nil { + return err + } + req := newInternalRequest(g.ctx, url, http.MethodPut, headers, reqBytes) + resp, err := req.Response() + if err != nil { + return err + } + if resp.StatusCode != http.StatusOK { + return statusCodeToErr(resp.StatusCode) + } + return nil +} + +// Verify implements transfer.Backend. +func (g *GiteaBackend) Verify(oid string, size int64, args transfer.Args) (transfer.Status, error) { + reqBody := lfs.Pointer{Oid: oid, Size: size} + + bodyBytes, err := json.Marshal(reqBody) + if err != nil { + return transfer.NewStatus(transfer.StatusInternalServerError), err + } + idMapStr, exists := args[argID] + if !exists { + return transfer.NewStatus(transfer.StatusBadRequest, "missing argument: id"), ErrMissingID + } + idMapBytes, err := base64.StdEncoding.DecodeString(idMapStr) + if err != nil { + g.logger.Log("base64 decode error", err) + return transfer.NewStatus(transfer.StatusBadRequest, "corrupt argument: id"), transfer.ErrCorruptData + } + idMap := map[string]*lfs.Link{} + err = json.Unmarshal(idMapBytes, &idMap) + if err != nil { + g.logger.Log("json unmarshal error", err) + return transfer.NewStatus(transfer.StatusBadRequest, "corrupt argument: id"), transfer.ErrCorruptData + } + action, exists := idMap[actionVerify] + if !exists { + // the server sent no verify action + return transfer.SuccessStatus(), nil + } + url := action.Href + headers := map[string]string{ + headerAuthorisation: g.itoken, + headerAuthX: g.token, + headerAccept: mimeGitLFS, + headerContentType: mimeGitLFS, + } + req := newInternalRequest(g.ctx, url, http.MethodPost, headers, bodyBytes) + resp, err := req.Response() + if err != nil { + return transfer.NewStatus(transfer.StatusInternalServerError), err + } + if resp.StatusCode != http.StatusOK { + return transfer.NewStatus(uint32(resp.StatusCode), http.StatusText(resp.StatusCode)), statusCodeToErr(resp.StatusCode) + } + return transfer.SuccessStatus(), nil +} + +// LockBackend implements transfer.Backend. +func (g *GiteaBackend) LockBackend(_ transfer.Args) transfer.LockBackend { + return newGiteaLockBackend(g) +} diff --git a/modules/lfstransfer/backend/lock.go b/modules/lfstransfer/backend/lock.go new file mode 100644 index 0000000000..f72ffd5b6f --- /dev/null +++ b/modules/lfstransfer/backend/lock.go @@ -0,0 +1,296 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package backend + +import ( + "context" + "fmt" + "io" + "net/http" + "net/url" + "strconv" + "time" + + "code.gitea.io/gitea/modules/json" + lfslock "code.gitea.io/gitea/modules/structs" + + "github.com/charmbracelet/git-lfs-transfer/transfer" +) + +var _ transfer.LockBackend = &giteaLockBackend{} + +type giteaLockBackend struct { + ctx context.Context + g *GiteaBackend + server *url.URL + token string + itoken string + logger transfer.Logger +} + +func newGiteaLockBackend(g *GiteaBackend) transfer.LockBackend { + server := g.server.JoinPath("locks") + return &giteaLockBackend{ctx: g.ctx, g: g, server: server, token: g.token, itoken: g.itoken, logger: g.logger} +} + +// Create implements transfer.LockBackend +func (g *giteaLockBackend) Create(path, refname string) (transfer.Lock, error) { + reqBody := lfslock.LFSLockRequest{Path: path} + + bodyBytes, err := json.Marshal(reqBody) + if err != nil { + g.logger.Log("json marshal error", err) + return nil, err + } + url := g.server.String() + headers := map[string]string{ + headerAuthorisation: g.itoken, + headerAuthX: g.token, + headerAccept: mimeGitLFS, + headerContentType: mimeGitLFS, + } + req := newInternalRequest(g.ctx, url, http.MethodPost, headers, bodyBytes) + resp, err := req.Response() + if err != nil { + g.logger.Log("http request error", err) + return nil, err + } + defer resp.Body.Close() + respBytes, err := io.ReadAll(resp.Body) + if err != nil { + g.logger.Log("http read error", err) + return nil, err + } + if resp.StatusCode != http.StatusCreated { + g.logger.Log("http statuscode error", resp.StatusCode, statusCodeToErr(resp.StatusCode)) + return nil, statusCodeToErr(resp.StatusCode) + } + var respBody lfslock.LFSLockResponse + err = json.Unmarshal(respBytes, &respBody) + if err != nil { + g.logger.Log("json umarshal error", err) + return nil, err + } + + if respBody.Lock == nil { + g.logger.Log("api returned nil lock") + return nil, fmt.Errorf("api returned nil lock") + } + respLock := respBody.Lock + owner := userUnknown + if respLock.Owner != nil { + owner = respLock.Owner.Name + } + lock := newGiteaLock(g, respLock.ID, respLock.Path, respLock.LockedAt, owner) + return lock, nil +} + +// Unlock implements transfer.LockBackend +func (g *giteaLockBackend) Unlock(lock transfer.Lock) error { + reqBody := lfslock.LFSLockDeleteRequest{} + + bodyBytes, err := json.Marshal(reqBody) + if err != nil { + g.logger.Log("json marshal error", err) + return err + } + url := g.server.JoinPath(lock.ID(), "unlock").String() + headers := map[string]string{ + headerAuthorisation: g.itoken, + headerAuthX: g.token, + headerAccept: mimeGitLFS, + headerContentType: mimeGitLFS, + } + req := newInternalRequest(g.ctx, url, http.MethodPost, headers, bodyBytes) + resp, err := req.Response() + if err != nil { + g.logger.Log("http request error", err) + return err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + g.logger.Log("http statuscode error", resp.StatusCode, statusCodeToErr(resp.StatusCode)) + return statusCodeToErr(resp.StatusCode) + } + // no need to read response + + return nil +} + +// FromPath implements transfer.LockBackend +func (g *giteaLockBackend) FromPath(path string) (transfer.Lock, error) { + v := url.Values{ + argPath: []string{path}, + } + + respLocks, _, err := g.queryLocks(v) + if err != nil { + return nil, err + } + + if len(respLocks) == 0 { + return nil, transfer.ErrNotFound + } + return respLocks[0], nil +} + +// FromID implements transfer.LockBackend +func (g *giteaLockBackend) FromID(id string) (transfer.Lock, error) { + v := url.Values{ + argID: []string{id}, + } + + respLocks, _, err := g.queryLocks(v) + if err != nil { + return nil, err + } + + if len(respLocks) == 0 { + return nil, transfer.ErrNotFound + } + return respLocks[0], nil +} + +// Range implements transfer.LockBackend +func (g *giteaLockBackend) Range(cursor string, limit int, iter func(transfer.Lock) error) (string, error) { + v := url.Values{ + argLimit: []string{strconv.FormatInt(int64(limit), 10)}, + } + if cursor != "" { + v[argCursor] = []string{cursor} + } + + respLocks, cursor, err := g.queryLocks(v) + if err != nil { + return "", err + } + + for _, lock := range respLocks { + err := iter(lock) + if err != nil { + return "", err + } + } + return cursor, nil +} + +func (g *giteaLockBackend) queryLocks(v url.Values) ([]transfer.Lock, string, error) { + urlq := g.server.JoinPath() // get a copy + urlq.RawQuery = v.Encode() + url := urlq.String() + headers := map[string]string{ + headerAuthorisation: g.itoken, + headerAuthX: g.token, + headerAccept: mimeGitLFS, + headerContentType: mimeGitLFS, + } + req := newInternalRequest(g.ctx, url, http.MethodGet, headers, nil) + resp, err := req.Response() + if err != nil { + g.logger.Log("http request error", err) + return nil, "", err + } + defer resp.Body.Close() + respBytes, err := io.ReadAll(resp.Body) + if err != nil { + g.logger.Log("http read error", err) + return nil, "", err + } + if resp.StatusCode != http.StatusOK { + g.logger.Log("http statuscode error", resp.StatusCode, statusCodeToErr(resp.StatusCode)) + return nil, "", statusCodeToErr(resp.StatusCode) + } + var respBody lfslock.LFSLockList + err = json.Unmarshal(respBytes, &respBody) + if err != nil { + g.logger.Log("json umarshal error", err) + return nil, "", err + } + + respLocks := make([]transfer.Lock, 0, len(respBody.Locks)) + for _, respLock := range respBody.Locks { + owner := userUnknown + if respLock.Owner != nil { + owner = respLock.Owner.Name + } + lock := newGiteaLock(g, respLock.ID, respLock.Path, respLock.LockedAt, owner) + respLocks = append(respLocks, lock) + } + return respLocks, respBody.Next, nil +} + +var _ transfer.Lock = &giteaLock{} + +type giteaLock struct { + g *giteaLockBackend + id string + path string + lockedAt time.Time + owner string +} + +func newGiteaLock(g *giteaLockBackend, id, path string, lockedAt time.Time, owner string) transfer.Lock { + return &giteaLock{g: g, id: id, path: path, lockedAt: lockedAt, owner: owner} +} + +// Unlock implements transfer.Lock +func (g *giteaLock) Unlock() error { + return g.g.Unlock(g) +} + +// ID implements transfer.Lock +func (g *giteaLock) ID() string { + return g.id +} + +// Path implements transfer.Lock +func (g *giteaLock) Path() string { + return g.path +} + +// FormattedTimestamp implements transfer.Lock +func (g *giteaLock) FormattedTimestamp() string { + return g.lockedAt.UTC().Format(time.RFC3339) +} + +// OwnerName implements transfer.Lock +func (g *giteaLock) OwnerName() string { + return g.owner +} + +func (g *giteaLock) CurrentUser() (string, error) { + return userSelf, nil +} + +// AsLockSpec implements transfer.Lock +func (g *giteaLock) AsLockSpec(ownerID bool) ([]string, error) { + msgs := []string{ + fmt.Sprintf("lock %s", g.ID()), + fmt.Sprintf("path %s %s", g.ID(), g.Path()), + fmt.Sprintf("locked-at %s %s", g.ID(), g.FormattedTimestamp()), + fmt.Sprintf("ownername %s %s", g.ID(), g.OwnerName()), + } + if ownerID { + user, err := g.CurrentUser() + if err != nil { + return nil, fmt.Errorf("error getting current user: %w", err) + } + who := "theirs" + if user == g.OwnerName() { + who = "ours" + } + msgs = append(msgs, fmt.Sprintf("owner %s %s", g.ID(), who)) + } + return msgs, nil +} + +// AsArguments implements transfer.Lock +func (g *giteaLock) AsArguments() []string { + return []string{ + fmt.Sprintf("id=%s", g.ID()), + fmt.Sprintf("path=%s", g.Path()), + fmt.Sprintf("locked-at=%s", g.FormattedTimestamp()), + fmt.Sprintf("ownername=%s", g.OwnerName()), + } +} diff --git a/modules/lfstransfer/backend/util.go b/modules/lfstransfer/backend/util.go new file mode 100644 index 0000000000..126ac00175 --- /dev/null +++ b/modules/lfstransfer/backend/util.go @@ -0,0 +1,141 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package backend + +import ( + "context" + "crypto/tls" + "fmt" + "net" + "net/http" + "time" + + "code.gitea.io/gitea/modules/httplib" + "code.gitea.io/gitea/modules/proxyprotocol" + "code.gitea.io/gitea/modules/setting" + + "github.com/charmbracelet/git-lfs-transfer/transfer" +) + +// HTTP headers +const ( + headerAccept = "Accept" + headerAuthorisation = "Authorization" + headerAuthX = "X-Auth" + headerContentType = "Content-Type" + headerContentLength = "Content-Length" +) + +// MIME types +const ( + mimeGitLFS = "application/vnd.git-lfs+json" + mimeOctetStream = "application/octet-stream" +) + +// SSH protocol action keys +const ( + actionDownload = "download" + actionUpload = "upload" + actionVerify = "verify" +) + +// SSH protocol argument keys +const ( + argCursor = "cursor" + argExpiresAt = "expires-at" + argID = "id" + argLimit = "limit" + argPath = "path" + argRefname = "refname" + argToken = "token" + argTransfer = "transfer" +) + +// Default username constants +const ( + userSelf = "(self)" + userUnknown = "(unknown)" +) + +// Operations enum +const ( + opNone = iota + opDownload + opUpload +) + +var opMap = map[string]int{ + "download": opDownload, + "upload": opUpload, +} + +var ErrMissingID = fmt.Errorf("%w: missing id arg", transfer.ErrMissingData) + +func statusCodeToErr(code int) error { + switch code { + case http.StatusBadRequest: + return transfer.ErrParseError + case http.StatusConflict: + return transfer.ErrConflict + case http.StatusForbidden: + return transfer.ErrForbidden + case http.StatusNotFound: + return transfer.ErrNotFound + case http.StatusUnauthorized: + return transfer.ErrUnauthorized + default: + return fmt.Errorf("server returned status %v: %v", code, http.StatusText(code)) + } +} + +func newInternalRequest(ctx context.Context, url, method string, headers map[string]string, body []byte) *httplib.Request { + req := httplib.NewRequest(url, method). + SetContext(ctx). + SetTimeout(10*time.Second, 60*time.Second). + SetTLSClientConfig(&tls.Config{ + InsecureSkipVerify: true, + }) + + if setting.Protocol == setting.HTTPUnix { + req.SetTransport(&http.Transport{ + DialContext: func(ctx context.Context, _, _ string) (net.Conn, error) { + var d net.Dialer + conn, err := d.DialContext(ctx, "unix", setting.HTTPAddr) + if err != nil { + return conn, err + } + if setting.LocalUseProxyProtocol { + if err = proxyprotocol.WriteLocalHeader(conn); err != nil { + _ = conn.Close() + return nil, err + } + } + return conn, err + }, + }) + } else if setting.LocalUseProxyProtocol { + req.SetTransport(&http.Transport{ + DialContext: func(ctx context.Context, network, address string) (net.Conn, error) { + var d net.Dialer + conn, err := d.DialContext(ctx, network, address) + if err != nil { + return conn, err + } + if err = proxyprotocol.WriteLocalHeader(conn); err != nil { + _ = conn.Close() + return nil, err + } + return conn, err + }, + }) + } + + for k, v := range headers { + req.Header(k, v) + } + + req.Body(body) + + return req +} diff --git a/modules/lfstransfer/logger.go b/modules/lfstransfer/logger.go new file mode 100644 index 0000000000..517c2d9ba1 --- /dev/null +++ b/modules/lfstransfer/logger.go @@ -0,0 +1,21 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package lfstransfer + +import ( + "github.com/charmbracelet/git-lfs-transfer/transfer" +) + +var _ transfer.Logger = (*GiteaLogger)(nil) + +// noop logger for passing into transfer +type GiteaLogger struct{} + +func newLogger() transfer.Logger { + return &GiteaLogger{} +} + +// Log implements transfer.Logger +func (g *GiteaLogger) Log(msg string, itms ...any) { +} diff --git a/modules/lfstransfer/main.go b/modules/lfstransfer/main.go new file mode 100644 index 0000000000..a134f50b86 --- /dev/null +++ b/modules/lfstransfer/main.go @@ -0,0 +1,42 @@ +// Copyright 2024 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package lfstransfer + +import ( + "context" + "fmt" + "os" + + "code.gitea.io/gitea/modules/lfstransfer/backend" + + "github.com/charmbracelet/git-lfs-transfer/transfer" +) + +func Main(ctx context.Context, repo, verb, token string) error { + logger := newLogger() + pktline := transfer.NewPktline(os.Stdin, os.Stdout, logger) + giteaBackend, err := backend.New(ctx, repo, verb, token, logger) + if err != nil { + return err + } + + for _, cap := range backend.Capabilities { + if err := pktline.WritePacketText(cap); err != nil { + logger.Log("error sending capability due to error:", err) + } + } + if err := pktline.WriteFlush(); err != nil { + logger.Log("error flushing capabilities:", err) + } + p := transfer.NewProcessor(pktline, giteaBackend, logger) + defer logger.Log("done processing commands") + switch verb { + case "upload": + return p.ProcessCommands(transfer.UploadOperation) + case "download": + return p.ProcessCommands(transfer.DownloadOperation) + default: + return fmt.Errorf("unknown operation %q", verb) + } +} diff --git a/modules/markup/camo.go b/modules/markup/camo.go index e93797de2b..7e2583469d 100644 --- a/modules/markup/camo.go +++ b/modules/markup/camo.go @@ -38,7 +38,7 @@ func camoHandleLink(link string) string { if setting.Camo.Enabled { lnkURL, err := url.Parse(link) if err == nil && lnkURL.IsAbs() && !strings.HasPrefix(link, setting.AppURL) && - (setting.Camo.Allways || lnkURL.Scheme != "https") { + (setting.Camo.Always || lnkURL.Scheme != "https") { return CamoEncode(link) } } diff --git a/modules/markup/camo_test.go b/modules/markup/camo_test.go index ba58835221..3c5d40afa0 100644 --- a/modules/markup/camo_test.go +++ b/modules/markup/camo_test.go @@ -28,7 +28,7 @@ func TestCamoHandleLink(t *testing.T) { "https://image.proxy/eivin43gJwGVIjR9MiYYtFIk0mw/aHR0cDovL3Rlc3RpbWFnZXMub3JnL2ltZy5qcGc", camoHandleLink("http://testimages.org/img.jpg")) - setting.Camo.Allways = true + setting.Camo.Always = true assert.Equal(t, "https://gitea.com/img.jpg", camoHandleLink("https://gitea.com/img.jpg")) diff --git a/modules/markup/html_link.go b/modules/markup/html_link.go index a41b87e9fa..b086135348 100644 --- a/modules/markup/html_link.go +++ b/modules/markup/html_link.go @@ -4,8 +4,6 @@ package markup import ( - "path" - "code.gitea.io/gitea/modules/util" ) @@ -14,13 +12,9 @@ func ResolveLink(ctx *RenderContext, link, userContentAnchorPrefix string) (resu if !isAnchorFragment && !IsFullURLString(link) { linkBase := ctx.Links.Base if ctx.IsWiki { - if ext := path.Ext(link); ext == "" || ext == ".-" { - linkBase = ctx.Links.WikiLink() // the link is for a wiki page - } else if DetectMarkupTypeByFileName(link) != "" { - linkBase = ctx.Links.WikiLink() // the link is renderable as a wiki page - } else { - linkBase = ctx.Links.WikiRawLink() // otherwise, use a raw link instead to view&download medias - } + // no need to check if the link should be resolved as a wiki link or a wiki raw link + // just use wiki link here and it will be redirected to a wiki raw link if necessary + linkBase = ctx.Links.WikiLink() } else if ctx.Links.BranchPath != "" || ctx.Links.TreePath != "" { // if there is no BranchPath, then the link will be something like "/owner/repo/src/{the-file-path}" // and then this link will be handled by the "legacy-ref" code and be redirected to the default branch like "/owner/repo/src/branch/main/{the-file-path}" diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go index c69f3ddd64..32858dbd6b 100644 --- a/modules/markup/html_test.go +++ b/modules/markup/html_test.go @@ -437,7 +437,7 @@ func TestRender_ShortLinks(t *testing.T) { renderableFileURL := util.URLJoin(tree, "markdown_file.md") renderableFileURLWiki := util.URLJoin(markup.TestRepoURL, "wiki", "markdown_file.md") unrenderableFileURL := util.URLJoin(tree, "file.zip") - unrenderableFileURLWiki := util.URLJoin(markup.TestRepoURL, "wiki", "raw", "file.zip") + unrenderableFileURLWiki := util.URLJoin(markup.TestRepoURL, "wiki", "file.zip") favicon := "http://google.com/favicon.ico" test( diff --git a/modules/markup/markdown/markdown_test.go b/modules/markup/markdown/markdown_test.go index 671276e45c..cfb821ab19 100644 --- a/modules/markup/markdown/markdown_test.go +++ b/modules/markup/markdown/markdown_test.go @@ -672,9 +672,9 @@ space
Expected: `space @mention-user
/just/a/path.bin
https://example.com/file.bin
-local link
+local link
remote link
-local link
+local link
remote link
@@ -730,9 +730,9 @@ space
space @mention-user
/just/a/path.bin
https://example.com/file.bin
-local link
+local link
remote link
-local link
+local link
remote link
@@ -788,9 +788,9 @@ space
space @mention-user
/just/a/path.bin
https://example.com/file.bin
-local link
+local link
remote link
-local link
+local link
remote link
@@ -848,9 +848,9 @@ space
space @mention-user
/just/a/path.bin
https://example.com/file.bin
-local link
+local link
remote link
-local link
+local link
remote link
@@ -908,9 +908,9 @@ space
space @mention-user
/just/a/path.bin
https://example.com/file.bin
-local link
+local link
remote link
-local link
+local link
remote link
@@ -970,9 +970,9 @@ space
space @mention-user
- {{ctx.Locale.Tr "startpage.install_desc"}}
+ {{ctx.Locale.Tr "startpage.install_desc" "https://docs.gitea.com/installation/install-from-binary" "https://github.com/go-gitea/gitea/tree/master/docker" "https://docs.gitea.com/installation/install-from-package"}}
- {{ctx.Locale.Tr "startpage.platform_desc"}}
+ {{ctx.Locale.Tr "startpage.platform_desc" "https://go.dev/"}}
- {{ctx.Locale.Tr "startpage.license_desc"}}
+ {{ctx.Locale.Tr "startpage.license_desc" "https://code.gitea.io/gitea" "code.gitea.io/gitea" "https://github.com/go-gitea/gitea"}}
/just/a/path.bin
https://example.com/file.bin
-local link
+local link
remote link
-local link
+local link
remote link
diff --git a/modules/migration/options.go b/modules/migration/options.go
index 234e72c295..163aa0cfaa 100644
--- a/modules/migration/options.go
+++ b/modules/migration/options.go
@@ -38,4 +38,7 @@ type MigrateOptions struct {
ReleaseAssets bool
MigrateToRepoID int64
MirrorInterval string `json:"mirror_interval"`
+
+ AWSAccessKeyID string
+ AWSSecretAccessKey string
}
diff --git a/modules/migration/pullrequest.go b/modules/migration/pullrequest.go
index 4e7500f0d6..1435991bd2 100644
--- a/modules/migration/pullrequest.go
+++ b/modules/migration/pullrequest.go
@@ -45,7 +45,7 @@ func (p *PullRequest) GetContext() DownloaderContext { return p.Context }
// IsForkPullRequest returns true if the pull request from a forked repository but not the same repository
func (p *PullRequest) IsForkPullRequest() bool {
- return p.Head.RepoPath() != p.Base.RepoPath()
+ return p.Head.RepoFullName() != p.Base.RepoFullName()
}
// GetGitRefName returns pull request relative path to head
@@ -62,8 +62,8 @@ type PullRequestBranch struct {
OwnerName string `yaml:"owner_name"`
}
-// RepoPath returns pull request repo path
-func (p PullRequestBranch) RepoPath() string {
+// RepoFullName returns pull request repo full name
+func (p PullRequestBranch) RepoFullName() string {
return fmt.Sprintf("%s/%s", p.OwnerName, p.RepoName)
}
diff --git a/modules/packages/composer/metadata.go b/modules/packages/composer/metadata.go
index 2c2e9ebf27..6035eae8ca 100644
--- a/modules/packages/composer/metadata.go
+++ b/modules/packages/composer/metadata.go
@@ -48,6 +48,7 @@ type Metadata struct {
Homepage string `json:"homepage,omitempty"`
License Licenses `json:"license,omitempty"`
Authors []Author `json:"authors,omitempty"`
+ Bin []string `json:"bin,omitempty"`
Autoload map[string]any `json:"autoload,omitempty"`
AutoloadDev map[string]any `json:"autoload-dev,omitempty"`
Extra map[string]any `json:"extra,omitempty"`
diff --git a/modules/queue/base_channel.go b/modules/queue/base_channel.go
index d03c72bdae..dd8ccb15f4 100644
--- a/modules/queue/base_channel.go
+++ b/modules/queue/base_channel.go
@@ -120,7 +120,7 @@ func (q *baseChannel) RemoveAll(ctx context.Context) error {
q.mu.Lock()
defer q.mu.Unlock()
- for q.c != nil && len(q.c) > 0 {
+ for len(q.c) > 0 {
<-q.c
}
diff --git a/modules/repository/license.go b/modules/repository/license.go
index 6ac3547e7b..9da3af84f8 100644
--- a/modules/repository/license.go
+++ b/modules/repository/license.go
@@ -23,7 +23,7 @@ type LicenseValues struct {
func GetLicense(name string, values *LicenseValues) ([]byte, error) {
data, err := options.License(name)
if err != nil {
- return nil, fmt.Errorf("GetRepoInitFile[%s]: %w", name, err)
+ return nil, fmt.Errorf("GetLicense[%s]: %w", name, err)
}
return fillLicensePlaceholder(name, values, data), nil
}
diff --git a/modules/setting/actions.go b/modules/setting/actions.go
index a515b1ca69..913872eaf2 100644
--- a/modules/setting/actions.go
+++ b/modules/setting/actions.go
@@ -62,11 +62,11 @@ func (c logCompression) IsValid() bool {
}
func (c logCompression) IsNone() bool {
- return c == "" || strings.ToLower(string(c)) == "none"
+ return strings.ToLower(string(c)) == "none"
}
func (c logCompression) IsZstd() bool {
- return strings.ToLower(string(c)) == "zstd"
+ return c == "" || strings.ToLower(string(c)) == "zstd"
}
func loadActionsFrom(rootCfg ConfigProvider) error {
diff --git a/modules/setting/camo.go b/modules/setting/camo.go
index 366e9a116c..608ecf8363 100644
--- a/modules/setting/camo.go
+++ b/modules/setting/camo.go
@@ -3,18 +3,28 @@
package setting
-import "code.gitea.io/gitea/modules/log"
+import (
+ "strconv"
+
+ "code.gitea.io/gitea/modules/log"
+)
var Camo = struct {
Enabled bool
ServerURL string `ini:"SERVER_URL"`
HMACKey string `ini:"HMAC_KEY"`
- Allways bool
+ Always bool
}{}
func loadCamoFrom(rootCfg ConfigProvider) {
mustMapSetting(rootCfg, "camo", &Camo)
if Camo.Enabled {
+ oldValue := rootCfg.Section("camo").Key("ALLWAYS").MustString("")
+ if oldValue != "" {
+ log.Warn("camo.ALLWAYS is deprecated, use camo.ALWAYS instead")
+ Camo.Always, _ = strconv.ParseBool(oldValue)
+ }
+
if Camo.ServerURL == "" || Camo.HMACKey == "" {
log.Fatal(`Camo settings require "SERVER_URL" and HMAC_KEY`)
}
diff --git a/modules/setting/federation.go b/modules/setting/federation.go
index 2bea900633..62aeaa01b4 100644
--- a/modules/setting/federation.go
+++ b/modules/setting/federation.go
@@ -6,7 +6,7 @@ package setting
import (
"code.gitea.io/gitea/modules/log"
- "github.com/go-fed/httpsig"
+ "github.com/42wim/httpsig"
)
// Federation settings
diff --git a/modules/setting/gloabl_lock.go b/modules/setting/gloabl_lock.go
new file mode 100644
index 0000000000..a7802a9df1
--- /dev/null
+++ b/modules/setting/gloabl_lock.go
@@ -0,0 +1,37 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package setting
+
+import (
+ "code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/nosql"
+)
+
+// GlobalLock represents configuration of global lock
+var GlobalLock = struct {
+ ServiceType string
+ ServiceConnStr string
+}{
+ ServiceType: "memory",
+}
+
+func loadGlobalLockFrom(rootCfg ConfigProvider) {
+ sec := rootCfg.Section("global_lock")
+ GlobalLock.ServiceType = sec.Key("SERVICE_TYPE").MustString("memory")
+ switch GlobalLock.ServiceType {
+ case "memory":
+ case "redis":
+ connStr := sec.Key("SERVICE_CONN_STR").String()
+ if connStr == "" {
+ log.Fatal("SERVICE_CONN_STR is empty for redis")
+ }
+ u := nosql.ToRedisURI(connStr)
+ if u == nil {
+ log.Fatal("SERVICE_CONN_STR %s is not a valid redis connection string", connStr)
+ }
+ GlobalLock.ServiceConnStr = connStr
+ default:
+ log.Fatal("Unknown sync lock service type: %s", GlobalLock.ServiceType)
+ }
+}
diff --git a/modules/setting/global_lock_test.go b/modules/setting/global_lock_test.go
new file mode 100644
index 0000000000..5eeb275523
--- /dev/null
+++ b/modules/setting/global_lock_test.go
@@ -0,0 +1,35 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package setting
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestLoadGlobalLockConfig(t *testing.T) {
+ t.Run("DefaultGlobalLockConfig", func(t *testing.T) {
+ iniStr := ``
+ cfg, err := NewConfigProviderFromData(iniStr)
+ assert.NoError(t, err)
+
+ loadGlobalLockFrom(cfg)
+ assert.EqualValues(t, "memory", GlobalLock.ServiceType)
+ })
+
+ t.Run("RedisGlobalLockConfig", func(t *testing.T) {
+ iniStr := `
+[global_lock]
+SERVICE_TYPE = redis
+SERVICE_CONN_STR = addrs=127.0.0.1:6379 db=0
+`
+ cfg, err := NewConfigProviderFromData(iniStr)
+ assert.NoError(t, err)
+
+ loadGlobalLockFrom(cfg)
+ assert.EqualValues(t, "redis", GlobalLock.ServiceType)
+ assert.EqualValues(t, "addrs=127.0.0.1:6379 db=0", GlobalLock.ServiceConnStr)
+ })
+}
diff --git a/modules/setting/lfs.go b/modules/setting/lfs.go
index 2034ef782c..6bdcbed91d 100644
--- a/modules/setting/lfs.go
+++ b/modules/setting/lfs.go
@@ -13,6 +13,7 @@ import (
// LFS represents the configuration for Git LFS
var LFS = struct {
StartServer bool `ini:"LFS_START_SERVER"`
+ AllowPureSSH bool `ini:"LFS_ALLOW_PURE_SSH"`
JWTSecretBytes []byte `ini:"-"`
HTTPAuthExpiry time.Duration `ini:"LFS_HTTP_AUTH_EXPIRY"`
MaxFileSize int64 `ini:"LFS_MAX_FILE_SIZE"`
diff --git a/modules/setting/security.go b/modules/setting/security.go
index 3d7b1f9ce7..3d12fcf8d9 100644
--- a/modules/setting/security.go
+++ b/modules/setting/security.go
@@ -37,6 +37,7 @@ var (
DisableQueryAuthToken bool
CSRFCookieName = "_csrf"
CSRFCookieHTTPOnly = true
+ RecordUserSignupMetadata = false
)
// loadSecret load the secret from ini by uriKey or verbatimKey, only one of them could be set
@@ -164,6 +165,8 @@ func loadSecurityFrom(rootCfg ConfigProvider) {
// TODO: default value should be true in future releases
DisableQueryAuthToken = sec.Key("DISABLE_QUERY_AUTH_TOKEN").MustBool(false)
+ RecordUserSignupMetadata = sec.Key("RECORD_USER_SIGNUP_METADATA").MustBool(false)
+
// warn if the setting is set to false explicitly
if sectionHasDisableQueryAuthToken && !DisableQueryAuthToken {
log.Warn("Enabling Query API Auth tokens is not recommended. DISABLE_QUERY_AUTH_TOKEN will default to true in gitea 1.23 and will be removed in gitea 1.24.")
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index b4f913cdae..c93d199b1b 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -147,6 +147,7 @@ func loadCommonSettingsFrom(cfg ConfigProvider) error {
loadGitFrom(cfg)
loadMirrorFrom(cfg)
loadMarkupFrom(cfg)
+ loadGlobalLockFrom(cfg)
loadOtherFrom(cfg)
return nil
}
diff --git a/modules/storage/azureblob.go b/modules/storage/azureblob.go
index 211522c5bb..568227ca47 100644
--- a/modules/storage/azureblob.go
+++ b/modules/storage/azureblob.go
@@ -114,7 +114,7 @@ func convertAzureBlobErr(err error) error {
if !errors.As(err, &respErr) {
return err
}
- return fmt.Errorf(respErr.ErrorCode)
+ return fmt.Errorf("%s", respErr.ErrorCode)
}
// NewAzureBlobStorage returns a azure blob storage
diff --git a/modules/structs/hook.go b/modules/structs/hook.go
index 0babe84410..c55e63db6b 100644
--- a/modules/structs/hook.go
+++ b/modules/structs/hook.go
@@ -494,3 +494,17 @@ type PackagePayload struct {
func (p *PackagePayload) JSONPayload() ([]byte, error) {
return json.MarshalIndent(p, "", " ")
}
+
+// WorkflowDispatchPayload represents a workflow dispatch payload
+type WorkflowDispatchPayload struct {
+ Workflow string `json:"workflow"`
+ Ref string `json:"ref"`
+ Inputs map[string]any `json:"inputs"`
+ Repository *Repository `json:"repository"`
+ Sender *User `json:"sender"`
+}
+
+// JSONPayload implements Payload
+func (p *WorkflowDispatchPayload) JSONPayload() ([]byte, error) {
+ return json.MarshalIndent(p, "", " ")
+}
diff --git a/modules/structs/repo.go b/modules/structs/repo.go
index 444967c3e7..832ffa8bcc 100644
--- a/modules/structs/repo.go
+++ b/modules/structs/repo.go
@@ -114,6 +114,7 @@ type Repository struct {
MirrorUpdated time.Time `json:"mirror_updated,omitempty"`
RepoTransfer *RepoTransfer `json:"repo_transfer"`
Topics []string `json:"topics"`
+ Licenses []string `json:"licenses"`
}
// CreateRepoOption options when creating repository
@@ -291,15 +292,16 @@ type GitServiceType int
// enumerate all GitServiceType
const (
- NotMigrated GitServiceType = iota // 0 not migrated from external sites
- PlainGitService // 1 plain git service
- GithubService // 2 github.com
- GiteaService // 3 gitea service
- GitlabService // 4 gitlab service
- GogsService // 5 gogs service
- OneDevService // 6 onedev service
- GitBucketService // 7 gitbucket service
- CodebaseService // 8 codebase service
+ NotMigrated GitServiceType = iota // 0 not migrated from external sites
+ PlainGitService // 1 plain git service
+ GithubService // 2 github.com
+ GiteaService // 3 gitea service
+ GitlabService // 4 gitlab service
+ GogsService // 5 gogs service
+ OneDevService // 6 onedev service
+ GitBucketService // 7 gitbucket service
+ CodebaseService // 8 codebase service
+ CodeCommitService // 9 codecommit service
)
// Name represents the service type's name
@@ -325,6 +327,8 @@ func (gt GitServiceType) Title() string {
return "GitBucket"
case CodebaseService:
return "Codebase"
+ case CodeCommitService:
+ return "CodeCommit"
case PlainGitService:
return "Git"
}
@@ -361,6 +365,9 @@ type MigrateRepoOptions struct {
PullRequests bool `json:"pull_requests"`
Releases bool `json:"releases"`
MirrorInterval string `json:"mirror_interval"`
+
+ AWSAccessKeyID string `json:"aws_access_key_id"`
+ AWSSecretAccessKey string `json:"aws_secret_access_key"`
}
// TokenAuth represents whether a service type supports token-based auth
@@ -382,6 +389,7 @@ var SupportedFullGitService = []GitServiceType{
OneDevService,
GitBucketService,
CodebaseService,
+ CodeCommitService,
}
// RepoTransfer represents a pending repo transfer
diff --git a/modules/sync/exclusive_pool.go b/modules/sync/exclusive_pool.go
deleted file mode 100644
index fbfc1f2292..0000000000
--- a/modules/sync/exclusive_pool.go
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2016 The Gogs Authors. All rights reserved.
-// SPDX-License-Identifier: MIT
-
-package sync
-
-import (
- "sync"
-)
-
-// ExclusivePool is a pool of non-identical instances
-// that only one instance with same identity is in the pool at a time.
-// In other words, only instances with different identities can be in
-// the pool the same time. If another instance with same identity tries
-// to get into the pool, it hangs until previous instance left the pool.
-//
-// This pool is particularly useful for performing tasks on same resource
-// on the file system in different goroutines.
-type ExclusivePool struct {
- lock sync.Mutex
-
- // pool maintains locks for each instance in the pool.
- pool map[string]*sync.Mutex
-
- // count maintains the number of times an instance with same identity checks in
- // to the pool, and should be reduced to 0 (removed from map) by checking out
- // with same number of times.
- // The purpose of count is to delete lock when count down to 0 and recycle memory
- // from map object.
- count map[string]int
-}
-
-// NewExclusivePool initializes and returns a new ExclusivePool object.
-func NewExclusivePool() *ExclusivePool {
- return &ExclusivePool{
- pool: make(map[string]*sync.Mutex),
- count: make(map[string]int),
- }
-}
-
-// CheckIn checks in an instance to the pool and hangs while instance
-// with same identity is using the lock.
-func (p *ExclusivePool) CheckIn(identity string) {
- p.lock.Lock()
-
- lock, has := p.pool[identity]
- if !has {
- lock = &sync.Mutex{}
- p.pool[identity] = lock
- }
- p.count[identity]++
-
- p.lock.Unlock()
- lock.Lock()
-}
-
-// CheckOut checks out an instance from the pool and releases the lock
-// to let other instances with same identity to grab the lock.
-func (p *ExclusivePool) CheckOut(identity string) {
- p.lock.Lock()
- defer p.lock.Unlock()
-
- p.pool[identity].Unlock()
- if p.count[identity] == 1 {
- delete(p.pool, identity)
- delete(p.count, identity)
- } else {
- p.count[identity]--
- }
-}
diff --git a/modules/templates/util_avatar.go b/modules/templates/util_avatar.go
index 85832cf264..afc1091516 100644
--- a/modules/templates/util_avatar.go
+++ b/modules/templates/util_avatar.go
@@ -34,7 +34,7 @@ func AvatarHTML(src string, size int, class, name string) template.HTML {
name = "avatar"
}
- return template.HTML(``)
+ return template.HTML(`
`)
}
// Avatar renders user avatars. args: user, size (int), class (string)
diff --git a/options/gitignore/Hexo b/options/gitignore/Hexo
new file mode 100644
index 0000000000..570a5e7b5d
--- /dev/null
+++ b/options/gitignore/Hexo
@@ -0,0 +1,14 @@
+# gitignore template for Hexo sites
+# website: https://hexo.io/
+# Recommended: Node.gitignore
+
+# Ignore generated directory
+public/
+
+# Ignore temp files
+tmp/
+.tmp*
+
+# additional files
+db.json
+.deploy*/
diff --git a/options/gitignore/ReScript b/options/gitignore/ReScript
new file mode 100644
index 0000000000..b7364c932a
--- /dev/null
+++ b/options/gitignore/ReScript
@@ -0,0 +1,3 @@
+/node_modules/
+/lib/
+.bsb.lock
diff --git a/options/gitignore/Terragrunt b/options/gitignore/Terragrunt
new file mode 100644
index 0000000000..ea4808637f
--- /dev/null
+++ b/options/gitignore/Terragrunt
@@ -0,0 +1,3 @@
+# Ignore the default terragrunt cache directory
+# https://terragrunt.gruntwork.io/docs/features/caching/
+.terragrunt-cache
diff --git a/options/gitignore/Zig b/options/gitignore/Zig
new file mode 100644
index 0000000000..3389c86c99
--- /dev/null
+++ b/options/gitignore/Zig
@@ -0,0 +1,2 @@
+.zig-cache/
+zig-out/
diff --git a/options/license/Boehm-GC-without-fee b/options/license/Boehm-GC-without-fee
new file mode 100644
index 0000000000..354d47017e
--- /dev/null
+++ b/options/license/Boehm-GC-without-fee
@@ -0,0 +1,14 @@
+Copyright (c) 2000
+SWsoft company
+
+Modifications copyright (c) 2001, 2013. Oracle and/or its affiliates.
+All rights reserved.
+
+This material is provided "as is", with absolutely no warranty expressed
+or implied. Any use is at your own risk.
+
+Permission to use or copy this software for any purpose is hereby granted
+without fee, provided the above notices are retained on all copies.
+Permission to modify the code and to distribute modified code is granted,
+provided the above notices are retained, and a notice that the code was
+modified is included with the above copyright notice.
diff --git a/options/license/DocBook-Schema b/options/license/DocBook-Schema
new file mode 100644
index 0000000000..56203a0878
--- /dev/null
+++ b/options/license/DocBook-Schema
@@ -0,0 +1,22 @@
+Copyright 1992-2011 HaL Computer Systems, Inc.,
+O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+Organization for the Advancement of Structured Information
+Standards (OASIS).
+
+Permission to use, copy, modify and distribute the DocBook schema
+and its accompanying documentation for any purpose and without fee
+is hereby granted in perpetuity, provided that the above copyright
+notice and this paragraph appear in all copies. The copyright
+holders make no representation about the suitability of the schema
+for any purpose. It is provided "as is" without expressed or implied
+warranty.
+
+If you modify the DocBook schema in any way, label your schema as a
+variant of DocBook. See the reference documentation
+(http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
+for more information.
+
+Please direct all questions, bug reports, or suggestions for changes
+to the docbook@lists.oasis-open.org mailing list. For more
+information, see http://www.oasis-open.org/docbook/.
diff --git a/options/license/DocBook-Stylesheet b/options/license/DocBook-Stylesheet
new file mode 100644
index 0000000000..e986ed4235
--- /dev/null
+++ b/options/license/DocBook-Stylesheet
@@ -0,0 +1,13 @@
+Copyright 2005 Norman Walsh, Sun Microsystems,
+Inc., and the Organization for the Advancement
+of Structured Information Standards (OASIS).
+
+Release: $Id: db4-upgrade.xsl 8905 2010-09-12 11:47:07Z bobstayton $
+
+Permission to use, copy, modify and distribute this stylesheet
+and its accompanying documentation for any purpose and
+without fee is hereby granted in perpetuity, provided that
+the above copyright notice and this paragraph appear in
+all copies. The copyright holders make no representation
+about the suitability of the schema for any purpose. It
+is provided "as is" without expressed or implied warranty.
diff --git a/options/license/DocBook-XML b/options/license/DocBook-XML
new file mode 100644
index 0000000000..9553feee6b
--- /dev/null
+++ b/options/license/DocBook-XML
@@ -0,0 +1,48 @@
+Copyright
+---------
+Copyright (C) 1999-2007 Norman Walsh
+Copyright (C) 2003 Jiřà Kosek
+Copyright (C) 2004-2007 Steve Ball
+Copyright (C) 2005-2014 The DocBook Project
+Copyright (C) 2011-2012 O'Reilly Media
+
+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.
+
+Except as contained in this notice, the names of individuals
+credited with contribution to this software shall not be used in
+advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization
+from the individuals in question.
+
+Any stylesheet derived from this Software that is publically
+distributed will be identified with a different name and the
+version strings in any derived Software will be changed so that
+no possibility of confusion between the derived package and this
+Software will exist.
+
+Warranty
+--------
+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 NORMAN WALSH OR ANY OTHER
+CONTRIBUTOR 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.
+
+Contacting the Author
+---------------------
+The DocBook XSL stylesheets are maintained by Norman Walsh,
+
Zkontrolujte háÄky gitu pro tento repozitář
pulls.open_unmerged_pull_exists=`Nemůžete provést operaci znovuotevÅ™enà protože je tu ÄekajÃcà pull request (#%d) s identickými vlastnostmi.`
pulls.status_checking=Některé kontroly jsou nedořešeny
pulls.status_checks_success=Všechny kontroly byly úspěšné
@@ -1911,7 +1892,6 @@ milestones.no_due_date=Bez lhůty dokonÄenÃ
milestones.open=OtevÅ™Ãt
milestones.close=ZavÅ™Ãt
milestones.new_subheader=MilnÃky vám pomohou organizovat úkoly a sledovat jejich pokrok.
-milestones.completeness=%d%% DokonÄeno
milestones.create=VytvoÅ™it milnÃk
milestones.title=Název
milestones.desc=Popis
@@ -2134,7 +2114,6 @@ settings.pulls.default_delete_branch_after_merge=Ve výchozÃm nastavenà mazat
settings.pulls.default_allow_edits_from_maintainers=Ve výchozÃm nastavenà povolit úpravy od správců
settings.releases_desc=Povolit vydánà v repozitáři
settings.packages_desc=Povolit registr balÃÄků repozitáře
-settings.projects_desc=Povolit projekty v repozitáři
settings.projects_mode_desc=Režim projektů (druhy projektů k zobrazenÃ)
settings.projects_mode_repo=Pouze projekty repozitáře
settings.projects_mode_owner=Pouze projekty uživatele nebo organizace
@@ -2309,7 +2288,6 @@ settings.event_pull_request_merge=SlouÄenà pull requestu
settings.event_package=BalÃÄek
settings.event_package_desc=BalÃÄek vytvoÅ™en nebo odstranÄ›n v repozitáři.
settings.branch_filter=Filtr vÄ›tvÃ
-settings.branch_filter_desc=Povolené vÄ›tve pro události nahránÃ, vytvoÅ™enà vÄ›tve a smazánà vÄ›tve jsou urÄeny pomocà zástupného vzoru. Pokud je prázdný nebo *
, vÅ¡echny události jsou ohlášeny. PodÃvejte se na dokumentaci syntaxe na github.com/gobwas/glob. PÅ™Ãklady: master
, {master,release*}
.
settings.authorization_header=AutorizaÄnà hlaviÄka
settings.authorization_header_desc=Pokud vyplnÄ›no, bude pÅ™ipojeno k požadavkům jako autorizaÄnà hlaviÄka. PÅ™Ãklady: %s.
settings.active=AktivnÃ
@@ -2360,8 +2338,6 @@ settings.protected_branch.save_rule=Uložit pravidlo
settings.protected_branch.delete_rule=Odstranit pravidlo
settings.protected_branch_can_push=Povolit nahrán�
settings.protected_branch_can_push_yes=Můžete nahrávat
-settings.protected_branch_can_push_no=Nemůžete nahrávat
-settings.branch_protection=Ochrana větvà pro větev „%s“
settings.protect_this_branch=Povolit ochranu vÄ›tvÃ
settings.protect_this_branch_desc=Zabraňuje smazánà a omezuje gitu nahrávánà a sluÄovánà do vÄ›tve.
settings.protect_disable_push=Zakázat nahrávánÃ
@@ -2373,13 +2349,11 @@ settings.protect_enable_merge_desc=Každému, kdo má pÅ™Ãstup k zápisu, bude
settings.protect_check_status_contexts=Povolit kontrolu stavu
settings.protect_status_check_patterns=Vzorce kontroly stavu:
settings.protect_status_check_patterns_desc=Zadejte vzory pro urÄenÃ, které kontroly stavu musà projÃt pÅ™ed slouÄenÃm vÄ›tvà do vÄ›tve, která odpovÃdá tomuto pravidlu. Každý řádek urÄuje vzor. Vzory nemohou být prázdné.
-settings.protect_check_status_contexts_desc=Požadovat kontrolu stavu pÅ™ed slouÄenÃm. Vyberte, jaké kontroly stavu musà projÃt pÅ™ed tÃm, než je možné vÄ›tev slouÄit do vÄ›tve, která vyhovuje tomuto pravidlu. Pokud je povoleno, revize musà být nejprve nahrány do jiné vÄ›tve, projÃt kontrolou stavu, a následné slouÄeny nebo pÅ™Ãmo nahrány do vÄ›tve, která vyhovuje tomuto pravidlu. Pokud nejsou vybrány žádné kontexty, musà být poslednà potvrzenà úspěšné bez ohledu na kontext.
settings.protect_check_status_contexts_list=Kontroly stavu pro tento repozitář zjiÅ¡tÄ›né bÄ›hem poslednÃho týdne
settings.protect_status_check_matched=OdpovÃdá
settings.protect_invalid_status_check_pattern=Neplatný vzor kontroly stavu: „%s“.
settings.protect_no_valid_status_check_patterns=Žádné platné vzory kontroly stavu.
settings.protect_required_approvals=Požadovaná schválenÃ:
-settings.protect_required_approvals_desc=Umožnit slouÄenà pouze pull requestů s dostateÄným pozitivnÃm hodnocenÃm.
settings.dismiss_stale_approvals=OdmÃtnout nekvalitnà schválenÃ
settings.dismiss_stale_approvals_desc=Pokud budou do vÄ›tve nahrány nové revize, které mÄ›nà obsah tohoto pull requestu, vÅ¡echna stará schválenà budou zamÃtnuta.
settings.ignore_stale_approvals=Ignorovat zastaralá schválenÃ
@@ -2387,18 +2361,14 @@ settings.ignore_stale_approvals_desc=NezapoÄÃtávejte schválenÃ, která byla
settings.require_signed_commits=Vyžadovat podepsané revize
settings.require_signed_commits_desc=OdmÃtnout nahránà do této vÄ›tve pokud nejsou podepsaná nebo jsou neověřitelná.
settings.protect_branch_name_pattern=Vzor jména chránÄ›ných vÄ›tvÃ
-settings.protect_branch_name_pattern_desc=Vzory jmen chránÄ›ných vÄ›tvÃ. Pro vzorovou syntaxi viz dokumentace. PÅ™Ãklady: main, release/**
settings.protect_patterns=Vzory
settings.protect_protected_file_patterns=Vzory chránÄ›ných souborů (oddÄ›lené stÅ™ednÃkem „;“):
-settings.protect_protected_file_patterns_desc=ChránÄ›né soubory, které nemajà povoleno být mÄ›nÄ›ny pÅ™Ãmo, i když uživatel má právo pÅ™idávat, upravovat nebo mazat soubory v této vÄ›tvi. VÃce vzorů lze oddÄ›lit pomocà stÅ™ednÃku („;“). PodÃvejte se na github.com/gobwas/glob dokumentaci pro syntaxi vzoru. PÅ™Ãklady: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Vzory nechránÄ›ných souborů (oddÄ›lené stÅ™ednÃkem „;“):
-settings.protect_unprotected_file_patterns_desc=NechránÄ›né soubory, které je možné mÄ›nit pÅ™Ãmo, pokud má uživatel právo zápisu, ÄÃmž se obejde omezenà push. VÃce vzorů lze oddÄ›lit pomocà stÅ™ednÃku („;“). PodÃvejte se na github.com/gobwas/glob dokumentaci pro syntaxi vzoru. PÅ™Ãklady: .drone.yml
, /docs/**/*.txt
.
settings.add_protected_branch=Zapnout ochranu
settings.delete_protected_branch=Vypnout ochranu
settings.update_protect_branch_success=Ochrana větvà pro větev „%s“ byla aktualizována.
settings.remove_protected_branch_success=Ochrana větvà pro větev „%s“ byla zakázána.
settings.remove_protected_branch_failed=Odstraněnà ochranného pravidla větve „%s“ se nezdařilo.
-settings.protected_branch_deletion=Zakázat ochranu vÄ›tvÃ
settings.protected_branch_deletion_desc=Zakázánà ochrany vÄ›tvà umožnà uživatelům s právem zápisu nahrávat do této vÄ›tve. PokraÄovat?
settings.block_rejected_reviews=Blokovat slouÄenà pÅ™i zamÃtavých posouzenÃch
settings.block_rejected_reviews_desc=SluÄovánà nebude možné, pokud o zmÄ›ny požádajà oficiálnà posuzovatelé, i když je k dispozici dostatek schválenÃ.
@@ -2408,7 +2378,6 @@ settings.block_outdated_branch=Blokovat slouÄenÃ, pokud je pull request zastar
settings.block_outdated_branch_desc=SluÄovánà nebude možné, pokud je hlavnà vÄ›tev za základnà vÄ›tvÃ.
settings.default_branch_desc=Vybrat výchozà větev repozitáře pro pull requesty a revize kódu:
settings.merge_style_desc=SlouÄit styly
-settings.default_merge_style_desc=Výchozà styl slouÄenà pro požadavky na nataženÃ:
settings.choose_branch=Vyberte větev…
settings.no_protected_branch=Nejsou tu žádné chráněné větve.
settings.edit_protected_branch=Upravit
@@ -2424,7 +2393,6 @@ settings.tags.protection.allowed.teams=Povolené týmy
settings.tags.protection.allowed.noone=Nikdo
settings.tags.protection.create=Chránit znaÄku
settings.tags.protection.none=Neexistujà žádné chránÄ›né znaÄky.
-settings.tags.protection.pattern.description=Můžete použÃt jediné jméno nebo vzor glob nebo regulárnà výraz, který bude odpovÃdat vÃce znaÄek. PÅ™eÄtÄ›te si vÃce v průvodci chránÄ›nými znaÄkami.
settings.bot_token=Token pro robota
settings.chat_id=ID chatu
settings.thread_id=ID vlákna
@@ -2592,7 +2560,7 @@ branch.delete_desc=Smazánà větve je trvalé. Přestože zrušená větev mů
branch.deletion_success=Větev „%s“ byla smazána.
branch.deletion_failed=Nepodařilo se odstranit větev „%s“.
branch.delete_branch_has_new_commits=VÄ›tev „%s“ nemůže být smazána, protože byly pÅ™idány nové commity po slouÄenÃ.
-branch.create_branch=Vytvořit větev %s
+branch.create_branch=Vytvořit větev %s
branch.create_from=z „%s“
branch.create_success=Větev „%s“ byla vytvořena.
branch.branch_already_exists=Větev „%s“ již existuje v tomto repozitáři.
@@ -2618,7 +2586,7 @@ branch.new_branch=Vytvořit novou větev
branch.new_branch_from=Vytvořit novou větev z „%s“
branch.renamed=Větev %s byla přejmenována na %s.
-tag.create_tag=VytvoÅ™it znaÄku %s
+tag.create_tag=VytvoÅ™it znaÄku %s
tag.create_tag_operation=VytvoÅ™it znaÄku
tag.confirm_create_tag=VytvoÅ™it znaÄku
tag.create_tag_from=VytvoÅ™it novou znaÄku z „%s“
@@ -2627,7 +2595,6 @@ tag.create_success=ZnaÄka „%s“ byla vytvoÅ™ena.
topic.manage_topics=Spravovat témata
topic.done=Hotovo
-topic.count_prompt=Nelze vybrat vÃce než 25 témat
topic.format_prompt=Téma musà zaÄÃnat pÃsmenem nebo ÄÃslem, může obsahovat pomlÄky („-“) a teÄky („.“) a může být dlouhé až 35 znaků. PÃsmena musà být malá.
find_file.go_to_file=PÅ™ejÃt na soubor
@@ -2725,7 +2692,6 @@ teams.leave.detail=Opustit %s?
teams.can_create_org_repo=Vytvořit repozitáře
teams.can_create_org_repo_helper=ÄŒlenové mohou vytvářet nové repozitáře v organizaci. Tvůrce zÃská pÅ™Ãstup správce do nového repozitáře.
teams.none_access=Bez pÅ™Ãstupu
-teams.none_access_helper=ÄŒlenové nemohou prohlÞet ani dÄ›lat žádnou jinou akci pro tuto jednotku.
teams.general_access=Obecný pÅ™Ãstup
teams.general_access_helper=O oprávnÄ›nà Älenů bude rozhodnuto nÞe uvedenou tabulkou oprávnÄ›nÃ.
teams.read_access=ÄŒtenÃ
@@ -2793,7 +2759,6 @@ last_page=PoslednÃ
total=Celkem: %d
settings=Nastavenà správce
-dashboard.new_version_hint=Gitea %s je nynà k dispozici, právÄ› u vás běži %s. PodÃvej se na blogu pro vÃce informacÃ.
dashboard.statistic=Souhrn
dashboard.maintenance_operations=Operace údržby
dashboard.system_status=Status systému
@@ -2974,12 +2939,10 @@ packages.size=Velikost
packages.published=Publikováno
defaulthooks=Výchozà webové háÄky
-defaulthooks.desc=Webové háÄky automaticky vytvářejà HTTP POST dotazy na server pÅ™i urÄitých Gitea událostech. Webové háÄky definované zde jsou výchozà a budou zkopÃrovány do vÅ¡ech nových repozitářů. PÅ™eÄtÄ›te si vÃce v průvodci webovými háÄky.
defaulthooks.add_webhook=PÅ™idat výchozà webový háÄek
defaulthooks.update_webhook=Aktualizovat výchozà webový háÄek
systemhooks=Systémové webové háÄky
-systemhooks.desc=Webové háÄky automaticky vytvářejà HTTP POST dotazy na server pÅ™i urÄitých Gitea událostech. Webové háÄky definované zde budou vykonány na vÅ¡ech repozitářÃch systému, proto prosÃm zvažte jakékoli důsledky, které to může mÃt na výkon. PÅ™eÄtÄ›te si vÃce v průvodci webovými háÄky.
systemhooks.add_webhook=PÅ™idat systémový webový háÄek
systemhooks.update_webhook=Aktualizovat systémový webový háÄek
@@ -3074,18 +3037,8 @@ auths.tips=Tipy
auths.tips.oauth2.general=Ověřovánà OAuth2
auths.tips.oauth2.general.tip=Při registraci nové OAuth2 autentizace by URL callbacku/přesměrovánà měla být:
auths.tip.oauth2_provider=Poskytovatel OAuth2
-auths.tip.bitbucket=Vytvořte nového OAuth konzumenta na https://bitbucket.org/account/user/{vase-uzivatelske-jmeno}/oauth-consumers/new a přidejte oprávněnà „Account“ - „Read“
auths.tip.nextcloud=Zaregistrujte nového OAuth konzumenta na vaÅ¡Ã instanci pomocà následujÃcÃho menu „Nastavenà -> ZabezpeÄenà -> OAuth 2.0 klient“
-auths.tip.dropbox=Vytvořte novou aplikaci na https://www.dropbox.com/developers/apps
-auths.tip.facebook=Registrujte novou aplikaci na https://developers.facebook.com/apps a přidejte produkt „Facebook Login“
-auths.tip.github=Registrujte novou OAuth aplikaci na https://github.com/settings/applications/new
-auths.tip.gitlab_new=Zaregistrujte novou aplikaci na https://gitlab.com/-/profile/applications
-auths.tip.google_plus=ZÃskejte klientské pověřenà OAuth2 z Google API konzole na https://console.developers.google.com/
auths.tip.openid_connect=Použijte OpenID Connect URL pro objevovánà spojenà „https://{server}/.well-known/openid-configuration“ k nastavenà koncových bodů
-auths.tip.twitter=Jděte na https://dev.twitter.com/apps, vytvořte aplikaci a ujistěte se, že volba „Allow this application to be used to Sign in with Twitter“ je povolená
-auths.tip.discord=Registrujte novou aplikaci na https://discordapp.com/developers/applications/me
-auths.tip.gitea=Registrovat novou Oauth2 aplikaci. Návod naleznete na https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=VytvoÅ™te novou aplikaci na https://oauth.yandex.com/client/new. Vyberte následujÃcà oprávnÄ›nà z „Yandex.Passport API“ sekce: „PÅ™Ãstup k e-mailové adrese“, „PÅ™Ãstup k uživatelskému avataru“ a „PÅ™Ãstup k uživatelskému jménu, jménu a pÅ™ÃjmenÃ, pohlavÓ
auths.tip.mastodon=Vložte vlastnà URL instance pro mastodon, kterou se chcete autentizovat (nebo použijte výchozÃ)
auths.edit=Upravit zdroj ověřovánÃ
auths.activated=Tento zdroj ověřovánà je aktivován
@@ -3251,7 +3204,6 @@ monitor.next=PÅ™ÃÅ¡tà Äas spuÅ¡tÄ›nÃ
monitor.previous=PÅ™edeÅ¡lý Äas spuÅ¡tÄ›nÃ
monitor.execute_times=VykonánÃ
monitor.process=Spuštěné procesy
-monitor.stacktrace=Výpisy zásobnÃku
monitor.processes_count=%d procesů
monitor.download_diagnosis_report=Stáhnout diagnosttickou zprávu
monitor.desc=Popis
@@ -3259,8 +3211,6 @@ monitor.start=ÄŒas zahájenÃ
monitor.execute_time=Doba provádÄ›nÃ
monitor.last_execution_result=Výsledek
monitor.process.cancel=Zrušit proces
-monitor.process.cancel_desc=Zrušenà procesu může způsobit ztrátu dat
-monitor.process.cancel_notices=Zrušit: %s?
monitor.process.children=Potomek
monitor.queues=Fronty
@@ -3362,7 +3312,6 @@ raw_minutes=minut
[dropzone]
default_message=PÅ™etáhnÄ›te soubory nebo kliknÄ›te sem pro nahránÃ.
-invalid_input_type=Nemůžete nahrávat soubory tohoto typu.
file_too_big=Velikost souboru ({{filesize}} MB) je vyššà než maximálnà velikost ({{maxFilesize}} MB).
remove_file=Smazat soubor
diff --git a/options/locale/locale_de-DE.ini b/options/locale/locale_de-DE.ini
index 79ddd47201..7512c54101 100644
--- a/options/locale/locale_de-DE.ini
+++ b/options/locale/locale_de-DE.ini
@@ -213,22 +213,16 @@ string.desc=Z–A
[error]
occurred=Ein Fehler ist aufgetreten
-report_message=Wenn du glaubst, dass dies ein Fehler von Gitea ist, suche bitte auf GitHub nach diesem Fehler und erstelle gegebenenfalls einen neuen Bugreport.
-missing_csrf=Fehlerhafte Anfrage: Kein CSRF Token verfügbar
-invalid_csrf=Fehlerhafte Anfrage: Ungültiger CSRF Token
not_found=Das Ziel konnte nicht gefunden werden.
network_error=Netzwerkfehler
[startpage]
app_desc=Ein einfacher, selbst gehosteter Git-Service
install=Einfach zu installieren
-install_desc=Starte einfach die Anwendung für deine Plattform oder nutze Docker. Es existieren auch paketierte Versionen.
platform=Plattformübergreifend
-platform_desc=Gitea läuft überall, wo Go kompiliert: Windows, macOS, Linux, ARM, etc. Wähle das System, das dir am meisten gefällt!
lightweight=Leichtgewicht
lightweight_desc=Gitea hat minimale Systemanforderungen und kann selbst auf einem günstigen und stromsparenden Raspberry Pi betrieben werden!
license=Quelloffen
-license_desc=Der komplette Code befindet sich auf GitHub! Unterstütze uns bei der Verbesserung dieses Projekts. Trau dich!
[install]
install=Installation
@@ -446,7 +440,6 @@ authorize_title=`"%s" den Zugriff auf deinen Account gestatten?`
authorization_failed=Autorisierung fehlgeschlagen
authorization_failed_desc=Die Autorisierung ist fehlgeschlagen, da wir eine ungültige Anfrage erkannt haben. Bitte kontaktiere den Betreuer der App, die du zu autorisieren versucht hast.
sspi_auth_failed=SSPI-Authentifizierung fehlgeschlagen
-password_pwned=Das von dir gewählte Passwort befindet sich auf einer List gestohlener Passwörter, die öffentlich verfügbar sind. Bitte versuche es erneut mit einem anderen Passwort und ziehe in Erwägung, auch anderswo deine Passwörter zu ändern.
password_pwned_err=Anfrage an HaveIBeenPwned konnte nicht abgeschlossen werden
last_admin=Du kannst den letzten Admin nicht entfernen. Es muss mindestens einen Administrator geben.
@@ -680,11 +673,11 @@ applications=Anwendungen
orgs=Organisationen verwalten
repos=Repositories
delete=Konto löschen
-twofa=Zwei-Faktor-Authentifizierung
+twofa=Zwei-Faktor-Authentifizierung (TOTP)
account_link=Verknüpfte Benutzerkonten
organization=Organisationen
uid=UID
-webauthn=Hardware-Sicherheitsschlüssel
+webauthn=Zwei-Faktor-Authentifizierung (Hardware-Sicherheitsschlüssel)
public_profile=Öffentliches Profil
biography_placeholder=Erzähle uns ein wenig über Dich selbst! (Du kannst Markdown verwenden)
@@ -779,7 +772,7 @@ add_email_success=Die neue E-Mail-Addresse wurde hinzugefügt.
email_preference_set_success=E-Mail-Einstellungen wurden erfolgreich aktualisiert.
add_openid_success=Die neue OpenID-Adresse wurde hinzugefügt.
keep_email_private=E-Mail-Adresse verbergen
-keep_email_private_popup=Dies wird Deine E-Mail-Adresse nicht nur in Deinem Profil ausblenden, sondern auch, wenn Du einen Pull Request erstellst oder eine Datei über das Web-Interface bearbeitest. Gepushte Commits werden nicht geändert.
+keep_email_private_popup=Dies wird Deine E-Mail-Adresse nicht nur in Deinem Profil ausblenden, sondern auch, wenn Du einen Pull Request erstellst oder eine Datei über das Web-Interface bearbeitest. Gepushte Commits werden nicht geändert. Benutze %s in Commits, um sie Deinem Profil zuzuordnen.
openid_desc=Mit OpenID kannst du dich über einen Drittanbieter authentifizieren.
manage_ssh_keys=SSH-Schlüssel verwalten
@@ -907,7 +900,6 @@ oauth2_client_secret_hint=Das Secret wird nach dem Verlassen oder Aktualisieren
oauth2_application_edit=Bearbeiten
oauth2_application_create_description=OAuth2 Anwendungen geben deiner Drittanwendung Zugriff auf Benutzeraccounts dieser Gitea-Instanz.
oauth2_application_remove_description=Das Entfernen einer OAuth2-Anwendung hat zur Folge, dass diese nicht mehr auf autorisierte Benutzeraccounts auf dieser Instanz zugreifen kann. Möchtest Du fortfahren?
-oauth2_application_locked=Wenn es in der Konfiguration aktiviert ist, registriert Gitea einige OAuth2-Anwendungen beim Starten vor. Um unerwartetes Verhalten zu verhindern, können diese weder bearbeitet noch entfernt werden. Weitere Informationen findest Du in der OAuth2-Dokumentation.
authorized_oauth2_applications=Autorisierte OAuth2-Anwendungen
authorized_oauth2_applications_description=Den folgenden Drittanbieter-Apps hast Du Zugriff auf Deinen persönlichen Gitea-Account gewährt. Bitte widerrufe die Autorisierung für Apps, die Du nicht mehr nutzt.
@@ -916,26 +908,20 @@ revoke_oauth2_grant=Autorisierung widerrufen
revoke_oauth2_grant_description=Wenn du die Autorisierung widerrufst, kann die Anwendung nicht mehr auf deine Daten zugreifen. Bist du dir sicher?
revoke_oauth2_grant_success=Zugriff erfolgreich widerrufen.
-twofa_desc=Zwei-Faktor-Authentifizierung trägt zu einer höheren Accountsicherheit bei.
twofa_recovery_tip=Wenn du dein Gerät verlierst, kannst du einen einmalig verwendbaren Wiederherstellungsschlüssel nutzen, um den Zugriff auf dein Konto wiederherzustellen.
twofa_is_enrolled=Für dein Konto ist die Zwei-Faktor-Authentifizierung eingeschaltet.
twofa_not_enrolled=Für dein Konto ist die Zwei-Faktor-Authentifizierung momentan nicht eingeschaltet.
twofa_disable=Zwei-Faktor-Authentifizierung deaktivieren
-twofa_scratch_token_regenerate=Neues Einmalpasswort erstellen
-twofa_scratch_token_regenerated=Dein temporärer Token ist jetzt %s. Speichere ihn an einem sicheren Ort, er wird nie wieder angezeigt.
twofa_enroll=Zwei-Faktor-Authentifizierung aktivieren
twofa_disable_note=Du kannst die Zwei-Faktor-Authentifizierung auch wieder deaktivieren.
twofa_disable_desc=Wenn du die Zwei-Faktor-Authentifizierung deaktivierst, wird die Sicherheit deines Kontos verringert. Fortfahren?
-regenerate_scratch_token_desc=Wenn du dein Einmalpasswort verlegt oder es bereits benutzt hast, kannst du es hier zurücksetzen.
twofa_disabled=Zwei-Faktor-Authentifizierung wurde deaktiviert.
scan_this_image=Scanne diese Grafik mit deiner Authentifizierungs-App:
or_enter_secret=Oder gib das Secret ein: %s
then_enter_passcode=Und gebe dann die angezeigte PIN der Anwendung ein:
passcode_invalid=Die PIN ist falsch. Probiere es erneut.
-twofa_enrolled=Die Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Bewahre dein Einmalpasswort (%s) an einem sicheren Ort auf, da es nicht wieder angezeigt werden wird.
twofa_failed_get_secret=Fehler beim Abrufen des Secrets.
-webauthn_desc=Sicherheitsschlüssel sind Geräte, die kryptografische Schlüssel beeinhalten. Diese können für die Zwei-Faktor-Authentifizierung verwendet werden. Der Sicherheitsschlüssel muss den Standard „WebAuthn“ unterstützen.
webauthn_register_key=Sicherheitsschlüssel hinzufügen
webauthn_nickname=Nickname
webauthn_delete_key=Sicherheitsschlüssel entfernen
@@ -1080,9 +1066,7 @@ tree_path_not_found_branch=Pfad %[1]s existiert nicht in Branch %[2]s
tree_path_not_found_tag=Pfad %[1]s existiert nicht in Tag %[2]s
transfer.accept=Ãœbertragung Akzeptieren
-transfer.accept_desc=`Ãœbertragung nach "%s"`
transfer.reject=Ãœbertragung Ablehnen
-transfer.reject_desc=Ãœbertragung nach "%s " abbrechen
transfer.no_permission_to_accept=Du hast keine Berechtigung, diesen Transfer anzunehmen.
transfer.no_permission_to_reject=Du hast keine Berechtigung, diesen Transfer abzulehnen.
@@ -1217,7 +1201,6 @@ releases=Releases
tag=Tag
released_this=hat released
tagged_this=hat getaggt
-file.title=%s an %s
file_raw=Originalformat
file_history=Verlauf
file_view_source=Quelltext anzeigen
@@ -1231,7 +1214,6 @@ ambiguous_runes_header=`Diese Datei enthält mehrdeutige Unicode-Zeichen`
ambiguous_runes_description=`Diese Datei enthält Unicode-Zeichen, die mit anderen Zeichen verwechselt werden können. Wenn du glaubst, dass das absichtlich so ist, kannst du diese Warnung ignorieren. Benutze den „Escape“-Button, um versteckte Zeichen anzuzeigen.`
invisible_runes_line=`Diese Zeile enthält unsichtbare Unicode-Zeichen`
ambiguous_runes_line=`Diese Zeile enthält mehrdeutige Unicode-Zeichen`
-ambiguous_character=`%[1]c [U+%04[1]X] kann mit %[2]c [U+%04[2]X] verwechselt werden`
escape_control_characters=Escapen
unescape_control_characters=Unescapen
@@ -1697,7 +1679,6 @@ issues.dependency.add_error_dep_not_same_repo=Beide Issues müssen sich im selbe
issues.review.self.approval=Du kannst nicht dein eigenen Pull-Request genehmigen.
issues.review.self.rejection=Du kannst keine Änderungen an deinem eigenen Pull-Request anfragen.
issues.review.approve=hat die Änderungen %s genehmigt
-issues.review.comment=hat %s überprüft
issues.review.dismissed=verwarf %ss Review %s
issues.review.dismissed_label=Verworfen
issues.review.left_comment=hat einen Kommentar hinterlassen
@@ -1722,6 +1703,7 @@ issues.review.hide_resolved=Gelöste ausblenden
issues.review.resolve_conversation=Diskussion als "erledigt" markieren
issues.review.un_resolve_conversation=Diskussion als "nicht-erledigt" markieren
issues.review.resolved_by=markierte diese Unterhaltung als gelöst
+issues.review.commented=Kommentieren
issues.assignee.error=Aufgrund eines unerwarteten Fehlers konnten nicht alle Beauftragten hinzugefügt werden.
issues.reference_issue.body=Beschreibung
issues.content_history.deleted=gelöscht
@@ -1793,7 +1775,6 @@ pulls.is_empty=Die Änderungen an diesem Branch sind bereits auf dem Zielbranch.
pulls.required_status_check_failed=Einige erforderliche Prüfungen waren nicht erfolgreich.
pulls.required_status_check_missing=Einige erforderliche Prüfungen fehlen.
pulls.required_status_check_administrator=Als Administrator kannst du diesen Pull-Request weiterhin mergen.
-pulls.blocked_by_approvals=Dieser Pull-Request hat noch nicht genügend Zustimmungen. %d von %d Zustimmungen erteilt.
pulls.blocked_by_rejection=Dieser Pull-Request hat Änderungen, die von einem offiziellen Reviewer angefragt wurden.
pulls.blocked_by_official_review_requests=Dieser Pull Request hat offizielle Review-Anfragen.
pulls.blocked_by_outdated_branch=Dieser Pull Request ist blockiert, da er veraltet ist.
@@ -1835,9 +1816,7 @@ pulls.unrelated_histories=Merge fehlgeschlagen: Der Head des Merges und die Basi
pulls.merge_out_of_date=Merge fehlgeschlagen: Während des Mergens wurde die Basis aktualisiert. Hinweis: Versuche es erneut.
pulls.head_out_of_date=Mergen fehlgeschlagen: Der Head wurde aktualisiert während der Merge erstellt wurde. Tipp: Versuche es erneut.
pulls.has_merged=Fehler: Der Pull-Request wurde gemerged, du kannst den Zielbranch nicht wieder mergen oder ändern.
-pulls.push_rejected=Mergen fehlgeschlagen: Der Push wurde abgelehnt. Überprüfe die Git Hooks für dieses Repository.
pulls.push_rejected_summary=Vollständige Ablehnungsmeldung
-pulls.push_rejected_no_message=Mergen fehlgeschlagen: Der Push wurde abgelehnt, aber es gab keine Fehlermeldung.
Überprüfe die Git Hooks für dieses Repository
pulls.open_unmerged_pull_exists=`Du kannst diesen Pull-Request nicht erneut öffnen, da noch ein anderer (#%d) mit identischen Eigenschaften offen ist.`
pulls.status_checking=Einige Prüfungen sind noch ausstehend
pulls.status_checks_success=Alle Prüfungen waren erfolgreich
@@ -1891,7 +1870,6 @@ milestones.no_due_date=Kein Fälligkeitsdatum
milestones.open=Öffnen
milestones.close=Schließen
milestones.new_subheader=Benutze Meilensteine, um Issues zu organisieren und den Fortschritt darzustellen.
-milestones.completeness=%d%% abgeschlossen
milestones.create=Meilenstein erstellen
milestones.title=Titel
milestones.desc=Beschreibung
@@ -2076,7 +2054,6 @@ settings.push_mirror_sync_in_progress=Aktuell werden Änderungen auf %s gepusht.
settings.site=Webseite
settings.update_settings=Einstellungen speichern
settings.update_mirror_settings=Mirror-Einstellungen aktualisieren
-settings.branches.switch_default_branch=Standardbranch wechseln
settings.branches.update_default_branch=Standardbranch aktualisieren
settings.branches.add_new_rule=Neue Regel hinzufügen
settings.advanced_settings=Erweiterte Einstellungen
@@ -2113,7 +2090,6 @@ settings.pulls.default_delete_branch_after_merge=Standardmäßig bei Pull-Reques
settings.pulls.default_allow_edits_from_maintainers=Änderungen von Maintainern standardmäßig erlauben
settings.releases_desc=Repository-Releases aktivieren
settings.packages_desc=Repository Packages Registry aktivieren
-settings.projects_desc=Repository-Projekte aktivieren
settings.projects_mode_desc=Projekte-Modus (welche Art Projekte angezeigt werden sollen)
settings.projects_mode_repo=Nur Repo-Projekte
settings.projects_mode_owner=Nur Benutzer- oder Organisations-Projekte
@@ -2288,7 +2264,6 @@ settings.event_pull_request_merge=Pull-Request-Merge
settings.event_package=Paket
settings.event_package_desc=Paket wurde in einem Repository erstellt oder gelöscht.
settings.branch_filter=Branch-Filter
-settings.branch_filter_desc=Whitelist für Branches für Push-, Erzeugungs- und Löschevents, als glob Pattern beschrieben. Es werden Events für alle Branches gemeldet, falls das Pattern *
ist, oder falls es leer ist. Siehe die github.com/gobwas/glob Dokumentation für die Syntax (Englisch). Beispiele: master
, {master,release*}
.
settings.authorization_header=Authorization-Header
settings.authorization_header_desc=Wird, falls vorhanden, als Authorization-Header mitgesendet. Beispiele: %s.
settings.active=Aktiv
@@ -2337,10 +2312,6 @@ settings.branches=Branches
settings.protected_branch=Branch-Schutz
settings.protected_branch.save_rule=Regel speichern
settings.protected_branch.delete_rule=Regel löschen
-settings.protected_branch_can_push=Push erlauben?
-settings.protected_branch_can_push_yes=Du kannst pushen
-settings.protected_branch_can_push_no=Du kannst nicht pushen
-settings.branch_protection=Branch-Schutz für Branch „%s“
settings.protect_this_branch=Branch-Schutz aktivieren
settings.protect_this_branch_desc=Verhindert das Löschen und schränkt Git auf Push- und Merge-Änderungen auf dem Branch ein.
settings.protect_disable_push=Push deaktivieren
@@ -2352,13 +2323,11 @@ settings.protect_enable_merge_desc=Jeder mit Schreibzugriff darf die Pull-Reques
settings.protect_check_status_contexts=Statusprüfungen aktivieren
settings.protect_status_check_patterns=Statuscheck-Muster:
settings.protect_status_check_patterns_desc=Gib Muster ein, um festzulegen, welche Statusüberprüfungen durchgeführt werden müssen, bevor Branches in einen Branch, der dieser Regel entspricht, gemerged werden können. Jede Zeile gibt ein Muster an. Muster dürfen nicht leer sein.
-settings.protect_check_status_contexts_desc=Vor dem Mergen müssen Statusprüfungen bestanden werden. Wähle aus, welche Statusprüfungen erfolgreich durchgeführt werden müssen, bevor Branches in einen anderen gemergt werden können, der dieser Regel entspricht. Wenn aktiviert, müssen Commits zuerst auf einen anderen Branch gepusht werden, dann nach bestandener Statusprüfung gemergt oder direkt auf einen Branch gepusht werden, der dieser Regel entspricht. Wenn kein Kontext ausgewählt ist, muss der letzte Commit unabhängig vom Kontext erfolgreich sein.
settings.protect_check_status_contexts_list=Statusprüfungen, die in der letzten Woche für dieses Repository gefunden wurden
settings.protect_status_check_matched=Ãœbereinstimmung
settings.protect_invalid_status_check_pattern=Ungültiges Muster: "%s".
settings.protect_no_valid_status_check_patterns=Keine gültigen Statuscheck-Muster.
settings.protect_required_approvals=Erforderliche Zustimmungen:
-settings.protect_required_approvals_desc=Erlaube das Mergen des Pull-Requests nur mit genügend positiven Reviews.
settings.dismiss_stale_approvals=Entferne alte Genehmigungen
settings.dismiss_stale_approvals_desc=Wenn neue Commits gepusht werden, die den Inhalt des Pull-Requests ändern, werden alte Genehmigungen entfernt.
settings.ignore_stale_approvals=Veraltete Genehmigungen ignorieren
@@ -2366,18 +2335,12 @@ settings.ignore_stale_approvals_desc=Genehmigungen, die für ältere Commits ert
settings.require_signed_commits=Signierte Commits erforderlich
settings.require_signed_commits_desc=Pushes auf diesen Branch ablehnen, wenn Commits nicht signiert oder nicht überprüfbar sind.
settings.protect_branch_name_pattern=Muster für geschützte Branchnamen
-settings.protect_branch_name_pattern_desc=Geschützte Branch-Namensmuster. Siehe die Dokumentation für die Muster-Syntax. Beispiele: main, release/**
settings.protect_patterns=Muster
settings.protect_protected_file_patterns=Geschützte Dateimuster (durch Semikolon ';' getrennt):
-settings.protect_protected_file_patterns_desc=Geschützte Dateien dürfen nicht direkt geändert werden, auch wenn der Benutzer Rechte hat, Dateien in diesem Branch hinzuzufügen, zu bearbeiten oder zu löschen. Mehrere Muster können mit Semikolon (';') getrennt werden. Siehe github.com/gobwas/glob Dokumentation zur Mustersyntax. Beispiele: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Ungeschützte Dateimuster (durch Semikolon ';' getrennt):
-settings.protect_unprotected_file_patterns_desc=Ungeschützte Dateien, die direkt geändert werden dürfen, wenn der Benutzer Schreibzugriff hat, können die Push-Beschränkung umgehen. Mehrere Muster können mit Semikolon (';') getrennt werden. Siehe github.com/gobwas/glob Dokumentation zur Mustersyntax. Beispiele: .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=Schutz aktivieren
-settings.delete_protected_branch=Schutz deaktivieren
settings.update_protect_branch_success=Branchschutzregel "%s" wurde geändert.
settings.remove_protected_branch_success=Branchschutzregel "%s" wurde deaktiviert.
settings.remove_protected_branch_failed=Entfernen der Branchschutzregel "%s" fehlgeschlagen.
-settings.protected_branch_deletion=Branch-Schutz deaktivieren
settings.protected_branch_deletion_desc=Wenn du den Branch-Schutz deaktivierst, können alle Nutzer mit Schreibrechten auf den Branch pushen. Fortfahren?
settings.block_rejected_reviews=Merge bei abgelehnten Reviews blockieren
settings.block_rejected_reviews_desc=Mergen ist nicht möglich, wenn Änderungen durch offizielle Reviewer angefragt werden, auch wenn es genügend Zustimmungen gibt.
@@ -2387,7 +2350,6 @@ settings.block_outdated_branch=Merge blockieren, wenn der Pull-Request veraltet
settings.block_outdated_branch_desc=Mergen ist nicht möglich, wenn der Head-Branch hinter dem Basis-Branch ist.
settings.default_branch_desc=Wähle einen Standardbranch für Pull-Requests und Code-Commits:
settings.merge_style_desc=Merge-Styles
-settings.default_merge_style_desc=Standard Mergeverhalten für Pull Requests:
settings.choose_branch=Branch wählen…
settings.no_protected_branch=Es gibt keine geschützten Branches.
settings.edit_protected_branch=Bearbeiten
@@ -2403,7 +2365,6 @@ settings.tags.protection.allowed.teams=Erlaubte Teams
settings.tags.protection.allowed.noone=Niemand
settings.tags.protection.create=Tag schützen
settings.tags.protection.none=Es gibt keine geschützten Tags.
-settings.tags.protection.pattern.description=Du kannst einen einzigen Namen oder ein globales Schema oder einen regulären Ausdruck verwenden, um mehrere Tags zu schützen. Mehr dazu im Guide für geschützte Tags (Englisch).
settings.bot_token=Bot-Token
settings.chat_id=Chat-ID
settings.thread_id=Thread-ID
@@ -2571,7 +2532,7 @@ branch.delete_desc=Das Löschen eines Branches ist permanent. Obwohl der Branch
branch.deletion_success=Branch "%s" wurde gelöscht.
branch.deletion_failed=Branch "%s" konnte nicht gelöscht werden.
branch.delete_branch_has_new_commits=Der Branch "%s" kann nicht gelöscht werden, da seit dem letzten Merge neue Commits hinzugefügt wurden.
-branch.create_branch=Erstelle Branch %s
+branch.create_branch=Erstelle Branch %s
branch.create_from=`von "%s"`
branch.create_success=Branch "%s" wurde erstellt.
branch.branch_already_exists=Branch "%s" existiert bereits in diesem Repository.
@@ -2597,7 +2558,7 @@ branch.new_branch=Neue Branch erstellen
branch.new_branch_from=Neuen Branch von "%s" erstellen
branch.renamed=Branch %s wurde in %s umbenannt.
-tag.create_tag=Tag %s erstellen
+tag.create_tag=Tag %s erstellen
tag.create_tag_operation=Tag erstellen
tag.confirm_create_tag=Tag erstellen
tag.create_tag_from=Neuen Tag von "%s" erstellen
@@ -2606,7 +2567,6 @@ tag.create_success=Tag "%s" wurde erstellt.
topic.manage_topics=Themen verwalten
topic.done=Fertig
-topic.count_prompt=Du kannst nicht mehr als 25 Themen auswählen
topic.format_prompt=Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) und Punkte ('.') enthalten und bis zu 35 Zeichen lang sein. Nur Kleinbuchstaben sind zulässig.
find_file.go_to_file=Datei suchen
@@ -2704,7 +2664,6 @@ teams.leave.detail=%s verlassen?
teams.can_create_org_repo=Repositories erstellen
teams.can_create_org_repo_helper=Mitglieder können neue Repositories in der Organisation erstellen. Der Ersteller erhält Administrator-Zugriff auf das neue Repository.
teams.none_access=Kein Zugriff
-teams.none_access_helper=Teammitglieder haben keinen Zugriff auf diese Einheit.
teams.general_access=Allgemeiner Zugriff
teams.general_access_helper=Mitgliederberechtigungen werden durch folgende Berechtigungstabelle festgelegt.
teams.read_access=Lesen
@@ -2772,7 +2731,6 @@ last_page=Letzte
total=Gesamt: %d
settings=Administratoreinstellungen
-dashboard.new_version_hint=Gitea %s ist jetzt verfügbar, deine derzeitige Version ist %s. Weitere Details findest du im Blog.
dashboard.statistic=Ãœbersicht
dashboard.system_status=System-Status
dashboard.operation_name=Name der Operation
@@ -2952,12 +2910,10 @@ packages.size=Größe
packages.published=Veröffentlicht
defaulthooks=Standard-Webhooks
-defaulthooks.desc=Webhooks senden automatisch eine HTTP-POST-Anfrage an einen Server, wenn bestimmte Gitea-Events ausgelöst werden. Hier definierte Webhooks sind die Standardwerte, die in alle neuen Repositories kopiert werden. Mehr Infos findest du in der Webhooks-Anleitung (auf Englisch).
defaulthooks.add_webhook=Standard-Webhook hinzufügen
defaulthooks.update_webhook=Standard-Webhook aktualisieren
systemhooks=System-Webhooks
-systemhooks.desc=Webhooks senden automatisch HTTP-POST-Anfragen an einen Server, wenn bestimmte Gitea-Events ausgelöst werden. Hier definierte Webhooks werden auf alle Repositories des Systems übertragen, beachte daher mögliche Performance-Einbrüche. Mehr Infos findest du in der Webhooks-Anleitung (auf Englisch).
systemhooks.add_webhook=System-Webhook hinzufügen
systemhooks.update_webhook=System-Webhook aktualisieren
@@ -3053,15 +3009,6 @@ auths.tips.oauth2.general=OAuth2-Authentifizierung
auths.tips.oauth2.general.tip=Beim Registrieren einer OAuth2-Anwendung sollte die Callback-URL folgendermaßen lauten:
auths.tip.oauth2_provider=OAuth2-Anbieter
auths.tip.nextcloud=Registriere über das "Settings -> Security -> OAuth 2.0 client"-Menü einen neuen "OAuth consumer" auf der Nextcloud-Instanz
-auths.tip.dropbox=Erstelle eine neue App auf https://www.dropbox.com/developers/apps.
-auths.tip.facebook=Erstelle eine neue Anwendung auf https://developers.facebook.com/apps und füge das Produkt „Facebook Login“ hinzu.
-auths.tip.github=Erstelle unter https://github.com/settings/applications/new eine neue OAuth-Anwendung.
-auths.tip.gitlab_new=Erstelle eine neue Anwendung unter https://gitlab.com/-/profile/applications
-auths.tip.google_plus=Du erhältst die OAuth2-Client-Zugangsdaten in der Google-API-Konsole unter https://console.developers.google.com/
-auths.tip.twitter=Gehe auf https://dev.twitter.com/apps, erstelle eine Anwendung und stelle sicher, dass die Option „Allow this application to be used to Sign in with Twitter“ aktiviert ist
-auths.tip.discord=Erstelle unter https://discordapp.com/developers/applications/me eine neue Anwendung.
-auths.tip.gitea=Registriere eine neue OAuth2-Anwendung. Eine Anleitung findest du unter https://docs.gitea.com/development/oauth2-provider/
-auths.tip.yandex=`Erstelle eine neue Anwendung auf https://oauth.yandex.com/client/new. Wähle folgende Berechtigungen aus dem "Yandex.Passport API" Bereich: "Zugriff auf E-Mail-Adresse", "Zugriff auf Benutzeravatar" und "Zugriff auf Benutzername, Vor- und Nachname, Geschlecht"`
auths.tip.mastodon=Gebe eine benutzerdefinierte URL für die Mastodon-Instanz ein, mit der du dich authentifizieren möchtest (oder benutze die standardmäßige)
auths.edit=Authentifikationsquelle bearbeiten
auths.activated=Diese Authentifikationsquelle ist aktiviert
@@ -3223,7 +3170,6 @@ monitor.next=Nächste Ausführung
monitor.previous=Letzte Ausführung
monitor.execute_times=Ausführungen
monitor.process=Laufende Prozesse
-monitor.stacktrace=Stacktraces
monitor.processes_count=%d Prozesse
monitor.download_diagnosis_report=Diagnosebericht herunterladen
monitor.desc=Beschreibung
@@ -3231,8 +3177,6 @@ monitor.start=Startzeit
monitor.execute_time=Ausführungszeit
monitor.last_execution_result=Ergebnis
monitor.process.cancel=Prozess abbrechen
-monitor.process.cancel_desc=Abbrechen eines Prozesses kann Datenverlust verursachen
-monitor.process.cancel_notices=Abbrechen: %s?
monitor.process.children=Subprozesse
monitor.queues=Warteschlangen
@@ -3331,8 +3275,6 @@ raw_minutes=Minuten
[dropzone]
default_message=Zum Hochladen hier klicken oder Datei ablegen.
-invalid_input_type=Dateien dieses Dateityps können nicht hochgeladen werden.
-file_too_big=Dateigröße ({{filesize}} MB) überschreitet die Maximalgröße ({{maxFilesize}} MB).
remove_file=Datei entfernen
[notification]
diff --git a/options/locale/locale_el-GR.ini b/options/locale/locale_el-GR.ini
index 79bdd66058..48610abb34 100644
--- a/options/locale/locale_el-GR.ini
+++ b/options/locale/locale_el-GR.ini
@@ -184,22 +184,16 @@ string.desc=Z - A
[error]
occurred=ΠαÏουσιάστηκε Îνα σφάλμα
-report_message=Αν πιστεÏετε ότι αυτό είναι Îνα Ï€Ïόβλημα στο Gitea, παÏακαλοÏμε αναζητήστε ζητήματα στο GitHub ή ανοίξτε Îνα νÎο ζήτημα εάν είναι απαÏαίτητο.
-missing_csrf=Bad Request: δεν υπάÏχει διακÏιτικό CSRF
-invalid_csrf=Λάθος Αίτημα: μη ÎγκυÏο διακÏιτικό CSRF
not_found=Ο Ï€ÏοοÏισμός δεν βÏÎθηκε.
network_error=Σφάλμα δικτÏου
[startpage]
app_desc=Μια ανώδυνη, αυτο-φιλοξενοÏμενη υπηÏεσία Git
install=ΕÏκολο στην εγκατάσταση
-install_desc=Απλά εκτελÎστε το αÏχείο Ï€ÏογÏάμματος για την πλατφόÏμα σας, χÏήσιμοποιήστε το με το Docker, ή εγκαταστήστε το πακÎτο.
platform=ΠολυπλατφοÏμικό
-platform_desc=Ο Gitea Ï„ÏÎχει οπουδήποτε Go μποÏεί να γίνει compile για: Windows, macOS, Linux, ARM, κλπ. ΕπιλÎξτε αυτό που αγαπάτε!
lightweight=ΕλαφÏÏ
lightweight_desc=Gitea Îχει χαμηλÎÏ‚ ελάχιστες απαιτήσεις και μποÏεί να Ï„ÏÎξει σε Îνα οικονομικό Raspberry Pi. Εξοικονομήστε ενÎÏγεια!
license=Î‘Î½Î¿Î¹ÎºÏ„Î¿Ï ÎºÏŽÎ´Î¹ÎºÎ±
-license_desc=Κατεβάστε το code.gitea.io/gitea! Ελάτε μαζί μας και συνεισφÎÏετε για να κάνετε αυτό το ÎÏγο ακόμα καλÏτεÏο. Δεν είναι ντÏοπή να συνεισφÎÏετε!
[install]
install=Εγκατάσταση
@@ -413,7 +407,6 @@ authorize_title=Εξουσιοδότηση του "%s" για Îχει Ï€Ïόσ
authorization_failed=Αποτυχία εξουσιοδότησης
authorization_failed_desc=Η εξουσιοδότηση απÎτυχε επειδή εντοπίστηκε μια μη ÎγκυÏη αίτηση. ΠαÏακαλοÏμε επικοινωνήστε με το συντηÏητή της εφαÏμογής που Ï€Ïοσπαθήσατε να εξουσιοδοτήσετε.
sspi_auth_failed=Αποτυχία ταυτοποίησης SSPI
-password_pwned=Ο κωδικός Ï€Ïόσβασης που επιλÎξατε είναι σε μια λίστα κλεμμÎνων κωδικών Ï€Ïόσβασης που Ï€ÏοηγουμÎνως εκτÎθηκαν σε παÏαβίαση δημόσιων δεδομÎνων. ΠαÏακαλώ δοκιμάστε ξανά με διαφοÏετικό κωδικό Ï€Ïόσβασης και σκεφτείτε να αλλάξετε αυτόν τον κωδικό Ï€Ïόσβασης όπου Î±Î»Î»Î¿Ï Ï‡Ïησιμοποιείται.
password_pwned_err=Δεν ήταν δυνατή η ολοκλήÏωση του αιτήματος Ï€Ïος το HaveIBeenPwned
[mail]
@@ -619,11 +612,9 @@ applications=ΕφαÏμογÎÏ‚
orgs=ΔιαχείÏιση ΟÏγανισμών
repos=ΑποθετήÏια
delete=ΔιαγÏαφή ΛογαÏιασμοÏ
-twofa=Έλεγχος Ταυτότητας ΔÏο ΠαÏαγόντων
account_link=ΣυνδεδεμÎνοι ΛογαÏιασμοί
organization=ΟÏγανισμοί
uid=UID
-webauthn=Κλειδιά Ασφαλείας
public_profile=Δημόσιο Î Ïοφίλ
biography_placeholder=Πείτε μας λίγο για τον εαυτό σας! (ΜποÏείτε να γÏάψετε με Markdown)
@@ -855,26 +846,21 @@ revoke_oauth2_grant=Ανάκληση Î Ïόσβασης
revoke_oauth2_grant_description=Η ανάκληση Ï€Ïόσβασης για αυτή την εξωτεÏική εφαÏμογή θα αποτÏÎψει αυτή την εφαÏμογή από την Ï€Ïόσβαση στα δεδομÎνα σας. ΣίγουÏα;
revoke_oauth2_grant_success=Η Ï€Ïόσβαση ανακλήθηκε επιτυχώς.
-twofa_desc=Ο Îλεγχος ταυτότητας δÏο παÏαγόντων ενισχÏει την ασφάλεια του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚.
twofa_recovery_tip=Αν χάσετε τη συσκευή σας, θα είστε σε θÎση να χÏησιμοποιήσετε Îνα κλειδί ανάκτησης μιας χÏήσης για να ανακτήσετε την Ï€Ïόσβαση στο λογαÏιασμό σας.
twofa_is_enrolled=Ο λογαÏιασμός σας είναι εγγεγÏαμμÎνος σε Îλεγχο ταυτότητας δÏο παÏαγόντων.
twofa_not_enrolled=Ο λογαÏιασμός σας δεν είναι εγγεγÏαμμÎνος σε Îλεγχο ταυτότητας δÏο παÏαγόντων.
twofa_disable=ΑπενεÏγοποίηση Ταυτοποίησης ΔÏο ΠαÏαμÎÏ„Ïων
-twofa_scratch_token_regenerate=ΑναδημιουÏγία ΔιακÏÎ¹Ï„Î¹ÎºÎ¿Ï ÎœÎ¯Î±Ï‚ ΧÏήσης
twofa_scratch_token_regenerated=Το κλειδί ανάκτησης μιας χÏήσης είναι Ï„ÏŽÏα %s. ΑποθηκεÏστε το σε ασφαλÎÏ‚ μÎÏος, καθώς δε θα εμφανιστεί ξανά.
twofa_enroll=ΕγγÏαφή στην ταυτοποίηση δÏο παÏαγόντων
twofa_disable_note=ΜποÏείτε να απενεÏγοποιήσετε την ταυτοποίηση δÏο παÏαγόντων αν χÏειαστεί.
twofa_disable_desc=Η απενεÏγοποίηση της ταυτοποίησης δÏο παÏαγόντων θα καταστήσει τον λογαÏιασμό σας λιγότεÏο ασφαλή. ΣυνÎχεια;
-regenerate_scratch_token_desc=Αν χάσατε το διακÏιτικό μίας χÏήσης σας ή το Îχετε ήδη χÏησιμοποιήσει για να συνδεθείτε μποÏείτε να το επαναφÎÏετε εδώ.
twofa_disabled=Η ταυτοποίηση δÏο παÏαγόντων Îχει απενεÏγοποιηθεί.
scan_this_image=ΣαÏώστε αυτή την εικόνα με την εφαÏμογή ταυτοποίησης:
or_enter_secret=Ή εισάγετε το μυστικό: %s
then_enter_passcode=Και εισάγετε τον κωδικό που εμφανίζεται στην εφαÏμογή:
passcode_invalid=Ο κωδικός είναι λάθος. Δοκιμάστε ξανά.
-twofa_enrolled=Ο λογαÏιασμός σας Îχει εγγÏαφεί σε ταυτοποίηση δÏο παÏαγόντων. ΑποθηκεÏστε το διακÏιτικό μιας χÏήσης (%s) σε ασφαλÎÏ‚ μÎÏος καθώς εμφανίζεται μόνο μία φοÏά!
twofa_failed_get_secret=Αποτυχία λήψης μυστικοÏ.
-webauthn_desc=Τα κλειδιά ασφαλείας είναι συσκευÎÏ‚ που πεÏιÎχουν κÏυπτογÏαφικά κλειδιά. ΜποÏοÏν να χÏησιμοποιηθοÏν για Îλεγχο ταυτότητας δÏο παÏαγόντων. Τα κλειδιά ασφαλείας Ï€ÏÎπει να υποστηÏίζουν το Ï€Ïότυπο WebAuthn Authn Authenticator.
webauthn_register_key=Î Ïοσθήκη ÎšÎ»ÎµÎ¹Î´Î¹Î¿Ï Î‘ÏƒÏ†Î±Î»ÎµÎ¯Î±Ï‚
webauthn_nickname=Ψευδώνυμο
webauthn_delete_key=ΑφαίÏεση ÎšÎ»ÎµÎ¹Î´Î¹Î¿Ï Î‘ÏƒÏ†Î±Î»ÎµÎ¯Î±Ï‚
@@ -1013,9 +999,7 @@ tree_path_not_found_branch=Η διαδÏομή %[1]s δεν υπάÏχει στ
tree_path_not_found_tag=Η διαδÏομή %[1]s δεν υπάÏχει στην ετικÎτα %[2]s
transfer.accept=Αποδοχή ΜεταφοÏάς
-transfer.accept_desc=`ΜεταφοÏά στο "%s"`
transfer.reject=ΑπόÏÏιψη ΜεταφοÏάς
-transfer.reject_desc=`ΑκÏÏωση μεταφοÏάς σε "%s"`
transfer.no_permission_to_accept=Δεν Îχετε άδεια να αποδεχτείτε αυτή τη μεταφοÏά.
transfer.no_permission_to_reject=Δεν Îχετε άδεια να αποÏÏίψετε αυτή τη μεταφοÏά.
@@ -1148,7 +1132,6 @@ releases=ΚυκλοφοÏίες
tag=ΕτικÎτα
released_this=κυκλοφόÏησε αυτό
tagged_this=Ï€Ïόσθεσε ετικÎτα για το
-file.title=%s στο %s
file_raw=ΑκατÎÏγαστο
file_history=ΙστοÏικό
file_view_source=Î Ïοβολή Πηγαίου
@@ -1162,7 +1145,6 @@ ambiguous_runes_header=`Αυτό το αÏχείο πεÏιÎχει ασαφεί
ambiguous_runes_description=`Αυτό το αÏχείο πεÏιÎχει χαÏακτήÏες Unicode που μποÏεί να συγχÎονται με άλλους χαÏακτήÏες. Αν νομίζετε ότι αυτό είναι σκόπιμο, μποÏείτε να αγνοήσετε με ασφάλεια αυτή την Ï€Ïοειδοποίηση. ΧÏησιμοποιήστε το κουμπί Escape για να τους αποκαλÏψετε.`
invisible_runes_line=`Αυτή η γÏαμμή Îχει αόÏατους χαÏακτήÏες unicode `
ambiguous_runes_line=`Αυτή η γÏαμμή Îχει ασαφείς χαÏακτήÏες unicode `
-ambiguous_character=`ο %[1]c [U+%04[1]X] μποÏεί να μπεÏδευτεί με τον %[2]c [U+%04[2]X]`
escape_control_characters=Escape
unescape_control_characters=Unescape
@@ -1619,7 +1601,6 @@ issues.dependency.add_error_dep_not_same_repo=Και τα δÏο ζητήματ
issues.review.self.approval=Δεν μποÏείτε να εγκÏίνετε το δικό σας pull request.
issues.review.self.rejection=Δεν μποÏείτε να ζητήσετε αλλαγÎÏ‚ στο δικό σας pull request.
issues.review.approve=ενÎκÏινε αυτÎÏ‚ τις αλλαγÎÏ‚ %s
-issues.review.comment=αξιολόγησε %s
issues.review.dismissed=απÎÏÏιψε την αξιολόγηση %s %s
issues.review.dismissed_label=ΑποÏÏίφθηκε
issues.review.left_comment=άφησε Îνα σχόλιο
@@ -1644,6 +1625,7 @@ issues.review.hide_resolved=ΑπόκÏυψη επιλυμÎνων
issues.review.resolve_conversation=Επίλυση συνομιλίας
issues.review.un_resolve_conversation=Ανεπίλυτη συνομιλία
issues.review.resolved_by=σημείωση αυτή την συνομιλία ως επιλυμÎνη
+issues.review.commented=Σχόλιο
issues.assignee.error=Δεν Ï€ÏοστÎθηκαν όλοι οι παÏαλήπτες λόγω απÏοσδόκητου σφάλματος.
issues.reference_issue.body=Σώμα
issues.content_history.deleted=διαγÏάφηκε
@@ -1713,7 +1695,6 @@ pulls.is_empty=Οι αλλαγÎÏ‚ σε αυτόν τον κλάδο είναι
pulls.required_status_check_failed=ΟÏισμÎνοι απαιτοÏμενοι Îλεγχοι δεν ήταν επιτυχείς.
pulls.required_status_check_missing=Λείπουν οÏισμÎνοι απαιτοÏμενοι Îλεγχοι.
pulls.required_status_check_administrator=Ως διαχειÏιστής, μποÏείτε ακόμα να συγχωνεÏσετε αυτό το pull request.
-pulls.blocked_by_approvals=Το pull request δεν Îχει ακόμα αÏκετÎÏ‚ εγκÏίσεις. Δόθηκαν %d από %d εγκÏίσεις.
pulls.blocked_by_rejection=Αυτό το Pull Request Îχει αλλαγÎÏ‚ που ζητοÏνται από Îναν επίσημο εξεταστή.
pulls.blocked_by_official_review_requests=Αυτό το Pull Request Îχει επίσημες αιτήσεις αξιολόγησης.
pulls.blocked_by_outdated_branch=Αυτό το pull request Îχει αποκλειστεί επειδή είναι παÏωχημÎνο.
@@ -1754,9 +1735,7 @@ pulls.unrelated_histories=H Συγχώνευση ΑπÎτυχε: Η κεφαλή
pulls.merge_out_of_date=Η συγχώνευση απÎτυχε: Κατά τη δημιουÏγία της συγχώνευσης, η βάση ενημεÏώθηκε. Συμβουλή: Δοκιμάστε ξανά.
pulls.head_out_of_date=Η συγχώνευση απÎτυχε: Κατά τη δημιουÏγία της συγχώνευσης, το HEAD ενημεÏώθηκε. Συμβουλή: Δοκιμάστε ξανά.
pulls.has_merged=Αποτυχία: Το pull request Îχει συγχωνευθεί, δεν είναι δυνατή η συγχώνευση ξανά ή να αλλάξει ο κλάδος Ï€ÏοοÏισμοÏ.
-pulls.push_rejected=Η συγχώνευση απÎτυχε: Η ώθηση αποÏÏίφθηκε. ΕλÎγξτε τα ΆγκιστÏα Git για αυτό το αποθετήÏιο.
pulls.push_rejected_summary=Μήνυμα ΠλήÏους ΑπόÏÏιψης
-pulls.push_rejected_no_message=H Συγχώνευση AÏ€Îτυχε: Η ώθηση αποÏÏίφθηκε, αλλά δεν υπήÏχε απομακÏυσμÎνο μήνυμα.
ΕλÎγξτε τα ΆγκιστÏα Git για αυτό το αποθετήÏιο
pulls.open_unmerged_pull_exists=`Δεν μποÏείτε να ανοίξετε εκ νÎου, επειδή υπάÏχει Îνα εκκÏεμÎÏ‚ pull request (#%d) με πανομοιότυπες ιδιότητες.`
pulls.status_checking=ΜεÏικοί Îλεγχοι εκκÏεμοÏν
pulls.status_checks_success=Όλοι οι Îλεγχοι ήταν επιτυχείς
@@ -1810,7 +1789,6 @@ milestones.no_due_date=Δεν υπάÏχει ημεÏομηνία παÏάδοσ
milestones.open=Άνοιγμα
milestones.close=Κλείσιμο
milestones.new_subheader=Τα οÏόσημα μποÏοÏν να σας βοηθήσουν να οÏγανώσετε τα ζητήματα και να παÏακολουθείτε την Ï€Ïόοδό τους.
-milestones.completeness=%d%% ΟλοκληÏώθηκε
milestones.create=ΔημιουÏγία ΟÏόσημου
milestones.title=Τίτλος
milestones.desc=ΠεÏιγÏαφή
@@ -2022,7 +2000,6 @@ settings.pulls.default_delete_branch_after_merge=ΔιαγÏαφή του κλά
settings.pulls.default_allow_edits_from_maintainers=Îα επιτÏÎπονται από Ï€Ïοεπιλογή οι αλλαγÎÏ‚ από τους συντηÏητÎÏ‚
settings.releases_desc=ΕνεÏγοποίηση ΚυκλοφοÏιών ΑποθετηÏίου
settings.packages_desc=ΕνεÏγοποίηση ΜητÏώου ΠακÎτων ΑποθετηÏίου
-settings.projects_desc=ΕνεÏγοποίηση ΈÏγων ΑποθετηÏίου
settings.projects_mode_all=Όλα τα ÎÏγα
settings.actions_desc=ΕνεÏγοποίηση ΔÏάσεων ΑποθετηÏίου
settings.admin_settings=Ρυθμίσεις ΔιαχειÏιστή
@@ -2192,7 +2169,6 @@ settings.event_pull_request_merge=Συγχώνευση Pull Request
settings.event_package=ΠακÎτο
settings.event_package_desc=Το πακÎτο δημιουÏγήθηκε ή διαγÏάφηκε σε Îνα αποθετήÏιο.
settings.branch_filter=ΦίλτÏο κλάδου
-settings.branch_filter_desc=Λίστα επιτÏεπόμενων κλάδων για ωθήσεις, δημιουÏγία κλάδων και γεγονότα διαγÏαφής κλάδων, που οÏίζονται ως μοτίβο glob. Εάν είναι κενό ή *
, αναφÎÏονται συμβάντα για όλους τους κλάδους. Δείτε τη τεκμηÏίωσηgithub.com/gobwas/glob για σÏνταξη. ΠαÏαδείγματα: master
, {master,release*}
.
settings.authorization_header=Κεφαλίδα Authorization
settings.authorization_header_desc=Αν υπάÏχει, θα Ï€Ïοστίθεται ως κεφαλίδα authorization στις αιτήσεις HTTP. ΠαÏαδείγματα: %s.
settings.active=ΕνεÏγό
@@ -2243,8 +2219,6 @@ settings.protected_branch.save_rule=Αποθήκευση Κανόνα
settings.protected_branch.delete_rule=ΔιαγÏαφή Κανόνα
settings.protected_branch_can_push=ΕπιτÏÎψτε ώθηση;
settings.protected_branch_can_push_yes=ΜποÏείτε να ωθήσετε
-settings.protected_branch_can_push_no=Δεν μποÏείτε να ωθήσετε
-settings.branch_protection=Î Ïοστασία Κλάδου για το Κλάδο '%s'
settings.protect_this_branch=ΕνεÏγοποίηση Î Ïοστασίας Κλάδου
settings.protect_this_branch_desc=ΑποτÏÎπει τη διαγÏαφή και πεÏιοÏίζει το Git push και συγχώνευση στον κλάδο.
settings.protect_disable_push=ΑπενεÏγοποίηση Îθησης
@@ -2256,30 +2230,24 @@ settings.protect_enable_merge_desc=Οποιοσδήποτε Îχει Ï€Ïόσβ
settings.protect_check_status_contexts=ΕνεÏγοποίηση ΕλÎγχου Κατάστασης
settings.protect_status_check_patterns=Μοτίβα ελÎγχου κατάστασης:
settings.protect_status_check_patterns_desc=ΟÏίστε μοτίβα για να καθοÏίσετε ποιοι Îλεγχοι κατάστασης Ï€ÏÎπει να πεÏάσουν Ï€Ïιν οι κλάδοι να μποÏοÏν να συγχωνευτοÏν σε Îναν κλάδο που ταιÏιάζει με αυτόν τον κανόνα. Κάθε γÏαμμή καθοÏίζει Îνα μοτίβο. Τα μοτίβα δεν μποÏοÏν να είναι κενά.
-settings.protect_check_status_contexts_desc=Απαιτείται Îλεγχος κατάστασης για να πεÏάσει το pull request Ï€Ïιν από τη συγχώνευση. ΕπιλÎξτε ποιοι Îλεγχοι κατάστασης Ï€ÏÎπει να πεÏάσουν Ï€Ïιν κλάδοι μποÏοÏν να συγχωνευτοÏν σε Îναν κλάδο που ταιÏιάζει με αυτόν τον κανόνα. Όταν είναι ενεÏγοποιημÎνο, οι υποβολÎÏ‚ Ï€ÏÎπει Ï€Ïώτα να γίνονται push σε άλλο κλάδο, στη συνÎχεια, να συγχωνεÏονται ή γίνονται push απευθείας σε Îνα κλάδο που ταιÏιάζει με αυτόν τον κανόνα, Î±Ï†Î¿Ï Îχουν ολοκληÏωθεί οι Îλεγχοι κατάστασης. Αν δεν επιλεχθεί κανÎνα πλαίσιο, η τελευταία υποβολή Ï€ÏÎπει να είναι επιτυχής ανεξάÏτητα από το πλαίσιο.
settings.protect_check_status_contexts_list=Έλεγχοι κατάστασης που βÏÎθηκαν την τελευταία εβδομάδα για αυτό το αποθετήÏιο
settings.protect_status_check_matched=ΤαιÏιάζει
settings.protect_invalid_status_check_pattern=Μη ÎγκυÏο μοτίβο ελÎγχου κατάστασης: "%s".
settings.protect_no_valid_status_check_patterns=Μη ÎγκυÏα μοτίβα ελÎγχου κατάστασης.
settings.protect_required_approvals=ΑπαιτοÏμενες εγκÏίσεις:
-settings.protect_required_approvals_desc=ΕπιτÏÎψτε μόνο να συγχωνεÏσετε pull request με αÏκετÎÏ‚ θετικÎÏ‚ κÏιτικÎÏ‚.
settings.dismiss_stale_approvals=ΠαÏάβλεψη καθυστεÏημÎνων εγκÏίσεων
settings.dismiss_stale_approvals_desc=Όταν οι νÎες υποβολÎÏ‚ που αλλάζουν το πεÏιεχόμενο του pull request γίνονται push στο κλάδο, οι παλιÎÏ‚ εγκÏίσεις αποÏÏίπτονται.
settings.require_signed_commits=ΑπαιτοÏνται ΥπογεγÏαμμÎνες ΥποβολÎÏ‚
settings.require_signed_commits_desc=ΑπόÏÏιψη νÎων υποβολών σε αυτόν τον κλάδο εάν είναι μη υπογεγÏαμμÎνες ή μη επαληθεÏσιμες.
settings.protect_branch_name_pattern=Μοτίβο Î ÏοστατευμÎνου Ονόματος Κλάδου
-settings.protect_branch_name_pattern_desc=Μοτίβα ονόματος Ï€ÏοστατευμÎνων κλάδων. Δείτε την τεκμηÏίωση για σÏνταξη μοτίβου. ΠαÏαδείγματα: main, release/**
settings.protect_patterns=Μοτίβα
settings.protect_protected_file_patterns=Μοτίβα Ï€ÏοστατευμÎνων αÏχείων (διαχωÏισμÎνα με εÏωτηματικό ';'):
-settings.protect_protected_file_patterns_desc=Τα Ï€Ïοστατευόμενα αÏχεία δεν επιτÏÎπεται να αλλάξουν άμεσα, ακόμη και αν ο χÏήστης Îχει δικαιώματα να Ï€ÏοσθÎσει, να επεξεÏγαστεί ή να διαγÏάψει αÏχεία σε αυτόν τον κλάδο. ΕπιπλÎων μοτίβα μποÏοÏν να διαχωÏιστοÏν με εÏωτηματικό (';'). Δείτε την τεκμηÏίωση github.com/gobwas/glob για τη σÏνταξη του μοτίβου. Πχ: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Μοτίβα μη Ï€ÏοστατευμÎνων αÏχείων (διαχωÏισμÎνα με εÏωτηματικό ';'):
-settings.protect_unprotected_file_patterns_desc=Μη Ï€ÏοστατευμÎνα αÏχεία που επιτÏÎπεται να αλλάξουν απευθείας εάν ο χÏήστης Îχει Ï€Ïόσβαση εγγÏαφής, παÏακάμπτοντας τον πεÏιοÏισμό ώθησης. ΕπιπλÎων μοτίβα μποÏοÏν να διαχωÏιστοÏν με εÏωτηματικό (';'). Δείτε την τεκμηÏίωση github.com/gobwas/glob για τη σÏνταξη του μοτίβου. Πχ: .drone.yml
, /docs/**/*.txt
.
settings.add_protected_branch=ΕνεÏγοποίηση Ï€Ïοστασίας
settings.delete_protected_branch=ΑπενεÏγοποίηση Ï€Ïοστασίας
settings.update_protect_branch_success=Η Ï€Ïοστασία κλάδου για τον κανόνα "%s" ενημεÏώθηκε.
settings.remove_protected_branch_success=Η Ï€Ïοστασία κλάδου για τον κανόνα "%s" αφαιÏÎθηκε.
settings.remove_protected_branch_failed=Η αφαίÏεση του κανόνα Ï€Ïοστασίας κλάδου "%s" απÎτυχε.
-settings.protected_branch_deletion=ΑπενεÏγοποίηση Î Ïοστασίας Κλάδου
settings.protected_branch_deletion_desc=Η απενεÏγοποίηση της Ï€Ïοστασίας του κλάδου επιτÏÎπει στους χÏήστες με άδεια εγγÏαφής να κάνουν push στον κλάδο. ΣυνÎχεια;
settings.block_rejected_reviews=ΦÏαγή συγχώνευσης αν υπάÏχουν αποÏÏιπτικÎÏ‚ αξιολογήσεις
settings.block_rejected_reviews_desc=Η συγχώνευση δεν θα είναι δυνατή όταν οι αλλαγÎÏ‚ ζητοÏνται από τους επίσημους εξεταστÎÏ‚, ακόμη και αν υπάÏχουν αÏκετÎÏ‚ εγκÏίσεις.
@@ -2289,7 +2257,6 @@ settings.block_outdated_branch=ΦÏαγή συγχώνευσης αν το pull
settings.block_outdated_branch_desc=Η συγχώνευση δεν θα είναι δυνατή όταν ο κλάδος κεφαλής είναι πίσω από τον βασικό κλάδο.
settings.default_branch_desc=ΕπιλÎξτε Îναν Ï€ÏοεπιλεγμÎνο κλάδο αποθετηÏίου για pull requests και υποβολÎÏ‚ κώδικα:
settings.merge_style_desc=Συγχώνευση Στυλ
-settings.default_merge_style_desc=Î ÏοεπιλεγμÎνο στυλ συγχώνευσης για pull requests:
settings.choose_branch=ΕπιλÎξτε Îναν κλάδο…
settings.no_protected_branch=Δεν υπάÏχουν Ï€ÏοστατευμÎνοι κλάδοι.
settings.edit_protected_branch=ΕπεξεÏγασία
@@ -2305,7 +2272,6 @@ settings.tags.protection.allowed.teams=ΕπιτÏεπόμενες ομάδες
settings.tags.protection.allowed.noone=Καμία
settings.tags.protection.create=Î Ïοστασία ΕτικÎτας
settings.tags.protection.none=Δεν υπάÏχουν Ï€ÏοστατευμÎνες ετικÎτες.
-settings.tags.protection.pattern.description=ΜποÏείτε να χÏησιμοποιήσετε Îνα μόνο όνομα ή Îνα μοτίβο Ï„Ïπου glob ή κανονική ÎκφÏαση για να ταιÏιάξετε πολλαπλÎÏ‚ ετικÎτες. Διαβάστε πεÏισσότεÏα στον οδηγό Ï€ÏοστατευμÎνων ετικετών.
settings.bot_token=ΔιακÏιτικό Bot
settings.chat_id=ID Συνομιλίας
settings.thread_id=ID Îήματος
@@ -2472,7 +2438,7 @@ branch.delete_desc=Η διαγÏαφή ενός κλάδου είναι μόνι
branch.deletion_success=Ο κλάδος "%s" διαγÏάφηκε.
branch.deletion_failed=Αποτυχία διαγÏαφής του κλάδου "%s".
branch.delete_branch_has_new_commits=Ο κλάδος "%s" δεν μποÏεί να διαγÏαφεί επειδή Ï€ÏοστÎθηκαν νÎες υποβολÎÏ‚ μετά τη συγχώνευση.
-branch.create_branch=ΔημιουÏγία κλάδου %s
+branch.create_branch=ΔημιουÏγία κλάδου %s
branch.create_from=`από το "%s"`
branch.create_success=Ο κλάδος "%s" δημιουÏγήθηκε.
branch.branch_already_exists=Ο κλάδος "%s" υπάÏχει ήδη σε αυτό το αποθετήÏιο.
@@ -2498,7 +2464,7 @@ branch.new_branch=ΔημιουÏγία νÎου κλάδου
branch.new_branch_from=`ΔημιουÏγία νÎου κλάδου από το "%s"`
branch.renamed=Ο κλάδος %s μετονομάστηκε σε %s.
-tag.create_tag=ΔημιουÏγία ετικÎτας %s
+tag.create_tag=ΔημιουÏγία ετικÎτας %s
tag.create_tag_operation=ΔημιουÏγία ετικÎτας
tag.confirm_create_tag=ΔημιουÏγία ετικÎτας
tag.create_tag_from=`ΔημιουÏγία νÎας ετικÎτας από το "%s"`
@@ -2507,7 +2473,6 @@ tag.create_success=Η ετικÎτα "%s" δημιουÏγήθηκε.
topic.manage_topics=ΔιαχείÏιση Θεμάτων
topic.done=ΟλοκληÏώθηκε
-topic.count_prompt=Δεν μποÏείτε να επιλÎξετε πεÏισσότεÏα από 25 θÎματα
topic.format_prompt=Τα θÎματα Ï€ÏÎπει να ξεκινοÏν με γÏάμμα ή αÏιθμό, μποÏοÏν να πεÏιλαμβάνουν παÏλες ('-') και τελείες ('.'), μποÏεί να είναι μÎχÏι 35 χαÏακτήÏες. Τα γÏάμματα Ï€ÏÎπει να είναι πεζά.
find_file.go_to_file=Αναζήτηση αÏχείου
@@ -2597,7 +2562,6 @@ teams.leave.detail=ΑποχώÏηση από %s;
teams.can_create_org_repo=ΔημιουÏγία αποθετηÏίων
teams.can_create_org_repo_helper=Τα μÎλη μποÏοÏν να δημιουÏγήσουν νÎα αποθετήÏια στον οÏγανισμό. Ο δημιουÏγός θα αποκτήσει Ï€Ïόσβαση διαχειÏιστή στο νÎο αποθετήÏιο.
teams.none_access=Καμία Î Ïόσβαση
-teams.none_access_helper=Τα μÎλη δεν μποÏοÏν να δουν ή να κάνουν οποιαδήποτε άλλη ενÎÏγεια σε αυτή τη μονάδα.
teams.general_access=Γενική Î Ïόσβαση
teams.general_access_helper=Τα δικαιώματα των μελών αποφασίζονται από το παÏακάτω πίνακα αδειών.
teams.read_access=Ανάγνωση
@@ -2663,7 +2627,6 @@ last_page=Τελευταίο
total=ΣÏνολο: %d
settings=Ρυθμίσεις ΔιαχειÏιστή
-dashboard.new_version_hint=Το Gitea %s είναι διαθÎσιμο, Ï„ÏŽÏα εκτελείτε το %s. ΑνατÏÎξτε στο blog για πεÏισσότεÏες λεπτομÎÏειες.
dashboard.statistic=ΠεÏίληψη
dashboard.system_status=Κατάσταση Συστήματος
dashboard.operation_name=Όνομα ΛειτουÏγίας
@@ -2841,12 +2804,10 @@ packages.size=ÎœÎγεθος
packages.published=ΔημοσιευμÎνα
defaulthooks=Î ÏοεπιλεγμÎνα Webhooks
-defaulthooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε Îνα διακομιστή όταν ενεÏγοποιοÏν οÏισμÎνα γεγονότα στο Gitea. Τα Webhooks που οÏίζονται εδώ είναι Ï€ÏοκαθοÏισμÎνα και θα αντιγÏαφοÏν σε όλα τα νÎα αποθετήÏια. Διαβάστε πεÏισσότεÏα στον οδηγό webhooks.
defaulthooks.add_webhook=Î Ïοσθήκη Î ÏοεπιλεγμÎνου Webhook
defaulthooks.update_webhook=ΕνημÎÏωση Î ÏοεπιλεγμÎνου Webhook
systemhooks=Webhooks Συστήματος
-systemhooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε Îνα διακομιστή όταν ενεÏγοποιοÏνται οÏισμÎνα γεγονότα στο Gitea. Τα Webhooks που οÏίζονται εδώ θα ενεÏγοÏν σε όλα τα αποθετήÏια του συστήματος, γι 'αυτό παÏακαλώ εξετάστε τυχόν επιπτώσεις απόδοσης που μποÏεί να Îχει. Διαβάστε πεÏισσότεÏα στον οδηγό webhooks.
systemhooks.add_webhook=Î Ïοσθήκη Webhook Συστήματος
systemhooks.update_webhook=ΕνημÎÏωση Webhook Συστήματος
@@ -2942,14 +2903,6 @@ auths.tips.oauth2.general=Ταυτοποίηση OAuth2
auths.tips.oauth2.general.tip=Κατά την εγγÏαφή μιας νÎας ταυτοποίησης OAuth2, το URL κλήσης/ανακατεÏθυνσης Ï€ÏÎπει να είναι:
auths.tip.oauth2_provider=ΠάÏοχος OAuth2
auths.tip.nextcloud=`ΚαταχωÏήστε Îνα νÎο καταναλωτή OAuth στην υπηÏεσία σας χÏησιμοποιώντας το παÏακάτω Î¼ÎµÎ½Î¿Ï "Settings -> Security -> OAuth 2.0 client"`
-auths.tip.dropbox=ΔημιουÏγήστε μια νÎα εφαÏμογή στο https://www.dropbox.com/developers/apps
-auths.tip.facebook=`ΚαταχωÏήστε μια νÎα εφαÏμογή στο https://developers.facebook.com/apps και Ï€ÏοσθÎστε το Ï€Ïοϊόν "Facebook Login"`
-auths.tip.github=ΚαταχωÏήστε μια νÎα εφαÏμογή OAuth στο https://github.com/settings/applications/new
-auths.tip.google_plus=Αποκτήστε τα διαπιστευτήÏια πελάτη OAuth2 από την κονσόλα API της Google στο https://console.developers.google.com/
-auths.tip.twitter=Πηγαίνετε στο https://dev.twitter.com/apps, δημιουÏγήστε μια εφαÏμογή και βεβαιωθείτε ότι η επιλογή “Allow this application to be used to Sign in with Twitter†είναι ενεÏγοποιημÎνη
-auths.tip.discord=ΚαταχωÏήστε μια νÎα εφαÏμογή στο https://discordapp.com/developers/applications/me
-auths.tip.gitea=ΚαταχωÏήστε μια νÎα εφαÏμογή OAuth2. ΜποÏείτε να βÏείτε τον οδηγό στο https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`ΔημιουÏγήστε μια νÎα εφαÏμογή στο https://oauth.yandex.com/client/new. ΕπιλÎξτε τα ακόλουθα δικαιώματα από την ενότητα "Yandex.Passport API": "Access to email address", "Access to user avatar" και "Access to username, first name and surname, gender"`
auths.tip.mastodon=Εισαγάγετε Îνα Ï€ÏοσαÏμομÎνο URL για την υπηÏεσία mastodon με την οποία θÎλετε να πιστοποιήσετε (ή να χÏησιμοποιήσετε την Ï€ÏοεπιλεγμÎνη)
auths.edit=ΕπεξεÏγασία Πηγής Ταυτοποίησης
auths.activated=Αυτή η Πηγή Ταυτοποίησης είναι ΕνεÏγοποιημÎνη
@@ -3110,7 +3063,6 @@ monitor.next=Επόμενη ÎÏα
monitor.previous=Î ÏοηγοÏμενη ÎÏα
monitor.execute_times=ΕκτελÎσεις
monitor.process=ΕκτελοÏμενες ΔιεÏγασίες
-monitor.stacktrace=Ιχνηλατήσεις Στοίβας
monitor.processes_count=%d ΔιεÏγασίες
monitor.download_diagnosis_report=Λήψη αναφοÏάς διάγνωσης
monitor.desc=ΠεÏιγÏαφή
@@ -3118,8 +3070,6 @@ monitor.start=ÎÏα ΈναÏξης
monitor.execute_time=ΧÏόνος ΕκτÎλεσης
monitor.last_execution_result=ΑποτÎλεσμα
monitor.process.cancel=ΑκÏÏωση διαδικασίας
-monitor.process.cancel_desc=Η ακÏÏωση μιας διαδικασίας μποÏεί να Ï€ÏοκαλÎσει απώλεια δεδομÎνων
-monitor.process.cancel_notices=ΑκÏÏωση: %s;
monitor.process.children=ΘυγατÏικÎÏ‚
monitor.queues=ΟυÏÎÏ‚
@@ -3212,7 +3162,6 @@ raw_minutes=λεπτά
[dropzone]
default_message=ΣÏÏετε αÏχεία ή κάντε κλικ εδώ για να τα ανεβάσετε.
-invalid_input_type=Δεν μποÏείτε να ανεβάσετε αÏχεία Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… Ï„Ïπου.
file_too_big=Το μÎγεθος αÏχείου ({{filesize}} MB) υπεÏβαίνει το μÎγιστο μÎγεθος ({{maxFilesize}} MB).
remove_file=ΑφαίÏεση αÏχείου
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index f3a7a38951..e3b17f9a04 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -159,6 +159,7 @@ filter.public = Public
filter.private = Private
no_results_found = No results found.
+internal_error_skipped = Internal error occurred but is skipped: %s
[search]
search = Search...
@@ -177,6 +178,8 @@ code_search_by_git_grep = Current code search results are provided by "git grep"
package_kind = Search packages...
project_kind = Search projects...
branch_kind = Search branches...
+tag_kind = Search tags...
+tag_tooltip = Search for matching tags. Use '%' to match any sequence of numbers.
commit_kind = Search commits...
runner_kind = Search runners...
no_results = No matching results found.
@@ -218,22 +221,20 @@ string.desc = Z - A
[error]
occurred = An error occurred
-report_message = If you believe that this is a Gitea bug, please search for issues on GitHub or open a new issue if necessary.
-missing_csrf = Bad Request: no CSRF token present
-invalid_csrf = Bad Request: invalid CSRF token
+report_message = If you believe that this is a Gitea bug, please search for issues on GitHub or open a new issue if necessary.
not_found = The target couldn't be found.
network_error = Network error
[startpage]
app_desc = A painless, self-hosted Git service
install = Easy to install
-install_desc = Simply run the binary for your platform, ship it with Docker, or get it packaged.
+install_desc = Simply run the binary for your platform, ship it with Docker, or get it packaged.
platform = Cross-platform
-platform_desc = Gitea runs anywhere Go can compile for: Windows, macOS, Linux, ARM, etc. Choose the one you love!
+platform_desc = Gitea runs anywhere Go can compile for: Windows, macOS, Linux, ARM, etc. Choose the one you love!
lightweight = Lightweight
lightweight_desc = Gitea has low minimal requirements and can run on an inexpensive Raspberry Pi. Save your machine energy!
license = Open Source
-license_desc = Go get code.gitea.io/gitea! Join us by contributing to make this project even better. Don't be shy to be a contributor!
+license_desc = Go get %[2]s! Join us by contributing to make this project even better. Don't be shy to be a contributor!
[install]
install = Installation
@@ -456,7 +457,7 @@ authorize_title = Authorize "%s" to access your account?
authorization_failed = Authorization failed
authorization_failed_desc = The authorization failed because we detected an invalid request. Please contact the maintainer of the app you have tried to authorize.
sspi_auth_failed = SSPI authentication failed
-password_pwned = The password you chose is on a list of stolen passwords previously exposed in public data breaches. Please try again with a different password and consider changing this password elsewhere too.
+password_pwned = The password you chose is on a list of stolen passwords previously exposed in public data breaches. Please try again with a different password and consider changing this password elsewhere too.
password_pwned_err = Could not complete request to HaveIBeenPwned
last_admin = You cannot remove the last admin. There must be at least one admin.
signin_passkey = Sign in with a passkey
@@ -628,6 +629,7 @@ org_still_own_repo = "This organization still owns one or more repositories, del
org_still_own_packages = "This organization still owns one or more packages, delete them first."
target_branch_not_exist = Target branch does not exist.
+target_ref_not_exist = Target ref does not exist %s
admin_cannot_delete_self = You cannot delete yourself when you are an admin. Please remove your admin privileges first.
@@ -953,7 +955,7 @@ passcode_invalid = The passcode is incorrect. Try again.
twofa_enrolled = Your account has been successfully enrolled. Store your single-use recovery key (%s) in a safe place, as it will not be shown again.
twofa_failed_get_secret = Failed to get secret.
-webauthn_desc = Security keys are hardware devices containing cryptographic keys. They can be used for two-factor authentication. Security keys must support the WebAuthn Authenticator standard.
+webauthn_desc = Security keys are hardware devices containing cryptographic keys. They can be used for two-factor authentication. Security keys must support the WebAuthn Authenticator standard.
webauthn_register_key = Add Security Key
webauthn_nickname = Nickname
webauthn_delete_key = Remove Security Key
@@ -1038,6 +1040,7 @@ issue_labels_helper = Select an issue label set.
license = License
license_helper = Select a license file.
license_helper_desc = A license governs what others can and can't do with your code. Not sure which one is right for your project? See Choose a license.
+multiple_licenses = Multiple Licenses
object_format = Object Format
object_format_helper = Object format of the repository. Cannot be changed later. SHA1 is most compatible.
readme = README
@@ -1175,6 +1178,11 @@ migrate.gogs.description = Migrate data from notabug.org or other Gogs instances
migrate.onedev.description = Migrate data from code.onedev.io or other OneDev instances.
migrate.codebase.description = Migrate data from codebasehq.com.
migrate.gitbucket.description = Migrate data from GitBucket instances.
+migrate.codecommit.description = Migrate data from AWS CodeCommit.
+migrate.codecommit.aws_access_key_id = AWS Access Key ID
+migrate.codecommit.aws_secret_access_key = AWS Secret Access Key
+migrate.codecommit.https_git_credentials_username = HTTPS Git Credentials Username
+migrate.codecommit.https_git_credentials_password = HTTPS Git Credentials Password
migrate.migrating_git = Migrating Git Data
migrate.migrating_topics = Migrating Topics
migrate.migrating_milestones = Migrating Milestones
@@ -1750,6 +1758,12 @@ issues.review.hide_resolved = Hide resolved
issues.review.resolve_conversation = Resolve conversation
issues.review.un_resolve_conversation = Unresolve conversation
issues.review.resolved_by = marked this conversation as resolved
+issues.review.commented = Comment
+issues.review.official = Approved
+issues.review.requested = Review pending
+issues.review.rejected = Changes requested
+issues.review.stale = Updated since approval
+issues.review.unofficial = Uncounted approval
issues.assignee.error = Not all assignees was added due to an unexpected error.
issues.reference_issue.body = Body
issues.content_history.deleted = deleted
@@ -1823,7 +1837,8 @@ pulls.is_empty = "The changes on this branch are already on the target branch. T
pulls.required_status_check_failed = Some required checks were not successful.
pulls.required_status_check_missing = Some required checks are missing.
pulls.required_status_check_administrator = As an administrator, you may still merge this pull request.
-pulls.blocked_by_approvals = "This pull request doesn't have enough approvals yet. %d of %d approvals granted."
+pulls.blocked_by_approvals = "This pull request doesn't have enough required approvals yet. %d of %d official approvals granted."
+pulls.blocked_by_approvals_whitelisted = "This pull request doesn't have enough required approvals yet. %d of %d approvals granted from users or teams on the allowlist."
pulls.blocked_by_rejection = "This pull request has changes requested by an official reviewer."
pulls.blocked_by_official_review_requests = "This pull request has official review requests."
pulls.blocked_by_outdated_branch = "This pull request is blocked because it's outdated."
@@ -1913,6 +1928,7 @@ pulls.delete.text = Do you really want to delete this pull request? (This will p
pulls.recently_pushed_new_branches = You pushed on branch %[1]s %[2]s
pull.deleted_branch = (deleted):%s
+pull.agit_documentation = Review documentation about AGit
comments.edit.already_changed = Unable to save changes to the comment. It appears the content has already been changed by another user. Please refresh the page and try editing again to avoid overwriting their changes
@@ -2323,7 +2339,7 @@ settings.event_pull_request_merge = Pull Request Merge
settings.event_package = Package
settings.event_package_desc = Package created or deleted in a repository.
settings.branch_filter = Branch filter
-settings.branch_filter_desc = Branch whitelist for push, branch creation and branch deletion events, specified as glob pattern. If empty or *
, events for all branches are reported. See github.com/gobwas/glob documentation for syntax. Examples: master
, {master,release*}
.
+settings.branch_filter_desc = Branch whitelist for push, branch creation and branch deletion events, specified as glob pattern. If empty or *
, events for all branches are reported. See %[2]s documentation for syntax. Examples: master
, {master,release*}
.
settings.authorization_header = Authorization Header
settings.authorization_header_desc = Will be included as authorization header for requests when present. Examples: %s.
settings.active = Active
@@ -2411,7 +2427,7 @@ settings.protect_status_check_matched = Matched
settings.protect_invalid_status_check_pattern = Invalid status check pattern: "%s".
settings.protect_no_valid_status_check_patterns = No valid status check patterns.
settings.protect_required_approvals = Required approvals:
-settings.protect_required_approvals_desc = Allow only to merge pull request with enough positive reviews.
+settings.protect_required_approvals_desc = Allow only to merge pull request with enough required approvals. Required approvals are either from users or teams who are on the allowlist or anyone with write access.
settings.protect_approvals_whitelist_enabled = Restrict approvals to allowlisted users or teams
settings.protect_approvals_whitelist_enabled_desc = Only reviews from allowlisted users or teams will count to the required approvals. Without approval allowlist, reviews from anyone with write access count to the required approvals.
settings.protect_approvals_whitelist_users = Allowlisted reviewers:
@@ -2423,12 +2439,12 @@ settings.ignore_stale_approvals_desc = Do not count approvals that were made on
settings.require_signed_commits = Require Signed Commits
settings.require_signed_commits_desc = Reject pushes to this branch if they are unsigned or unverifiable.
settings.protect_branch_name_pattern = Protected Branch Name Pattern
-settings.protect_branch_name_pattern_desc = "Protected branch name patterns. See the documentation for pattern syntax. Examples: main, release/**"
+settings.protect_branch_name_pattern_desc = "Protected branch name patterns. See the documentation for pattern syntax. Examples: main, release/**"
settings.protect_patterns = Patterns
settings.protect_protected_file_patterns = "Protected file patterns (separated using semicolon ';'):"
-settings.protect_protected_file_patterns_desc = "Protected files are not allowed to be changed directly even if user has rights to add, edit, or delete files in this branch. Multiple patterns can be separated using semicolon (';'). See github.com/gobwas/glob documentation for pattern syntax. Examples: .drone.yml
, /docs/**/*.txt
."
+settings.protect_protected_file_patterns_desc = "Protected files are not allowed to be changed directly even if user has rights to add, edit, or delete files in this branch. Multiple patterns can be separated using semicolon (';'). See %[2]s documentation for pattern syntax. Examples: .drone.yml
, /docs/**/*.txt
."
settings.protect_unprotected_file_patterns = "Unprotected file patterns (separated using semicolon ';'):"
-settings.protect_unprotected_file_patterns_desc = "Unprotected files that are allowed to be changed directly if user has write access, bypassing push restriction. Multiple patterns can be separated using semicolon (';'). See github.com/gobwas/glob documentation for pattern syntax. Examples: .drone.yml
, /docs/**/*.txt
."
+settings.protect_unprotected_file_patterns_desc = "Unprotected files that are allowed to be changed directly if user has write access, bypassing push restriction. Multiple patterns can be separated using semicolon (';'). See %[2]s documentation for pattern syntax. Examples: .drone.yml
, /docs/**/*.txt
."
settings.add_protected_branch = Enable protection
settings.delete_protected_branch = Disable protection
settings.update_protect_branch_success = Branch protection for rule "%s" has been updated.
@@ -2460,7 +2476,7 @@ settings.tags.protection.allowed.teams = Allowed teams
settings.tags.protection.allowed.noone = No One
settings.tags.protection.create = Protect Tag
settings.tags.protection.none = There are no protected tags.
-settings.tags.protection.pattern.description = You can use a single name or a glob pattern or regular expression to match multiple tags. Read more in the protected tags guide.
+settings.tags.protection.pattern.description = You can use a single name or a glob pattern or regular expression to match multiple tags. Read more in the protected tags guide.
settings.bot_token = Bot Token
settings.chat_id = Chat ID
settings.thread_id = Thread ID
@@ -2640,7 +2656,7 @@ branch.delete_desc = Deleting a branch is permanent. Although the deleted branch
branch.deletion_success = Branch "%s" has been deleted.
branch.deletion_failed = Failed to delete branch "%s".
branch.delete_branch_has_new_commits = Branch "%s" cannot be deleted because new commits have been added after merging.
-branch.create_branch = Create branch %s
+branch.create_branch = Create branch %s
branch.create_from = from "%s"
branch.create_success = Branch "%s" has been created.
branch.branch_already_exists = Branch "%s" already exists in this repository.
@@ -2666,7 +2682,7 @@ branch.new_branch = Create new branch
branch.new_branch_from = Create new branch from "%s"
branch.renamed = Branch %s was renamed to %s.
-tag.create_tag = Create tag %s
+tag.create_tag = Create tag %s
tag.create_tag_operation = Create tag
tag.confirm_create_tag = Create tag
tag.create_tag_from = Create new tag from "%s"
@@ -2842,7 +2858,7 @@ last_page = Last
total = Total: %d
settings = Admin Settings
-dashboard.new_version_hint = Gitea %s is now available, you are running %s. Check the blog for more details.
+dashboard.new_version_hint = Gitea %s is now available, you are running %s. Check the blog for more details.
dashboard.statistic = Summary
dashboard.maintenance_operations = Maintenance Operations
dashboard.system_status = System Status
@@ -2927,6 +2943,7 @@ dashboard.start_schedule_tasks = Start actions schedule tasks
dashboard.sync_branch.started = Branches Sync started
dashboard.sync_tag.started = Tags Sync started
dashboard.rebuild_issue_indexer = Rebuild issue indexer
+dashboard.sync_repo_licenses = Sync repo licenses
users.user_manage_panel = User Account Management
users.new_account = Create User Account
@@ -3034,12 +3051,12 @@ packages.size = Size
packages.published = Published
defaulthooks = Default Webhooks
-defaulthooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here are defaults and will be copied into all new repositories. Read more in the webhooks guide.
+defaulthooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here are defaults and will be copied into all new repositories. Read more in the webhooks guide.
defaulthooks.add_webhook = Add Default Webhook
defaulthooks.update_webhook = Update Default Webhook
systemhooks = System Webhooks
-systemhooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here will act on all repositories on the system, so please consider any performance implications this may have. Read more in the webhooks guide.
+systemhooks.desc = Webhooks automatically make HTTP POST requests to a server when certain Gitea events trigger. Webhooks defined here will act on all repositories on the system, so please consider any performance implications this may have. Read more in the webhooks guide.
systemhooks.add_webhook = Add System Webhook
systemhooks.update_webhook = Update System Webhook
@@ -3134,18 +3151,18 @@ auths.tips = Tips
auths.tips.oauth2.general = OAuth2 Authentication
auths.tips.oauth2.general.tip = When registering a new OAuth2 authentication, the callback/redirect URL should be:
auths.tip.oauth2_provider = OAuth2 Provider
-auths.tip.bitbucket = Register a new OAuth consumer on https://bitbucket.org/account/user/{your-username}/oauth-consumers/new and add the permission 'Account' - 'Read'
+auths.tip.bitbucket = Register a new OAuth consumer on %s and add the permission 'Account' - 'Read'
auths.tip.nextcloud = Register a new OAuth consumer on your instance using the following menu "Settings -> Security -> OAuth 2.0 client"
-auths.tip.dropbox = Create a new application at https://www.dropbox.com/developers/apps
-auths.tip.facebook = Register a new application at https://developers.facebook.com/apps and add the product "Facebook Login"
-auths.tip.github = Register a new OAuth application on https://github.com/settings/applications/new
-auths.tip.gitlab_new = Register a new application on https://gitlab.com/-/profile/applications
-auths.tip.google_plus = Obtain OAuth2 client credentials from the Google API console at https://console.developers.google.com/
+auths.tip.dropbox = Create a new application at %s
+auths.tip.facebook = Register a new application at %s and add the product "Facebook Login"
+auths.tip.github = Register a new OAuth application on %s
+auths.tip.gitlab_new = Register a new application on %s
+auths.tip.google_plus = Obtain OAuth2 client credentials from the Google API console at %s
auths.tip.openid_connect = Use the OpenID Connect Discovery URL "https://{server}/.well-known/openid-configuration" to specify the endpoints
-auths.tip.twitter = Go to https://dev.twitter.com/apps, create an application and ensure that the “Allow this application to be used to Sign in with Twitter†option is enabled
-auths.tip.discord = Register a new application on https://discordapp.com/developers/applications/me
-auths.tip.gitea = Register a new OAuth2 application. Guide can be found at https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex = Create a new application at https://oauth.yandex.com/client/new. Select following permissions from the "Yandex.Passport API" section: "Access to email address", "Access to user avatar" and "Access to username, first name and surname, gender"
+auths.tip.twitter = Go to %s, create an application and ensure that the “Allow this application to be used to Sign in with Twitter†option is enabled
+auths.tip.discord = Register a new application on %s
+auths.tip.gitea = Register a new OAuth2 application. Guide can be found at %s
+auths.tip.yandex = Create a new application at %s. Select following permissions from the "Yandex.Passport API" section: "Access to email address", "Access to user avatar" and "Access to username, first name and surname, gender"
auths.tip.mastodon = Input a custom instance URL for the mastodon instance you want to authenticate with (or use the default one)
auths.edit = Edit Authentication Source
auths.activated = This Authentication Source is Activated
@@ -3701,6 +3718,11 @@ workflow.disable_success = Workflow '%s' disabled successfully.
workflow.enable = Enable Workflow
workflow.enable_success = Workflow '%s' enabled successfully.
workflow.disabled = Workflow is disabled.
+workflow.run = Run Workflow
+workflow.not_found = Workflow '%s' not found.
+workflow.run_success = Workflow '%s' run successfully.
+workflow.from_ref = Use workflow from
+workflow.has_workflow_dispatch = This workflow has a workflow_dispatch event trigger.
need_approval_desc = Need approval to run workflows for fork pull request.
diff --git a/options/locale/locale_es-ES.ini b/options/locale/locale_es-ES.ini
index 4b31116b3e..7d637f3d3a 100644
--- a/options/locale/locale_es-ES.ini
+++ b/options/locale/locale_es-ES.ini
@@ -182,22 +182,16 @@ string.desc=Z - A
[error]
occurred=Ha ocurrido un error
-report_message=Si crees que este es un error de Gitea, por favor busca incidencias en GitHub o abre una nueva incidencia si es necesario.
-missing_csrf=Solicitud incorrecta: sin token CSRF
-invalid_csrf=Solicitud incorrecta: el token CSRF no es válido
not_found=El objetivo no pudo ser encontrado.
network_error=Error de red
[startpage]
app_desc=Un servicio de Git autoalojado y sin complicaciones
install=Fácil de instalar
-install_desc=Simplemente ejecuta el binario para tu plataforma, lánzalo con Dockero consÃguelo empaquetado.
platform=Multiplataforma
-platform_desc=Gitea funciona en cualquier platforma Go puede compilarlo en: Windows, macOS, Linux, ARM, etc. ¡Elige tu favorita!
lightweight=Ligero
lightweight_desc=Gitea tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. ¡Ahorra energÃa!
license=Código abierto
-license_desc=¡Está todo en < code.gitea.io/gitea! Únase contribuyendo a hacer este proyecto todavÃa mejor. ¡No sea tÃmido y colabore!
[install]
install=Instalación
@@ -410,7 +404,6 @@ authorize_title=¿Autorizar a "%s" a acceder a su cuenta?
authorization_failed=Autorización fallida
authorization_failed_desc=La autorización ha fallado porque hemos detectado una solicitud no válida. Por favor, póngase en contacto con el responsable de la aplicación que ha intentado autorizar.
sspi_auth_failed=Fallo en la autenticación SSPI
-password_pwned=La contraseña que eligió está en una lista de contraseñas robadas previamente expuestas en violaciones de datos públicos. Por favor, inténtelo de nuevo con una contraseña diferente y considere cambiar esta contraseña también en otros lugares.
password_pwned_err=No se pudo completar la solicitud a HaveIBeenPwned
[mail]
@@ -616,11 +609,9 @@ applications=Aplicaciones
orgs=Administrar organizaciones
repos=Repositorios
delete=Eliminar cuenta
-twofa=Autenticación de doble factor
account_link=Cuentas vinculadas
organization=Organizaciones
uid=UID
-webauthn=Llaves de Seguridad
public_profile=Perfil público
biography_placeholder=¡Cuéntanos un poco sobre ti mismo! (Puedes usar Markdown)
@@ -715,7 +706,6 @@ add_email_success=La nueva dirección de correo electrónico ha sido añadida.
email_preference_set_success=La preferencia de correo electrónico se ha establecido correctamente.
add_openid_success=La nueva dirección OpenID ha sido añadida.
keep_email_private=Ocultar dirección de correo electrónico
-keep_email_private_popup=Esto ocultará su dirección de correo electrónico de su perfil, asà como cuando haga un pull request o edite un archivo usando la interfaz web. Los commits enviados no serán modificados.
openid_desc=OpenID le permite delegar la autenticación a un proveedor externo.
manage_ssh_keys=Gestionar Claves SSH
@@ -843,7 +833,6 @@ oauth2_client_secret_hint=El secreto no se mostrará de nuevo después de salir
oauth2_application_edit=Editar
oauth2_application_create_description=Las aplicaciones OAuth2 le dan acceso a su aplicación de terceros a cuentas de usuario en esta instancia.
oauth2_application_remove_description=Eliminar una aplicación de OAuth2 evitará que acceda a cuentas de usuario autorizadas en esta instancia. ¿Continuar?
-oauth2_application_locked=Gitea pre-registra algunas aplicaciones de OAuth2 en el arranque si están habilitadas en la configuración. Para prevenir un comportamiento inesperado, estos no pueden ser editados ni removidos. Por favor, consulte la documentación de OAuth2 para más información.
authorized_oauth2_applications=Aplicaciones OAuth2 autorizadas
authorized_oauth2_applications_description=Has concedido acceso a tu cuenta personal de Gitea a estas aplicaciones de terceros. Por favor, revoca el acceso para las aplicaciones que ya no necesitas.
@@ -852,25 +841,19 @@ revoke_oauth2_grant=Revocar acceso
revoke_oauth2_grant_description=Revocar el acceso a esta aplicación impedirá que esta aplicación acceda a sus datos. ¿Está seguro?
revoke_oauth2_grant_success=Acceso revocado correctamente.
-twofa_desc=La autenticación de doble factor mejora la seguridad de su cuenta.
twofa_is_enrolled=Su cuenta actualmente está registrada en la autenticación de doble factor.
twofa_not_enrolled=Tu cuenta no está actualmente inscrita en la autenticación de doble factor.
twofa_disable=Deshabilitar autenticación de doble factor
-twofa_scratch_token_regenerate=Regenerar código de respaldo
-twofa_scratch_token_regenerated=Tu token de scratch es ahora %s. Guárdelo en un lugar seguro, nunca se volverá a mostrar.
twofa_enroll=Inscribirse en la autenticación de doble factor
twofa_disable_note=Puede deshabilitar la autenticación de doble factor si lo necesita.
twofa_disable_desc=Deshabilitar la autenticación de doble factor hará su cuenta menos segura. ¿Continuar?
-regenerate_scratch_token_desc=Si extravió su código de respaldo, o ya lo usó para iniciar sesión, puede restablecerlo aquÃ.
twofa_disabled=La autenticación de doble factor ha sido deshabilitada.
scan_this_image=Escanee esta imagen con su aplicación de autenticación:
or_enter_secret=O introduzca el secreto: %s
then_enter_passcode=E introduzca el código de acceso mostrado en la aplicación:
passcode_invalid=El código de acceso es incorrecto. Vuelva a intentarlo.
-twofa_enrolled=Su cuenta ha sido inscrita en la autenticación de doble factor. ¡Guarde su código de respaldo (%s) en un lugar seguro, ya que sólo se muestra una vez!
twofa_failed_get_secret=No se pudo obtener el secreto.
-webauthn_desc=Las claves de seguridad son dispositivos hardware que contienen claves criptográficas. Pueden ser usados para la autenticación de doble factor. Las claves de seguridad deben soportar el estándar WebAuthn Authenticator.
webauthn_register_key=Añadir clave de seguridad
webauthn_nickname=Apodo
webauthn_delete_key=Eliminar clave de seguridad
@@ -1006,9 +989,7 @@ tree_path_not_found_branch=La ruta %[1]s no existe en la rama %[2]s
tree_path_not_found_tag=La ruta %[1]s no existe en la etiqueta %[2]s
transfer.accept=Aceptar transferencia
-transfer.accept_desc=`Transferir a "%s"`
transfer.reject=Rechazar transferencia
-transfer.reject_desc=`Cancelar transferencia a "%s"`
transfer.no_permission_to_accept=No tienes permiso para aceptar esta transferencia.
transfer.no_permission_to_reject=No tienes permiso para rechazar esta transferencia.
@@ -1141,7 +1122,6 @@ releases=Lanzamientos
tag=Etiqueta
released_this=publicó esto
tagged_this=etiquetó esto
-file.title=%s de %s
file_raw=Original
file_history=Histórico
file_view_source=Ver código fuente
@@ -1155,7 +1135,6 @@ ambiguous_runes_header=`Este archivo contiene caracteres Unicode ambiguos`
ambiguous_runes_description=`Este archivo contiene caracteres Unicode que pueden confundirse con otros caracteres. Si crees que esto es intencional, puedes ignorar esta advertencia. Usa el botón de Escape para revelarlos.`
invisible_runes_line=`Esta lÃnea tiene caracteres unicode invisibles`
ambiguous_runes_line=`Esta lÃnea tiene caracteres unicode ambiguos`
-ambiguous_character=`%[1]c [U+%04[1]X] es confusable con %[2]c [U+%04[2]X]`
escape_control_characters=Escapar
unescape_control_characters=No Escapar
@@ -1612,7 +1591,6 @@ issues.dependency.add_error_dep_not_same_repo=Ambas incidencias deben estar en e
issues.review.self.approval=No puede aprobar su propio pull request.
issues.review.self.rejection=No puede sugerir cambios en su propio pull request.
issues.review.approve=aprobado estos cambios %s
-issues.review.comment=revisado %s
issues.review.dismissed=descartó la revisión de %s %s
issues.review.dismissed_label=Descartado
issues.review.left_comment=dejó un comentario
@@ -1637,6 +1615,7 @@ issues.review.hide_resolved=Ocultar resueltos
issues.review.resolve_conversation=Resolver conversación
issues.review.un_resolve_conversation=Marcar conversación sin resolver
issues.review.resolved_by=ha marcado esta conversación como resuelta
+issues.review.commented=Comentario
issues.assignee.error=No todos los asignados fueron añadidos debido a un error inesperado.
issues.reference_issue.body=Cuerpo
issues.content_history.deleted=borrado
@@ -1706,7 +1685,6 @@ pulls.is_empty=Los cambios en esta rama ya están en la rama de destino. Esto se
pulls.required_status_check_failed=Algunos controles requeridos no han tenido éxito.
pulls.required_status_check_missing=Faltan algunos controles necesarios.
pulls.required_status_check_administrator=Como administrador, aún puede fusionar este Pull Request.
-pulls.blocked_by_approvals=Esta pull request aún no tiene suficientes aprobaciones. %d de %d aprobaciones concedidas.
pulls.blocked_by_rejection=Este pull request tiene cambios solicitados por un revisor oficial.
pulls.blocked_by_official_review_requests=Esta pull request tiene solicitudes de revisión oficiales.
pulls.blocked_by_outdated_branch=Esta pull request está bloqueada porque está desactualizada.
@@ -1747,9 +1725,7 @@ pulls.unrelated_histories=Fusionar Fallidos: El jefe de fusión y la base no com
pulls.merge_out_of_date=Fusión fallida: Mientras se generaba la fusión, la base fue actualizada. Pista: Inténtelo de nuevo.
pulls.head_out_of_date=Fusión fallida: Mientras se generaba la fusión, la cabeza fue actualizada. Pista: Inténtelo de nuevo.
pulls.has_merged=Error: La pull request ha sido fusionada, no puedes fusionarla de nuevo ni cambiar la rama objetivo.
-pulls.push_rejected=Fusión fallida: El push fue rechazado. Revise los Git Hooks para este repositorio.
pulls.push_rejected_summary=Mensaje completo de rechazo
-pulls.push_rejected_no_message=Fusión fallida: El push fue rechazado pero no hubo mensaje remoto.
Revise los Git Hooks para este repositorio
pulls.open_unmerged_pull_exists=`No puede realizar la reapertura porque hay un pull request pendiente (#%d) con propiedades idénticas.`
pulls.status_checking=Algunas comprobaciones están pendientes
pulls.status_checks_success=Todas las comprobaciones han sido exitosas
@@ -1796,7 +1772,6 @@ milestones.no_due_date=Sin fecha lÃmite
milestones.open=Abrir
milestones.close=Cerrar
milestones.new_subheader=Los hitos pueden ayudarle a organizar los problemas y monitorizar su progreso.
-milestones.completeness=%d%% Completado
milestones.create=Crear hito
milestones.title=TÃtulo
milestones.desc=Descripción
@@ -2008,7 +1983,6 @@ settings.pulls.default_delete_branch_after_merge=Eliminar por defecto la rama de
settings.pulls.default_allow_edits_from_maintainers=Permitir ediciones de mantenedores por defecto
settings.releases_desc=Activar lanzamientos del repositorio
settings.packages_desc=Habilitar registro de paquetes de repositorio
-settings.projects_desc=Activar Proyectos de Repositorio
settings.projects_mode_all=Todos los proyectos
settings.actions_desc=Activar Acciones del repositorio
settings.admin_settings=Ajustes de administrador
@@ -2178,7 +2152,6 @@ settings.event_pull_request_merge=Fusionar Pull Request
settings.event_package=Paquete
settings.event_package_desc=Paquete creado o eliminado en un repositorio.
settings.branch_filter=Filtro de rama
-settings.branch_filter_desc=Lista blanca de rama para eventos de push, creación de rama y eliminación de rama, especificados como patrón globo. Si está vacÃo o *
, se reportan eventos para todas las ramas. Ver github.com/gobwas/glob documentación para la sintaxis. Ejemplos: master
, {master,release*}
.
settings.authorization_header=Encabezado de autorización
settings.authorization_header_desc=Se incluirá como encabezado de autorización para solicitudes cuando esté presente. Ejemplo: %s.
settings.active=Activo
@@ -2229,8 +2202,6 @@ settings.protected_branch.save_rule=Guardar regla
settings.protected_branch.delete_rule=Eliminar regla
settings.protected_branch_can_push=¿Permitir hacer push?
settings.protected_branch_can_push_yes=Puede hacer push
-settings.protected_branch_can_push_no=No puede hacer push
-settings.branch_protection=Proteccion de la rama '%s'
settings.protect_this_branch=Activar protección de rama
settings.protect_this_branch_desc=Evita la eliminación y restringe hacer push y fusionar contra la rama.
settings.protect_disable_push=Deshabilitar Push
@@ -2242,13 +2213,11 @@ settings.protect_enable_merge_desc=Cualquiera con acceso de escritura podrá fus
settings.protect_check_status_contexts=Habilitar comprobación de estado
settings.protect_status_check_patterns=Patrones de verificación de estado:
settings.protect_status_check_patterns_desc=Introduzca los patrones para especificar qué comprobaciones de estado deben pasar antes de que las ramas puedan ser fusionadas en una rama que coincida con esta regla. Cada lÃnea especifica un patrón. Los patrones no pueden estar vacÃos.
-settings.protect_check_status_contexts_desc=Requiere verificaciones de estado para pasar antes de fusionar. Elija qué verificaciones de estado deben pasar antes de que las ramas puedan fusionarse en una rama que coincida con esta regla. Cuando se active, los commits primero deben ser empujados a otra rama, y luego fusionados o empujados directamente a una rama que coincida con esta regla luego de que las verificaciones de estado hayan pasado. Si no se selecciona ningún contexto, el último commit debe ser exitoso sin importar el contexto.
settings.protect_check_status_contexts_list=Comprobaciones de estado para este repositorio encontradas durante la semana pasada
settings.protect_status_check_matched=Coincide
settings.protect_invalid_status_check_pattern=Patrón de verificación de estado no válido: "%s".
settings.protect_no_valid_status_check_patterns=No hay patrones de verificación de estado.
settings.protect_required_approvals=Aprobaciones requeridas:
-settings.protect_required_approvals_desc=Permite fusionar sólo los pull request con suficientes comentarios positivos.
settings.dismiss_stale_approvals=Descartar aprobaciones obsoletas
settings.dismiss_stale_approvals_desc=Cuando los nuevos commits que cambien el contenido de la pull request sean empujados a la rama, se descartarán las aprobaciones antiguas.
settings.require_signed_commits=Requiere commits firmados
@@ -2256,15 +2225,10 @@ settings.require_signed_commits_desc=Rechazar push en esta rama si los commits n
settings.protect_branch_name_pattern=Patrón de nombre de la rama protegida
settings.protect_patterns=Patrones
settings.protect_protected_file_patterns=Patrones de archivos protegidos (separados con punto y coma ';'):
-settings.protect_protected_file_patterns_desc=No está permitido cambiar archivos directamente incluso si el usuario tiene permiso para agregar, editar o borrar archivos en esta rama. Múltiples patrones pueden separarse usando punto y coma (';'). Refvisa la documentación de github.com/gobwas/glob para la sintaxis de patrones. Ejemplos: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Patrones de archivos sin protección (separados con punto y coma ';'):
-settings.protect_unprotected_file_patterns_desc=Los archivos sin protección se pueden cambiar directamente si el usuario tiene acceso de escritura, evitando la restricción push. Múltiples patrones pueden separarse usando punto y coma (';'). Vea la documentación de github.com/gobwas/glob para la sintaxis de patrones. Ejemplos: .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=Activar protección
-settings.delete_protected_branch=Desactivar protección
settings.update_protect_branch_success=Se ha actualizado la protección de la rama para la regla "%s".
settings.remove_protected_branch_success=Se ha eliminado la protección de la rama para la regla "%s".
settings.remove_protected_branch_failed=Error al eliminar la regla de protección de rama "%s".
-settings.protected_branch_deletion=Desactivar protección de rama
settings.protected_branch_deletion_desc=Desactivar la protección de la rama permite a los usuarios con permiso de escritura hacer push a la rama. ¿Continuar?
settings.block_rejected_reviews=Bloquear fusión en las revisión rechazadas
settings.block_rejected_reviews_desc=Fusionar no será posible cuando los revisores oficiales soliciten cambios, incluso si hay suficientes aprobaciones.
@@ -2274,7 +2238,6 @@ settings.block_outdated_branch=Bloquear fusión si la pull request está desactu
settings.block_outdated_branch_desc=La fusión no será posible cuando la rama principal esté detrás de la rama base.
settings.default_branch_desc=Seleccione una rama de repositorio por defecto para los pull request y los commits:
settings.merge_style_desc=Estilos de fusión
-settings.default_merge_style_desc=Estilo de fusión por defecto para pull requests:
settings.choose_branch=Elija una rama…
settings.no_protected_branch=No hay ramas protegidas.
settings.edit_protected_branch=Editar
@@ -2290,7 +2253,6 @@ settings.tags.protection.allowed.teams=Equipos permitidos
settings.tags.protection.allowed.noone=Ningún
settings.tags.protection.create=Proteger Etiqueta
settings.tags.protection.none=No hay etiquetas protegidas.
-settings.tags.protection.pattern.description=Puede usar un solo nombre, un patrón de glob o expresión regular para que coincida con varias etiquetas. Lea más en la guÃa de etiquetas protegidas.
settings.bot_token=Token del Bot
settings.chat_id=ID Chat
settings.thread_id=ID del hilo
@@ -2457,7 +2419,7 @@ branch.delete_desc=Eliminar una rama es permanente. Aunque la rama eliminada pue
branch.deletion_success=La rama "%s" ha sido eliminada.
branch.deletion_failed=Error al eliminar la rama "%s".
branch.delete_branch_has_new_commits=La rama "%s" no se puede eliminar porque se han añadido nuevos commits después de la fusión.
-branch.create_branch=Crear rama %s
+branch.create_branch=Crear rama %s
branch.create_from=`de "%s"`
branch.create_success=La rama "%s" ha sido creada.
branch.branch_already_exists=La rama "%s" ya existe en este repositorio.
@@ -2483,7 +2445,7 @@ branch.new_branch=Crear nueva rama
branch.new_branch_from=`Crear nueva rama de "%s"`
branch.renamed=La rama %s fue renombrada a %s.
-tag.create_tag=Crear etiqueta %s
+tag.create_tag=Crear etiqueta %s
tag.create_tag_operation=Crear etiqueta
tag.confirm_create_tag=Crear etiqueta
tag.create_tag_from=`Crear nueva etiqueta de "%s"`
@@ -2492,7 +2454,6 @@ tag.create_success=La etiqueta "%s" ha sido creada.
topic.manage_topics=Administrar temas
topic.done=Hecho
-topic.count_prompt=No puede seleccionar más de 25 temas
topic.format_prompt=Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y puntos ('. ), puede tener hasta 35 caracteres de largo. Las letras deben estar en minúsculas.
find_file.go_to_file=Ir al archivo
@@ -2582,7 +2543,6 @@ teams.leave.detail=¿Irse de %s?
teams.can_create_org_repo=Crear repositorios
teams.can_create_org_repo_helper=Los miembros pueden crear nuevos repositorios en la organización. El creador obtendrá acceso al administrador del nuevo repositorio.
teams.none_access=Sin acceso
-teams.none_access_helper=Los miembros no pueden ver o hacer ninguna otra acción en esta unidad.
teams.general_access=Acceso general
teams.general_access_helper=Los permisos de los miembros se decidirán por debajo de la tabla de permisos.
teams.read_access=Leer
@@ -2648,7 +2608,6 @@ last_page=Última
total=Total: %d
settings=Configuración de Admin
-dashboard.new_version_hint=Gitea %s ya está disponible, estás ejecutando %s. Revisa el blog para más detalles.
dashboard.statistic=Resumen
dashboard.system_status=Estado del sistema
dashboard.operation_name=Nombre de la operación
@@ -2824,12 +2783,10 @@ packages.size=Tamaño
packages.published=Publicado
defaulthooks=Webhooks por defecto
-defaulthooks.desc=Los webhooks automáticamente hacen peticiones HTTP POST a un servidor cuando ciertos eventos de Gitea se activan. Los webhooks definidos aquà son predeterminados y serán copiados en todos los repositorios nuevos. Leer más en la guÃa webhooks.
defaulthooks.add_webhook=Añadir Webhook por defecto
defaulthooks.update_webhook=Actualizar Webhook por defecto
systemhooks=Webhooks del sistema
-systemhooks.desc=Los webhooks automáticamente hacen peticiones HTTP POST a un servidor cuando ciertos eventos de Gitea se activan. Los webhooks definidos aquà actuarán en todos los repositorios del sistema, asà que por favor considere las implicaciones de rendimiento que esto pueda tener. Lea más en la guÃa de webhooks.
systemhooks.add_webhook=Añadir Webhook del Sistema
systemhooks.update_webhook=Actualizar Webhook del Sistema
@@ -2925,14 +2882,6 @@ auths.tips.oauth2.general=Autenticación OAuth2
auths.tips.oauth2.general.tip=Al registrar una nueva autenticación de OAuth2, la URL de devolución de llamada/redirección debe ser:
auths.tip.oauth2_provider=Proveedor OAuth2
auths.tip.nextcloud=`Registre un nuevo consumidor OAuth en su instancia usando el siguiente menú "Configuración-> Seguridad-> cliente OAuth 2.0"`
-auths.tip.dropbox=Crear nueva aplicación en https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Registre una nueva aplicación en https://developers.facebook.com/apps y agregue el producto "Facebook Login"`
-auths.tip.github=Registre una nueva aplicación OAuth en https://github.com/settings/applications/new
-auths.tip.google_plus=Obtener credenciales de cliente OAuth2 desde la consola API de Google en https://console.developers.google.com/
-auths.tip.twitter=Ir a https://dev.twitter.com/apps, crear una aplicación y asegurarse de que la opción "Permitir que esta aplicación sea usada para iniciar sesión con Twitter" está activada
-auths.tip.discord=Registrar una nueva aplicación en https://discordapp.com/developers/applications/me
-auths.tip.gitea=Registrar una nueva aplicación OAuth2. Puede encontrar la guÃa en https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`Crear una nueva aplicación en https://oauth.yandex.com/client/new. Seleccione los siguientes permisos del "Yandex.Passport API": "Access to email address", "Access to user avatar" y "Access to username, first name and surname, gender"`
auths.tip.mastodon=Introduzca una URL de instancia personalizada para la instancia mastodon con la que desea autenticarse (o utilice la predeterminada)
auths.edit=Editar origen de autenticación
auths.activated=Este origen de autenticación ha sido activado
@@ -3093,7 +3042,6 @@ monitor.next=Siguiente
monitor.previous=Anterior
monitor.execute_times=Ejecuciones
monitor.process=Procesos en ejecución
-monitor.stacktrace=Rastros de pila
monitor.processes_count=%d procesos
monitor.download_diagnosis_report=Descargar informe de diagnóstico
monitor.desc=Descripción
@@ -3101,8 +3049,6 @@ monitor.start=Hora de Inicio
monitor.execute_time=Tiempo de ejecución
monitor.last_execution_result=Resultado
monitor.process.cancel=Cancelar el proceso
-monitor.process.cancel_desc=Cancelar un proceso puede ocasionar una pérdida de datos
-monitor.process.cancel_notices=Cancelar: %s?
monitor.process.children=Hijos
monitor.queues=Colas
@@ -3195,7 +3141,6 @@ raw_minutes=minutos
[dropzone]
default_message=Suelte archivos o haga clic aquà para subir.
-invalid_input_type=No puede subir archivos de este tipo.
file_too_big=El tamaño del archivo ({{filesize}} MB) excede el tamaño máximo de ({{maxFilesize}} MB).
remove_file=Eliminar archivo
diff --git a/options/locale/locale_fa-IR.ini b/options/locale/locale_fa-IR.ini
index 5b64b77ba6..38fb70dae0 100644
--- a/options/locale/locale_fa-IR.ini
+++ b/options/locale/locale_fa-IR.ini
@@ -118,17 +118,14 @@ filter.private=خصوصی
[filter]
[error]
-missing_csrf=درخواست بد: بلیط CSRF ندارد
[startpage]
app_desc=یک سرویس گیت بی‌درد سر Ùˆ راØت
install=راه‌اندازی ساده
platform=مستقل از سکو
-platform_desc=گیت همه جا اجرا می‌شود بریم! می‌توانید Windows, macOS, Linux, ARM و ... هر کدام را دوست داشتید انتخاب کنید!
lightweight=ابزارک سبک
lightweight_desc=گیتی با Øداقل منابع میتوانید برای روی دستگاه Raspberry Pi اجرا شود Ùˆ مصر٠انرژی شما را کاهش دهد!
license=متن باز
-license_desc=برو به code.gitea.io/gitea! به ملØÙ‚ شوید با مشارکت کردن برای این Ú©Ù‡ این پروژه بهتر شود. برای مشارکت کردن خجالت نکشید!
[install]
install=نصب و راه اندازی
@@ -490,7 +487,6 @@ applications=برنامه‌ها
orgs=مدیریت سازمان‌ها
repos=مخازن
delete=ØØ°Ù Øساب کاربری
-twofa=اØراز هویت دوگانه
account_link=Øساب‌های مرتبط
organization=سازمان ها
@@ -661,21 +657,17 @@ revoke_key=ابطال
revoke_oauth2_grant=ابطال دسترسی
revoke_oauth2_grant_description=لغو دسترسی برای این برنامه شخص ثالث از دسترسی این برنامه به داده های شما جلوگیری می کند. شما مطمئن هستید؟
-twofa_desc=اØراز هویت دو مرØله ای امنیت Øساب شما را اÙزایش میدهد.
twofa_is_enrolled=اØراز هویت دو مرØله ای برای Øساب شما اجرامیشود.
twofa_not_enrolled=Øساب کاربری شما اکنون اØراز هویت دو مرØله ای ندارد.
twofa_disable=غیرÙعال‌کردن اØراز هویت دو مرØله ای
-twofa_scratch_token_regenerate=ساخت مجدد Scratch Token
twofa_enroll=Ùعال‌کردن اØراز هویت دوگانه
twofa_disable_note=در صورت لزوم، شما Ù…ÛŒ توانید اØراز هویت دو مرØله ای را غیر Ùعال کنید.
twofa_disable_desc=غیر Ùعال کردن اØراز هویت دو مرØله ای امنیت Øساب کاربری شما را کمتر می‌کند. آیا ادامه می‌دهید؟
-regenerate_scratch_token_desc=اگر شما token چک‌نویس خود را گم کرده اید می‌توانید پس از ورود آن‌را reset کنید.
twofa_disabled=اØراز هویت دو مرØله ای غیر Ùعال گشت.
scan_this_image=این تصویر را با برنامه اØراز هویت خود اسکن نمایید:
or_enter_secret=و یا رمز را وارد کنید: %s
then_enter_passcode=و کد ورود نمایش داده شده در درخواست را وارد کنید:
passcode_invalid=کد ورود نامعتبر است. مجددا تلاش نمایید.
-twofa_enrolled=ورود به Øسابت کاربری دو مرØله ای Ùعال شد. لطÙا token خود را (%s) نگهداری کنید. لذا Ùقط یک بار نمایش داده می‌شود!
twofa_failed_get_secret=خطا در دریاÙت رمز.
@@ -785,9 +777,7 @@ blame_prior=قبل از این تغییر، سرزنش را مشاهده کنی
transfer.accept=تایید انتقال
-transfer.accept_desc=انتقال به %s
transfer.reject=رد انتقال
-transfer.reject_desc=رد انتقال به %s
desc.private=خصوصی
desc.public=عمومی
@@ -899,7 +889,6 @@ release=نسخه منتشر شده
releases=انتشارها
tag=برچسب
released_this=منتشر کرده است
-file.title=%s در %s
file_raw=خام
file_history=تاریخچه
file_view_source=نمایش منبع
@@ -1245,7 +1234,6 @@ issues.dependency.add_error_dep_not_same_repo=هر دو موضوع باید از
issues.review.self.approval=شما نمی‌توانید تقاضای واکشی خود را تایید کنید.
issues.review.self.rejection=شما نمی‌توانید تقاضا تغییرات تقاضای واکشی خود را تغییر دهید.
issues.review.approve=این تغییرات را تایید شدند %s
-issues.review.comment=بازبینی شدند %s
issues.review.dismissed=بررسی %s %s را رد شده
issues.review.dismissed_label=رها شده
issues.review.left_comment=یک نظر ثبت کرد
@@ -1266,6 +1254,7 @@ issues.review.hide_resolved=مخÙÛŒ کردن ØÙ„ شده ها
issues.review.resolve_conversation=مکالمه را بعنوان ØÙ„ شده علامت گذاری کردن
issues.review.un_resolve_conversation=مکالمه را بعنوان ØÙ„ نشده علامت گذاری کردن
issues.review.resolved_by=علامت گذاری این مکالمه بعنوان ØÙ„ شده
+issues.review.commented=دیدگاه
issues.assignee.error=به دلیل خطای غیرمنتظره همه تکالی٠اضاÙÙ‡ نشد.
issues.reference_issue.body=Body
issues.content_history.deleted=Øذ٠شده
@@ -1375,7 +1364,6 @@ milestones.closed=%s بسته شد
milestones.no_due_date=بدون موعد مقرر
milestones.open=باز
milestones.close=بستن
-milestones.completeness=%d%% کامل شده است
milestones.create=ایجاد نقطه عطÙ
milestones.title=عنوان
milestones.desc=شرØ
@@ -1539,7 +1527,6 @@ settings.pulls_desc=Ùعال کردن تقاضای واکشی مخزن
settings.pulls.ignore_whitespace=نادیده گرÙتن لیست سÙید برای تداخل ها
settings.pulls.enable_autodetect_manual_merge=ادغام دستی تشخیص خودکار را Ùعال کنید (توجه: در برخی موارد خاص، قضاوت نادرست ممکن است رخ دهد)
settings.pulls.default_delete_branch_after_merge=پس از ادغام به طور پیش Ùرض شاخه درخواست pull را Øذ٠کنید
-settings.projects_desc=Ùعال کردن پروژه های انبار
settings.admin_settings=تنظیمات مدیران
settings.admin_enable_health_check=Ùعال کردن بررسی سلامت مخزن (git fsck)
settings.admin_enable_close_issues_via_commit_in_any_branch=اسنداد یک مسئله با کامیت آن شاخه را با غیر پیش Ùرض تبدیل می‌کند
@@ -1685,7 +1672,6 @@ settings.event_pull_request_review_desc=درخواست pull تایید شده،
settings.event_pull_request_sync=درخواست pull همگام شده
settings.event_pull_request_sync_desc=درخواست کشش همگام شده است.
settings.branch_filter=صاÙÛŒ شاخه
-settings.branch_filter_desc=Ùهرست سÙید شاخه برای رویدادهای pushØŒ ایجاد شاخه Ùˆ Øذ٠شاخه، Ú©Ù‡ به عنوان الگوی glob مشخص شده است. اگر خالی یا *
باشد، رویدادها برای همه شاخه ها گزارش می شوند. برای syntax به اسناد github.com/gobwas/glob مراجعه کنید. مثال‌ها: master
، {master,release*}
.
settings.active=Ùعال
settings.active_helper=اطلاعات درباره کشیده شدن ماشه رویدادها به این نشانی هوک تØت وب ارسال خواهد شد.
settings.add_hook_success=یک هوک تØت وب جدید اÙزوده شده است.
@@ -1714,8 +1700,6 @@ settings.branches=شاخه‎ها
settings.protected_branch=ØÙاظت از شاخه
settings.protected_branch_can_push=اجازه درج؟
settings.protected_branch_can_push_yes=شما می‎توانید درج کنید
-settings.protected_branch_can_push_no=شما نمی‎توانید درج کنید
-settings.branch_protection=Ù…ØاÙظ شاخه برای شاخه‌ی '%s'
settings.protect_this_branch=Ùعال کردن ØÙاظت از شاخه
settings.protect_this_branch_desc=جلوگیری از ØØ°Ù Ùˆ Ù…Øدود کردن درج Ùˆ ادغام Git به شاخه.
settings.protect_disable_push=غیرÙعال کردن درج
@@ -1723,17 +1707,14 @@ settings.protect_disable_push_desc=هیچ موردی اجازه درج در ای
settings.protect_enable_push=Ùعال کردن درج
settings.protect_enable_push_desc=هرکسی که دسترسی به نوشتن داشته باشد مجاز خواهد بود به این شاخه درج کند (اما نه درج اجباری).
settings.protect_check_status_contexts=Ùعال کردن Øالات بررسی
-settings.protect_check_status_contexts_desc=قبل از ادغام باید بررسی وضعیت انجام شود. انتخاب کنید Ú©Ù‡ بررسی وضعیت باید قبل از ادغام شاخه‌ها در شاخه‌ای Ú©Ù‡ با این قانون مطابقت دارد، انجام شود. هنگامی Ú©Ù‡ Ùعال است، commit ها باید ابتدا به شاخه دیگری منتقل شوند، سپس پس از بررسی وضعیت، ادغام یا مستقیماً به شاخه ای Ú©Ù‡ با این قانون مطابقت دارد، هدایت شوند. اگر هیچ زمینه ای انتخاب نشده باشد، آخرین commit بدون توجه به زمینه باید موÙقیت آمیز باشد.
settings.protect_check_status_contexts_list=آخرین بررسی Øالات این مخزن در Ù‡Ùته گذشته اتÙاق اÙتاده است
settings.protect_required_approvals=نیازمند تاییدیه:
-settings.protect_required_approvals_desc=Ùقط مجاز به ادغام تقاضای واکشی با بررسی های مثبت کاÙÛŒ Ù…ÛŒ شوند.
settings.dismiss_stale_approvals=تاییدیه های قدیمی را رد کنید
settings.dismiss_stale_approvals_desc=وقتی commit های جدیدی Ú©Ù‡ Ù…Øتوای درخواست pull را تغییر می‌دهند به شاخه ارسال می‌شوند، تأییدیه‌های قدیمی رد می‌شوند.
settings.require_signed_commits=نیاز به commit های امضا شده
settings.require_signed_commits_desc=در صورتی که push ها به این شاخه بدون امضا یا غیرقابل تأیید باشند، رد شوند.
settings.add_protected_branch=Ùعال‌سازی Ù…ØاÙظ
settings.delete_protected_branch=غیر Ùعال‌سازی Ù…ØاÙظ
-settings.protected_branch_deletion=غیرÙعال‌کردن ØÙاظت از شاخه
settings.protected_branch_deletion_desc=غیر‌Ùعال کردن Ù…ØاÙظت از شاخه به کاربرانی Ú©Ù‡ دسترسی نوشتن دارند اجازه درج در شاخه را می‌دهد. آیا ادامه می‌دهید؟
settings.block_rejected_reviews=ادغام نظرات رد شده را مسدود شود
settings.block_rejected_reviews_desc=ادغام در صورت درخواست تغییرات توسط بازبینان رسمی امکان پذیر نخواهد بود، Øتی اگر تأییدیه های کاÙÛŒ وجود داشته باشد.
@@ -1742,7 +1723,6 @@ settings.block_on_official_review_requests_desc=زمانی که درخواست
settings.block_outdated_branch=اگر درخواست pull قدیمی است، ادغام را مسدود شود
settings.block_outdated_branch_desc=وقتی سرشاخه پشت شاخه پایه باشد، ادغام امکان پذیر نخواهد بود.
settings.default_branch_desc=شاخه اصلی مخزن را برای تقاضا واکشی و کامیت کد ها انتخاب نمایید:
-settings.default_merge_style_desc=سبک ادغام پیش Ùرض برای درخواست های pull:
settings.choose_branch=شاخه اصلی مخزن را برای تقاضا واکشی و کامیت کد ها انتخاب نمایید:
settings.no_protected_branch=اینجا هیچ شاخه Ù…ØاÙظت شده ای وجود ندارد.
settings.edit_protected_branch=ویرایش
@@ -1894,7 +1874,7 @@ release.add_tag=Ùقط تگ ایجاد کنید
branch.name=نام شاخه
branch.delete_head=ØØ°Ù
branch.delete_html=Øذ٠شاخه
-branch.create_branch=ساختن شاخه %s
+branch.create_branch=ساختن شاخه %s
branch.deleted_by=Øذ٠شده توسط %s
branch.included_desc=این شاخه بخشی از شاخه پیش Ùرض است
branch.included=مشمول شده
@@ -1905,12 +1885,11 @@ branch.create_branch_operation=ایجاد شاخه
branch.new_branch=شاخه جدید ایجاد کنید
branch.renamed=شاخه %s قبلا به %s تغییر کرده است.
-tag.create_tag=تگ %s ایجاد کنید
+tag.create_tag=تگ %s ایجاد کنید
topic.manage_topics=مدیریت موضوعات
topic.done=انجام شد
-topic.count_prompt=شما نمی توانید بیش از 25 موضوع انتخاب کنید
error.csv.too_large=نمی توان این Ùایل را رندر کرد زیرا بسیار بزرگ است.
@@ -2275,13 +2254,6 @@ auths.tips=ﻧﮑﺎﺕ
auths.tips.oauth2.general=اØراز هویت OAuth2
auths.tip.oauth2_provider=تامین کننده OAuth2
auths.tip.nextcloud=با استÙاده از منوی زیر "تنظیمات -> امنیت -> مشتری OAuth 2.0" مصر٠کننده OAuth جدیدی را در نمونه خود ثبت کنید
-auths.tip.dropbox=یک برنامه جدید در https://www.dropbox.com/developers/apps بسازید
-auths.tip.facebook=`یک برنامه جدید در https://developers.facebook.com/apps بسازید برای ورود از طریق Ùیس بوک قسمت Ù…Øصولات "Facebook Login"`
-auths.tip.github=یک برنامه OAuth جدید در https://github.com/settings/applications/new ثبت کنید
-auths.tip.google_plus=اطلاعات مربوط به مشتری OAuth2 را از کلاینت API Google در https://console.developers.google.com/
-auths.tip.twitter=به https://dev.twitter.com/apps بروید ØŒ برنامه ای ایجاد کنید Ùˆ اطمینان Øاصل کنید Ú©Ù‡ گزینه "اجازه استÙاده از این برنامه برای ورود به سیستم با Twitter" را Ùعال کنید
-auths.tip.discord=یک برنامه جدید را در https://discordapp.com/developers/applications/me ثبت کنید
-auths.tip.yandex=`یک برنامه جدید در https://oauth.yandex.com/client/new ایجاد کنید. مجوزهای زیر را از بخش "Yandex.Passport API" انتخاب کنید: "دسترسی به آدرس ایمیل"، "دسترسی به آواتار کاربر" و "دسترسی به نام کاربری، نام و نام خانوادگی، جنسیت"`
auths.tip.mastodon=یک URL نمونه سÙارشی برای نمونه ماستودون Ú©Ù‡ Ù…ÛŒ خواهید با آن اØراز هویت کنید وارد کنید (یا از یک پیش Ùرض استÙاده کنید)
auths.edit=ویرایش منبع اØراز هویت
auths.activated=این منبع اØراز هویت Ùعال شده است
@@ -2429,8 +2401,6 @@ monitor.desc=شرØ
monitor.start=زمان شروع
monitor.execute_time=زمان مورد نیاز برای اجرا
monitor.process.cancel=لغو Ùرآیند
-monitor.process.cancel_desc=لغو کردن یک Ùرآیند ممکن است باعث از دست رÙتن داده ها شود
-monitor.process.cancel_notices=لغو: %s؟
monitor.process.children=Ùرزندان
monitor.queues=ص٠ها
@@ -2515,7 +2485,6 @@ raw_minutes=دقیقه
[dropzone]
default_message=Ùایل را در این Ù…ØÙ„ رها کنید یا دکمه ÛŒ آپلود یا بارگزاری را Ùشار دهید.
-invalid_input_type=شما قادر به ارسال Ùایل های از این نوع نیستید.
file_too_big=Øجم Ùایل ({{filesize}} MB) بیش از Øداکثر مجاز است ({{maxFilesize}} مگابایت).
remove_file=Øذ٠پرونده
diff --git a/options/locale/locale_fi-FI.ini b/options/locale/locale_fi-FI.ini
index 4563612040..200e104f46 100644
--- a/options/locale/locale_fi-FI.ini
+++ b/options/locale/locale_fi-FI.ini
@@ -133,8 +133,6 @@ filter.private=Yksityinen
[error]
occurred=Virhe tapahtui
-missing_csrf=Virheellinen pyyntö: CSRF-tunnusta ei ole olemassa
-invalid_csrf=Virheellinen pyyntö: Virheellinen CSRF-tunniste
not_found=Kohdetta ei löytynyt.
network_error=Verkkovirhe
@@ -142,11 +140,9 @@ network_error=Verkkovirhe
app_desc=Kivuton, itsehostattu Git-palvelu
install=Helppo asentaa
platform=Alustariippumaton
-platform_desc=Gitea käy missä tahansa alustassa, johon Go kykenee kääntämään. Windows, macOS, Linux, ARM, jne. Valitse omasi!
lightweight=Kevyt
lightweight_desc=Gitealla on vähäiset vähimmäisvaatimukset, joten se toimii jopa halvassa Raspberry Pi:ssä. Säästä koneesi energiaa!
license=Avoin lähdekoodi
-license_desc=Mene osoitteeseen code.gitea.io/gitea! Liity mukaan tekemään projektista entistäkin parempi. Älä ujostele avustamista!
[install]
install=Asennus
@@ -451,10 +447,8 @@ applications=Sovellukset
orgs=Hallitse organisaatioita
repos=Repot
delete=Poista tili
-twofa=Kaksivaiheinen todennus
account_link=Linkitetyt tilit
organization=Organisaatiot
-webauthn=Turva-avaimet
public_profile=Julkinen profiili
password_username_disabled=Ei-paikalliset käyttäjät eivät voi muuttaa käyttäjätunnustaan. Ole hyvä ja ota yhteyttä sivuston ylläpitäjään saadaksesi lisätietoa.
@@ -606,14 +600,12 @@ oauth2_regenerate_secret_hint=Kadotitko secretin?
oauth2_application_edit=Muokkaa
-twofa_desc=Kaksivaiheinen todennus parantaa tilisi turvallisuutta.
twofa_is_enrolled=Tilisi käyttää kaksivaiheista vahvistusta.
twofa_not_enrolled=Tilisi ei tällä hetkellä käytä kaksivaiheista vahvistusta.
twofa_enroll=Ota kaksivaiheinen vahvistus käyttöön
twofa_disabled=Kaksivaiheinen todennus on otettu pois käytöstä.
scan_this_image=Skannaa tämä kuva tunnistautumissovelluksellasi:
or_enter_secret=Tai kirjoita salainen avain: %s
-twofa_enrolled=Tiliisi on otettu käyttöön kaksivaiheinen vahvistus. Ota palautustunnus (%s) talteen turvalliseen paikkaan, sillä se näytetään vain kerran!
webauthn_nickname=Nimimerkki
@@ -956,10 +948,12 @@ issues.dependency.remove_info=Poistä tämä riippuvuus
issues.review.self.approval=Et voi hyväksyä omia vetopyyntöjä.
issues.review.self.rejection=Et voi pyytää muutoksia omaan vetopyyntöön.
issues.review.approve=hyväksyi nämä muutokset %s
+issues.review.comment=Kommentoi
issues.review.left_comment=jätti kommentin
issues.review.pending=Odottaa
issues.review.show_resolved=Näytä ratkaisu
issues.review.hide_resolved=Piilota ratkaisu
+issues.review.commented=Kommentoi
issues.reference_issue.body=Kuvaus
issues.content_history.deleted=poistettu
issues.content_history.edited=muokattu
@@ -1184,7 +1178,6 @@ settings.deploy_key_deletion_desc=Julkaisuavaimen poistaminen kumoaa sen pääsy
settings.deploy_key_deletion_success=Julkaisuavain on poistettu.
settings.branches=Haarat
settings.protected_branch=Haaran suojaus
-settings.branch_protection=Haaran '%s' suojaus
settings.protect_this_branch=Ota haaran suojaus käyttöön
settings.protect_required_approvals=Vaadittavat hyväksynnät:
settings.choose_branch=Valitse haara…
@@ -1287,7 +1280,7 @@ release.downloads=Lataukset
branch.name=Haaran nimi
branch.delete_head=Poista
-branch.create_branch=Luo haara %s
+branch.create_branch=Luo haara %s
@@ -1672,7 +1665,6 @@ raw_minutes=minuuttia
[dropzone]
default_message=Pudota tiedostot tähän tai klikkaa aluetta ladataksesi tiedoston.
-invalid_input_type=Tämäntyyppisiä tiedostoja ei voi ladata.
remove_file=Poista tiedosto
[notification]
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index 2125552c26..1ce04640e3 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -159,6 +159,7 @@ filter.public=Public
filter.private=Privé
no_results_found=Aucun résultat trouvé.
+internal_error_skipped=Une erreur interne est survenue, mais ignorée : %s
[search]
search=Rechercher…
@@ -177,6 +178,8 @@ code_search_by_git_grep=Les résultats de recherche de code actuels sont fournis
package_kind=Chercher des paquets…
project_kind=Chercher des projets…
branch_kind=Chercher des branches…
+tag_kind=Chercher des étiquettes…
+tag_tooltip=Cherchez des étiquettes correspondantes. Utilisez « % » pour rechercher n’importe quelle suite de nombres.
commit_kind=Chercher des révisions…
runner_kind=Chercher des exécuteurs…
no_results=Aucun résultat correspondant trouvé.
@@ -218,22 +221,20 @@ string.desc=Z - A
[error]
occurred=Une erreur s’est produite
-report_message=Si vous pensez qu'il s'agit d'un bug Gitea, veuillez consulter notre board GitHub ou ouvrir un nouveau ticket si nécessaire.
-missing_csrf=Requête incorrecte: aucun jeton CSRF présent
-invalid_csrf=Requête incorrecte : jeton CSRF invalide
+report_message=Si vous pensez qu’il s’agit d’un bug Gitea, veuillez consulter notre board GitHub ou ouvrir un nouveau ticket si nécessaire.
not_found=La cible n'a pu être trouvée.
network_error=Erreur réseau
[startpage]
app_desc=Un service Git auto-hébergé sans prise de tête
install=Facile à installer
-install_desc=Il suffit de lancer l’exécutable adapté à votre plateforme, le déployer avec Docker ou de l’installer depuis un gestionnaire de paquet.
+install_desc=Il suffit de lancer l’exécutable adapté à votre plateforme, le déployer avec Docker ou de l’installer depuis un gestionnaire de paquet.
platform=Multi-plateforme
-platform_desc=Gitea tourne partout où Go peut être compilé : Windows, macOS, Linux, ARM, etc. Choisissez votre préféré !
+platform_desc=Gitea tourne partout où Go peut être compilé : Windows, macOS, Linux, ARM, etc. Choisissez votre préféré !
lightweight=Léger
lightweight_desc=Gitea utilise peu de ressources. Il peut même tourner sur un Raspberry Pi très bon marché. Économisez l'énergie de vos serveurs !
license=Open Source
-license_desc=Toutes les sources sont sur GitHub ! Rejoignez-nous et contribuez à rendre ce projet encore meilleur!
+license_desc=Venez récupérer %[2]s ! Rejoignez-nous en contribuant à rendre ce projet encore meilleur !
[install]
install=Installation
@@ -456,7 +457,7 @@ authorize_title=Autoriser "%s" à accéder à votre compte ?
authorization_failed=L’autorisation a échoué
authorization_failed_desc=L'autorisation a échoué car nous avons détecté une demande incorrecte. Veuillez contacter le responsable de l'application que vous avez essayé d'autoriser.
sspi_auth_failed=Échec de l'authentification SSPI
-password_pwned=Le mot de passe que vous avez choisi se trouve sur la liste des mots de passe ayant fuité sur internet. Veuillez réessayer avec un mot de passe différent et considérer remplacer ce mot de passe si vous l'utilisez ailleurs.
+password_pwned=Le mot de passe que vous avez choisi fait partit des mots de passe ayant fuité sur internet. Veuillez réessayer avec un mot de passe différent et considérez remplacer ce mot de passe si vous l’utilisez ailleurs.
password_pwned_err=Impossible d'envoyer la demande à HaveIBeenPwned
last_admin=Vous ne pouvez pas supprimer ce compte car au moins un administrateur est requis.
signin_passkey=Se connecter avec une clé d’identification (passkey)
@@ -628,6 +629,7 @@ org_still_own_repo=Cette organisation possède encore un ou plusieurs dépôts.
org_still_own_packages=Cette organisation possède encore un ou plusieurs paquets. Vous devez d’abord les supprimer.
target_branch_not_exist=La branche cible n'existe pas.
+target_ref_not_exist=La réf cible %s n’existe pas
admin_cannot_delete_self=Vous ne pouvez pas vous supprimer vous-même lorsque vous êtes admin. Veuillez d’abord supprimer vos privilèges d’administrateur.
@@ -693,11 +695,11 @@ applications=Applications
orgs=Gérer les organisations
repos=Dépôts
delete=Supprimer le compte
-twofa=Authentification à deux facteurs
+twofa=Authentification à deux facteurs (TOTP)
account_link=Comptes liés
organization=Organisations
uid=UID
-webauthn=Clés de sécurité
+webauthn=Authentification à deux facteurs (Clés de sécurité)
public_profile=Profil public
biography_placeholder=Parlez-nous un peu de vous ! (Vous pouvez utiliser Markdown)
@@ -795,7 +797,7 @@ add_email_success=La nouvelle adresse e-mail a été ajoutée.
email_preference_set_success=L'e-mail de préférence a été défini avec succès.
add_openid_success=La nouvelle adresse OpenID a été ajoutée.
keep_email_private=Cacher l'adresse e-mail
-keep_email_private_popup=Ceci masquera votre adresse e-mail de votre profil, de vos demandes d'ajout et des fichiers modifiés depuis l'interface Web. Les révisions déjà soumises ne seront pas modifiés.
+keep_email_private_popup=Ceci masquera votre adresse e-mail de votre profil, de vos demandes d’ajout et des fichiers modifiés depuis l'interface Web. Les révisions déjà soumises ne seront pas modifiés. Utilisez %s dans les révisions pour les associer à votre compte.
openid_desc=OpenID vous permet de confier l'authentification à une tierce partie.
manage_ssh_keys=Gérer les clés SSH
@@ -934,26 +936,26 @@ revoke_oauth2_grant=Révoquer l'accès
revoke_oauth2_grant_description=La révocation de l'accès à cette application tierce l'empêchera d'accéder à vos données. Vous êtes sûr ?
revoke_oauth2_grant_success=Accès révoqué avec succès.
-twofa_desc=L'authentification à deux facteurs améliore la sécurité de votre compte.
+twofa_desc=Pour protéger votre compte contre les vols de mot de passes, vous pouvez utiliser un smartphone ou autres appareils pour recevoir un code temporaire à usage unique (TOTP).
twofa_recovery_tip=Si vous perdez votre appareil, vous pourrez utiliser une clé de récupération à usage unique pour obtenir l’accès à votre compte.
twofa_is_enrolled=Votre compte est inscrit à l'authentification à deux facteurs.
twofa_not_enrolled=Votre compte n'est pas inscrit à l'authentification à deux facteurs.
twofa_disable=Désactiver l'authentification à deux facteurs
-twofa_scratch_token_regenerate=Régénérer un jeton de secours
-twofa_scratch_token_regenerated=Votre jeton de secours est désormais « %s ». Stockez-le dans un endroit sûr, il ne sera plus jamais affiché.
+twofa_scratch_token_regenerate=Régénérer une clé de secours à usage unique
+twofa_scratch_token_regenerated=Votre clé de secours à usage unique est désormais « %s ». Stockez-la dans un endroit sûr, elle ne sera plus jamais affichée.
twofa_enroll=Activer l'authentification à deux facteurs
twofa_disable_note=Vous pouvez désactiver l'authentification à deux facteurs si nécessaire.
twofa_disable_desc=Désactiver l'authentification à deux facteurs rendra votre compte plus vulnérable. Confirmer ?
-regenerate_scratch_token_desc=Si vous avez perdu votre jeton de secours, ou avez dû l'utiliser pour vous authentifier, vous pouvez le réinitialiser.
+regenerate_scratch_token_desc=Si vous avez égaré votre clé de secours ou avez dû l’utiliser pour vous authentifier, vous pouvez la régénérer.
twofa_disabled=L'authentification à deux facteurs a été désactivée.
scan_this_image=Scannez cette image avec votre application d'authentification :
or_enter_secret=Ou saisissez le code %s
then_enter_passcode=Et entrez le code de passe s'affichant dans l'application :
passcode_invalid=Le mot de passe est invalide. Réessayez.
-twofa_enrolled=L'authentification à deux facteurs a été activée pour votre compte. Gardez votre jeton de secours (%s) en lieu sûr, car il ne vous sera montré qu'une seule fois !
+twofa_enrolled=L’authentification à deux facteurs a été activée pour votre compte. Gardez votre clé de secours (%s) en lieu sûr, car il ne vous sera montré qu'une seule fois.
twofa_failed_get_secret=Impossible d'obtenir le secret.
-webauthn_desc=Les clefs de sécurité sont des dispositifs matériels contenant des clefs cryptographiques. Elles peuvent être utilisées pour l'authentification à deux facteurs. La clef de sécurité doit supporter le standard WebAuthn Authenticator.
+webauthn_desc=Les clefs de sécurité sont des dispositifs matériels contenant des clefs cryptographiques. Elles peuvent être utilisées pour l’authentification à deux facteurs. La clef de sécurité doit supporter le standard WebAuthn Authenticator.
webauthn_register_key=Ajouter une clé de sécurité
webauthn_nickname=Pseudonyme
webauthn_delete_key=Retirer la clé de sécurité
@@ -1098,9 +1100,9 @@ tree_path_not_found_branch=Le chemin %[1]s n’existe pas dans la branche %[2]s.
tree_path_not_found_tag=Le chemin %[1]s n’existe pas dans l’étiquette %[2]s.
transfer.accept=Accepter le transfert
-transfer.accept_desc=`Transférer à "%s"`
+transfer.accept_desc=Transférer à  « %s »
transfer.reject=Refuser le transfert
-transfer.reject_desc=`Annuler le transfert à "%s"`
+transfer.reject_desc=Annuler le transfert à « %s »
transfer.no_permission_to_accept=Vous n’êtes pas autorisé à accepter ce transfert.
transfer.no_permission_to_reject=Vous n’êtes pas autorisé à rejeter ce transfert.
@@ -1175,6 +1177,11 @@ migrate.gogs.description=Migrer les données depuis notabug.org ou d’autres in
migrate.onedev.description=Migrer les données depuis code.onedev.io ou d’autre instance de OneDev.
migrate.codebase.description=Migrer les données depuis codebasehq.com.
migrate.gitbucket.description=Migrer les données depuis des instances GitBucket.
+migrate.codecommit.description=Migrer les données depuis AWS CodeCommit.
+migrate.codecommit.aws_access_key_id=ID de la clé d’accès AWS
+migrate.codecommit.aws_secret_access_key=Clé d’accès secrète AWS
+migrate.codecommit.https_git_credentials_username=Nom d’utilisateur Git HTTPS
+migrate.codecommit.https_git_credentials_password=Mot de passe Git HTTPS
migrate.migrating_git=Migration des données Git
migrate.migrating_topics=Migration des sujets
migrate.migrating_milestones=Migration des jalons
@@ -1475,6 +1482,7 @@ issues.remove_labels=a supprimé les labels %s %s.
issues.add_remove_labels=a ajouté le label %s et supprimé %s %s.
issues.add_milestone_at=`a ajouté ça au jalon %s %s.`
issues.add_project_at=`a ajouté ça au projet %s %s.`
+issues.move_to_column_of_project=`a déplacé ça vers %s dans %s sur %s`
issues.change_milestone_at=`a remplacé le jalon %s par %s %s.`
issues.change_project_at=`a remplacé le projet %s par %s %s.`
issues.remove_milestone_at=`a supprimé ça du jalon %s %s.`
@@ -1723,10 +1731,10 @@ issues.dependency.add_error_dep_not_same_repo=Les deux tickets doivent être dan
issues.review.self.approval=Vous ne pouvez approuver vos propres demandes d'ajout.
issues.review.self.rejection=Vous ne pouvez demander de changements sur vos propres demandes de changement.
issues.review.approve=a approuvé ces modifications %s.
-issues.review.comment=a évalué cette demande d’ajout %s.
+issues.review.comment=a évalué %s
issues.review.dismissed=a révoqué l’évaluation de %s %s.
issues.review.dismissed_label=Révoquée
-issues.review.left_comment=laisser un commentaire
+issues.review.left_comment=à laissé un commentaire
issues.review.content.empty=Vous devez laisser un commentaire indiquant le(s) changement(s) demandé(s).
issues.review.reject=a requis les changements %s
issues.review.wait=a été sollicité pour évaluer cette demande d’ajout %s.
@@ -1748,6 +1756,12 @@ issues.review.hide_resolved=Réduire
issues.review.resolve_conversation=Clore la conversation
issues.review.un_resolve_conversation=Rouvrir la conversation
issues.review.resolved_by=a marqué cette conversation comme résolue.
+issues.review.commented=À commenté
+issues.review.official=Approuvée
+issues.review.requested=Évaluation en attente
+issues.review.rejected=Changements demandées
+issues.review.stale=Modifiée depuis la dernière approbation
+issues.review.unofficial=Approbation non comptabilisée
issues.assignee.error=Tous les assignés n'ont pas été ajoutés en raison d'une erreur inattendue.
issues.reference_issue.body=Corps
issues.content_history.deleted=a supprimé
@@ -1822,6 +1836,7 @@ pulls.required_status_check_failed=Certains contrôles requis n'ont pas réussi.
pulls.required_status_check_missing=Certains contrôles requis sont manquants.
pulls.required_status_check_administrator=En tant qu'administrateur, vous pouvez toujours fusionner cette requête de pull.
pulls.blocked_by_approvals=Cette demande d'ajout n’est pas suffisamment approuvée. %d approbations obtenues sur %d.
+pulls.blocked_by_approvals_whitelisted=Cette demande d’ajout n’a pas encore assez d’approbations. %d sur %d approbations de la part des utilisateurs ou équipes sur la liste autorisée.
pulls.blocked_by_rejection=Cette demande d’ajout nécessite des corrections sollicitées par un évaluateur officiel.
pulls.blocked_by_official_review_requests=Cette demande d’ajout a des sollicitations officielles d’évaluation.
pulls.blocked_by_outdated_branch=Cette demande d’ajout est bloquée car elle est obsolète.
@@ -1889,6 +1904,7 @@ pulls.cmd_instruction_checkout_title=Basculer
pulls.cmd_instruction_checkout_desc=Depuis votre dépôt, basculer sur une nouvelle branche et tester des modifications.
pulls.cmd_instruction_merge_title=Fusionner
pulls.cmd_instruction_merge_desc=Fusionner les modifications et mettre à jour sur Gitea.
+pulls.cmd_instruction_merge_warning=Attention : cette opération ne peut pas fusionner la demande d’ajout car la « détection automatique de fusion manuelle » n’a pas été activée
pulls.clear_merge_message=Effacer le message de fusion
pulls.clear_merge_message_hint=Effacer le message de fusion ne supprimera que le message de la révision, mais pas les pieds de révision générés tels que "Co-Authored-By:".
@@ -1910,6 +1926,7 @@ pulls.delete.text=Voulez-vous vraiment supprimer cet demande d'ajout ? (Cela sup
pulls.recently_pushed_new_branches=Vous avez soumis sur la branche %[1]s %[2]s
pull.deleted_branch=(supprimé) : %s
+pull.agit_documentation=Voir la documentation sur AGit
comments.edit.already_changed=Impossible d’enregistrer ce commentaire. Il semble que le contenu ait été modifié par un autre utilisateur. Veuillez rafraîchir la page et réessayer afin d’éviter d’écraser leurs modifications.
@@ -1920,7 +1937,7 @@ milestones.no_due_date=Aucune date d'échéance
milestones.open=Ouvrir
milestones.close=Fermer
milestones.new_subheader=Les jalons peuvent vous aider à organiser vos tickets et à suivre leurs progrès.
-milestones.completeness=%d%% complété
+milestones.completeness=%d%% complété
milestones.create=Créer un Jalon
milestones.title=Titre
milestones.desc=Description
@@ -2105,8 +2122,8 @@ settings.push_mirror_sync_in_progress=Versement des changements vers le miroir d
settings.site=Site Web
settings.update_settings=Appliquer
settings.update_mirror_settings=Mettre à jour les paramètres du miroir
-settings.branches.switch_default_branch=Changer de branche
-settings.branches.update_default_branch=Changer la Branche par Défaut
+settings.branches.switch_default_branch=Changer la branche par défaut
+settings.branches.update_default_branch=Changer la branche par défaut
settings.branches.add_new_rule=Ajouter une nouvelle règle
settings.advanced_settings=Paramètres avancés
settings.wiki_desc=Activer le wiki du dépôt
@@ -2183,6 +2200,7 @@ settings.transfer_in_progress=Il y a actuellement un transfert en cours. Veuille
settings.transfer_notices_1=- Vous perdrez l'accès à ce dépôt si vous le transférez à un autre utilisateur.
settings.transfer_notices_2=- Vous conserverez l'accès à ce dépôt si vous le transférez à une organisation dont vous êtes (co-)propriétaire.
settings.transfer_notices_3=- Si le dépôt est privé et est transféré à un utilisateur individuel, cette action s'assure que l'utilisateur a au moins la permission de lire (et modifie les permissions si nécessaire).
+settings.transfer_notices_4=- Si le dépôt appartient à une organisation et que vous le transférez à une autre organisation ou personne, vous perdrez les liens entre les tickets du dépôt et le tableau de projet de l’organisation.
settings.transfer_owner=Nouveau propriétaire
settings.transfer_perform=Effectuer le transfert
settings.transfer_started=`Ce dépôt a été marqué pour le transfert et attend la confirmation de "%s"`
@@ -2319,7 +2337,7 @@ settings.event_pull_request_merge=Fusion de demande d'ajout
settings.event_package=Paquet
settings.event_package_desc=Paquet créé ou supprimé.
settings.branch_filter=Filtre de branche
-settings.branch_filter_desc=Liste de branches et motifs globs autorisant la soumission, la création et suppression de branches. Laisser vide ou utiliser *
englobent toutes les branches. Voir la syntaxe Glob. Exemples : master
, {master,release*}
.
+settings.branch_filter_desc=Liste de branches et motifs globs autorisant la soumission, la création et suppression de branches. Laisser vide ou utiliser *
englobent toutes les branches. Voir la %[2]s. Exemples : master
, {master,release*}
.
settings.authorization_header=En-tête « Authorization »
settings.authorization_header_desc=Si présent, sera ajouté aux requêtes comme en-tête d’authentification. Exemples : %s.
settings.active=Actif
@@ -2369,9 +2387,9 @@ settings.protected_branch=Protection de branche
settings.protected_branch.save_rule=Enregistrer la règle
settings.protected_branch.delete_rule=Supprimer la règle
settings.protected_branch_can_push=Autoriser la soumission ?
-settings.protected_branch_can_push_yes=Vous pouvez pousser
-settings.protected_branch_can_push_no=Vous ne pouvez pas pousser
-settings.branch_protection=Paramètres de protection pour les branches du motif %s
+settings.protected_branch_can_push_yes=Vous pouvez soumettre
+settings.protected_branch_can_push_no=Vous ne pouvez pas soumettre
+settings.branch_protection=Paramètres de protection de branches pour la branche %s
settings.protect_this_branch=Activer la protection de branche
settings.protect_this_branch_desc=Empêche les suppressions et limite les poussées et fusions sur cette branche.
settings.protect_disable_push=Désactiver la soumission
@@ -2401,7 +2419,7 @@ settings.protect_merge_whitelist_teams=Équipes autorisées à fusionner :
settings.protect_check_status_contexts=Activer le Contrôle Qualité
settings.protect_status_check_patterns=Motifs de vérification des statuts :
settings.protect_status_check_patterns_desc=Entrez des motifs pour spécifier quelles vérifications doivent réussir avant que des branches puissent être fusionnées. Un motif par ligne. Un motif ne peut être vide.
-settings.protect_check_status_contexts_desc=Exiger le status « succès » avant de fusionner. Quand activée, une branche protégée ne peux accepter que des soumissions ou des fusions ayant le status « succès ». Lorsqu'il n'y a pas de contexte, la dernière révision fait foi.
+settings.protect_check_status_contexts_desc=Exiger le status « succès » avant de fusionner. Quand activée, une branche protégée ne peux accepter que des soumissions ou des fusions ayant le status « succès ». Lorsqu'il n’y a pas de contexte, la dernière révision fait foi.
settings.protect_check_status_contexts_list=Contrôles qualité trouvés au cours de la semaine dernière pour ce dépôt
settings.protect_status_check_matched=Correspondant
settings.protect_invalid_status_check_pattern=Motif de vérification des statuts incorrect : « %s ».
@@ -2419,12 +2437,12 @@ settings.ignore_stale_approvals_desc=Ignorer les approbations d’anciennes rév
settings.require_signed_commits=Exiger des révisions signées
settings.require_signed_commits_desc=Rejeter les soumissions sur cette branche lorsqu'ils ne sont pas signés ou vérifiables.
settings.protect_branch_name_pattern=Motif de nom de branche protégé
-settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la documentation pour la syntaxe du motif. Exemples : main
, release/**
+settings.protect_branch_name_pattern_desc=Motifs de nom de branche protégé. Consultez la documentation pour la syntaxe du motif. Exemples : main
, release/**
settings.protect_patterns=Motifs
settings.protect_protected_file_patterns=Liste des fichiers et motifs protégés
-settings.protect_protected_file_patterns_desc=Liste de fichiers et de motifs, séparés par un point-virgule « ; », qui ne pourront pas être modifiés même si les utilisateurs disposent des droits sur la branche. Voir la syntaxe glob. Exemples : .drone.yml ; /docs/**/*.txt
.
+settings.protect_protected_file_patterns_desc=Liste de fichiers et de motifs, séparés par un point-virgule « ; », qui ne pourront pas être modifiés même si les utilisateurs disposent des droits sur la branche. Consultez la %[2]s. Exemples : .drone.yml ; /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Liste des fichiers et motifs exclus
-settings.protect_unprotected_file_patterns_desc=Liste de fichiers et de motifs globs, séparés par un point-virgule « ; », qui pourront être modifiés malgré la protection de branche, par les utilisateurs autorisés. Voir la syntaxe Glob. Exemples : .drone.yml ; /docs/**/*.txt
.
+settings.protect_unprotected_file_patterns_desc=Liste de fichiers et de motifs globs, séparés par un point-virgule « ; », qui pourront être modifiés malgré la protection de branche, par les utilisateurs autorisés. Voir la %[2]s. Exemples : .drone.yml ; /docs/**/*.txt
.
settings.add_protected_branch=Activer la protection
settings.delete_protected_branch=Désactiver la protection
settings.update_protect_branch_success=La règle de protection de branche "%s" a été mise à jour.
@@ -2440,7 +2458,7 @@ settings.block_outdated_branch=Bloquer la fusion si la demande d'ajout est obsol
settings.block_outdated_branch_desc=La fusion ne sera pas possible lorsque la branche principale est derrière la branche de base.
settings.default_branch_desc=Sélectionnez une branche par défaut pour les demandes de fusion et les révisions :
settings.merge_style_desc=Styles de fusion
-settings.default_merge_style_desc=Style de fusion par défaut
+settings.default_merge_style_desc=Méthode de fusion par défaut
settings.choose_branch=Choisissez une branche…
settings.no_protected_branch=Il n'y a pas de branche protégée.
settings.edit_protected_branch=Éditer
@@ -2456,13 +2474,25 @@ settings.tags.protection.allowed.teams=Équipes autorisées
settings.tags.protection.allowed.noone=Personne
settings.tags.protection.create=Protéger l'étiquette
settings.tags.protection.none=Il n'y a pas d'étiquettes protégées.
-settings.tags.protection.pattern.description=Vous pouvez utiliser au choix un nom unique, un motif de glob ou une expression régulière qui correspondra à plusieurs étiquettes. Pour plus d’informations, consultez le guide sur les étiquettes protégées.
+settings.tags.protection.pattern.description=Vous pouvez utiliser au choix un nom unique, un motif de glob ou une expression régulière qui correspondra à plusieurs étiquettes. Pour plus d’informations, consultez le guide sur les étiquettes protégées.
settings.bot_token=Jeton de Bot
settings.chat_id=ID de conversation
settings.thread_id=ID du fil
settings.matrix.homeserver_url=URL du serveur d'accueil
settings.matrix.room_id=ID de la salle
settings.matrix.message_type=Type de message
+settings.visibility.private.button=Rendre privé
+settings.visibility.private.text=Rendre le dépôt privé rendra non seulement le dépôt visible uniquement aux membres autorisés, mais peut également rompre la relation entre lui et ses bifurcations, observateurs, et favoris.
+settings.visibility.private.bullet_title=Changer la visibilité en privé :
+settings.visibility.private.bullet_one=Va rendre le dépôt visible uniquement par les membres autorisés
+settings.visibility.private.bullet_two=Peut supprimer la relation avec ses bifurcations, ses observateurs et ses favoris
+settings.visibility.public.button=Rendre public
+settings.visibility.public.text=Rendre le dépôt public rendra le dépôt visible à tout le monde.
+settings.visibility.public.bullet_title=Changer la visibilité en public va :
+settings.visibility.public.bullet_one=Rendre le dépôt visible à tout le monde.
+settings.visibility.success=Visibilité du dépôt changée.
+settings.visibility.error=Une erreur s’est produite en essayant de changer la visibilité du dépôt.
+settings.visibility.fork_error=Impossible de changer la visibilité d’un dépôt bifurqué.
settings.archive.button=Archiver ce dépôt
settings.archive.header=Archiver ce dépôt
settings.archive.text=Archiver un dépôt le place en lecture seule et le cache des tableaux de bord. Personne ne pourra faire de nouvelles révisions, d'ouvrir des tickets ou des demandes d'ajouts (pas même vous!).
@@ -2624,7 +2654,7 @@ branch.delete_desc=La suppression d’une branche est permanente. Bien qu’une
branch.deletion_success=La branche "%s" a été supprimée.
branch.deletion_failed=Impossible de supprimer la branche "%s".
branch.delete_branch_has_new_commits=La branche "%s" ne peut être supprimé, car de nouvelles révisions ont été ajoutées après la fusion.
-branch.create_branch=Créer la branche %s
+branch.create_branch=Créer la branche %s
branch.create_from=`de "%s"`
branch.create_success=La branche "%s" a été créée.
branch.branch_already_exists=La branche "%s" existe déjà dans ce dépôt.
@@ -2650,7 +2680,7 @@ branch.new_branch=Créer une nouvelle branche
branch.new_branch_from=`Créer une nouvelle branche à partir de "%s"`
branch.renamed=La branche %s à été renommée en %s.
-tag.create_tag=Créer l'étiquette %s
+tag.create_tag=Créer l'étiquette %s
tag.create_tag_operation=Créer une étiquette
tag.confirm_create_tag=Créer une étiquette
tag.create_tag_from=`Créer une nouvelle étiquette à partir de "%s"`
@@ -2826,7 +2856,7 @@ last_page=Dernière
total=Total : %d
settings=Paramètres administrateur
-dashboard.new_version_hint=Gitea %s est maintenant disponible, vous utilisez %s. Consultez le blog pour plus de détails.
+dashboard.new_version_hint=Gitea %s est maintenant disponible, vous utilisez %s. Consultez le blog pour plus de détails.
dashboard.statistic=Résumé
dashboard.maintenance_operations=Opérations de maintenance
dashboard.system_status=État du système
@@ -2869,6 +2899,7 @@ dashboard.reinit_missing_repos=Réinitialiser tous les dépôts Git manquants po
dashboard.sync_external_users=Synchroniser les données de l’utilisateur externe
dashboard.cleanup_hook_task_table=Nettoyer la table hook_task
dashboard.cleanup_packages=Nettoyer des paquets expirés
+dashboard.cleanup_actions=Nettoyer les reliquats des actions obsolètes
dashboard.server_uptime=Uptime du serveur
dashboard.current_goroutine=Goroutines actuelles
dashboard.current_memory_usage=Utilisation Mémoire actuelle
@@ -2898,9 +2929,15 @@ dashboard.total_gc_time=Pause GC
dashboard.total_gc_pause=Pause GC
dashboard.last_gc_pause=Dernière Pause GC
dashboard.gc_times=Nombres de GC
+dashboard.delete_old_actions=Supprimer toutes les anciennes activités de la base de données
+dashboard.delete_old_actions.started=La suppression des anciennes activités de la base de données a démarré.
dashboard.update_checker=Vérificateur de mise à jour
dashboard.delete_old_system_notices=Supprimer toutes les anciennes observations de la base de données
dashboard.gc_lfs=Épousseter les métaobjets LFS
+dashboard.stop_zombie_tasks=Arrêter les tâches zombies
+dashboard.stop_endless_tasks=Arrêter les tâches interminables
+dashboard.cancel_abandoned_jobs=Annuler les travaux abandonnés
+dashboard.start_schedule_tasks=Démarrer les tâches planifiées
dashboard.sync_branch.started=Début de la synchronisation des branches
dashboard.sync_tag.started=Synchronisation des étiquettes
dashboard.rebuild_issue_indexer=Reconstruire l’indexeur des tickets
@@ -3011,12 +3048,12 @@ packages.size=Taille
packages.published=Publiés
defaulthooks=Déclencheurs web par défaut
-defaulthooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Gitea se déclenchent. Ceux créés ici sont par défaut copiés sur tous les nouveaux dépôts. Pour plus d'information, consultez le guide des webhooks.
+defaulthooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Gitea se déclenchent. Ceux créés ici sont par défaut copiés sur tous les nouveaux dépôts. Pour plus d'information, consultez le guide des webhooks.
defaulthooks.add_webhook=Ajouter un déclencheur web par défaut
defaulthooks.update_webhook=Mettre à jour le déclencheur web par défaut
systemhooks=Webhooks système
-systemhooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Gitea se déclenchent. Ceux créé ici agiront sur tous les dépôts, ce qui peux impacter les performances du système. Pour plus d’information, consultez le guide des webhooks.
+systemhooks.desc=Les webhooks font automatiquement des requêtes POST HTTP à un serveur spécifié lorsque certains événements Gitea se déclenchent. Ceux créé ici agiront sur tous les dépôts, ce qui peux impacter les performances du système. Pour plus d’information, consultez le guide des webhooks.
systemhooks.add_webhook=Ajouter un rappel système
systemhooks.update_webhook=Mettre à jour un rappel système
@@ -3111,18 +3148,18 @@ auths.tips=Conseils
auths.tips.oauth2.general=Authentification OAuth2
auths.tips.oauth2.general.tip=Lors de l'enregistrement d'une nouvelle authentification OAuth2, l'URL de rappel/redirection doit être :
auths.tip.oauth2_provider=Fournisseur OAuth2
-auths.tip.bitbucket=Créez un nouveau jeton OAuth sur https://bitbucket.org/account/user/{your username}/oauth-consumers/new et ajoutez la permission “Compteâ€Â - “Lectureâ€.
+auths.tip.bitbucket=Créez un nouveau jeton OAuth sur %s et ajoutez la permission « Compte » → « Lecture ».
auths.tip.nextcloud=`Enregistrez un nouveau consommateur OAuth sur votre instance en utilisant le menu "Paramètres -> Sécurité -> Client OAuth 2.0"`
-auths.tip.dropbox=Créez une nouvelle application sur https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Enregistrez une nouvelle application sur https://developers.facebook.com/apps et ajoutez le produit "Facebook Login"`
-auths.tip.github=Créez une nouvelle application OAuth sur https://github.com/settings/applications/new
-auths.tip.gitlab_new=Enregistrez une nouvelle application sur https://gitlab.com/-/profile/applications
-auths.tip.google_plus=Obtenez des identifiants OAuth2 sur la console API de Google (https://console.developers.google.com/)
+auths.tip.dropbox=Créez une nouvelle application sur %s
+auths.tip.facebook=Enregistrez une nouvelle application sur%s et ajoutez le produit « Facebook Login ».
+auths.tip.github=Créez une nouvelle application OAuth sur %s
+auths.tip.gitlab_new=Enregistrez une nouvelle application sur %s
+auths.tip.google_plus=Obtenez des identifiants OAuth2 sur la console API de Google (%s)
auths.tip.openid_connect=Utilisez l’URL de découverte OpenID « https://{server}/.well-known/openid-configuration » pour spécifier les points d'accès.
-auths.tip.twitter=Rendez-vous sur https://dev.twitter.com/apps, créez une application et assurez-vous que l'option "Autoriser l'application à être utilisée avec Twitter Connect" est activée
-auths.tip.discord=Enregistrer une nouvelle application sur https://discordapp.com/developers/applications/me
-auths.tip.gitea=Enregistrez une nouvelle application OAuth2. Le guide peut être trouvé sur https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`Créez une nouvelle application sur https://oauth.yandex.com/client/new. Sélectionnez les autorisations suivantes dans la section "Yandex API passport" : "Accès à l'adresse e-mail", "Accès à l'avatar de l'utilisateur" et "Accès au nom d'utilisateur, prénom et prénom, genre"`
+auths.tip.twitter=Rendez-vous sur %s, créez une application et assurez-vous que l’option « Autoriser l’application à être utilisée avec Twitter Connect » est activée.
+auths.tip.discord=Enregistrer une nouvelle application sur %s
+auths.tip.gitea=Enregistrez une nouvelle application OAuth2. Le guide peut être trouvé sur %s.
+auths.tip.yandex=Créez une nouvelle application sur %s. Sélectionnez les autorisations suivantes dans la section « Yandex.Passport API » : « Accès à l’adresse e-mail », « Accès à l’avatar de l’utilisateur » et « Accès au nom d’utilisateur, prénom, surnom et genre ».
auths.tip.mastodon=Entrez une URL d'instance personnalisée pour l'instance mastodon avec laquelle vous voulez vous authentifier (ou utiliser celle par défaut)
auths.edit=Mettre à jour la source d'authentification
auths.activated=Cette source d'authentification est activée
@@ -3296,8 +3333,8 @@ monitor.start=Heure de démarrage
monitor.execute_time=Heure d'Éxécution
monitor.last_execution_result=Résultat
monitor.process.cancel=Annuler le processus
-monitor.process.cancel_desc=L'annulation d'un processus peut entraîner une perte de données
-monitor.process.cancel_notices=Annuler : %s?
+monitor.process.cancel_desc=L’annulation d’un processus peut entraîner une perte de données.
+monitor.process.cancel_notices=Annuler : %s ?
monitor.process.children=Enfant
monitor.queues=Files d'attente
@@ -3671,12 +3708,18 @@ runs.no_workflows.quick_start=Vous découvrez les Actions Gitea ? Consultez la documentation.
runs.no_runs=Le flux de travail n'a pas encore d'exécution.
runs.empty_commit_message=(message de révision vide)
+runs.expire_log_message=Les journaux ont été supprimés car ils étaient trop anciens.
workflow.disable=Désactiver le flux de travail
workflow.disable_success=Le flux de travail « %s » a bien été désactivé.
workflow.enable=Activer le flux de travail
workflow.enable_success=Le flux de travail « %s » a bien été activé.
workflow.disabled=Le flux de travail est désactivé.
+workflow.run=Exécuter le flux de travail
+workflow.not_found=Flux de travail « %s » introuvable.
+workflow.run_success=Le flux de travail « %s » s’est correctement exécuté.
+workflow.from_ref=Utiliser le flux de travail depuis
+workflow.has_workflow_dispatch=Ce flux de travail a un déclencheur d’événement workflow_dispatch.
need_approval_desc=Besoin d’approbation pour exécuter des flux de travail pour une demande d’ajout de bifurcation.
@@ -3697,6 +3740,7 @@ variables.update.failed=Impossible d’éditer la variable.
variables.update.success=La variable a bien été modifiée.
[projects]
+deleted.display_name=Projet supprimé
type-1.display_name=Projet personnel
type-2.display_name=Projet de dépôt
type-3.display_name=Projet d’organisation
diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini
index dbb5c7dae3..28605d48cf 100644
--- a/options/locale/locale_hu-HU.ini
+++ b/options/locale/locale_hu-HU.ini
@@ -112,7 +112,6 @@ filter.private=Privát
app_desc=Fájdalommentes, saját gépre telepÃthetÅ‘ Git szolgáltatás
install=Könnyen telepÃthetÅ‘
platform=Keresztplatformos
-platform_desc=A Gitea minden platformon fut, ahol a Go fordÃthat: Windows, macOS, Linux, ARM, stb. Válassza azt, amelyet szereti!
lightweight=Könnyűsúlyú
license=NyÃlt forráskódú
@@ -394,7 +393,6 @@ applications=Alkalmazások
orgs=Szervezetek kezelése
repos=Tárolók
delete=Fiók törlése
-twofa=KétlépcsÅ‘s hitelesÃtés
account_link=Kapcsolt fiókok
organization=Szervezetek
@@ -527,11 +525,9 @@ authorized_oauth2_applications=Engedélyezett OAuth2 alkalmazások
revoke_key=Visszavonás
revoke_oauth2_grant=Hozzáférés megvonása
-twofa_desc=A kétlépcsÅ‘s hitelesÃtés növeli a fiók biztonságát.
twofa_is_enrolled=A fiókja jelenleg használ kétlépcsÅ‘s hitelesÃtést.
twofa_not_enrolled=A fiókja jelenleg nem használ kétlépcsÅ‘s hitelesÃtést.
twofa_disable=KétlépcsÅ‘s hitelesÃtés letiltása
-twofa_scratch_token_regenerate=Kaparós kód újragenerálása
twofa_enroll=KétlépcsÅ‘s hitelesÃtés használata
twofa_disable_note=A kétlépcsÅ‘s azonosÃtás szükség esetén letiltható.
twofa_disable_desc=A kétlépcsÅ‘s hitelesÃtés letiltása a fiókot kevésbé biztonságossá teszi. Folytatható?
@@ -905,13 +901,13 @@ issues.dependency.add_error_dep_issue_not_exist=Függő hibajegy nem létezik.
issues.dependency.add_error_dep_not_exist=A függőség nem létezik.
issues.dependency.add_error_dep_exists=A függőség már létezik.
issues.dependency.add_error_dep_not_same_repo=Mindkét hibajegynek ugyanabban a tárolóban kell lennie.
-issues.review.comment=Értékelve: %s
issues.review.reject=%s változtatások kérése
issues.review.pending=Függőben
issues.review.review=Értékelés
issues.review.reviewers=Véleményezők
issues.review.show_outdated=Elavultak mutatása
issues.review.hide_outdated=Elavultak elrejtése
+issues.review.commented=Hozzászólás
issues.assignee.error=Nem minden megbÃzott lett hozzáadva egy nem várt hiba miatt.
@@ -948,7 +944,6 @@ milestones.closed=Lezárva: %s
milestones.no_due_date=Nincs határidő
milestones.open=Megnyitás
milestones.close=Lezárás
-milestones.completeness=%d%% Kész
milestones.create=Mérföldkő létrehozása
milestones.title=CÃm
milestones.desc=LeÃrás
@@ -1146,7 +1141,7 @@ release.download_count=Letöltések: %s
branch.delete_head=Törlés
branch.delete_html=Ãg törlése
-branch.create_branch=Ãg %s létrehozása
+branch.create_branch=Ãg %s létrehozása
branch.deleted_by=Törölve %s által
@@ -1394,13 +1389,6 @@ auths.enable_auto_register=Automatikus regisztráció engedélyezése
auths.tips=Tippek
auths.tips.oauth2.general=OAuth2 hitelesÃtés
auths.tip.oauth2_provider=OAuth2 szolgáltató
-auths.tip.dropbox=Vegyen fel új alkalmazást itt: https://www.dropbox.com/developers/apps
-auths.tip.facebook=Vegyen fel új alkalmazást itt: https://developers.facebook.com/apps majd adja hozzá a "Facebook Login"-t
-auths.tip.github=Vegyen fel új OAuth alkalmazást itt: https://github.com/settings/applications/new
-auths.tip.google_plus=Szerezzen OAuth2 kliens hitelesÃtési adatokat a Google API konzolban (https://console.developers.google.com/)
-auths.tip.twitter=Menyjen ide: https://dev.twitter.com/apps, hozzon létre egy alkalmazást és győződjön meg róla, hogy az “Allow this application to be used to Sign in with Twitter†opció be van kapcsolva
-auths.tip.discord=Vegyen fel új alkalmazást itt:
-https://discordapp.com/developers/applications/me
auths.edit=HitelesÃtési forrás szerkesztése
auths.activated=A hitelesÃtési forrás aktiválva lett
auths.update_success=A hitelesÃtési forrás frissÃtve lett.
@@ -1536,8 +1524,6 @@ monitor.desc=LeÃrás
monitor.start=Kezdés Időpontja
monitor.execute_time=Végrehajtási Idő
monitor.process.cancel=Folyamat megszakÃtása
-monitor.process.cancel_desc=Egy folyamat megszakÃtása adatvesztést okozhat
-monitor.process.cancel_notices=MegszakÃtás: %s?
monitor.queue.name=Név
monitor.queue.type=TÃpus
diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini
index a3a6f8598e..94c60979a8 100644
--- a/options/locale/locale_id-ID.ini
+++ b/options/locale/locale_id-ID.ini
@@ -103,11 +103,9 @@ filter.private=Pribadi
app_desc=Sebuah layanan hosting Git sendiri yang tanpa kesulitan
install=Mudah dipasang
platform=Lintas platform
-platform_desc=Gitea bisa digunakan di mana Go bisa dijalankan: Windows, macOS, Linux, ARM, dll. Silahkan pilih yang Anda suka!
lightweight=Ringan
lightweight_desc=Gitea hanya membutuhkan persyaratan minimal dan bisa berjalan pada Raspberry Pi yang murah. Bisa menghemat listrik!
license=Sumber Terbuka
-license_desc=Go get (Dapatkan kode sumber dari) code.gitea.io/gitea! Mari bergabung dengan berkontribusi untuk membuat proyek ini lebih baik. Jangan malu untuk menjadi kontributor!
[install]
title=Konfigurasi Awal
@@ -315,7 +313,6 @@ applications=Aplikasi
orgs=Kelola organisasi
repos=Repositori
delete=Hapus Akun
-twofa=Otentikasi Dua-Faktor
account_link=Akun Tertaut
organization=Organisasi
@@ -451,15 +448,12 @@ revoke_key=Cabut
revoke_oauth2_grant=Cabut Akses
revoke_oauth2_grant_description=Mencabut akses untuk aplikasi pihak ketiga ini akan mencegahnya mengakses data Anda. Lanjutkan?
-twofa_desc=Autentikasi dua faktor menambah keamanan akun Anda.
twofa_is_enrolled=Akun anda saat ini terdaftar dalam otentikasi dua-faktor.
twofa_not_enrolled=Akun anda saat ini tidak terdaftar dalam otentikasi dua-faktor.
twofa_disable=Matikan Autentikasi Dua Faktor
-twofa_scratch_token_regenerate=Buat Ulang Token Gosok
twofa_enroll=Daftarkan ke Autentikasi Dua-Faktor
twofa_disable_note=Anda bisa mematikan autentikasi dua-faktor bila diperlukan.
twofa_disable_desc=Mematikan autentikasi dua-faktor akan membuat akun Anda kurang aman. Lanjutkan?
-regenerate_scratch_token_desc=Jika Anda salah tempatkan token gosok Anda atau sudah menggunakannya, Anda bisa setel ulang di sini.
twofa_disabled=Otentikasi dua-faktor telah dinonaktifkan.
scan_this_image=Pindai gambar ini dengan aplikasi otentikasi:
or_enter_secret=Atau masukkan rahasia: %s
@@ -895,13 +889,6 @@ settings.deploy_keys=Kunci Deploy
settings.add_deploy_key=Tambahkan Kunci Deploy
settings.title=Judul
settings.deploy_key_content=Konten
-settings.branches=Cabang
-settings.protected_branch=Perlindungan cabang
-settings.protected_branch_can_push=Mengizinkan mendorong?
-settings.protected_branch_can_push_yes=Anda dapat mendorong
-settings.protected_branch_can_push_no=Anda tidak dapat mendorong
-settings.add_protected_branch=Aktifkan perlindungan
-settings.delete_protected_branch=Nonaktifkan perlindungan
settings.choose_branch=Pilih branch…
settings.edit_protected_branch=Edit
@@ -934,7 +921,7 @@ release.downloads=Unduhan
branch.delete_head=Hapus
branch.delete_html=Hapus cabang
-branch.create_branch=Membuat cabang %s
+branch.create_branch=Membuat cabang %s
branch.deleted_by=Dihapus oleh %s
@@ -1109,9 +1096,6 @@ auths.enable_auto_register=Mengaktifkan pendaftaran otomatis
auths.tips=Cara
auths.tips.oauth2.general=Otentikasi OAuth2
auths.tip.oauth2_provider=Penyediaan OAuth2
-auths.tip.dropbox=Membuat aplikasi baru di https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Daftarkan sebuah aplikasi baru di https://developers.facebook.com/apps dan tambakan produk "Facebook Masuk"`
-auths.tip.github=Mendaftar aplikasi OAuth baru di https://github.com/settings/applications/new
auths.delete=Menghapus Otentikasi Sumber
auths.delete_auth_title=Menghapus Otentikasi Sumber
@@ -1221,7 +1205,6 @@ monitor.desc=Deskripsi
monitor.start=Waktu mulai
monitor.execute_time=Waktu pelaksanaan
monitor.process.cancel=Batalkan proses
-monitor.process.cancel_desc=Membatalkan sebuah proses bisa mengakibatkan hilangnya data
monitor.queues=Antrian
monitor.queue=Antrian: %s
@@ -1280,7 +1263,6 @@ raw_minutes=menit
[dropzone]
default_message=Jatuhkan berkas disini atau klik untuk mengunggah.
-invalid_input_type=Anda tidak bisa mengunggah berkas jenis ini.
file_too_big=Ukuran berkas ({{filesize}} MB) melebihi ukuran maksimum ({{maxFilesize}} MB).
remove_file=Hilangkan berkas
@@ -1305,7 +1287,6 @@ error.unit_not_allowed=Anda tidak diizinkan untuk mengunjungi unit repositori in
[packages]
filter.type=Jenis
-alpine.repository.branches=Cabang
alpine.repository.repositories=Repositori
conan.details.repository=Repositori
owner.settings.cleanuprules.enabled=Aktif
diff --git a/options/locale/locale_is-IS.ini b/options/locale/locale_is-IS.ini
index af71558e50..656b5e1c56 100644
--- a/options/locale/locale_is-IS.ini
+++ b/options/locale/locale_is-IS.ini
@@ -129,8 +129,6 @@ filter.public=Opinbert
[error]
occurred=Villa kom upp
-missing_csrf=Slæm beiðni: enginn CSRF lykill
-invalid_csrf=Slæm beiðni: ógildur CSRF lykill
not_found=Markmiðið fannst ekki.
network_error=Netkerfisvilla
@@ -138,11 +136,9 @@ network_error=Netkerfisvilla
app_desc=Þrautalaus og sjálfhýst Git þjónusta
install=Einföld uppsetning
platform=Fjölvettvangur
-platform_desc=Gitea virkar hvar sem að Go gerir: Linux, macOS, Windows, ARM o. s. frv. Veldu það sem þú vilt!
lightweight=Létt
lightweight_desc=Gitea hefur lágar lágmarkskröfur og getur keyrt á ódýrum Raspberry Pi. Sparaðu orku!
license=Frjáls Hugbúnaður
-license_desc=Sæktu code.gitea.io/gitea! Gakktu til liðs með þvà að taka þátt til þess að gera þetta verkefni jafnvel betra! Vertu ekki feimin(n) við að verða þátttakandi!
[install]
install=Uppsetning
@@ -428,10 +424,8 @@ applications=Forrit
orgs=Stjórna Stofnunum
repos=Hugbúnaðarsöfn
delete=Eyða Reikningi
-twofa=TvÃþætt Auðkenning
account_link=Tengdir Reikningar
organization=Stofnanir
-webauthn=Öryggislyklar
public_profile=Opinber NotandasÃða
password_username_disabled=Notendum utan staðarins er ekki heimilt að breyta notendanafni sÃnu. Vinsamlegast hafðu samband við sÃðustjórann þinn til að fá frekari upplýsingar.
@@ -544,7 +538,6 @@ revoke_key=Afturkalla
revoke_oauth2_grant=Afturkalla Aðgang
twofa_disable=Óvirkja Tveggja-Þátta Auðkenningu
-twofa_scratch_token_regenerate=Endurgera Skrapkóða
or_enter_secret=Eða sláðu inn leyndarmálið: %s
webauthn_nickname=Gælunafn
@@ -666,7 +659,6 @@ commit=Framlag
release=Útgáfa
releases=Útgáfur
tag=Merki
-file.title=%s à %s
file_raw=Hrátt
file_history=Saga
file_view_source=Skoða Frumkóða
@@ -856,13 +848,13 @@ issues.dependency.remove_header=Fjarlægja Kröfu
issues.dependency.add_error_dep_not_exist=Krafa er ekki til.
issues.dependency.add_error_dep_exists=Krafa er nú þegar til.
issues.review.approve=samþykkti þessar breytingar %s
-issues.review.comment=fór yfir %s
issues.review.dismissed_label=Hunsað
issues.review.left_comment=gerði ummæli
issues.review.pending=à bið
issues.review.outdated=Úrelt
issues.review.show_outdated=Sýna úrelt
issues.review.hide_outdated=Fela úreld
+issues.review.commented=Senda Ummæli
issues.reference_issue.body=Meginmál
issues.content_history.deleted=eytt
issues.content_history.edited=breytt
@@ -1215,8 +1207,6 @@ auths.smtpport=SMTP Gátt
auths.oauth2_icon_url=Táknmyndarvefslóð
auths.oauth2_profileURL=NotandasÃðuslóð
auths.tips=Ãbendingar
-auths.tip.dropbox=Búðu til nýtt forrit á https://www.dropbox.com/developers/apps
-auths.tip.yandex=`Búðu til nýja umsókn á https://oauth.yandex.com/client/new. Veldu eftirfarandi heimildir úr „Yandex.Passport API“ kaflanum: "Aðgangur að netfangi", "Aðgangur að notandamynd" og "Aðgangur að notendanafni, fornafni og eftirnafni, kyni"`
config.app_name=Heiti Vefsvæðis
config.app_ver=Útgáfu Gitea
diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini
index 45998bb805..3ddd2bbddf 100644
--- a/options/locale/locale_it-IT.ini
+++ b/options/locale/locale_it-IT.ini
@@ -135,8 +135,6 @@ filter.private=Privati
[error]
occurred=Si è verificato un errore
-missing_csrf=Richiesta errata: nessun token CSRF presente
-invalid_csrf=Richiesta errata: token CSRF non valido
not_found=Il bersaglio non è stato trovato.
network_error=Errore di rete
@@ -144,11 +142,9 @@ network_error=Errore di rete
app_desc=Un servizio auto-ospitato per Git pronto all'uso
install=Facile da installare
platform=Multipiattaforma
-platform_desc=Gitea funziona ovunque Go possa essere compilato: Windows, macOS, Linux, ARM, etc. Scegli ciò che ami!
lightweight=Leggero
lightweight_desc=Gitea ha requisiti minimi bassi e può funzionare su un economico Raspberry Pi. Risparmia l'energia della tua macchina!
license=Open Source
-license_desc=Ottieni code.gitea.io/gitea! Partecipa per contribuire a rendere questo progetto ancora migliore. Non aver paura di diventare un collaboratore!
[install]
install=Installazione
@@ -516,10 +512,8 @@ applications=Applicazioni
orgs=Gestisci le organizzazioni
repos=Repository
delete=Elimina account
-twofa=Verifica in due passaggi
account_link=Account collegati
organization=Organizzazioni
-webauthn=Chiavi Di Sicurezza
public_profile=Profilo pubblico
password_username_disabled=Gli utenti non locali non hanno il permesso di cambiare il proprio nome utente. per maggiori dettagli si prega di contattare l'amministratore del sito.
@@ -709,24 +703,19 @@ revoke_key=Revoca
revoke_oauth2_grant=Revoca accesso
revoke_oauth2_grant_description=Revocando l'accesso a questa applicazione di terze parti impedirá l'accesso ai tuoi dati. Sei sicuro?
-twofa_desc=L'autenticazione a due fattori migliora la sicurezza del tuo account.
twofa_is_enrolled=La verifica in due passaggi è attualmente abilitata sul tuo account.
twofa_not_enrolled=La verifica in due passaggi al momento non è abilitata sul tuo account.
twofa_disable=Disattiva la verifica in due passaggi
-twofa_scratch_token_regenerate=Rigenera il token di sicurezza
twofa_enroll=Iscriviti alla verifica in due passaggi
twofa_disable_note=Se necessario, è possibile disattivare la verifica in due passaggi.
twofa_disable_desc=Disattivare la verifica in due passaggi renderà il tuo account meno sicuro. Continuare?
-regenerate_scratch_token_desc=Se hai smarrito il tuo token di sicurezza o lo hai già utilizzato per effettuare il login è possibile resettarlo qui.
twofa_disabled=L'autenticazione a due fattori è stata disattivata.
scan_this_image=Scannerizza questa immagine con l'applicazione di autenticazione:
or_enter_secret=O immettere il segreto: %s
then_enter_passcode=E immetti il codice di accesso indicato nell'applicazione:
passcode_invalid=Il codice di accesso non è corretto. Riprova.
-twofa_enrolled=Il tuo account è stato registrato alla verifica in due passaggi. Conserva il token di sicurezza (%s) in un luogo sicuro in quanto viene visualizzato sono una volta!
twofa_failed_get_secret=Impossibile ottenere il segreto.
-webauthn_desc=Le chiavi di sicurezza sono dispositivi hardware contenenti chiavi crittografiche. Possono essere utilizzate per l'autenticazione a due fattori. Le chiavi di sicurezza devono supportare lo standard WebAuthenticator di WebAuthn.
webauthn_register_key=Aggiungi Chiave Di Sicurezza
webauthn_nickname=Soprannome
webauthn_delete_key=Rimuovi Chiave Di Sicurezza
@@ -843,9 +832,7 @@ blame_prior=Visualizza la colpa prima di questa modifica
transfer.accept=Accetta trasferimento
-transfer.accept_desc=`Trasferisci a "%s"`
transfer.reject=Rifiuta trasferimento
-transfer.reject_desc=`Annulla il trasferimento a "%s"`
desc.private=Privato
desc.public=Pubblico
@@ -963,7 +950,6 @@ release=Rilascio
releases=Rilasci
tag=Etichetta
released_this=ha rilasciato questo
-file.title=%s a %s
file_raw=Originale
file_history=Cronologia
file_view_source=Visualizza sorgente
@@ -973,7 +959,6 @@ file_permalink=Permalink
file_too_large=Il file è troppo grande per essere visualizzato.
invisible_runes_line=`Questa riga ha caratteri unicode invisibili`
ambiguous_runes_line=`Questa riga ha caratteri unicode ambigui`
-ambiguous_character=`%[1]c [U+%04[1]X] è confondibile con %[2]c [U+%04[2]X]`
escape_control_characters=Fuga
unescape_control_characters=Unescape
@@ -1344,7 +1329,6 @@ issues.dependency.add_error_dep_not_same_repo=Entrambi i problemi devono essere
issues.review.self.approval=Non puoi approvare la tua pull request.
issues.review.self.rejection=Non puoi richiedere modifiche sulla tua pull request.
issues.review.approve=hanno approvato queste modifiche %s
-issues.review.comment=revisionato %s
issues.review.dismissed=recensione %s di %s respinta
issues.review.dismissed_label=Respinta
issues.review.left_comment=lascia un commento
@@ -1365,6 +1349,7 @@ issues.review.hide_resolved=Nascondi risolte
issues.review.resolve_conversation=Risolvi la conversazione
issues.review.un_resolve_conversation=Segnala la conversazione come non risolta
issues.review.resolved_by=ha contrassegnato questa conversazione come risolta
+issues.review.commented=Commentare
issues.assignee.error=Non tutte le assegnazioni sono state aggiunte a causa di un errore imprevisto.
issues.reference_issue.body=Corpo
issues.content_history.deleted=eliminato
@@ -1456,9 +1441,7 @@ pulls.rebase_conflict_summary=Messaggio d'Errore
pulls.unrelated_histories=Unione fallita: gli Head del ramo da unire e la base non condividono una storia cronologica in comune. Suggerimento: prova una strategia diversa
pulls.merge_out_of_date=Unione fallita: Durante la generazione del merge, la base è stata aggiornata. Suggerimento: Riprova.
pulls.head_out_of_date=Unione non riuscita: durante la generazione della fusione, la testa è stata aggiornata. Suggerimento: Riprova.
-pulls.push_rejected=Unisci non riuscito: il push è stato rifiutato. Rivedi gli Hooks Git per questo repository.
pulls.push_rejected_summary=Messaggio Di Rifiuto Completo
-pulls.push_rejected_no_message=Unione non riuscita: il push è stato rifiutato ma non c'è stato un messaggio remoto.
Controlla gli Hooks di Git per questo repository
pulls.open_unmerged_pull_exists=`Non è possibile riaprire questa pull request perché ne esiste un'altra (#%d) con proprietà identiche.`
pulls.status_checking=Alcuni controlli sono in sospeso
pulls.status_checks_success=Tutti i controlli sono stati effettuati con successo
@@ -1498,7 +1481,6 @@ milestones.closed=Chiuso %s
milestones.no_due_date=Nessuna data di scadenza
milestones.open=Apri
milestones.close=Chiudi
-milestones.completeness=%d%% Completato
milestones.create=Crea Milestone
milestones.title=Titolo
milestones.desc=Descrizione
@@ -1668,7 +1650,6 @@ settings.pulls.enable_autodetect_manual_merge=Abilita il rilevamento automatico
settings.pulls.allow_rebase_update=Abilita l'aggiornamento del ramo pull request per rebase
settings.pulls.default_delete_branch_after_merge=Elimina il ramo pull request dopo la fusione per impostazione predefinita
settings.packages_desc=Abilita Il Registro Dei Pacchetti Repository
-settings.projects_desc=Abilita Progetti Repository
settings.admin_settings=Impostazioni amministratore
settings.admin_enable_health_check=Abilita verifica dell'integrità del repository (git fsck)
settings.admin_code_indexer=Indicizzatore del codice
@@ -1825,7 +1806,6 @@ settings.event_pull_request_sync_desc=Pull request sincronizzata.
settings.event_package=Pacchetto
settings.event_package_desc=Pacchetto creato o eliminato in un repository.
settings.branch_filter=Filtro branch
-settings.branch_filter_desc=Whitelist dei rami per gli eventi di spinta, creazione dei rami e cancellazione dei rami, specificati come modello globo. Se vuoto o *
, gli eventi per tutti i rami sono segnalati. Vedi la documentazione github.com/gobwas/glob per la sintassi. Esempi: master
, {master,release*}
.
settings.active=Attivo
settings.active_helper=Le informazioni sugli eventi innescati saranno inviate a questo URL del webhook.
settings.add_hook_success=Il webhook è stato aggiunto.
@@ -1871,8 +1851,6 @@ settings.branches=Branches
settings.protected_branch=Protezione branch
settings.protected_branch_can_push=Consentire push?
settings.protected_branch_can_push_yes=Puoi pushare
-settings.protected_branch_can_push_no=Non puoi pushare
-settings.branch_protection=Protezione branch per il branch '%s'
settings.protect_this_branch=Attiva protezione branch
settings.protect_this_branch_desc=Impedisce l'eliminazione e limita il merge di Git effettuando il push e l'unione verso questo ramo.
settings.protect_disable_push=Disabilita push
@@ -1880,17 +1858,14 @@ settings.protect_disable_push_desc=Nessun push sarà consentito in questo ramo.
settings.protect_enable_push=Abilita push
settings.protect_enable_push_desc=Chiunque con accesso in scrittura sarà autorizzato a pushare su questo ramo (ma non forzare il push).
settings.protect_check_status_contexts=Abilita Controllo Stato
-settings.protect_check_status_contexts_desc=Richiedi il superamento di controlli di stato prima dell'unione di due rami. Scegliere quali controlli di stato devono passare prima che i rami possano essere uniti in un ramo che corrisponde a questa regola. Se abilitato, i commit devono prima essere inviati a un altro ramo, quindi uniti o pushati direttamente a un ramo che corrisponde a questa regola dopo aver superato i controlli di stato. Se non viene selezionato alcuna regola, l'ultimo commit avrá successo indipendentemente dal contesto.
settings.protect_check_status_contexts_list=Controlli di stato trovati nell'ultima settimana per questo repository
settings.protect_required_approvals=Approvazioni richieste:
-settings.protect_required_approvals_desc=Permetti solo di unire la richiesta pull con abbastanza recensioni positive.
settings.dismiss_stale_approvals=Ignora impostazione vecchie
settings.dismiss_stale_approvals_desc=Quando i nuovi commit che cambiano il contenuto della pull request vengono pushati nel branch, le vecchie approvazioni verranno eliminate.
settings.require_signed_commits=Richiede commit firmati
settings.require_signed_commits_desc=Rifiuta i push a questo ramo se non sono firmati o verificabili.
settings.add_protected_branch=Attiva protezione
settings.delete_protected_branch=Disattiva protezione
-settings.protected_branch_deletion=Disattiva protezione branch
settings.protected_branch_deletion_desc=Disattivare la protezione branch permette agli utenti con permesso di scrittura di pushare sul branch. Continuare?
settings.block_rejected_reviews=Blocca il merge di revisioni rifiutate
settings.block_rejected_reviews_desc=Il merge non sarà possibile quando sono richiesti cambiamenti da revisori, anche se ci sono sufficienti approvazioni.
@@ -1899,7 +1874,6 @@ settings.block_on_official_review_requests_desc=Il merge non sarà possibile qua
settings.block_outdated_branch=Blocca il merge se la pull request è obsoleta
settings.block_outdated_branch_desc=Il merging non sarà possibile quando il ramo testa è dietro il ramo base.
settings.default_branch_desc=Seleziona un branch del repository predefinito per le pull request ed i commit di codice:
-settings.default_merge_style_desc=Modalità di merge predefinita per le richieste di pull:
settings.choose_branch=Scegli un branch…
settings.no_protected_branch=Non ci sono branch protetti.
settings.edit_protected_branch=Modifica
@@ -2054,7 +2028,7 @@ release.add_tag=Crea Solo Branch
branch.name=Nome branch
branch.delete_head=Elimina
branch.delete_html=Elimina branch
-branch.create_branch=Crea branch %s
+branch.create_branch=Crea branch %s
branch.deleted_by=Eliminato da %s
branch.included_desc=Questo ramo fa parte del ramo predefinito
branch.included=Incluso
@@ -2065,14 +2039,13 @@ branch.create_branch_operation=Crea ramo
branch.new_branch=Crea nuovo ramo
branch.renamed=Il ramo %s è stato rinominato in %s.
-tag.create_tag=Crea branch %s
+tag.create_tag=Crea branch %s
tag.create_tag_operation=Crea etichetta
tag.confirm_create_tag=Crea etichetta
topic.manage_topics=Gestisci argomenti
topic.done=Fatto
-topic.count_prompt=Non puoi selezionare più di 25 argomenti
find_file.go_to_file=Vai al file
find_file.no_matching=Nessun file corrispondente trovato
@@ -2155,7 +2128,6 @@ teams.leave.detail=Lasciare %s?
teams.can_create_org_repo=Crea repository
teams.can_create_org_repo_helper=I membri possono creare nuovi repository nell'organizzazione. Il creatore otterrà l'accesso di amministratore alla nuova repository.
teams.none_access=Nessun Accesso
-teams.none_access_helper=I membri non possono visualizzare o fare altre azioni su questa unità .
teams.general_access=Accesso Generale
teams.general_access_helper=I permessi dei membri saranno decisi dalla seguente tabella dei permessi.
teams.read_access=Lettura
@@ -2467,13 +2439,6 @@ auths.tips=Consigli
auths.tips.oauth2.general=Autenticazione OAuth2
auths.tip.oauth2_provider=OAuth2 Provider
auths.tip.nextcloud=`Registra un nuovo OAuth sulla tua istanza utilizzando il seguente menu "Impostazioni -> Sicurezza -> OAuth 2.0 client"`
-auths.tip.dropbox=Crea una nuova applicazione su https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Registra una nuova applicazione su https://developers.facebook.com/apps e aggiungi il prodotto "Facebook Login"`
-auths.tip.github=Registra una nuova applicazione OAuth su https://github.com/settings/applications/new
-auths.tip.google_plus=Ottieni le credenziali del client OAuth2 dalla console API di Google su https://console.developers.google.com/
-auths.tip.twitter=Vai su https://dev.twitter.com/apps, crea una applicazione e assicurati che l'opzione "Allow this application to be used to Sign In with Twitter" sia abilitata
-auths.tip.discord=Registra una nuova applicazione su https://discordapp.com/developers/applications/me
-auths.tip.yandex=`Crea una nuova applicazione su https://oauth.yandex.com/client/new. Seleziona i seguenti permessi da "Yandex. assport API": "Access to email address", "Access to user avatar" e "Access to username, name and surname, gender"`
auths.tip.mastodon=Inserisci un URL di istanza personalizzato per l'istanza mastodon con cui vuoi autenticarti (o usa quella predefinita)
auths.edit=Modifica fonte di autenticazione
auths.activated=Questa fonte di autenticazione è attiva
@@ -2622,14 +2587,11 @@ monitor.next=La Prossima Volta
monitor.previous=La Scorsa Volta
monitor.execute_times=Esecuzioni
monitor.process=Processi in Esecuzione
-monitor.stacktrace=Stacktraces
monitor.desc=Descrizione
monitor.start=Orario Avvio
monitor.execute_time=Tempo di Esecuzione
monitor.last_execution_result=Risultato
monitor.process.cancel=Annulla processo
-monitor.process.cancel_desc=L'annullamento di un processo potrebbe causare la perdita di dati
-monitor.process.cancel_notices=Annulla: %s?
monitor.process.children=Figli
monitor.queues=Code
@@ -2714,7 +2676,6 @@ raw_minutes=minuti
[dropzone]
default_message=Trascina i file o clicca qui per caricare.
-invalid_input_type=Non è possibile caricare file di questo tipo.
file_too_big=La dimensione del file ({{filesize}} MB) supera la dimensione massima ({{maxFilesize}} MB).
remove_file=Rimuovi file
diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini
index b36b320439..2e861df207 100644
--- a/options/locale/locale_ja-JP.ini
+++ b/options/locale/locale_ja-JP.ini
@@ -159,6 +159,7 @@ filter.public=公開
filter.private=プライベート
no_results_found=見ã¤ã‹ã‚Šã¾ã›ã‚“。
+internal_error_skipped=内部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸãŒã‚¹ã‚ップã•ã‚Œã¾ã—ãŸ: %s
[search]
search=検索…
@@ -177,6 +178,8 @@ code_search_by_git_grep=ç¾åœ¨ã®ã‚³ãƒ¼ãƒ‰æ¤œç´¢ã¯ "git grep" ã«ã‚ˆã£ã¦è¡Œ
package_kind=パッケージを検索...
project_kind=プãƒã‚¸ã‚§ã‚¯ãƒˆã‚’検索...
branch_kind=ブランãƒã‚’検索...
+tag_kind=タグを検索...
+tag_tooltip=一致ã™ã‚‹ã‚¿ã‚°ã‚’検索ã—ã¾ã™ã€‚ä»»æ„ã®ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã«ä¸€è‡´ã•ã›ã‚‹ã«ã¯ '%' を使用ã—ã¦ãã ã•ã„。
commit_kind=コミットを検索...
runner_kind=ランナーを検索...
no_results=一致ã™ã‚‹çµæžœãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ
@@ -218,22 +221,20 @@ string.desc=Z - A
[error]
occurred=エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ
-report_message=Gitea ã®ãƒã‚°ãŒç–‘ã‚ã‚Œã‚‹å ´åˆã¯ã€GitHubã§Issueを検索ã—ã¦ã€è¦‹ã¤ã‹ã‚‰ãªã‘ã‚Œã°æ–°ã—ã„Issueを作æˆã—ã¦ãã ã•ã„。
-missing_csrf=ä¸æ£ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆ: CSRFトークンãŒã‚ã‚Šã¾ã›ã‚“
-invalid_csrf=ä¸æ£ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆ: CSRFトークンãŒç„¡åŠ¹ã§ã™
+report_message=Gitea ã®ãƒã‚°ãŒç–‘ã‚ã‚Œã‚‹å ´åˆã¯ã€GitHubã§Issueを検索ã—ã¦ã€è¦‹ã¤ã‹ã‚‰ãªã‘ã‚Œã°æ–°ã—ã„Issueを作æˆã—ã¦ãã ã•ã„。
not_found=ターゲットãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
network_error=ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼
[startpage]
app_desc=自分ã§ç«‹ã¦ã‚‹ã€è¶…ç°¡å˜ Git サービス
install=ç°¡å˜ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«
-install_desc=シンプルã«ã€ãƒ—ラットフォームã«å¿œã˜ã¦ãƒã‚¤ãƒŠãƒªã‚’実行ã—ãŸã‚Šã€Dockerã§å‹•ã‹ã—ãŸã‚Šã€ãƒ‘ッケージを使ã†ã ã‘。
+install_desc=シンプルã«ã€ãƒ—ラットフォームã«å¿œã˜ã¦ãƒã‚¤ãƒŠãƒªã‚’実行ã—ãŸã‚Šã€Dockerã§å‹•ã‹ã—ãŸã‚Šã€ãƒ‘ッケージを使ã†ã ã‘。
platform=クãƒã‚¹ãƒ—ラットフォーãƒ
-platform_desc=Giteaã¯GoãŒã‚³ãƒ³ãƒ‘イルå¯èƒ½ãªã‚らゆる環境ã§å‹•ãã¾ã™: Windowsã€macOSã€Linuxã€ARMãªã©ã€‚ ã‚ãªãŸã®å¥½ããªã‚‚ã®ã‚’é¸ã‚“ã§ãã ã•ã„!
+platform_desc=Giteaã¯GoãŒã‚³ãƒ³ãƒ‘イルå¯èƒ½ãªã‚らゆる環境ã§å‹•ãã¾ã™: Windowsã€macOSã€Linuxã€ARMãªã©ã€‚ ã‚ãªãŸã®å¥½ããªã‚‚ã®ã‚’é¸ã‚“ã§ãã ã•ã„!
lightweight=軽é‡
lightweight_desc=Gitea ã®æœ€å°å‹•ä½œè¦ä»¶ã¯å°ã•ã„ãŸã‚ã€å®‰ä¾¡ãª Raspberry Pi ã§ã‚‚å‹•ãã¾ã™ã€‚エãƒãƒ«ã‚®ãƒ¼ã‚’節約ã—ã¾ã—ょã†!
license=オープンソース
-license_desc=Go get code.gitea.io/gitea! ã“ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’ã•ã‚‰ã«å‘上ã•ã›ã‚‹ãŸã‚ã€ãœã²è²¢çŒ®ã—ã¦å‚åŠ ã—ã¦ãã ã•ã„。 貢献者ã«ãªã‚‹ã“ã¨ã‚’æ¥ãšã‹ã—ãŒã‚‰ãªã„ã§!
+license_desc=Go get %[2]s! ã“ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’ã•ã‚‰ã«å‘上ã•ã›ã‚‹ãŸã‚ã€ãœã²è²¢çŒ®ã—ã¦å‚åŠ ã—ã¦ãã ã•ã„。 貢献者ã«ãªã‚‹ã“ã¨ã‚’æ¥ãšã‹ã—ãŒã‚‰ãªã„ã§!
[install]
install=インストール
@@ -456,7 +457,7 @@ authorize_title=`"%s"ã«ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯
authorization_failed=èªå¯å¤±æ•—
authorization_failed_desc=無効ãªãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’検出ã—ãŸãŸã‚èªå¯ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚ èªå¯ã—よã†ã¨ã—ãŸã‚¢ãƒ—リã®é–‹ç™ºè€…ã«é€£çµ¡ã—ã¦ãã ã•ã„。
sspi_auth_failed=SSPIèªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸ
-password_pwned=ã‚ãªãŸãŒé¸æŠžã—ãŸãƒ‘スワードã¯ã€éŽåŽ»ã®æƒ…å ±æ¼æ´©äº‹ä»¶ã§æµå‡ºã—ãŸç›—ã¾ã‚ŒãŸãƒ‘スワードã®ãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ 別ã®ãƒ‘スワードã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 ã¾ãŸä»–ã®ç™»éŒ²ã§ã‚‚ã“ã®ãƒ‘スワードã‹ã‚‰ã®å¤‰æ›´ã‚’検討ã—ã¦ãã ã•ã„。
+password_pwned=ã‚ãªãŸãŒé¸æŠžã—ãŸãƒ‘スワードã¯ã€éŽåŽ»ã®æƒ…å ±æ¼æ´©äº‹ä»¶ã§æµå‡ºã—ãŸç›—ã¾ã‚ŒãŸãƒ‘スワードã®ãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ 別ã®ãƒ‘スワードã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 ã¾ãŸä»–ã®ç™»éŒ²ã§ã‚‚ã“ã®ãƒ‘スワードã‹ã‚‰ã®å¤‰æ›´ã‚’検討ã—ã¦ãã ã•ã„。
password_pwned_err=HaveIBeenPwnedã¸ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’完了ã§ãã¾ã›ã‚“ã§ã—ãŸ
last_admin=最後ã®ç®¡ç†è€…ã¯å‰Šé™¤ã§ãã¾ã›ã‚“。少ãªãã¨ã‚‚一人ã®ç®¡ç†è€…ãŒå¿…è¦ã§ã™ã€‚
signin_passkey=パスã‚ーã§ã‚µã‚¤ãƒ³ã‚¤ãƒ³
@@ -628,6 +629,7 @@ org_still_own_repo=組織ã¯ã¾ã 1ã¤ä»¥ä¸Šã®ãƒªãƒã‚¸ãƒˆãƒªã‚’所有ã—ã¦ã„
org_still_own_packages=組織ã¯ã¾ã 1ã¤ä»¥ä¸Šã®ãƒ‘ッケージを所有ã—ã¦ã„ã¾ã™ã€‚ å…ˆã«ãれらを削除ã—ã¦ãã ã•ã„。
target_branch_not_exist=ターゲットã®ãƒ–ランãƒãŒå˜åœ¨ã—ã¦ã„ã¾ã›ã‚“。
+target_ref_not_exist=ターゲット㮠ref ãŒå˜åœ¨ã—ã¾ã›ã‚“ %s
admin_cannot_delete_self=ã‚ãªãŸãŒç®¡ç†è€…ã§ã‚ã‚‹å ´åˆã€è‡ªåˆ†è‡ªèº«ã‚’削除ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。最åˆã«ç®¡ç†è€…権é™ã‚’削除ã—ã¦ãã ã•ã„。
@@ -953,7 +955,7 @@ passcode_invalid=パスコードãŒé–“é•ã£ã¦ã„ã¾ã™ã€‚ å†åº¦ãŠè©¦ã—ã
twofa_enrolled=ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯æ£å¸¸ã«ç™»éŒ²ã•ã‚Œã¾ã—ãŸã€‚ 一回é™ã‚Šã®ãƒªã‚«ãƒãƒªã‚ー (%s) ã¯å®‰å…¨ãªå ´æ‰€ã«ä¿å˜ã—ã¦ãã ã•ã„。 ã“ã‚Œã¯äºŒåº¦ã¨è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。
twofa_failed_get_secret=シークレットãŒå–å¾—ã§ãã¾ã›ã‚“。
-webauthn_desc=ã‚»ã‚ュリティã‚ーã¯æš—å·åŒ–ã‚ーを内蔵ã™ã‚‹ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ ・ デãƒã‚¤ã‚¹ã§ã™ã€‚ 2è¦ç´ èªè¨¼ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ ã‚»ã‚ュリティã‚ーã¯WebAuthn Authenticatorè¦æ ¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+webauthn_desc=ã‚»ã‚ュリティã‚ーã¯æš—å·åŒ–ã‚ーを内蔵ã™ã‚‹ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ ・ デãƒã‚¤ã‚¹ã§ã™ã€‚ 2è¦ç´ èªè¨¼ã«ä½¿ç”¨ã§ãã¾ã™ã€‚ ã‚»ã‚ュリティã‚ーã¯WebAuthn Authenticatorè¦æ ¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
webauthn_register_key=ã‚»ã‚ュリティã‚ーを追åŠ
webauthn_nickname=ニックãƒãƒ¼ãƒ
webauthn_delete_key=ã‚»ã‚ュリティã‚ーã®ç™»éŒ²è§£é™¤
@@ -975,7 +977,7 @@ orgs_none=ã‚ãªãŸã¯ã©ã®çµ„ç¹”ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。
repos_none=ã‚ãªãŸã¯ãƒªãƒã‚¸ãƒˆãƒªã‚’所有ã—ã¦ã„ã¾ã›ã‚“。
delete_account=アカウントを削除
-delete_prompt=ã“ã®æ“作ã«ã‚ˆã‚Šã€ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯æ’ä¹…çš„ã«æŠ¹æ¶ˆã•ã‚Œã¾ã™ã€‚ å–り消ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。
+delete_prompt=ã“ã®æ“作ã«ã‚ˆã‚Šã€ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯æ’ä¹…çš„ã«æŠ¹æ¶ˆã•ã‚Œã¾ã™ã€‚ å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。
delete_with_all_comments=ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ä½œæˆã‹ã‚‰ã¾ã %s 経éŽã—ã¦ã„ã¾ã›ã‚“。 幽霊コメント回é¿ã®ãŸã‚ã€ã‚¤ã‚·ãƒ¥ãƒ¼ã‚„PRã®ã™ã¹ã¦ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯ä¸€ç·’ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚
confirm_delete_account=削除ã®ç¶šè¡Œ
delete_account_title=ユーザーアカウントã®å‰Šé™¤
@@ -1175,6 +1177,11 @@ migrate.gogs.description=notabug.org ã‚„ãã®ä»–ã® Gogs インスタンスã‹
migrate.onedev.description=code.onedev.io ã‚„ãã®ä»–ã® OneDev インスタンスã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’移行ã—ã¾ã™ã€‚
migrate.codebase.description=codebasehq.com ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’移行ã—ã¾ã™ã€‚
migrate.gitbucket.description=GitBucket インスタンスã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’移行ã—ã¾ã™ã€‚
+migrate.codecommit.description=AWS CodeCommitã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’移行ã—ã¾ã™ã€‚
+migrate.codecommit.aws_access_key_id=AWS アクセスã‚ー ID
+migrate.codecommit.aws_secret_access_key=AWSシークレットアクセスã‚ー
+migrate.codecommit.https_git_credentials_username=HTTPS Git èªè¨¼æƒ…å ± ユーザーå
+migrate.codecommit.https_git_credentials_password=HTTPS Git èªè¨¼æƒ…å ± パスワード
migrate.migrating_git=Gitデータ移行ä¸
migrate.migrating_topics=トピック移行ä¸
migrate.migrating_milestones=マイルストーン移行ä¸
@@ -1475,6 +1482,7 @@ issues.remove_labels=ãŒãƒ©ãƒ™ãƒ« %s を除去 %s
issues.add_remove_labels=ãŒãƒ©ãƒ™ãƒ« %s ã‚’è¿½åŠ ã€ %s を除去 %s
issues.add_milestone_at=`ãŒãƒžã‚¤ãƒ«ã‚¹ãƒˆãƒ¼ãƒ³ %[1]s ã«è¿½åŠ %[2]s`
issues.add_project_at=`ãŒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆ %s ã«è¿½åŠ %s`
+issues.move_to_column_of_project=`ãŒã“れを %[2]s ã® %[1]s ã«ç§»å‹• %[3]s`
issues.change_milestone_at=`ãŒãƒžã‚¤ãƒ«ã‚¹ãƒˆãƒ¼ãƒ³ã‚’ %[1]s ã‹ã‚‰ %[2]s ã¸å¤‰æ›´ %[3]s`
issues.change_project_at=`ãŒãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’ %s ã‹ã‚‰ %s ã¸å¤‰æ›´ %s`
issues.remove_milestone_at=`ãŒãƒžã‚¤ãƒ«ã‚¹ãƒˆãƒ¼ãƒ³ %[1]s ã‹ã‚‰é™¤åŽ» %[2]s`
@@ -1748,6 +1756,12 @@ issues.review.hide_resolved=解決済ã¿ã‚’éš ã™
issues.review.resolve_conversation=解決済ã¿ã«ã™ã‚‹
issues.review.un_resolve_conversation=未解決ã«ã™ã‚‹
issues.review.resolved_by=ãŒã“ã®ä¼šè©±ã‚’解決済ã¿ã«ã—ã¾ã—ãŸ
+issues.review.commented=コメント
+issues.review.official=承èªæ¸ˆã¿
+issues.review.requested=レビュー待ã¡
+issues.review.rejected=変更è¦è«‹æ¸ˆã¿
+issues.review.stale=承èªå¾Œã«æ›´æ–°ã•ã‚Œã¾ã—ãŸ
+issues.review.unofficial=カウントã•ã‚Œãªã„承èª
issues.assignee.error=予期ã—ãªã„エラーã«ã‚ˆã‚Šã€ä¸€éƒ¨ã®æ‹…å½“è€…ã‚’è¿½åŠ ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
issues.reference_issue.body=内容
issues.content_history.deleted=削除ã—ã¾ã—ãŸ
@@ -1764,6 +1778,7 @@ compare.compare_head=比較
pulls.desc=プルリクエストã¨ã‚³ãƒ¼ãƒ‰ãƒ¬ãƒ“ューã®æœ‰åŠ¹åŒ–。
pulls.new=æ–°ã—ã„プルリクエスト
pulls.new.blocked_user=リãƒã‚¸ãƒˆãƒªã®ã‚ªãƒ¼ãƒŠãƒ¼ãŒã‚ãªãŸã‚’ブãƒãƒƒã‚¯ã—ã¦ã„ã‚‹ãŸã‚ã€ãƒ—ルリクエストを作æˆã§ãã¾ã›ã‚“。
+pulls.new.must_collaborator=プルリクエストを作æˆã™ã‚‹ã«ã¯ã€å…±åŒä½œæ¥è€…ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
pulls.edit.already_changed=プルリクエストã®å¤‰æ›´ã‚’ä¿å˜ã§ãã¾ã›ã‚“。 ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚ˆã£ã¦å†…容ãŒã™ã§ã«å¤‰æ›´ã•ã‚Œã¦ã„るよã†ã§ã™ã€‚ 変更を上書ãã—ãªã„よã†ã«ã™ã‚‹ãŸã‚ã€ãƒšãƒ¼ã‚¸ã‚’æ›´æ–°ã—ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦ç·¨é›†ã—ã¦ãã ã•ã„
pulls.view=プルリクエストを表示
pulls.compare_changes=æ–°è¦ãƒ—ルリクエスト
@@ -1820,7 +1835,8 @@ pulls.is_empty=ã“ã®ãƒ–ランãƒã®å¤‰æ›´ã¯æ—¢ã«ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ–ランãƒ
pulls.required_status_check_failed=ã„ãã¤ã‹ã®å¿…è¦ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒã‚§ãƒƒã‚¯ãŒæˆåŠŸã—ã¦ã„ã¾ã›ã‚“。
pulls.required_status_check_missing=å¿…è¦ãªãƒã‚§ãƒƒã‚¯ãŒã„ãã¤ã‹æŠœã‘ã¦ã„ã¾ã™ã€‚
pulls.required_status_check_administrator=管ç†è€…ã§ã‚ã‚‹ãŸã‚ã€ã“ã®ãƒ—ルリクエストをマージã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ã€‚
-pulls.blocked_by_approvals=ã“ã®ãƒ—ルリクエストã¯ã¾ã 承èªæ•°ãŒè¶³ã‚Šã¾ã›ã‚“。 %[1]d/%[2]dã®æ‰¿èªã‚’å¾—ã¦ã„ã¾ã™ã€‚
+pulls.blocked_by_approvals=ã“ã®ãƒ—ルリクエストã¯ã¾ã å¿…è¦ãªæ‰¿èªæ•°ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 å…¬å¼ã®æ‰¿èªã‚’ %[1]d / %[2]d å¾—ã¦ã„ã¾ã™ã€‚
+pulls.blocked_by_approvals_whitelisted=ã“ã®ãƒ—ルリクエストã¯ã¾ã å¿…è¦ãªæ‰¿èªæ•°ã‚’満ãŸã—ã¦ã„ã¾ã›ã‚“。 許å¯ãƒªã‚¹ãƒˆã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¾ãŸã¯ãƒãƒ¼ãƒ ã‹ã‚‰ã®æ‰¿èªã‚’ %[1]d / %[2]d å¾—ã¦ã„ã¾ã™ã€‚
pulls.blocked_by_rejection=ã“ã®ãƒ—ルリクエストã¯å…¬å¼ãƒ¬ãƒ“ューアã«ã‚ˆã‚Šå¤‰æ›´è¦è«‹ã•ã‚Œã¦ã„ã¾ã™ã€‚
pulls.blocked_by_official_review_requests=ã“ã®ãƒ—ルリクエストã«ã¯å…¬å¼ãƒ¬ãƒ“ューä¾é ¼ãŒã‚ã‚Šã¾ã™ã€‚
pulls.blocked_by_outdated_branch=ã“ã®ãƒ—ルリクエストã¯é…ã‚Œã®ãŸã‚ブãƒãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚
@@ -1862,9 +1878,9 @@ pulls.unrelated_histories=マージ失敗: マージHEADã¨ãƒ™ãƒ¼ã‚¹ã«ã¯å…±é€š
pulls.merge_out_of_date=マージ失敗: マージã®ç”Ÿæˆä¸ã«ãƒ™ãƒ¼ã‚¹ãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚ ヒント: ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ã¿ã¦ãã ã•ã„
pulls.head_out_of_date=マージ失敗: マージã®ç”Ÿæˆä¸ã« head ãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚ ヒント: ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ã¿ã¦ãã ã•ã„
pulls.has_merged=失敗: プルリクエストã¯ãƒžãƒ¼ã‚¸ã•ã‚Œã¦ã„ã¾ã—ãŸã€‚å†åº¦ãƒžãƒ¼ã‚¸ã—ãŸã‚Šã€ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ–ランãƒã‚’変更ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
-pulls.push_rejected=マージ失敗: プッシュã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚ ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã®Gitフックを見直ã—ã¦ãã ã•ã„。
+pulls.push_rejected=プッシュ失敗: プッシュã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚ ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã®Gitフックを見直ã—ã¦ãã ã•ã„。
pulls.push_rejected_summary=æ‹’å¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸å…¨ä½“:
-pulls.push_rejected_no_message=マージ失敗: プッシュã¯æ‹’å¦ã•ã‚Œã€ãƒªãƒ¢ãƒ¼ãƒˆã‹ã‚‰ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã‚ã‚Šã¾ã›ã‚“。
ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã®Gitフックを見直ã—ã¦ãã ã•ã„
+pulls.push_rejected_no_message=プッシュ失敗: プッシュã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸãŒã€ãƒªãƒ¢ãƒ¼ãƒˆã‹ã‚‰ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚ã‚Šã¾ã›ã‚“。ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã®Gitフックを見直ã—ã¦ãã ã•ã„
pulls.open_unmerged_pull_exists=`åŒã˜æ¡ä»¶ã®ãƒ—ルリクエスト (#%d) ãŒæœªå‡¦ç†ã®ãŸã‚ã€å†ã‚ªãƒ¼ãƒ—ンã¯ã§ãã¾ã›ã‚“。`
pulls.status_checking=ã„ãã¤ã‹ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒã‚§ãƒƒã‚¯ãŒå¾…æ©Ÿä¸ã§ã™
pulls.status_checks_success=ステータスãƒã‚§ãƒƒã‚¯ã¯ã™ã¹ã¦æˆåŠŸã—ã¾ã—ãŸ
@@ -1888,6 +1904,7 @@ pulls.cmd_instruction_checkout_title=ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆ
pulls.cmd_instruction_checkout_desc=プãƒã‚¸ã‚§ã‚¯ãƒˆãƒªãƒã‚¸ãƒˆãƒªã‹ã‚‰æ–°ã—ã„ブランãƒã‚’ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆã—ã€å¤‰æ›´å†…容をテストã—ã¾ã™ã€‚
pulls.cmd_instruction_merge_title=マージ
pulls.cmd_instruction_merge_desc=変更内容をマージã—ã¦ã€Giteaã«åæ˜ ã—ã¾ã™ã€‚
+pulls.cmd_instruction_merge_warning=è¦å‘Š: 「手動マージã®è‡ªå‹•æ¤œå‡ºã€ãŒæœ‰åŠ¹ã§ã¯ãªã„ãŸã‚ã€ã“ã®æ“作ã§ã¯ãƒ—ルリクエストをマージã§ãã¾ã›ã‚“
pulls.clear_merge_message=マージメッセージをクリア
pulls.clear_merge_message_hint=マージメッセージã®ã‚¯ãƒªã‚¢ã¯ã€ã‚³ãƒŸãƒƒãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®é™¤åŽ»ã ã‘ã‚’è¡Œã„ã¾ã™ã€‚ 生æˆã•ã‚ŒãŸGitトレーラー("Co-Authored-By …" ç‰)ã¯ãã®ã¾ã¾æ®‹ã‚Šã¾ã™ã€‚
@@ -1909,6 +1926,7 @@ pulls.delete.text=本当ã«ã“ã®ãƒ—ルリクエストを削除ã—ã¾ã™ã‹? (
pulls.recently_pushed_new_branches=%[2]s ã€ã‚ãªãŸã¯ãƒ–ランム%[1]s ã«ãƒ—ッシュã—ã¾ã—ãŸ
pull.deleted_branch=(削除済ã¿):%s
+pull.agit_documentation=AGitã«é–¢ã™ã‚‹ãƒ‰ã‚ュメントを確èªã™ã‚‹
comments.edit.already_changed=コメントã®å¤‰æ›´ã‚’ä¿å˜ã§ãã¾ã›ã‚“。 ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚ˆã£ã¦å†…容ãŒã™ã§ã«å¤‰æ›´ã•ã‚Œã¦ã„るよã†ã§ã™ã€‚ 変更を上書ãã—ãªã„よã†ã«ã™ã‚‹ãŸã‚ã€ãƒšãƒ¼ã‚¸ã‚’æ›´æ–°ã—ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦ç·¨é›†ã—ã¦ãã ã•ã„
@@ -1919,7 +1937,7 @@ milestones.no_due_date=期日ãªã—
milestones.open=オープン
milestones.close=クãƒãƒ¼ã‚º
milestones.new_subheader=マイルストーンを使ã†ã¨ã‚¤ã‚·ãƒ¥ãƒ¼ã®æ•´ç†ã‚„進æ—確èªãŒã—ã‚„ã™ããªã‚Šã¾ã™ã€‚
-milestones.completeness=%d%%消化
+milestones.completeness=%d%%消化
milestones.create=マイルストーンを作æˆ
milestones.title=タイトル
milestones.desc=説明
@@ -2182,6 +2200,7 @@ settings.transfer_in_progress=ç¾åœ¨é€²è¡Œä¸ã®ç§»è»¢ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®
settings.transfer_notices_1=- 個人ユーザーã«ç§»è»¢ã™ã‚‹ã¨ã€ã‚ãªãŸã¯ãƒªãƒã‚¸ãƒˆãƒªã¸ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©ã‚’失ã„ã¾ã™ã€‚
settings.transfer_notices_2=- ã‚ãªãŸãŒæ‰€æœ‰(ã¾ãŸã¯å…±åŒã§æ‰€æœ‰)ã—ã¦ã„る組織ã«ç§»è»¢ã™ã‚‹ã¨ã€ãƒªãƒã‚¸ãƒˆãƒªã¸ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©ã¯ç¶æŒã•ã‚Œã¾ã™ã€‚
settings.transfer_notices_3=- プライベートリãƒã‚¸ãƒˆãƒªã‚’個人ユーザーã«ç§»è»¢ã—ãŸå ´åˆã¯ã€æœ€ä½Žé™ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒèªã¿å–り権é™ã‚’æŒã¤ã‚ˆã†è¨å®šã•ã‚Œã¾ã™ (å¿…è¦ã«å¿œã˜ã¦æ¨©é™ãŒå¤‰æ›´ã•ã‚Œã¾ã™)。
+settings.transfer_notices_4=- リãƒã‚¸ãƒˆãƒªãŒçµ„ç¹”ã«å±žã—ã¦ãŠã‚Šã€ãれを他ã®çµ„織や個人ã«ç§»è»¢ã—ãŸå ´åˆã€ãã®ãƒªãƒã‚¸ãƒˆãƒªã®ã‚¤ã‚·ãƒ¥ãƒ¼ã¨çµ„ç¹”ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆãƒœãƒ¼ãƒ‰ã¨ã®ãƒªãƒ³ã‚¯ãŒå¤±ã‚ã‚Œã¾ã™ã€‚
settings.transfer_owner=æ–°ã—ã„オーナー
settings.transfer_perform=転é€ã‚’実行
settings.transfer_started=ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã¯è»¢é€ã®ãŸã‚ã«ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ãŠã‚Šã€ã€Œ%sã€ã‹ã‚‰ã®ç¢ºèªã‚’å¾…ã£ã¦ã„ã¾ã™
@@ -2318,7 +2337,7 @@ settings.event_pull_request_merge=プルリクエストã®ãƒžãƒ¼ã‚¸
settings.event_package=パッケージ
settings.event_package_desc=リãƒã‚¸ãƒˆãƒªã«ãƒ‘ッケージãŒä½œæˆã¾ãŸã¯å‰Šé™¤ã•ã‚ŒãŸã¨ã。
settings.branch_filter=ブランムフィルター
-settings.branch_filter_desc=プッシュã€ãƒ–ランãƒä½œæˆã€ãƒ–ランãƒå‰Šé™¤ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’通知ã™ã‚‹ãƒ–ランãƒã‚’ã€globパターンã§æŒ‡å®šã™ã‚‹ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã§ã™ã€‚ 空ã‹*
ã®ã¨ãã¯ã€ã™ã¹ã¦ã®ãƒ–ランãƒã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’通知ã—ã¾ã™ã€‚ 文法ã«ã¤ã„ã¦ã¯ github.com/gobwas/glob ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: master
〠{master,release*}
+settings.branch_filter_desc=プッシュã€ãƒ–ランãƒä½œæˆã€ãƒ–ランãƒå‰Šé™¤ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’通知ã™ã‚‹ãƒ–ランãƒã‚’ã€globパターンã§æŒ‡å®šã™ã‚‹ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã§ã™ã€‚ 空ã‹*
ã®ã¨ãã¯ã€ã™ã¹ã¦ã®ãƒ–ランãƒã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’通知ã—ã¾ã™ã€‚ 文法ã«ã¤ã„ã¦ã¯ %[2]s ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: master
〠{master,release*}
settings.authorization_header=Authorizationヘッダー
settings.authorization_header_desc=入力ã—ãŸå ´åˆã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«Authorizationヘッダーã¨ã—ã¦ä»˜åŠ ã—ã¾ã™ã€‚ 例: %s
settings.active=有効
@@ -2406,7 +2425,7 @@ settings.protect_status_check_matched=マッãƒ
settings.protect_invalid_status_check_pattern=`ä¸æ£ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒã‚§ãƒƒã‚¯ãƒ‘ターン: "%s"`
settings.protect_no_valid_status_check_patterns=有効ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒã‚§ãƒƒã‚¯ãƒ‘ターンãŒã‚ã‚Šã¾ã›ã‚“。
settings.protect_required_approvals=å¿…è¦ãªæ‰¿èªæ•°:
-settings.protect_required_approvals_desc=肯定的ãªãƒ¬ãƒ“ューã®æ•°ã‚’満ãŸã—ãŸãƒ—ルリクエストã—ã‹ãƒžãƒ¼ã‚¸ã§ããªã„よã†ã«ã—ã¾ã™ã€‚
+settings.protect_required_approvals_desc=å¿…è¦ãªæ‰¿èªæ•°ã‚’満ãŸã—ãŸãƒ—ルリクエストã—ã‹ãƒžãƒ¼ã‚¸ã§ããªã„よã†ã«ã—ã¾ã™ã€‚ å¿…è¦ã¨ãªã‚‹æ‰¿èªã¨ã¯ã€è¨±å¯ãƒªã‚¹ãƒˆã«ã‚るユーザーやãƒãƒ¼ãƒ ã€ã‚‚ã—ãã¯æ›¸ãè¾¼ã¿æ¨©é™ã‚’æŒã¤èª°ã‹ã‹ã‚‰ã®ã‚‚ã®ã§ã™ã€‚
settings.protect_approvals_whitelist_enabled=許å¯ãƒªã‚¹ãƒˆã«ç™»éŒ²ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚„ãƒãƒ¼ãƒ ã«æ‰¿èªã‚’制é™
settings.protect_approvals_whitelist_enabled_desc=許å¯ãƒªã‚¹ãƒˆã«ç™»éŒ²ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã¾ãŸã¯ãƒãƒ¼ãƒ ã«ã‚ˆã‚‹ãƒ¬ãƒ“ューã®ã¿ã‚’ã€å¿…è¦ãªæ‰¿èªæ•°ã«ã‚«ã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚ 承èªã®è¨±å¯ãƒªã‚¹ãƒˆãŒç„¡ã„å ´åˆã¯ã€æ›¸ãè¾¼ã¿æ¨©é™ã‚’æŒã¤äººã«ã‚ˆã‚‹ãƒ¬ãƒ“ューを必è¦ãªæ‰¿èªæ•°ã«ã‚«ã‚¦ãƒ³ãƒˆã—ã¾ã™ã€‚
settings.protect_approvals_whitelist_users=許å¯ãƒªã‚¹ãƒˆã«å«ã‚るレビューア:
@@ -2418,12 +2437,12 @@ settings.ignore_stale_approvals_desc=å¤ã„コミットã«å¯¾ã—ã¦è¡Œã‚ã‚ŒãŸ
settings.require_signed_commits=コミット署åå¿…é ˆ
settings.require_signed_commits_desc=ç½²åã•ã‚Œã¦ã„ãªã„å ´åˆã€ã¾ãŸã¯ç½²åãŒæ¤œè¨¼ã§ããªã‹ã£ãŸå ´åˆã¯ã€ã“ã®ãƒ–ランãƒã¸ã®ãƒ—ッシュを拒å¦ã—ã¾ã™ã€‚
settings.protect_branch_name_pattern=ä¿è·ãƒ–ランãƒåã®ãƒ‘ターン
-settings.protect_branch_name_pattern_desc=ä¿è·ãƒ–ランãƒåã®ãƒ‘ターン。書ãæ–¹ã«ã¤ã„ã¦ã¯ ドã‚ュメント ã‚’å‚ç…§ã—ã¦ãã ã•ã„。例: main, release/**
+settings.protect_branch_name_pattern_desc=ä¿è·ãƒ–ランãƒåã®ãƒ‘ターン。書ãæ–¹ã«ã¤ã„ã¦ã¯ ドã‚ュメント ã‚’å‚ç…§ã—ã¦ãã ã•ã„。例: main, release/**
settings.protect_patterns=パターン
settings.protect_protected_file_patterns=ä¿è·ã•ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒ‘ターン (セミコãƒãƒ³';'ã§åŒºåˆ‡ã‚‹):
-settings.protect_protected_file_patterns_desc=ä¿è·ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã“ã®ãƒ–ランãƒã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ ãƒ»ç·¨é›†ãƒ»å‰Šé™¤ã™ã‚‹æ¨©é™ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ã§ã‚ã£ã¦ã‚‚ã€ç›´æŽ¥å¤‰æ›´ã™ã‚‹ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚ セミコãƒãƒ³(';')ã§åŒºåˆ‡ã£ã¦è¤‡æ•°ã®ãƒ‘ターンを指定ã§ãã¾ã™ã€‚ パターンã®æ–‡æ³•ã«ã¤ã„ã¦ã¯ github.com/gobwas/glob ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: .drone.yml
, /docs/**/*.txt
+settings.protect_protected_file_patterns_desc=ä¿è·ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã“ã®ãƒ–ランãƒã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ ãƒ»ç·¨é›†ãƒ»å‰Šé™¤ã™ã‚‹æ¨©é™ã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ã§ã‚ã£ã¦ã‚‚ã€ç›´æŽ¥å¤‰æ›´ã™ã‚‹ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚ セミコãƒãƒ³(';')ã§åŒºåˆ‡ã£ã¦è¤‡æ•°ã®ãƒ‘ターンを指定ã§ãã¾ã™ã€‚ パターンã®æ–‡æ³•ã«ã¤ã„ã¦ã¯ %[2]s ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: .drone.yml
, /docs/**/*.txt
settings.protect_unprotected_file_patterns=ä¿è·ã—ãªã„ファイルã®ãƒ‘ターン (セミコãƒãƒ³';'ã§åŒºåˆ‡ã‚‹):
-settings.protect_unprotected_file_patterns_desc=ä¿è·ã—ãªã„ファイルã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«æ›¸ãè¾¼ã¿æ¨©é™ãŒã‚ã‚Œã°ãƒ—ッシュ制é™ã‚’ãƒã‚¤ãƒ‘スã—ã¦ç›´æŽ¥å¤‰æ›´ã§ãã¾ã™ã€‚ セミコãƒãƒ³(';')ã§åŒºåˆ‡ã£ã¦è¤‡æ•°ã®ãƒ‘ターンを指定ã§ãã¾ã™ã€‚ パターンã®æ–‡æ³•ã«ã¤ã„ã¦ã¯ github.com/gobwas/glob ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: .drone.yml
, /docs/**/*.txt
+settings.protect_unprotected_file_patterns_desc=ä¿è·ã—ãªã„ファイルã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«æ›¸ãè¾¼ã¿æ¨©é™ãŒã‚ã‚Œã°ãƒ—ッシュ制é™ã‚’ãƒã‚¤ãƒ‘スã—ã¦ç›´æŽ¥å¤‰æ›´ã§ãã¾ã™ã€‚ セミコãƒãƒ³(';')ã§åŒºåˆ‡ã£ã¦è¤‡æ•°ã®ãƒ‘ターンを指定ã§ãã¾ã™ã€‚ パターンã®æ–‡æ³•ã«ã¤ã„ã¦ã¯ %[2]s ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 例: .drone.yml
, /docs/**/*.txt
settings.add_protected_branch=ä¿è·ã‚’有効ã«ã™ã‚‹
settings.delete_protected_branch=ä¿è·ã‚’無効ã«ã™ã‚‹
settings.update_protect_branch_success=ルール "%s" ã«å¯¾ã™ã‚‹ãƒ–ランãƒä¿è·ã‚’æ›´æ–°ã—ã¾ã—ãŸã€‚
@@ -2455,13 +2474,25 @@ settings.tags.protection.allowed.teams=許å¯ã™ã‚‹ãƒãƒ¼ãƒ
settings.tags.protection.allowed.noone=ãªã—
settings.tags.protection.create=ã‚¿ã‚°ã‚’ä¿è·
settings.tags.protection.none=ã‚¿ã‚°ã¯ä¿è·ã•ã‚Œã¦ã„ã¾ã›ã‚“。
-settings.tags.protection.pattern.description=ã²ã¨ã¤ã®ã‚¿ã‚°åã‹ã€è¤‡æ•°ã®ã‚¿ã‚°ã«ãƒžãƒƒãƒã™ã‚‹globパターンã¾ãŸã¯æ£è¦è¡¨ç¾ã‚’使用ã§ãã¾ã™ã€‚ 詳ã—ãã¯ã‚¿ã‚°ã®ä¿è·ã‚¬ã‚¤ãƒ‰ ã‚’ã”覧ãã ã•ã„。
+settings.tags.protection.pattern.description=ã²ã¨ã¤ã®ã‚¿ã‚°åã‹ã€è¤‡æ•°ã®ã‚¿ã‚°ã«ãƒžãƒƒãƒã™ã‚‹globパターンã¾ãŸã¯æ£è¦è¡¨ç¾ã‚’使用ã§ãã¾ã™ã€‚ 詳ã—ãã¯ã‚¿ã‚°ã®ä¿è·ã‚¬ã‚¤ãƒ‰ ã‚’ã”覧ãã ã•ã„。
settings.bot_token=Botトークン
settings.chat_id=ãƒãƒ£ãƒƒãƒˆID
settings.thread_id=スレッドID
settings.matrix.homeserver_url=ホームサーãƒãƒ¼ URL
settings.matrix.room_id=ルームID
settings.matrix.message_type=メッセージ種別
+settings.visibility.private.button=プライベートã«ã™ã‚‹
+settings.visibility.private.text=プライベートã«å¤‰æ›´ã—ãŸå ´åˆã€ãƒªãƒã‚¸ãƒˆãƒªã‚’許å¯ã•ã‚ŒãŸãƒ¡ãƒ³ãƒãƒ¼ã®ã¿ãŒé–²è¦§ã§ãるよã†ã«ã™ã‚‹ã ã‘ã§ãªãã€ãƒ•ã‚©ãƒ¼ã‚¯ã€ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼ã€ã‚¹ã‚¿ãƒ¼ã¨ã®é–¢ä¿‚を解除ã™ã‚‹å¯èƒ½æ€§ã‚‚ã‚ã‚Šã¾ã™ã€‚
+settings.visibility.private.bullet_title=プライベートã«å¤‰æ›´ã™ã‚‹ã¨:
+settings.visibility.private.bullet_one=リãƒã‚¸ãƒˆãƒªã‚’許å¯ã•ã‚ŒãŸãƒ¡ãƒ³ãƒãƒ¼ã®ã¿ãŒé–²è¦§ã§ãるよã†ã«ã—ã¾ã™ã€‚
+settings.visibility.private.bullet_two=フォークã€ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼ã€ã‚¹ã‚¿ãƒ¼ã¨ã®é–¢ä¿‚を解除ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
+settings.visibility.public.button=公開ã™ã‚‹
+settings.visibility.public.text=公開ã«å¤‰æ›´ã™ã‚‹ã¨ã€ãƒªãƒã‚¸ãƒˆãƒªã‚’誰ã§ã‚‚閲覧ã§ãるよã†ã«ã—ã¾ã™ã€‚
+settings.visibility.public.bullet_title=公開ã«å¤‰æ›´ã™ã‚‹ã¨:
+settings.visibility.public.bullet_one=リãƒã‚¸ãƒˆãƒªã‚’誰ã§ã‚‚閲覧ã§ãるよã†ã«ã—ã¾ã™ã€‚
+settings.visibility.success=リãƒã‚¸ãƒˆãƒªã®å…¬é–‹è¨å®šã‚’変更ã—ã¾ã—ãŸã€‚
+settings.visibility.error=リãƒã‚¸ãƒˆãƒªã®å…¬é–‹è¨å®šã®å¤‰æ›´ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚
+settings.visibility.fork_error=フォークã•ã‚ŒãŸãƒªãƒã‚¸ãƒˆãƒªã®å…¬é–‹è¨å®šã¯å¤‰æ›´ã§ãã¾ã›ã‚“。
settings.archive.button=アーカイブ
settings.archive.header=ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã‚’アーカイブ
settings.archive.text=リãƒã‚¸ãƒˆãƒªã‚’アーカイブã™ã‚‹ã¨ãƒªãƒã‚¸ãƒˆãƒªå…¨ä½“ãŒèªã¿å‡ºã—専用ã¨ãªã‚Šã¾ã™ã€‚ ダッシュボードã«ã‚‚表示ã•ã‚Œãªããªã‚Šã¾ã™ã€‚ æ–°ãŸãªã‚³ãƒŸãƒƒãƒˆã€ã‚ã‚‹ã„ã¯ã€ã‚¤ã‚·ãƒ¥ãƒ¼ã‚„プルリクエストã®ä½œæˆã¯ã€èª°ã‚‚ã§ããªããªã‚Šã¾ã™ (ã‚ãªãŸã§ã•ãˆã‚‚!)。
@@ -2623,7 +2654,7 @@ branch.delete_desc=ブランãƒã®å‰Šé™¤ã¯æ’ä¹…çš„ã§ã™ã€‚ 実際ã«å‰Šé™¤ã•
branch.deletion_success=ブランム"%s" を削除ã—ã¾ã—ãŸã€‚
branch.deletion_failed=ブランム"%s" ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚
branch.delete_branch_has_new_commits=マージ後ã«æ–°ã—ã„コミットãŒè¿½åŠ ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€ãƒ–ランム"%s" を削除ã§ãã¾ã›ã‚“。
-branch.create_branch=ブランム%s を作æˆ
+branch.create_branch=ブランム%s を作æˆ
branch.create_from=`"%s" ã‹ã‚‰`
branch.create_success=ブランム"%s" を作æˆã—ã¾ã—ãŸã€‚
branch.branch_already_exists=ブランム"%s" ã¯ã€ã“ã®ãƒªãƒã‚¸ãƒˆãƒªã«æ—¢ã«å˜åœ¨ã—ã¾ã™ã€‚
@@ -2649,7 +2680,7 @@ branch.new_branch=æ–°ã—ã„ブランãƒã®ä½œæˆ
branch.new_branch_from=`"%s" ã‹ã‚‰æ–°ã—ã„ブランãƒã‚’作æˆ`
branch.renamed=ブランム%s 㯠%s ã«ãƒªãƒãƒ¼ãƒ ã•ã‚Œã¾ã—ãŸã€‚
-tag.create_tag=ã‚¿ã‚° %s を作æˆ
+tag.create_tag=ã‚¿ã‚° %s を作æˆ
tag.create_tag_operation=ã‚¿ã‚°ã®ä½œæˆ
tag.confirm_create_tag=タグを作æˆ
tag.create_tag_from=`"%s" ã‹ã‚‰æ–°ã—ã„タグを作æˆ`
@@ -2727,7 +2758,7 @@ settings.change_orgname_redirect_prompt=å¤ã„åå‰ã¯ã€å†ä½¿ç”¨ã•ã‚Œã¦ã„
settings.update_avatar_success=組織ã®ã‚¢ãƒã‚¿ãƒ¼ã‚’æ›´æ–°ã—ã¾ã—ãŸã€‚
settings.delete=組織を削除
settings.delete_account=ã“ã®çµ„織を削除
-settings.delete_prompt=組織ã¯æ’ä¹…çš„ã«å‰Šé™¤ã•ã‚Œã€å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。 続行ã—ã¾ã™ã‹ï¼Ÿ
+settings.delete_prompt=組織ã¯æ’ä¹…çš„ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚ å…ƒã«æˆ»ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“ï¼
settings.confirm_delete_account=削除を確èª
settings.delete_org_title=組織ã®å‰Šé™¤
settings.delete_org_desc=組織をæ’ä¹…çš„ã«å‰Šé™¤ã—ã¾ã™ã€‚ 続行ã—ã¾ã™ã‹ï¼Ÿ
@@ -2756,7 +2787,7 @@ teams.leave.detail=%s ã‹ã‚‰è„±é€€ã—ã¾ã™ã‹ï¼Ÿ
teams.can_create_org_repo=リãƒã‚¸ãƒˆãƒªã‚’作æˆ
teams.can_create_org_repo_helper=メンãƒãƒ¼ã¯çµ„ç¹”ã®ãƒªãƒã‚¸ãƒˆãƒªã‚’æ–°ãŸã«ä½œæˆã§ãã¾ã™ã€‚作æˆè€…ã«ã¯æ–°ã—ã„リãƒã‚¸ãƒˆãƒªã®ç®¡ç†è€…権é™ãŒä¸Žãˆã‚‰ã‚Œã¾ã™ã€‚
teams.none_access=アクセスãªã—
-teams.none_access_helper=メンãƒã¯ã€ã“ã®ãƒ¦ãƒ‹ãƒƒãƒˆã§è¡¨ç¤ºã‚„ä»–ã®æ“作を行ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。
+teams.none_access_helper=メンãƒãƒ¼ã¯ã€ã“ã®ãƒ¦ãƒ‹ãƒƒãƒˆã‚’表示ã—ãŸã‚Šä»–ã®æ“作を行ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。 公開リãƒã‚¸ãƒˆãƒªã«ã¯é©ç”¨ã•ã‚Œã¾ã›ã‚“。
teams.general_access=一般的ãªã‚¢ã‚¯ã‚»ã‚¹
teams.general_access_helper=メンãƒãƒ¼ã®æ¨©é™ã¯ä¸‹è¨˜ã®æ¨©é™ãƒ†ãƒ¼ãƒ–ルã§æ±ºå®šã•ã‚Œã¾ã™ã€‚
teams.read_access=èªã¿å–ã‚Š
@@ -2825,7 +2856,7 @@ last_page=最後
total=åˆè¨ˆ: %d
settings=管ç†è¨å®š
-dashboard.new_version_hint=Gitea %s ãŒå…¥æ‰‹å¯èƒ½ã«ãªã‚Šã¾ã—ãŸã€‚ ç¾åœ¨å®Ÿè¡Œã—ã¦ã„ã‚‹ã®ã¯ %s ã§ã™ã€‚ 詳細㯠ブãƒã‚° を確èªã—ã¦ãã ã•ã„。
+dashboard.new_version_hint=Gitea %s ãŒå…¥æ‰‹å¯èƒ½ã«ãªã‚Šã¾ã—ãŸã€‚ ç¾åœ¨å®Ÿè¡Œã—ã¦ã„ã‚‹ã®ã¯ %s ã§ã™ã€‚ 詳細㯠ブãƒã‚° を確èªã—ã¦ãã ã•ã„。
dashboard.statistic=サマリー
dashboard.maintenance_operations=メンテナンスæ“作
dashboard.system_status=システム状æ³
@@ -3017,12 +3048,12 @@ packages.size=サイズ
packages.published=é…布
defaulthooks=デフォルトWebhook
-defaulthooks.desc=Webhookã¯ã€ç‰¹å®šã®GiteaイベントãŒç™ºç”Ÿã—ãŸã¨ãã«ã€ã‚µãƒ¼ãƒãƒ¼ã«HTTP POSTリクエストを自動的ã«é€ä¿¡ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ ã“ã“ã§å®šç¾©ã—ãŸWebhookã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¨ãªã‚Šã€å…¨ã¦ã®æ–°è¦ãƒªãƒã‚¸ãƒˆãƒªã«ã‚³ãƒ”ーã•ã‚Œã¾ã™ã€‚ 詳ã—ãã¯Webhooksガイドをã”覧下ã•ã„。
+defaulthooks.desc=Webhookã¯ã€ç‰¹å®šã®GiteaイベントãŒç™ºç”Ÿã—ãŸã¨ãã«ã€ã‚µãƒ¼ãƒãƒ¼ã«HTTP POSTリクエストを自動的ã«é€ä¿¡ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ ã“ã“ã§å®šç¾©ã—ãŸWebhookã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¨ãªã‚Šã€å…¨ã¦ã®æ–°è¦ãƒªãƒã‚¸ãƒˆãƒªã«ã‚³ãƒ”ーã•ã‚Œã¾ã™ã€‚ 詳ã—ãã¯Webhooksガイドをã”覧下ã•ã„。
defaulthooks.add_webhook=デフォルトWebhookã®è¿½åŠ
defaulthooks.update_webhook=デフォルトWebhookã®æ›´æ–°
systemhooks=システムWebhook
-systemhooks.desc=Webhookã¯ã€ç‰¹å®šã®GiteaイベントãŒç™ºç”Ÿã—ãŸã¨ãã«ã€ã‚µãƒ¼ãƒãƒ¼ã«HTTP POSTリクエストを自動的ã«é€ä¿¡ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ ã“ã“ã§å®šç¾©ã—ãŸWebhookã¯ã€ã‚·ã‚¹ãƒ†ãƒ 内ã®ã™ã¹ã¦ã®ãƒªãƒã‚¸ãƒˆãƒªã§å‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚ ãã®ãŸã‚ã€ãƒ‘フォーマンスã«åŠã¼ã™å½±éŸ¿ã‚’考慮ã—ãŸã†ãˆã§è¨å®šã—ã¦ãã ã•ã„。 詳ã—ãã¯Webhooksガイドをã”覧下ã•ã„。
+systemhooks.desc=Webhookã¯ã€ç‰¹å®šã®GiteaイベントãŒç™ºç”Ÿã—ãŸã¨ãã«ã€ã‚µãƒ¼ãƒãƒ¼ã«HTTP POSTリクエストを自動的ã«é€ä¿¡ã™ã‚‹ã‚‚ã®ã§ã™ã€‚ ã“ã“ã§å®šç¾©ã—ãŸWebhookã¯ã€ã‚·ã‚¹ãƒ†ãƒ 内ã®ã™ã¹ã¦ã®ãƒªãƒã‚¸ãƒˆãƒªã§å‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚ ãã®ãŸã‚ã€ãƒ‘フォーマンスã«åŠã¼ã™å½±éŸ¿ã‚’考慮ã—ãŸã†ãˆã§è¨å®šã—ã¦ãã ã•ã„。 詳ã—ãã¯Webhooksガイドをã”覧下ã•ã„。
systemhooks.add_webhook=システムWebhookを追åŠ
systemhooks.update_webhook=システムWebhookを更新
@@ -3117,18 +3148,18 @@ auths.tips=ヒント
auths.tips.oauth2.general=OAuth2èªè¨¼
auths.tips.oauth2.general.tip=æ–°ã—ã„OAuth2èªè¨¼ã‚’登録ã™ã‚‹ã¨ãã¯ã€ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯/リダイレクトURLã¯ä»¥ä¸‹ã«ãªã‚Šã¾ã™:
auths.tip.oauth2_provider=OAuth2プãƒãƒã‚¤ãƒ€ãƒ¼
-auths.tip.bitbucket=æ–°ã—ã„OAuthコンシューマーを https://bitbucket.org/account/user/{ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼å}/oauth-consumers/new ã‹ã‚‰ç™»éŒ²ã—ã€"アカウント" ã« "èªã¿å–ã‚Š" 権é™ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
+auths.tip.bitbucket=æ–°ã—ã„OAuthコンシューマーを %s ã‹ã‚‰ç™»éŒ²ã—ã€"アカウント" ã« "èªã¿å–ã‚Š" 権é™ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
auths.tip.nextcloud=æ–°ã—ã„OAuthコンシューマーをã€ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ "Settings -> Security -> OAuth 2.0 client" ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.dropbox=æ–°ã—ã„アプリケーションを https://www.dropbox.com/developers/apps ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.facebook=æ–°ã—ã„アプリケーションを https://developers.facebook.com/apps ã§ç™»éŒ²ã—ã€"Facebook Login"ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
-auths.tip.github=æ–°ã—ã„OAuthアプリケーションを https://github.com/settings/applications/new ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.gitlab_new=æ–°ã—ã„アプリケーションを https://gitlab.com/-/profile/applications ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.google_plus=OAuth2ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆè³‡æ ¼æƒ…å ±ã‚’ã€Google APIコンソール https://console.developers.google.com/ ã‹ã‚‰å–å¾—ã—ã¦ãã ã•ã„。
+auths.tip.dropbox=æ–°ã—ã„アプリケーションを %s ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
+auths.tip.facebook=æ–°ã—ã„アプリケーションを %s ã§ç™»éŒ²ã—ã€"Facebook Login"ã‚’è¿½åŠ ã—ã¦ãã ã•ã„。
+auths.tip.github=æ–°ã—ã„OAuthアプリケーションを %s ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
+auths.tip.gitlab_new=æ–°ã—ã„アプリケーションを %s ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
+auths.tip.google_plus=OAuth2ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆè³‡æ ¼æƒ…å ±ã‚’ã€Google APIコンソール %s ã‹ã‚‰å–å¾—ã—ã¦ãã ã•ã„。
auths.tip.openid_connect=OpenID Connect Discoveryã®URL "https://{server}/.well-known/openid-configuration" をエンドãƒã‚¤ãƒ³ãƒˆã¨ã—ã¦æŒ‡å®šã—ã¦ãã ã•ã„
-auths.tip.twitter=https://dev.twitter.com/apps ã¸ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã‚¢ãƒ—リケーションを作æˆã—ã€â€œAllow this application to be used to Sign in with Twitterâ€ã‚ªãƒ—ションを有効ã«ã—ã¦ãã ã•ã„。
-auths.tip.discord=æ–°ã—ã„アプリケーションを https://discordapp.com/developers/applications/me ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
-auths.tip.gitea=æ–°ã—ã„OAuthアプリケーションを登録ã—ã¦ãã ã•ã„。 利用ガイド㯠https://docs.gitea.com/development/oauth2-provider ã«ã‚ã‚Šã¾ã™
-auths.tip.yandex=`https://oauth.yandex.com/client/new ã§æ–°ã—ã„アプリケーションを作æˆã—ã¦ãã ã•ã„。 "Yandex.Passport API" セクションã§æ¬¡ã®é …目を許å¯ã—ã¾ã™: "Access to email address"ã€"Access to user avatar"ã€"Access to username, first name and surname, gender"`
+auths.tip.twitter=%s ã¸ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã‚¢ãƒ—リケーションを作æˆã—ã€â€œAllow this application to be used to Sign in with Twitterâ€ã‚ªãƒ—ションを有効ã«ã—ã¦ãã ã•ã„。
+auths.tip.discord=æ–°ã—ã„アプリケーションを %s ã‹ã‚‰ç™»éŒ²ã—ã¦ãã ã•ã„。
+auths.tip.gitea=æ–°ã—ã„OAuthアプリケーションを登録ã—ã¦ãã ã•ã„。 利用ガイド㯠%s ã«ã‚ã‚Šã¾ã™
+auths.tip.yandex=`%s ã§æ–°ã—ã„アプリケーションを作æˆã—ã¦ãã ã•ã„。 "Yandex.Passport API" セクションã§æ¬¡ã®é …目を許å¯ã—ã¾ã™: "Access to email address"ã€"Access to user avatar"ã€"Access to username, first name and surname, gender"`
auths.tip.mastodon=èªè¨¼ã—ãŸã„Mastodonインスタンスã®ã‚«ã‚¹ã‚¿ãƒ URLを入力ã—ã¦ãã ã•ã„ (入力ã—ãªã„å ´åˆã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®URLを使用ã—ã¾ã™)
auths.edit=èªè¨¼ã‚½ãƒ¼ã‚¹ã®ç·¨é›†
auths.activated=èªè¨¼ã‚½ãƒ¼ã‚¹ã¯ã‚¢ã‚¯ãƒ†ã‚£ãƒ™ãƒ¼ãƒˆæ¸ˆã¿
@@ -3684,6 +3715,11 @@ workflow.disable_success=ワークフãƒãƒ¼ '%s' ãŒç„¡åŠ¹ã«ãªã‚Šã¾ã—ãŸã€‚
workflow.enable=ワークフãƒãƒ¼ã‚’有効ã«ã™ã‚‹
workflow.enable_success=ワークフãƒãƒ¼ '%s' ãŒæœ‰åŠ¹ã«ãªã‚Šã¾ã—ãŸã€‚
workflow.disabled=ワークフãƒãƒ¼ã¯ç„¡åŠ¹ã§ã™ã€‚
+workflow.run=ワークフãƒãƒ¼ã‚’実行
+workflow.not_found=ワークフãƒãƒ¼ '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
+workflow.run_success=ワークフãƒãƒ¼ '%s' ã¯æ£å¸¸ã«å®Ÿè¡Œã•ã‚Œã¾ã—ãŸã€‚
+workflow.from_ref=使用ã™ã‚‹ãƒ¯ãƒ¼ã‚¯ãƒ•ãƒãƒ¼ã®å–å¾—å…ƒ
+workflow.has_workflow_dispatch=ã“ã®ãƒ¯ãƒ¼ã‚¯ãƒ•ãƒãƒ¼ã«ã¯ workflow_dispatch イベントトリガーãŒã‚ã‚Šã¾ã™ã€‚
need_approval_desc=フォークプルリクエストã®ãƒ¯ãƒ¼ã‚¯ãƒ•ãƒãƒ¼ã‚’実行ã™ã‚‹ã«ã¯æ‰¿èªãŒå¿…è¦ã§ã™ã€‚
diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini
index 16f4bd310e..dc122ec4c3 100644
--- a/options/locale/locale_ko-KR.ini
+++ b/options/locale/locale_ko-KR.ini
@@ -371,7 +371,6 @@ applications=어플리케ì´ì…˜
orgs=ì¡°ì§ ê´€ë¦¬
repos=ì €ìž¥ì†Œ
delete=ê³„ì • ì‚ì œ
-twofa=2단계 ì¸ì¦
account_link=ì—°ê²°ëœ ê³„ì •
organization=ì¡°ì§
@@ -494,15 +493,12 @@ oauth2_application_edit=ìˆ˜ì •í•˜ê¸°
revoke_key=취소
revoke_oauth2_grant=ì ‘ê·¼ 권한 ì œê±°
-twofa_desc=2단계 ì¸ì¦ì€ ê³„ì •ì˜ ë³´ì•ˆì„ í–¥ìƒì‹œí‚µë‹ˆë‹¤.
twofa_is_enrolled=ê·€í•˜ì˜ ê³„ì •ì€ í˜„ìž¬ 2단계 ì¸ì¦ì— 등ë¡ë˜ì–´ 있습니다.
twofa_not_enrolled=ê·€í•˜ì˜ ê³„ì •ì€ í˜„ìž¬ 2단계 ì¸ì¦ì— 등ë¡ë˜ì–´ 있지 않습니다.
twofa_disable=2단계 ì¸ì¦ í•´ì œ
-twofa_scratch_token_regenerate=스í¬ëž˜ì¹˜ í† í° ìž¬ìƒì„±
twofa_enroll=2단계 ì¸ì¦ì— 등ë¡í•˜ê¸°
twofa_disable_note=필요한 경우 2단계 ì¸ì¦ì„ í•´ì œí• ìˆ˜ 있습니다.
twofa_disable_desc=2단계 ì¸ì¦ì„ í•´ì œí•˜ë©´ ê·€í•˜ì˜ ê³„ì •ì´ ë³´ì•ˆì— ì·¨ì•½í•´ì§ˆ 것 입니다. 계ì†í•˜ì‹œê² 습니까?
-regenerate_scratch_token_desc=스í¬ëž˜ì¹˜ í† í°ì„ 분실 했거나 ì´ë¯¸ 로그ì¸ì— 사용ë˜ì—ˆë‹¤ë©´ 여기ì—ì„œ ìž¬ì„¤ì • í• ìˆ˜ 있습니다.
twofa_disabled=2단계 ì¸ì¦ì´ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.
scan_this_image=ì´ ì´ë¯¸ì§€ë¥¼ ë‹¹ì‹ ì˜ ì¸ì¦ ì• í”Œë¦¬ì¼€ì´ì…˜ì—ì„œ 스캔하세요:
or_enter_secret=ë˜ëŠ” ì´ ë¹„ë°€í‚¤ë¥¼ ìž…ë ¥í•˜ì„¸ìš”: %s
@@ -822,12 +818,12 @@ issues.dependency.add_error_dep_not_same_repo=ë‘ ì´ìŠˆëŠ” ê°™ì€ ë ˆí¬ì§€í†
issues.review.self.approval=ìžì‹ ì˜ í’€ 리퀘스트를 승ì¸í• 수 없습니다.
issues.review.self.rejection=ìžì‹ ì˜ í’€ ë¦¬í€˜ìŠ¤íŠ¸ì— ëŒ€í•œ ë³€ê²½ì„ ìš”ì²í• 수 없습니다.
issues.review.approve="ì´ ë³€ê²½ì‚¬í•ì„ 승ì¸í•˜ì˜€ìŠµë‹ˆë‹¤. %s"
-issues.review.comment=ê²€í† ë¨ %s
issues.review.pending=보류
issues.review.review=ê²€í†
issues.review.reviewers=리뷰어
issues.review.show_outdated=ì˜¤ëž˜ëœ ë‚´ì— ë³´ê¸°
issues.review.hide_outdated=ì˜¤ëž˜ëœ ë‚´ì— ìˆ¨ê¸°ê¸°
+issues.review.commented=댓글
pulls.new=새 풀 리퀘스트
@@ -862,7 +858,6 @@ milestones.closed=닫힘 %s
milestones.no_due_date=기한 ì—†ìŒ
milestones.open=열기
milestones.close=닫기
-milestones.completeness=%d%% 완료ë¨
milestones.create=마ì¼ìŠ¤í†¤ ìƒì„±
milestones.title=타ì´í‹€
milestones.desc=설명
@@ -1067,19 +1062,12 @@ settings.key_been_used=ë™ì¼í•œ ë‚´ìš©ì˜ ë°°í¬í‚¤ë¥¼ ì´ë¯¸ 사용중입니
settings.key_name_used=ê°™ì€ ì´ë¦„ì˜ ë°°í¬í‚¤ê°€ ì´ë¯¸ 있습니다.
settings.deploy_key_deletion=ë°°í¬í‚¤ ì‚ì œ
settings.deploy_key_deletion_success=ë°°í¬í‚¤ê°€ ì‚ì œë˜ì—ˆìŠµë‹ˆë‹¤.
-settings.branches=브랜치
-settings.protected_branch=브랜치 보호
settings.protected_branch_can_push=푸시를 í—ˆìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
settings.protected_branch_can_push_yes=í‘¸ì‹œí• ìˆ˜ 있습니다.
-settings.protected_branch_can_push_no=í‘¸ì‹œí• ìˆ˜ 없습니다.
-settings.branch_protection='%s' 브랜치 보호
settings.protect_this_branch=브랜치 보호 활성화
settings.protect_disable_push=푸시 ë„기
settings.protect_enable_push=푸시 켜기
settings.protect_required_approvals=필요한 승ì¸:
-settings.add_protected_branch=보호 활성화
-settings.delete_protected_branch=보호 비활성화
-settings.protected_branch_deletion=브랜치 보호 비활성화
settings.choose_branch=브랜치 ì„ íƒ...
settings.no_protected_branch=ë³´í˜¸ëœ ë¸Œëžœì¹˜ê°€ 없습니다.
settings.edit_protected_branch=편집
@@ -1135,14 +1123,13 @@ release.downloads=다운로드
branch.name=브랜치명
branch.delete_head=ì‚ì œ
branch.delete_html=브랜치 ì‚ì œ
-branch.create_branch=%s 브랜치 ìƒì„±
+branch.create_branch=%s 브랜치 ìƒì„±
branch.deleted_by=%s ì— ì˜í•´ ì‚ì œë˜ì—ˆìŠµë‹ˆë‹¤.
topic.manage_topics=í† í”½ 관리
topic.done=완료
-topic.count_prompt=25ê°œ ì´ìƒì˜ í† í”½ì„ ì„ íƒí•˜ì‹¤ 수 없습니다.
@@ -1534,7 +1521,6 @@ raw_seconds=ì´ˆ
raw_minutes=분
[dropzone]
-invalid_input_type=ì´ í˜•ì‹ì˜ 파ì¼ì„ ì—…ë¡œë“œí• ìˆ˜ 없습니다.
file_too_big=íŒŒì¼ í¬ê¸°({{filesize}} MB) ê°€ 최대 í¬ê¸°({{maxFilesize}} MB) 를 초과합니다.
remove_file=íŒŒì¼ ì œê±°
@@ -1560,7 +1546,6 @@ error.unit_not_allowed=ì´ ì €ìž¥ì†Œ ì„¹ì…˜ì— ì ‘ê·¼í• ìˆ˜ 없습니다.
[packages]
filter.type=ìœ í˜•
-alpine.repository.branches=브랜치
alpine.repository.repositories=ì €ìž¥ì†Œ
conan.details.repository=ì €ìž¥ì†Œ
owner.settings.cleanuprules.enabled=활성화ë¨
diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini
index 035b0008e3..d8ab21e170 100644
--- a/options/locale/locale_lv-LV.ini
+++ b/options/locale/locale_lv-LV.ini
@@ -25,6 +25,7 @@ enable_javascript=Šai tīmekļvietnei ir nepieciešams JavaScript.
toc=Satura rÄdÄ«tÄjs
licenses=Licences
return_to_gitea=Atgriezties Gitea
+more_items=VairÄk vienumu
username=LietotÄjvÄrds
email=E-pasta adrese
@@ -92,6 +93,7 @@ remove_all=Noņemt visus
remove_label_str=`Noņemt ierakstu "%s"`
edit=Labot
view=Skatīt
+test=PÄrbaudÄ«t
enabled=Iespējots
disabled=Atspējots
@@ -113,6 +115,7 @@ loading=Notiek ielÄde…
error=Kļūda
error404=Lapa, ko tiek mÄ“Ä£inÄts atvÄ“rt, vai nu nepastÄv vai arÄ« nav tiesÄ«bu to aplÅ«kot.
go_back=Atgriezties
+invalid_data=Nederīgi dati: %v
never=Nekad
unknown=NezinÄms
@@ -184,22 +187,16 @@ string.desc=Z - A
[error]
occurred=Radusies kļūda
-report_message=Ja ir pÄrliecÄ«ba, ka Å¡Ä« ir Gitea nepilnÄ«ba, lÅ«gums pÄrbaudÄ«t GitHub, vai tÄ jau nav zinÄma, vai izveidot jaunu pieteikumu, ja nepiecieÅ¡ams.
-missing_csrf=Kļūdains pieprasījums: netika iesūtīta drošības pilnvara
-invalid_csrf=Kļūdains pieprasījums: iesūtīta kļūdaina drošības pilnvara
not_found=Pieprasītie dati netika atrasti.
network_error=Tīkla kļūda
[startpage]
app_desc=Viegli uzstÄdÄms Git serviss
install=VienkÄrÅ¡i instalÄ“jams
-install_desc=VienkÄrÅ¡i jÄpalaiž izpildÄmais fails vajadzÄ«gajai platformai, jÄizmanto Docker, vai jÄiegÅ«st pakotne.
platform=Pieejama dažÄdÄm platformÄm
-platform_desc=Gitea iespÄ“jams uzstÄdÄ«t jebkur, kam Go var nokompilÄ“t: Windows, macOS, Linux, ARM utt. IzvÄ“lies to, kas tev patÄ«k!
lightweight=Viegla
lightweight_desc=Gitea ir miminÄlas prasÄ«bas un to var darbinÄt uz nedÄrga Raspberry Pi datora. Ietaupi savai ierÄ«cei resursus!
license=AtvÄ“rtÄ pirmkoda
-license_desc=IegÅ«sti code.gitea.io/gitea! Pievienojies un palÄ«dzi uzlabot, lai padarÄ«tu Å¡o projektu vÄ“l labÄku! NekautrÄ“jies un lÄ«dzdarbojies!
[install]
install=InstalÄcija
@@ -413,7 +410,6 @@ authorize_title=Autorizēt "%s" piekļuvi jūsu kontam?
authorization_failed=AutorizÄcija neizdevÄs
authorization_failed_desc=AutentifikÄcija neizdevÄs, jo tika veikts kļūdains pieprasÄ«jums. Sazinieties ar lietojumprogrammas, ar kuru mÄ“Ä£inÄjÄt autentificÄ“ties, uzturÄ“tÄju.
sspi_auth_failed=SSPI autentifikÄcija neizdevÄs
-password_pwned=IzvÄ“lÄ“tÄ parole ir nozagto paroļu sarakstÄ, kas iepriekÅ¡ ir atklÄts publiskÄs datu noplÅ«dÄ“s. LÅ«gums mÄ“Ä£inÄt vÄ“lreiz ar citu paroli un apsvÄ“rt to nomainÄ«t arÄ« citur.
password_pwned_err=NeizdevÄs pabeigt pieprasÄ«jumu uz HaveIBeenPwned
[mail]
@@ -619,11 +615,9 @@ applications=Lietotnes
orgs=PÄrvaldÄ«t organizÄcijas
repos=Repozitoriji
delete=Dzēst kontu
-twofa=Divfaktoru autentifikÄcija
account_link=Saistītie konti
organization=OrganizÄcijas
uid=UID
-webauthn=Drošības atslēgas
public_profile=Publiskais profils
biography_placeholder=PastÄsti mums mazliet par sevi! (Var izmantot Markdown)
@@ -856,12 +850,10 @@ revoke_oauth2_grant=Atsaukt piekļuvi
revoke_oauth2_grant_description=Atsaucot piekļuvi Å¡ai treÅ¡as puses lietotnei tiks liegta piekļuve JÅ«su datiem. Vai turpinÄt?
revoke_oauth2_grant_success=Piekļuve veiksmīgi atsaukta.
-twofa_desc=Divfaktoru autentifikÄcija uzlabo konta droÅ¡Ä«bu.
twofa_recovery_tip=Ja ierīce tiek pazaudēta, iespējams izmantot vienreiz izmantojamo atkopšanas atslēgu, lai atgūtu piekļuvi savam kontam.
twofa_is_enrolled=Kontam ir ieslÄ“gta divfaktoru autentifikÄcija.
twofa_not_enrolled=Kontam Å¡obrÄ«d nav ieslÄ“gta divfaktoru autentifikÄcija.
twofa_disable=AtslÄ“gt divfaktoru autentifikÄciju
-twofa_scratch_token_regenerate=Ģenerēt jaunu vienreizējo kodu
twofa_scratch_token_regenerated=VienreizÄ“jÄ pilnvara tagad ir %s. TÄ ir jÄglabÄ droÅ¡Ä vietÄ, tÄ vairs nekad netiks rÄdÄ«ta.
twofa_enroll=IeslÄ“gt divfaktoru autentifikÄciju
twofa_disable_note=NepiecieÅ¡amÄ«bas gadÄ«jumÄ divfaktoru autentifikÄciju ir iespÄ“jams atslÄ“gt.
@@ -872,10 +864,8 @@ scan_this_image=NoskenÄ“jiet Å¡o attÄ“lu ar autentifikÄcijas lietojumprogrammu:
or_enter_secret=Vai ievadiet šo noslēpumu: %s
then_enter_passcode=Ievadiet piekļuves kodu no lietojumprogrammas:
passcode_invalid=NederÄ«gs piekļuves kods. MÄ“Ä£iniet ievadÄ«t atkÄrtoti.
-twofa_enrolled=Kontam tika ieslÄ“gta divfaktoru autentifikÄcija. SaglabÄjiet vienreizÄ“jo kodu (%s) droÅ¡Ä vietÄ, jo to vairÄk nebÅ«s iespÄ“jams aplÅ«kot!
twofa_failed_get_secret=NeizdevÄs ielÄdÄ“t noslÄ“pumu.
-webauthn_desc=DroÅ¡Ä«bas atslÄ“gas ir fiziskas ierÄ«ces, kas satur kriptogrÄfiskas atslÄ“gas. TÄs var tikt izmantotas divu faktoru autentifikÄcijai. DroÅ¡Ä«bas atslÄ“gÄm ir jÄatbalsta WebAuthn autentifikÄcijas standarts.
webauthn_register_key=Pievienot drošības atslēgu
webauthn_nickname=SegvÄrds
webauthn_delete_key=Noņemt drošības atslēgu
@@ -1014,9 +1004,7 @@ tree_path_not_found_branch=AtzarÄ %[2]s nepastÄv ceļš %[1]s
tree_path_not_found_tag=TagÄ %[2]s nepastÄv ceļš %[1]s
transfer.accept=ApstiprinÄt Ä«paÅ¡nieka maiņu
-transfer.accept_desc=`Mainīt īpašnieku uz "%s"`
transfer.reject=Noraidīt īpašnieka maiņu
-transfer.reject_desc=`Atcelt īpašnieka maiņu uz "%s"`
transfer.no_permission_to_accept=Nav atļaujas pieņemt Å¡o pÄrsÅ«tÄ«Å¡anu.
transfer.no_permission_to_reject=Nav atļaujas noraidÄ«t Å¡o pÄrsÅ«tÄ«Å¡anu.
@@ -1150,7 +1138,6 @@ releases=Laidieni
tag=Tags
released_this=izveidoja Å¡o laidienu
tagged_this=izveidoja tagu revīzijai
-file.title=%s atzarÄ %s
file_raw=NeapstrÄdÄts
file_history=VÄ“sture
file_view_source=Skatīt avotu
@@ -1164,7 +1151,6 @@ ambiguous_runes_header=`Šis fails satur neviennozīmīgus unikoda simbolus`
ambiguous_runes_description=`Å is fails satur unikoda simbolus, kas var tikt sajauktas ar citÄm rakstzÄ«mÄ“m. Ja Å¡Ä·iet, ka tas ir ar nolÅ«ku, Å¡o brÄ«dinÄjumu var droÅ¡i neņemt vÄ“rÄ. JÄizmanto atsoļa taustiņš (Esc), lai atklÄtu tÄs.`
invisible_runes_line=`Šī līnija satur neredzamus unikoda simbolus`
ambiguous_runes_line=`Šī līnija satur neviennozīmīgus unikoda simbolus`
-ambiguous_character=`%[1]c [U+%04[1]X] var tikt sajaukts ar %[2]c [U+%04[2]X]`
escape_control_characters=Kodēt
unescape_control_characters=Atkodēt
@@ -1621,7 +1607,6 @@ issues.dependency.add_error_dep_not_same_repo=AbÄm problÄ“mÄm ir jÄbÅ«t no vi
issues.review.self.approval=Nevar apstiprinÄt savu izmaiņu pieprasÄ«jumi.
issues.review.self.rejection=Nevar pieprasīt izmaiņas savam izmaiņu pieprasījumam.
issues.review.approve=apstiprinÄja izmaiņas %s
-issues.review.comment=recenzēja %s
issues.review.dismissed=atmeta %s recenziju %s
issues.review.dismissed_label=Atmesta
issues.review.left_comment=atstÄja komentÄru
@@ -1646,6 +1631,7 @@ issues.review.hide_resolved=PaslÄ“pt atrisinÄto
issues.review.resolve_conversation=AtrisinÄt sarunu
issues.review.un_resolve_conversation=Atcelt sarunas atrisinÄjumu
issues.review.resolved_by=atzÄ«mÄ“ja sarunu kÄ atrisinÄtu
+issues.review.commented=Komentēt
issues.assignee.error=Ne visi atbildÄ«gie tika pievienoti, jo radÄs neparedzÄ“ta kļūda.
issues.reference_issue.body=Saturs
issues.content_history.deleted=dzēsts
@@ -1715,7 +1701,6 @@ pulls.is_empty=Mērķa atzars jau satur šī atzara izmaiņas. Šī revīzija b
pulls.required_status_check_failed=Dažas no pÄrbaudÄ“m nebija veiksmÄ«gas.
pulls.required_status_check_missing=TrÅ«kst dažu obligÄto pÄrbaužu.
pulls.required_status_check_administrator=KÄ administrators JÅ«s varat sapludinÄt Å¡o izmaiņu pieprasÄ«jumu.
-pulls.blocked_by_approvals=Å im izmaiņu pieprasÄ«jumam vÄ“l nav pietiekami daudz apstiprinÄjumu. NodroÅ¡inÄti %d no %d apstiprinÄjumiem.
pulls.blocked_by_rejection=Å im izmaiņu pieprasÄ«jumam oficiÄlais recenzents ir pieprasÄ«jis labojumus.
pulls.blocked_by_official_review_requests=Å im izmaiņu pieprasÄ«jumam ir oficiÄli recenzijas pieprasÄ«jumi.
pulls.blocked_by_outdated_branch=Šis izmaiņu pieprasījums ir bloķēts, jo tas ir novecojis.
@@ -1756,9 +1741,7 @@ pulls.unrelated_histories=SapludinÄÅ¡ana neizdevÄs: mÄ“rÄ·a un bÄzes atzariem
pulls.merge_out_of_date=SapludinÄÅ¡ana neizdevÄs: sapludinÄÅ¡anas laikÄ, bÄzes atzarÄ tika iesÅ«tÄ«tas izmaiņas. Ieteikums: mÄ“Ä£iniet atkÄrtoti.
pulls.head_out_of_date=SapludinÄÅ¡ana neizdevÄs: sapludinÄÅ¡anas laikÄ, bÄzes atzarÄ tika iesÅ«tÄ«tas izmaiņas. Ieteikums: mÄ“Ä£iniet atkÄrtoti.
pulls.has_merged=NeizdevÄs: izmaiņu pieprasÄ«jums jau ir sapludinÄts, nevar to darÄ«t atkÄrtoti vai mainÄ«t mÄ“rÄ·a atzaru.
-pulls.push_rejected=SapludinÄÅ¡ana neizdevÄs: iesÅ«tÄ«Å¡ana tika noraidÄ«ta. PÄrbaudiet git ÄÄ·us Å¡im repozitorijam.
pulls.push_rejected_summary=Pilns noraidīšanas ziņojums
-pulls.push_rejected_no_message=SapludinÄÅ¡ana neizdevÄs: Izmaiņu iesÅ«tÄ«Å¡ana tika noraidÄ«ta, bet serveris neatgrieza paziņojumu.
PÄrbaudiet git ÄÄ·us Å¡im repozitorijam
pulls.open_unmerged_pull_exists=`JÅ«s nevarat veikt atkÄrtotas atvÄ“rÅ¡anas darbÄ«bu, jo jau eksistÄ“ izmaiņu pieprasÄ«jums (#%d) ar Å¡Ädu sapludinÄÅ¡anas informÄciju.`
pulls.status_checking=Dažas pÄrbaudes vÄ“l tiek veiktas
pulls.status_checks_success=Visas pÄrbaudes ir veiksmÄ«gas
@@ -1812,7 +1795,6 @@ milestones.no_due_date=Bez termiņa
milestones.open=Atvērta
milestones.close=Aizvērt
milestones.new_subheader=Atskaites punkti var palÄ«dzÄ“t pÄrvaldÄ«t problÄ“mas un sekot to virzÄ«bai.
-milestones.completeness=%d%% pabeigti
milestones.create=Izveidot atskaites punktu
milestones.title=Virsraksts
milestones.desc=Apraksts
@@ -2024,7 +2006,6 @@ settings.pulls.default_delete_branch_after_merge=Pēc noklusējuma dzēst izmai
settings.pulls.default_allow_edits_from_maintainers=Atļaut uzturÄ“tÄjiem labot pÄ“c noklusÄ“juma
settings.releases_desc=Iespējot repozitorija laidienus
settings.packages_desc=Iespējot repozitorija pakotņu reģistru
-settings.projects_desc=Iespējot repozitorija projektus
settings.projects_mode_all=Visi projekti
settings.actions_desc=Iespējot repozitorija darbības
settings.admin_settings=Administratora iestatījumi
@@ -2194,7 +2175,6 @@ settings.event_pull_request_merge=Izmaiņu pieprasÄ«juma sapludinÄÅ¡ana
settings.event_package=Pakotne
settings.event_package_desc=RepozitorijÄ izveidota vai dzÄ“sta pakotne.
settings.branch_filter=Atzaru filtrs
-settings.branch_filter_desc=Atzaru ierobežojumi izmaiņu iesÅ«tÄ«Å¡anas, zaru izveidoÅ¡anas vai dzÄ“Å¡anas notikumiem, izmantojot, glob Å¡ablonu. Ja norÄdÄ«ts tukÅ¡s vai *
, tiks nosÅ«tÄ«ti notikumi no visiem zariem. Skatieties github.com/gobwas/glob pieraksta dokumentÄciju. PiemÄ“rs: master
, {master,release*}
.
settings.authorization_header=AutorizÄcijas galvene
settings.authorization_header_desc=Tiks iekļauta kÄ autorizÄcijas galvenei pieprasÄ«jumiem, ja ir norÄdÄ«ta. PiemÄ“ram: %s.
settings.active=Aktīvs
@@ -2239,14 +2219,8 @@ settings.add_key_success=Izvietošanas atslēga "%s" tika pievienota.
settings.deploy_key_deletion=Noņemt izvietošanas atslēgu
settings.deploy_key_deletion_desc=Noņemot izvietoÅ¡anas atslÄ“gu, tai tiks liegta piekļuve Å¡im repozitorija. Vai turpinÄt?
settings.deploy_key_deletion_success=Izvietošanas atslēga tika noņemta.
-settings.branches=Atzari
-settings.protected_branch=Atzaru aizsargÄÅ¡ana
settings.protected_branch.save_rule=SaglabÄt noteikumu
settings.protected_branch.delete_rule=Dzēst noteikumu
-settings.protected_branch_can_push=Atļaut izmaiņu nosūtīšanu?
-settings.protected_branch_can_push_yes=Jūs varat nosūtīt izmaiņas
-settings.protected_branch_can_push_no=Jūs nevarat nosūtīt izmaiņas
-settings.branch_protection=Atzara aizsardzība atzaram '%s'
settings.protect_this_branch=Iespējot atzara aizsardzību
settings.protect_this_branch_desc=Neļauj atzara dzÄ“Å¡anu, kÄ arÄ« ierobežo izmaiņu iesÅ«tÄ«Å¡anu un sapludinÄÅ¡anu Å¡ajÄ atzarÄ.
settings.protect_disable_push=Neļaut iesūtīt izmaiņas
@@ -2258,30 +2232,22 @@ settings.protect_enable_merge_desc=Ikviens ar rakstÄ«Å¡anas tiesÄ«bÄm varÄ“st s
settings.protect_check_status_contexts=IespÄ“jot statusu pÄrbaudi
settings.protect_status_check_patterns=Statusa pÄrbaudes Å¡abloni:
settings.protect_status_check_patterns_desc=NorÄdiet Å¡ablonus, kurÄm statusa pÄrbaudÄ“m ir jÄatbilst pirms atzaru iespÄ“jams sapludinÄt Å¡ajÄ atzarÄ, kas atbilst Å¡im nosacÄ«jumam. Katru Å¡ablonu norÄdÄ«t savÄ rindÄ, tie nevar bÅ«t tukÅ¡i.
-settings.protect_check_status_contexts_desc=NepiecieÅ¡amas veiksmÄ«gas statusa pÄrbaudes pirms sapludinÄÅ¡anas. IzvÄ“lieties, kurÄm statusa pÄrbaudÄ“m ir jÄizpildÄs pirms ir iespejams tÄs sapludinÄt. Ja iespÄ“jots, tad revÄ«zijas sÄkotnÄ“ji jÄnosÅ«ta uz atseviÅ¡Ä·u atzaru, pÄ“c kÄ var tikt saplusinÄtas vai tieÅ¡i nosÅ«tÄ«tas uz atzariem, kas atbildst veiksmÄ«gÄm norÄdÄ«tajÄm stautsa pÄrbaudÄ“m. Ja konteksts nav norÄdÄ«ts, pÄ“dÄ“jai revÄ«zijai ir jÄbÅ«t veiksmÄ«ga neatkarÄ«gi no konteksta.
settings.protect_check_status_contexts_list=Statusu pÄrbaudes, kas Å¡im repozitorijam bijuÅ¡as pÄ“dÄ“jÄs nedēļas laikÄ
settings.protect_status_check_matched=Atbilst
settings.protect_invalid_status_check_pattern=Kļūdains statusa pÄrbaudes Å¡ablons: "%s".
settings.protect_no_valid_status_check_patterns=Nav korekta statusa pÄrbaudes Å¡ablona.
settings.protect_required_approvals=VajadzÄ«gi apstiprinÄjumi:
-settings.protect_required_approvals_desc=Atļaut sapludinÄt izmaiņu pieprasÄ«jumu tikai ar pietiekamu skaitu pozitÄ«vu recenziju.
settings.dismiss_stale_approvals=PieprasÄ«t apstiprinÄjumus jaunÄkajÄm izmaiņÄm
settings.dismiss_stale_approvals_desc=Kad tiek iesÅ«tÄ«tas jaunas revÄ«zijas, kas izmaina izmaiņu pieprasÄ«juma saturu, iepriekÅ¡Ä“jie apstiprinÄjumi tiks atzÄ«mÄ“ti kÄ novecojuÅ¡i un bÅ«s nepiecieÅ¡ams apstiprinÄt tos atkÄroti.
settings.require_signed_commits=Pieprasīt parakstītas revīzijas
settings.require_signed_commits_desc=NoraidÄ«t iesÅ«tÄ«tÄs izmaiņas Å¡im atzaram, ja tÄs nav parakstÄ«tas vai nav iespÄ“jams pÄrbaudÄ«t.
settings.protect_branch_name_pattern=AizsargÄtÄ zara Å¡ablons
-settings.protect_branch_name_pattern_desc=AizsargÄto atzaru nosaukumu Å¡abloni. Å ablonu pierakstu skatÄ«t dokumentÄcijÄ. PiemÄ“ri: main, release/**
settings.protect_patterns=Å abloni
settings.protect_protected_file_patterns=AizsargÄto failu Å¡ablons (vairÄkus var norÄdÄ«t atdalot ar semikolu ';'):
-settings.protect_protected_file_patterns_desc=AizsargÄtie faili, ko nevar mainÄ«t, pat ja lietotÄjam ir tiesÄ«bas veidot jaunus, labot vai dzÄ“st failus Å¡ajÄ atzarÄ. VairÄkus Å¡ablons ir iespÄ“jams norÄdÄ«t atdalot tos ar semikolu (';'). SÄ«kÄka informÄcija par Å¡abloniem pieejama github.com/gobwas/glob dokumentÄcijÄ. PiemÄ“ram, .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=NeaizsargÄto failu Å¡ablons (vairÄkus var norÄdÄ«t atdalot ar semikolu ';'):
-settings.protect_unprotected_file_patterns_desc=NeaizsargÄtie faili, ko iespÄ“jams mainÄ«t apejot iesÅ«tÄ«Å¡anas ierobežojumus, ja lietotÄjam ir tiesÄ«bas iesÅ«tÄ«t izmaiņas Å¡ajÄ atzarÄ. VairÄkus Å¡ablons ir iespÄ“jams norÄdÄ«t atdalot tos ar semikolu (';'). SÄ«kÄka informÄcija par Å¡abloniem pieejama github.com/gobwas/glob dokumentÄcijÄ. PiemÄ“ram, .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=IespÄ“jot aizsargÄÅ¡anu
-settings.delete_protected_branch=AtspÄ“jot aizsargÄÅ¡anu
settings.update_protect_branch_success=Atzara aizsardzÄ«bas nosacÄ«jums "%s" tika saglabÄta.
settings.remove_protected_branch_success=Atzara aizsardzības nosacījums "%s" tika noņemts.
settings.remove_protected_branch_failed=NeizdevÄs izdzÄ“st atzara aizsardzÄ«bas nosacÄ«jumu "%s".
-settings.protected_branch_deletion=Atspējot atzara aizsardzību
settings.protected_branch_deletion_desc=AtspÄ“jojot atzara aizsardzÄ«bu, ļaus lietotÄjiem ar rakstÄ«Å¡anas tiesÄ«bÄm nosÅ«tÄ«t izmaiņas uz atzaru. Vai turpinÄt?
settings.block_rejected_reviews=Neļaut sapludinÄt izmaiņu pieprasÄ«jumus, kam ir pieprasÄ«tas izmaiņas
settings.block_rejected_reviews_desc=SapludinÄÅ¡ana nebÅ«s iespÄ“jama, kad ir pieprasÄ«tas izmaiņas, pat ja ir nepiecieÅ¡amais apstiprinÄjumu skaits.
@@ -2291,7 +2257,6 @@ settings.block_outdated_branch=BloÄ·Ä“t sapludinÄÅ¡anau, ja izmaiņu pieprasÄ«j
settings.block_outdated_branch_desc=SapludinÄÅ¡ana nebÅ«s pieejama, ja atzars bÅ«s atpalicis no bÄzes atzara.
settings.default_branch_desc=NorÄdiet noklusÄ“to repozitorija atzaru izmaiņu pieprasÄ«jumiem un koda revÄ«zijÄm:
settings.merge_style_desc=SapludinÄÅ¡anas veidi
-settings.default_merge_style_desc=NoklusÄ“tais sapludinÄÅ¡anas veids izmaiņu pieprasÄ«jumiem:
settings.choose_branch=Izvēlieties atzaru…
settings.no_protected_branch=Nav neviena aizsargÄtÄ atzara.
settings.edit_protected_branch=Labot
@@ -2307,7 +2272,6 @@ settings.tags.protection.allowed.teams=Atļauts komandÄm
settings.tags.protection.allowed.noone=Nevienam
settings.tags.protection.create=AizsargÄt tagus
settings.tags.protection.none=Nav uzstÄdÄ«ta tagu aizsargÄÅ¡ana.
-settings.tags.protection.pattern.description=Var izmantot vienkÄrÅ¡u nosaukumu vai glob Å¡ablonu, vai regulÄro izteiksmi, lai atbilstu vairÄkiem tagiem. VairÄk ir lasÄms aizsargÄto tagu Å¡ablonu dokumentÄcijÄ.
settings.bot_token=Bota pilnvara
settings.chat_id=Tērzēšanas ID
settings.thread_id=Pavediena ID
@@ -2474,7 +2438,7 @@ branch.delete_desc=Atzara dzēšana ir neatgriezeniska. Kaut arī izdzēstais za
branch.deletion_success=Atzars "%s" tika izdzēsts.
branch.deletion_failed=NeizdevÄs izdzÄ“st atzaru "%s".
branch.delete_branch_has_new_commits=Atzars "%s" nevar tik dzÄ“sts, jo pÄ“c sapludinÄÅ¡anas, tam ir pievienotas jaunas revÄ«zijas.
-branch.create_branch=Izveidot atzaru %s
+branch.create_branch=Izveidot atzaru %s
branch.create_from=`no "%s"`
branch.create_success=Tika izveidots atzars "%s".
branch.branch_already_exists=Atzars "%s" Å¡ajÄ repozitorijÄ jau eksistÄ“.
@@ -2500,7 +2464,7 @@ branch.new_branch=Izveidot jaunu atzaru
branch.new_branch_from=`Izveidot jaunu atzaru no "%s"`
branch.renamed=Atzars %s tika pÄrsaukts par %s.
-tag.create_tag=Izveidot tagu %s
+tag.create_tag=Izveidot tagu %s
tag.create_tag_operation=Izveidot tagu
tag.confirm_create_tag=Izveidot tagu
tag.create_tag_from=`Izveidot tagu no "%s"`
@@ -2509,7 +2473,6 @@ tag.create_success=Tags "%s" tika izveidots.
topic.manage_topics=PÄrvaldÄ«t tÄ“mas
topic.done=Gatavs
-topic.count_prompt=Nevar pievienot vairÄk kÄ 25 tÄ“mas
topic.format_prompt=TÄ“mai jÄsÄkas ar burtu vai ciparu, tÄ var saturÄ“t domu zÄ«mes ('-') un punktus ('.') un var bÅ«t lÄ«dz 35 rakstzÄ«mÄ“m gara. Burtiem jÄbÅ«t mazajiem.
find_file.go_to_file=Iet uz failu
@@ -2578,7 +2541,6 @@ settings.delete_prompt=Å Ä« darbÄ«ba pilnÄ«bÄ dzÄ“sÄ«s Å¡o organizÄciju, kÄ a
settings.confirm_delete_account=ApstiprinÄt dzÄ“Å¡anu
settings.delete_org_title=DzÄ“st organizÄciju
settings.delete_org_desc=OrganizÄcija tiks dzÄ“sta neatgriezeniski. Vai turpinÄt?
-settings.hooks_desc=Pievienot tÄ«mekļa ÄÄ·us, kas nostrÄdÄs visiem repozitorijiem Å¡ajÄ organizÄcijÄ.
settings.labels_desc=Pievienojiet iezÄ«mes, kas var tikt izmantotas visos Å¡Ä«s organizÄcijas repozitorijos.
@@ -2603,7 +2565,6 @@ teams.leave.detail=Pamest organizÄciju %s?
teams.can_create_org_repo=Veidot jaunus repozitorijus
teams.can_create_org_repo_helper=Komandas biedri varÄ“s veidot jaunus repozitorijus Å¡ajÄ organizÄcijÄ. IzveidotÄjam tiks pieÅ¡Ä·irtas administratora tiesÄ«bas uz jauno repozitoriju.
teams.none_access=Nav piekļuves
-teams.none_access_helper=Komandai nebūs tiesību skatīties vai veikt citas darbības ar šo vienumu.
teams.general_access=VispÄrÄ“ja piekļuve
teams.general_access_helper=Komandas tiesÄ«bas tiks noteiktas pÄ“c tabulas zemÄk.
teams.read_access=SkatÄ«Å¡anÄs
@@ -2670,7 +2631,6 @@ last_page=PÄ“dÄ“jÄ
total=KopÄ: %d
settings=Administratora iestatījumi
-dashboard.new_version_hint=Ir pieejama Gitea versija %s, paÅ¡reizÄ“jÄ versija %s. Papildus informÄcija par jauno versiju ir pieejama mÄjas lapÄ.
dashboard.statistic=Kopsavilkums
dashboard.system_status=Sistēmas statuss
dashboard.operation_name=Darbības nosaukums
@@ -2848,12 +2808,10 @@ packages.size=Izmērs
packages.published=Publicēts
defaulthooks=NoklusÄ“tie tÄ«mekļa ÄÄ·i
-defaulthooks.desc=TÄ«mekļa ÄÄ·i automÄtiski nosÅ«ta HTTP POST pieprasÄ«jumus serverim, kad iestÄjas noteikti Gitea notikumi. Å eit pievienotie tÄ«mekļa ÄÄ·i ir noklusÄ“juma, un tie tiks pievienoti visiem jaunajiem repozitorijiem. VairÄk ir lasÄms tÄ«mekļa ÄÄ·u dokumentÄcijÄ.
defaulthooks.add_webhook=Pievienot noklusÄ“to tÄ«mekļa ÄÄ·i
defaulthooks.update_webhook=MainÄ«t noklusÄ“to tÄ«mekļa ÄÄ·i
systemhooks=SistÄ“mas tÄ«mekļa ÄÄ·i
-systemhooks.desc=TÄ«mekļa ÄÄ·i automÄtiski nosÅ«ta HTTP POST pieprasÄ«jumus serverim, kad iestÄjas noteikti Gitea notikumi. Å eit pievienotie tÄ«mekļa ÄÄ·i tiks izsaukti visiem sistÄ“mas repozitorijiem, tÄdēļ lÅ«gums apsvÄ“rt to iespÄ“jamo ietekmi uz veiktspÄ“ju. VairÄk ir lasÄms tÄ«mekļa ÄÄ·u dokumentÄcijÄ.
systemhooks.add_webhook=Pievienot sistÄ“mas tÄ«mekļa ÄÄ·i
systemhooks.update_webhook=MainÄ«t sistÄ“mas tÄ«mekļa ÄÄ·i
@@ -2949,14 +2907,6 @@ auths.tips.oauth2.general=OAuth2 autentifikÄcija
auths.tips.oauth2.general.tip=Kad tiek reÄ£istrÄ“ta jauna OAuth2 autentifikÄcija, atzvanÄ«Å¡anas/pÄrvirzÄ«Å¡anas URL vajadzÄ“tu bÅ«t:
auths.tip.oauth2_provider=OAuth2 pakalpojuma sniedzējs
auths.tip.nextcloud=`ReÄ£istrÄ“jiet jaunu OAuth klientu jÅ«su instances sadÄÄ¼Ä "Settings -> Security -> OAuth 2.0 client"`
-auths.tip.dropbox=Izveidojiet jaunu aplikÄciju adresÄ“ https://www.dropbox.com/developers/apps
-auths.tip.facebook=`ReÄ£istrÄ“jiet jaunu aplikÄciju adresÄ“ https://developers.facebook.com/apps un pievienojiet produktu "Facebook Login"`
-auths.tip.github=ReÄ£istrÄ“jiet jaunu aplikÄciju adresÄ“ https://github.com/settings/applications/new
-auths.tip.google_plus=Iegūstiet OAuth2 klienta pilnvaru no Google API konsoles adresē https://console.developers.google.com/
-auths.tip.twitter=Dodieties uz adresi https://dev.twitter.com/apps, izveidojiet lietotni un pÄrliecinieties, ka ir atzÄ«mÄ“ts “Allow this application to be used to Sign in with Twitterâ€
-auths.tip.discord=ReÄ£istrÄ“jiet jaunu aplikÄciju adresÄ“ https://discordapp.com/developers/applications/me
-auths.tip.gitea=Pievienot jaunu OAuth2 lietojumprogrammu. DokumentÄcija ir pieejama https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`Izveidojiet jaunu lietotni adresÄ“ https://oauth.yandex.com/client/new. IzvÄ“lieties sekojoÅ¡as tiesÄ«bas "Yandex.Passport API" sadaļÄ: "Access to email address", "Access to user avatar" un "Access to username, first name and surname, gender"`
auths.tip.mastodon=NorÄdiet pielÄgotu mastodon instances URL, ar kuru vÄ“laties autorizÄ“ties (vai izmantojiet noklusÄ“to)
auths.edit=Labot autentifikÄcijas avotu
auths.activated=AutentifikÄcijas avots ir atkivizÄ“ts
@@ -3117,7 +3067,6 @@ monitor.next=NÄkoÅ¡Äs izpildes laiks
monitor.previous=PÄ“dÄ“jÄs izpildes laiks
monitor.execute_times=Izpildes
monitor.process=Darbojošies procesi
-monitor.stacktrace=Steka izsekojamība
monitor.processes_count=%d procesi
monitor.download_diagnosis_report=LejupielÄdÄ“t diagnostikas atskaiti
monitor.desc=Apraksts
@@ -3125,8 +3074,6 @@ monitor.start=SÄkuma laiks
monitor.execute_time=Izpildes laiks
monitor.last_execution_result=RezultÄts
monitor.process.cancel=Atcelt procesu
-monitor.process.cancel_desc=Procesa atcelšana var radīt datu zaudējumus
-monitor.process.cancel_notices=Atcelt: %s?
monitor.process.children=Apakšprocesi
monitor.queues=Rindas
@@ -3220,7 +3167,6 @@ raw_minutes=minūtes
[dropzone]
default_message=Ievelciet failus vai nospiediet Å¡eit, lai augÅ¡upielÄdÄ“tu.
-invalid_input_type=Å Ädus failus nav iespÄ“jams augÅ¡upielÄdÄ“t.
file_too_big=Faila izmÄ“rs ({{filesize}} MB) pÄrsniedz maksimÄli atļauto izmÄ“ru ({{maxFilesize}} MB).
remove_file=Noņemt failu
@@ -3289,7 +3235,6 @@ alpine.registry.key=LejupielÄdÄ“jiet reÄ£istra publisko RSA atslÄ“gu direktorij
alpine.registry.info=IzvÄ“lieties $branch un $repository no saraksta zemÄk.
alpine.install=Lai uzstÄdÄ«tu pakotni, ir jÄizpilda Å¡Ä« komanda:
alpine.repository=Repozitorija informÄcija
-alpine.repository.branches=Atzari
alpine.repository.repositories=Repozitoriji
alpine.repository.architectures=Arhitektūras
cargo.registry=UzstÄdiet Å¡o reÄ£istru Cargo konfigurÄcijas failÄ, piemÄ“ram, ~/.cargo/config.toml
:
diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini
index 6acb314018..5ed3417b4a 100644
--- a/options/locale/locale_nl-NL.ini
+++ b/options/locale/locale_nl-NL.ini
@@ -134,8 +134,6 @@ filter.private=Prive
[error]
occurred=Er is een fout opgetreden
-missing_csrf=Foutief verzoek: geen CSRF-token aanwezig
-invalid_csrf=Verkeerd verzoek: ongeldig CSRF-token
not_found=Het doel kon niet worden gevonden.
network_error=Netwerk fout
@@ -143,11 +141,9 @@ network_error=Netwerk fout
app_desc=Een eenvoudige, self-hosted Git service
install=Makkelijk te installeren
platform=Cross-platform
-platform_desc=Gitea werkt op alles waar Go op kan compileren: Windows, macOS, Linux, ARM, etc. Kies het platform dat bij je past!
lightweight=Lichtgewicht
lightweight_desc=Gitea heeft hele lage systeemeisen, je kunt Gitea al draaien op een goedkope Raspberry Pi.
license=Open Source
-license_desc=Alles staat op code.gitea.io/gitea! Help ons door mee te bouwen aan Gitea, samen maken we dit project nog beter. Aarzel dus niet om een bijdrage te leveren!
[install]
install=Installatie
@@ -515,10 +511,8 @@ applications=Applicaties
orgs=Beheer organisaties
repos=Repositories
delete=Verwijder account
-twofa=Twee factor authenticatie
account_link=Gekoppelde Accounts
organization=Organisaties
-webauthn=Beveiligingssleutels
public_profile=Openbaar profiel
password_username_disabled=Niet-lokale gebruikers kunnen hun gebruikersnaam niet veranderen. Neem contact op met de sitebeheerder voor meer details.
@@ -707,24 +701,19 @@ revoke_key=Intrekken
revoke_oauth2_grant=Toegang intrekken
revoke_oauth2_grant_description=Het intrekken van toegang voor deze derde partij applicatie zal deze applicatie geen toegang tot uw gegevens geven. Weet u het zeker?
-twofa_desc=Tweefactorauthenticatie verbetert de beveiliging van je account.
twofa_is_enrolled=Je account is momenteel ingeschreven voor two-factor authenticatie.
twofa_not_enrolled=Je account is momenteel niet ingeschreven voor two-factor authenticatie.
twofa_disable=Schakel tweetrapsauthenticatie uit
-twofa_scratch_token_regenerate=Genereer een nieuwe herstelcode
twofa_enroll=Two-factor authenticatie inschakelen
twofa_disable_note=Je kan tweefactorauthenticatie indien nodig uitschakelen.
twofa_disable_desc=Het uitschakelen van tweefactorauthenticatie maakt je account minder veilig. Doorgaan?
-regenerate_scratch_token_desc=Als je je herstelcode bent verloren, of als je deze al hebt gebruikt om in te loggen, kun je deze hier opnieuw instellen.
twofa_disabled=Two-factor authenticatie is uitgeschakeld.
scan_this_image=Scan deze afbeelding met je authenticatie applicatie:
or_enter_secret=Of voer deze geheime code in: %s
then_enter_passcode=En vul de toegangscode, die in de applicatie weergegeven wordt, in:
passcode_invalid=De code is niet correct. Probeer het nogmaals.
-twofa_enrolled=Tweefactorsauthenticatie is geactiveerd voor dit account. Bewaar je token (%s) op een veilige plek, omdat hij maar één keer wordt weergegeven!
twofa_failed_get_secret=Kon geheim niet ophalen.
-webauthn_desc=Beveiligingssleutels zijn hardware apparaten die cryptografische sleutels bevatten. Ze kunnen worden gebruikt voor tweestapsverificatie. Beveiligingssleutels moeten de WebAuthn Authenticator standaard ondersteunen.
webauthn_register_key=Voeg beveiligingssleutel toe
webauthn_nickname=Bijnaam
webauthn_delete_key=Verwijder beveiligingssleutel
@@ -841,9 +830,7 @@ blame_prior=Bekijk de schuld voorafgaand aan deze verandering
transfer.accept=Accepteer overdracht
-transfer.accept_desc=`Overmaken naar "%s"`
transfer.reject=Overdracht afwijzen
-transfer.reject_desc=`Annuleer overdracht naar "%s"`
desc.private=Privé
desc.public=Openbaar
@@ -961,7 +948,6 @@ release=Release
releases=Publicaties
tag=Label
released_this=heeft dit gepubliceerd
-file.title=%s op %s
file_raw=Ruw
file_history=Geschiedenis
file_view_source=Bron weergeven
@@ -971,7 +957,6 @@ file_permalink=Permalink
file_too_large=Dit bestand is te groot om te tonen.
invisible_runes_line=`Deze lijn heeft onzichtbare unicode karakters`
ambiguous_runes_line=`Deze lijn heeft dubbelzinnige unicode karakters`
-ambiguous_character=`%[1]c [U+%04[1]X] is verwarrend met %[2]c [U+%04[2]X]`
escape_control_characters=Escape
unescape_control_characters=Onescape
@@ -1341,7 +1326,6 @@ issues.dependency.add_error_dep_not_same_repo=Beide kwesties moeten in dezelfde
issues.review.self.approval=Je kan je eigen pull-aanvraag niet goedkeuren.
issues.review.self.rejection=Je kan geen wijzigingen aanvragen op je eigen pull-aanvraag.
issues.review.approve=heeft deze veranderingen %s goedgekeurd
-issues.review.comment=beoordeeld %s
issues.review.dismissed=%s's beoordeling afgewezen %s
issues.review.dismissed_label=Afgewezen
issues.review.left_comment=heeft een reactie achtergelaten
@@ -1362,6 +1346,7 @@ issues.review.hide_resolved=Verbergen afgehandeld
issues.review.resolve_conversation=Gesprek oplossen
issues.review.un_resolve_conversation=Gesprek niet oplossen
issues.review.resolved_by=markeerde dit gesprek als opgelost
+issues.review.commented=Opmerking
issues.assignee.error=Niet alle aangewezen personen zijn toegevoegd vanwege een onverwachte fout.
issues.reference_issue.body=Inhoud
issues.content_history.deleted=verwijderd
@@ -1453,9 +1438,7 @@ pulls.rebase_conflict_summary=Foutmelding
pulls.unrelated_histories=Samenvoegen mislukt: de HEAD en base delen geen gemeenschappelijke geschiedenis. Tip: Probeer een andere strategie
pulls.merge_out_of_date=Samenvoegen mislukt: Tijdens het samenvoegen is de basis bijgewerkt. Tip: Probeer het opnieuw.
pulls.head_out_of_date=Samenvoegen mislukt: tijdens het genereren van de samenvoeging is de kop bijgewerkt. Tip: Probeer het opnieuw.
-pulls.push_rejected=Samenvoegen mislukt: De push is geweigerd. Controleer de Git Hooks voor deze repository.
pulls.push_rejected_summary=Volledig afwijzingsbericht
-pulls.push_rejected_no_message=Samenvoegen mislukt: De push is afgewezen, maar er was geen extern bericht.
Controleer de Git Hooks voor deze repository
pulls.open_unmerged_pull_exists=`Je kan deze pull-aanvraag niet opnieuw openen omdat er een andere (#%d) met identieke eigenschappen open staat.`
pulls.status_checking=Sommige controles zijn in behandeling
pulls.status_checks_success=Alle checks waren succesvol
@@ -1493,7 +1476,6 @@ milestones.closed=%s werd gesloten
milestones.no_due_date=Geen vervaldatum
milestones.open=Open
milestones.close=Sluit
-milestones.completeness=%d%% Voltooid
milestones.create=Mijlpaal maken
milestones.title=Titel
milestones.desc=Beschrijving
@@ -1805,12 +1787,7 @@ settings.key_name_used=Een deploy sleutel met dezelfde naam bestaat al.
settings.deploy_key_deletion=Verwijder deploy sleutel
settings.deploy_key_deletion_desc=Het verwijderen van een deploy sleutel zal de toegang tot deze repository intrekken. Doorgaan?
settings.deploy_key_deletion_success=De deploy-sleutel is verwijderd.
-settings.branches=Branches
-settings.protected_branch=Branch bescherming
-settings.protected_branch_can_push=Push toestaan?
settings.protected_branch_can_push_yes=U mag pushen
-settings.protected_branch_can_push_no=U mag niet pushen
-settings.branch_protection=Branch Bescherming voor branch '%s'
settings.protect_this_branch=Branch bescherming inschakelen
settings.protect_this_branch_desc=Voorkomt verwijdering en beperkt Git pushing en samenvoegen tot de branch.
settings.protect_disable_push=Push uitschakelen
@@ -1818,17 +1795,12 @@ settings.protect_disable_push_desc=Geen pushes zijn toegestaan in deze branch.
settings.protect_enable_push=Push inschakelen
settings.protect_enable_push_desc=Iedereen met schrijftoegang heeft toegang om te pushen naar deze branch (maar niet force push).
settings.protect_check_status_contexts=Status controle inschakelen
-settings.protect_check_status_contexts_desc=Statuscontroles zijn vereist om te kunnen samenvoegen. Kies welke statuscontroles moeten slagen voordat branches kunnen worden samengevoegd tot een branch die aan deze regel voldoet. Wanneer ingeschakeld, moeten commits eerst naar een andere branch worden gepusht, vervolgens samengevoegd of gepusht worden naar een branch die overeenkomt met deze regel nadat de statuscontroles zijn uitgevoerd. Als er geen contexten worden geselecteerd, moet de laatste commit succesvol zijn, ongeacht de context.
settings.protect_check_status_contexts_list=Status controles gevonden in de afgelopen week voor deze repository
settings.protect_required_approvals=Vereiste goedkeuringen:
-settings.protect_required_approvals_desc=Sta alleen toe om pull request samen te voegen met voldoende positieve beoordelingen.
settings.dismiss_stale_approvals=Verouderde goedkeuringen afwijzen
settings.dismiss_stale_approvals_desc=Wanneer nieuwe commits die de inhoud van het pull-verzoek veranderen, naar de branch worden gepusht, worden oude goedkeuringen verwijderd.
settings.require_signed_commits=Ondertekende Commits vereisen
settings.require_signed_commits_desc=Weiger pushes naar deze branch als deze niet ondertekend of niet verifieerbaar is.
-settings.add_protected_branch=Bescherming aanzetten
-settings.delete_protected_branch=Bescherming uitzetten
-settings.protected_branch_deletion=Branch bescherming uitschakelen
settings.protected_branch_deletion_desc=Branch bescherming uitschakelen zorgt ervoor dat gebruikers met schrijfrechten naar de branch kunnen pushen. Doorgaan?
settings.block_rejected_reviews=Samenvoegen van afgewezen beoordelingen blokkeren
settings.block_rejected_reviews_desc=Samenvoegen zal niet mogelijk zijn wanneer er wijzigingen worden aangevraagd door officiële beoordelaars, zelfs niet als er genoeg goedkeuringen zijn.
@@ -1837,7 +1809,6 @@ settings.block_on_official_review_requests_desc=Samenvoegen is niet mogelijk wan
settings.block_outdated_branch=Samenvoegen blokkeren als pull request verouderd is
settings.block_outdated_branch_desc=Samenvoegen is niet mogelijk als de hoofd branch achter loop op de basis branch.
settings.default_branch_desc=Selecteer een standaard repository branch voor pull requests en code commits:
-settings.default_merge_style_desc=Standaard samenvoegstijl voor pull verzoeken:
settings.choose_branch=Kies een branch…
settings.no_protected_branch=Er zijn geen beschermde branches.
settings.edit_protected_branch=Bewerken
@@ -1981,17 +1952,17 @@ release.download_count=Downloads: %s
branch.name=Branch naam
branch.delete_head=Verwijder
branch.delete_html=Verwijder branch
-branch.create_branch=Maak branch %s
+branch.create_branch=Maak branch %s
branch.deleted_by=Verwijderd door %s
branch.included_desc=Deze branch maakt deel uit van de standaard branch
branch.included=Inbegrepen
branch.confirm_rename_branch=Hernoem branch
+tag.create_tag=Maak tag %s
topic.manage_topics=Beheer topics
topic.done=Klaar
-topic.count_prompt=Je kunt niet meer dan 25 onderwerpen selecteren
@@ -2035,7 +2006,6 @@ settings.visibility.private=Privé (alleen zichtbaar voor organisatieleden)
settings.visibility.private_shortname=Privé
settings.update_settings=Instellingen bijwerken
-settings.update_setting_success=Organisatie instellingen zijn succesvol bijgewerkt.
settings.update_avatar_success=De avatar van de organisatie is aangepast.
settings.delete=Verwijder organisatie
settings.delete_account=Verwijder deze organisatie
@@ -2320,11 +2290,6 @@ auths.tips=Tips
auths.tips.oauth2.general=OAuth2 authenticatie
auths.tip.oauth2_provider=OAuth2 Provider
auths.tip.nextcloud=`Registreer een nieuwe OAuth consument op je installatie met behulp van het volgende menu "Instellingen -> Security -> OAuth 2.0 client"`
-auths.tip.dropbox=Maak een nieuwe applicatie aan op https://www.dropbox.com/developers/apps
-auths.tip.facebook=Registreer een nieuwe applicatie op https://developers.facebook.com/apps en voeg het product "Facebook Login" toe
-auths.tip.github=Registreer een nieuwe OAuth toepassing op https://github.com/settings/applications/new
-auths.tip.google_plus=Verkrijg OAuth2 client referenties van de Google API console op https://console.developers.google.com/
-auths.tip.yandex=`Maak een nieuwe applicatie aan op https://oauth.yandex.com/client/new. Selecteer de volgende machtigingen van de "Yandex". assport API sectie: "Toegang tot e-mailadres", "Toegang tot avatar" en "Toegang tot gebruikersnaam, voornaam en achternaam, geslacht"`
auths.edit=Authenticatiebron bewerken
auths.activated=Deze authenticatiebron is geactiveerd
auths.update_success=De authenticatie-bron is bijgewerkt.
@@ -2467,8 +2432,6 @@ monitor.start=Starttijd
monitor.execute_time=Uitvoertijd
monitor.last_execution_result=Resultaat
monitor.process.cancel=Annuleer proces
-monitor.process.cancel_desc=Annuleren van een proces kan gegevensverlies veroorzaken
-monitor.process.cancel_notices=Annuleer: %s?
monitor.queues=Wachtrijen
monitor.queue=Wachtrij: %s
@@ -2531,8 +2494,6 @@ raw_minutes=minuten
[dropzone]
default_message=Sleep bestanden hier heen of klik om te uploaden.
-invalid_input_type=U kunt geen bestanden van dit type uploaden.
-file_too_big=Bestandsgrootte ({{filesize}} MB) overschrijdt de maximale grootte ({{maxFilesize}} MB).
remove_file=Verwijder bestand
[notification]
@@ -2562,7 +2523,6 @@ error.unit_not_allowed=U heeft geen toegang tot deze sectie van de repository.
[packages]
filter.type=Type
assets=Assets
-alpine.repository.branches=Branches
alpine.repository.repositories=Repositories
conan.details.repository=Opslagplaats
rubygems.required.ruby=Vereist Ruby versie
diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini
index 699ee641d4..911a4b9e0e 100644
--- a/options/locale/locale_pl-PL.ini
+++ b/options/locale/locale_pl-PL.ini
@@ -131,8 +131,6 @@ filter.private=Prywatne
[error]
occurred=Wystąpił błąd
-missing_csrf=Błędne żądanie: brak tokenu CSRF
-invalid_csrf=Błędne żądanie: nieprawidłowy token CSRF
not_found=Nie można odnaleźć celu.
network_error=BÅ‚Ä…d sieci
@@ -140,11 +138,9 @@ network_error=BÅ‚Ä…d sieci
app_desc=Bezbolesna usługa Git na własnym serwerze
install=Åatwa instalacja
platform=Wieloplatformowość
-platform_desc=Gitea ruszy gdziekolwiek Go jest możliwe do skompilowania: Windows, macOS, Linux, ARM, itd. Wybierz swój ulubiony system!
lightweight=Niskie wymagania
lightweight_desc=Gitea ma niskie minimalne wymagania i może działać na niedrogim Raspberry Pi. Oszczędzaj energię swojego komputera!
license=Otwarte źródło
-license_desc=Pobierz na code.gitea.io/gitea! Dołącz do nas dzięki swojemu wkładowi, aby uczynić ten projekt jeszcze lepszym. Nie wstydź się zostać współtwórcą!
[install]
install=Instalacja
@@ -500,10 +496,8 @@ applications=Aplikacje
orgs=ZarzÄ…dzaj organizacjami
repos=Repozytoria
delete=Usuń konto
-twofa=Autoryzacja dwuetapowa
account_link=PowiÄ…zane Konta
organization=Organizacje
-webauthn=Klucze bezpieczeństwa
public_profile=Profil publiczny
password_username_disabled=Użytkownicy nielokalni nie mogą zmieniać swoich nazw. Aby uzyskać więcej informacji, skontaktuj się z administratorem strony.
@@ -668,21 +662,17 @@ revoke_key=Odwołaj
revoke_oauth2_grant=Odwołaj dostęp
revoke_oauth2_grant_description=Odwołanie dostępu dla tej aplikacji uniemożliwi jej korzystanie z Twoich danych. Czy jesteś pewny(-a)?
-twofa_desc=Weryfikacja dwuskładnikowa zwiększa bezpieczeństwo Twojego konta.
twofa_is_enrolled=Twoje konto ma obecnie włączoną autoryzację dwuetapową.
twofa_not_enrolled=Twoje konto obecnie nie ma włączonej autoryzacji dwuetapowej.
twofa_disable=Wyłącz weryfikację dwuetapową
-twofa_scratch_token_regenerate=Wygeneruj ponownie kod jednorazowy
twofa_enroll=Włącz weryfikację dwuskładnikową
twofa_disable_note=W każdej chwili możesz wyłączyć weryfikację dwuskładnikową.
twofa_disable_desc=Wyłączenie weryfikacji dwuetapowej sprawi, że Twoje konto będzie mniej bezpieczne. Kontynuować?
-regenerate_scratch_token_desc=Jeśli zgubiłeś(-aś) lub zużyłeś(-aś) swój kod jednorazowy, możesz go wygenerować ponownie tutaj.
twofa_disabled=Dwuetapowa autoryzacja została wyłączona.
scan_this_image=Zeskanuj ten obraz za pomocÄ…Â swojej aplikacji uwierzytelniajÄ…cej:
or_enter_secret=Lub wprowadź sekret: %s
then_enter_passcode=Oraz wpisz kod dostępu pokazany w aplikacji:
passcode_invalid=Kod dostępu jest nieprawidłowy. Spróbuj ponownie.
-twofa_enrolled=Na Twoim koncie została uruchomiona weryfikacja dwuetapowa. Przechowuj swój kod jednorazowy (%s) w bezpiecznym miejscu, gdyż jest widoczny tylko raz!
twofa_failed_get_secret=Nie udało się uzyskać sekretu.
webauthn_register_key=Dodaj klucz bezpieczeństwa
@@ -787,9 +777,7 @@ delete_preexisting_success=Usunięto nieprzyjęte pliki w %s
transfer.accept=Akceptuj transfer
-transfer.accept_desc=`PrzenieÅ› do "%s"`
transfer.reject=Odrzuć transfer
-transfer.reject_desc=`Anuluj transfer do "%s"`
desc.private=Prywatne
desc.public=Publiczne
@@ -902,7 +890,6 @@ release=Wydanie
releases=Wydania
tag=Tag
released_this=wydał to
-file.title=%s w %s
file_raw=Czysty
file_history=Historia
file_view_source=Zobacz Źródło
@@ -1231,7 +1218,6 @@ issues.dependency.add_error_dep_not_same_repo=Oba zgłoszenia muszą być w tym
issues.review.self.approval=Nie możesz zatwierdzić swojego własnego Pull Requesta.
issues.review.self.rejection=Nie możesz zażądać zmian w swoim własnym Pull Requeście.
issues.review.approve=zatwierdza te zmiany %s
-issues.review.comment=zrecenzowano %s
issues.review.dismissed_label=Odrzucony
issues.review.left_comment=zostawił komentarz
issues.review.content.empty=Musisz pozostawić komentarz o pożądanej zmianie/zmianach.
@@ -1251,6 +1237,7 @@ issues.review.hide_resolved=Ukryj rozwiÄ…zane
issues.review.resolve_conversation=Rozwiąż dyskusję
issues.review.un_resolve_conversation=Oznacz dyskusję jako nierozstrzygniętą
issues.review.resolved_by=oznaczył(-a) tę rozmowę jako rozwiązaną
+issues.review.commented=Skomentuj
issues.assignee.error=Nie udało się dodać wszystkich wybranych osób do przypisanych przez nieoczekiwany błąd.
issues.reference_issue.body=Treść
issues.content_history.edited=edytowano
@@ -1346,7 +1333,6 @@ milestones.closed=Zamknięto %s
milestones.no_due_date=Nie ustalono terminu
milestones.open=Otwórz
milestones.close=Zamknij
-milestones.completeness=%d%% Ukończono
milestones.create=Utwórz kamień milowy
milestones.title=Tytuł
milestones.desc=Opis
@@ -1505,7 +1491,6 @@ settings.enable_timetracker=Włącz śledzenie czasu
settings.allow_only_contributors_to_track_time=Zezwalaj wyłącznie współpracownikom na śledzenie czasu
settings.pulls_desc=WÅ‚Ä…cz Pull Requesty w repozytorium
settings.pulls.ignore_whitespace=Ignoruj znaki białe w konfliktach
-settings.projects_desc=WÅ‚Ä…cz projekty w repozytorium
settings.admin_settings=Ustawienia administratora
settings.admin_enable_health_check=Włącz sprawdzanie stanu zdrowia repozytoriów (git fsck)
settings.admin_enable_close_issues_via_commit_in_any_branch=Zamknij zgłoszenie poprzez commit wprowadzony do nie-domyślnej gałęzi
@@ -1672,12 +1657,6 @@ settings.key_name_used=Klucz wdrożeniowy z identyczną nazwą już istnieje.
settings.deploy_key_deletion=Usuń klucz wdrożeniowy
settings.deploy_key_deletion_desc=Usunięcie klucza wdrożeniowego wycofa jego dostęp do tego repozytorium. Kontynuować?
settings.deploy_key_deletion_success=Klucz wdrożeniowy został usunięty.
-settings.branches=Gałęzie
-settings.protected_branch=Ochrona gałęzi
-settings.protected_branch_can_push=Umożliwić push?
-settings.protected_branch_can_push_yes=Możesz wysyłać
-settings.protected_branch_can_push_no=Nie możesz wysyłać
-settings.branch_protection=`Ochrona gałęzi dla "%s"`
settings.protect_this_branch=Włącz ochronę gałęzi
settings.protect_this_branch_desc=Zapobiega usunięciu oraz ogranicza wypychanie i scalanie zmian do tej gałęzi.
settings.protect_disable_push=Wyłącz wypychanie
@@ -1685,17 +1664,12 @@ settings.protect_disable_push_desc=Wypychanie do tej gałęzi nie będzie możli
settings.protect_enable_push=WÅ‚Ä…cz wypychanie
settings.protect_enable_push_desc=Każdy użytkownik z uprawnieniem zapisu będzie miał możliwość wypychania do tej gałęzi (oprócz wymuszonego wypchnięcia).
settings.protect_check_status_contexts=WÅ‚Ä…cz kontrolÄ™ stanu
-settings.protect_check_status_contexts_desc=Wymagaj powodzenia kontroli stanów przed scalaniem. Wybierz które kontrole stanów muszą zostać ukończone pomyślnie, zanim gałęzie będą mogły zostać scalone z gałęzią, która pokrywa się z tą zasadą. Kiedy włączone, commity muszą być najpierw wypchnięte do innej gałęzi, a następnie scalone lub wypchnięte bezpośrednio do gałęzi, która pokrywa się z tą zasadą po pomyślnej kontroli stanów. Jeżeli nie zostaną wybrane konteksty, ostatni commit musi zakończyć się powodzeniem niezależnie od kontekstu.
settings.protect_check_status_contexts_list=Kontrole stanów w poprzednim tygodniu dla tego repozytorium
settings.protect_required_approvals=Wymagane zatwierdzenia:
-settings.protect_required_approvals_desc=Zezwól na scalanie Pull Requestów tylko z wystarczającą ilością pozytywnych recenzji.
settings.dismiss_stale_approvals=Unieważnij przestarzałe zatwierdzenia
settings.dismiss_stale_approvals_desc=Kiedy nowe commity zmieniające zawartość Pull Requesta są wypychane do gałęzi, wcześniejsze zatwierdzenia zostaną unieważnione.
settings.require_signed_commits=Wymagaj podpisanych commitów
settings.require_signed_commits_desc=Odrzucaj zmiany wypychane do tej gałęzi, jeśli nie są podpisane, lub są niemożliwe do zweryfikowania.
-settings.add_protected_branch=WÅ‚Ä…cz ochronÄ™
-settings.delete_protected_branch=Wyłącz ochronę
-settings.protected_branch_deletion=Wyłącz ochronę gałęzi
settings.protected_branch_deletion_desc=Wyłączenie ochrony gałęzi pozwoli użytkownikom z uprawnieniami zapisu do przekazywania zmian do gałęzi. Kontynuować?
settings.block_rejected_reviews=Zablokuj scalanie przy odrzuconych recenzjach
settings.block_rejected_reviews_desc=Scalanie nie będzie możliwe, jeżeli zostały zażądane zmiany przez oficjalnych recenzentów nawet, jeśli jest wystarczająca ilość zatwierdzeń.
@@ -1703,7 +1677,6 @@ settings.block_on_official_review_requests_desc=Połączenie nie będzie możliw
settings.block_outdated_branch=Zablokuj scalanie, jeśli pull request jest nieaktualny
settings.block_outdated_branch_desc=Scalanie nie będzie możliwe, gdy gałąź główna jest za gałęzią bazową.
settings.default_branch_desc=Wybierz domyślną gałąź repozytorium dla Pull Requestów i commitów kodu:
-settings.default_merge_style_desc=Domyślny styl scalania dla pull requestów:
settings.choose_branch=Wybierz gałąź…
settings.no_protected_branch=Nie ma chronionych gałęzi.
settings.edit_protected_branch=Zmień
@@ -1844,7 +1817,7 @@ release.add_tag=Utwórz tylko znacznik
branch.name=Nazwa gałęzi
branch.delete_head=Usuń
branch.delete_html=Usuń gałąź
-branch.create_branch=Utwórz gałąź %s
+branch.create_branch=Utwórz gałąź %s
branch.deleted_by=Usunięta przez %s
branch.included_desc=Ta gałąź jest częścią domyślnej gałęzi
branch.included=Zawarte
@@ -1853,12 +1826,11 @@ branch.confirm_create_branch=Utwórz gałąź
branch.create_branch_operation=Utwórz gałąź
branch.new_branch=Utwórz nową gałąź
-tag.create_tag=Utwóz tag %s
+tag.create_tag=Utwóz tag %s
topic.manage_topics=ZarzÄ…dzaj tematami
topic.done=Gotowe
-topic.count_prompt=Nie możesz wybrać więcej, niż 25 tematów
error.csv.too_large=Nie można wyświetlić tego pliku, ponieważ jest on zbyt duży.
@@ -2202,13 +2174,6 @@ auths.tips=Wskazówki
auths.tips.oauth2.general=Uwierzytelnianie OAuth2
auths.tip.oauth2_provider=Dostawca OAuth2
auths.tip.nextcloud=`Zarejestruj nowego klienta OAuth w swojej instancji za pomocą menu "Ustawienia -> Bezpieczeństwo -> Klient OAuth 2.0"`
-auths.tip.dropbox=Stwórz nową aplikację na https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Zarejestruj nowÄ… aplikacjÄ™ na https://developers.facebook.com/apps i dodaj produkt "Facebook Login"`
-auths.tip.github=Zarejestruj nowÄ… aplikacjÄ™ OAuth na https://github.com/settings/applications/new
-auths.tip.google_plus=Uzyskaj dane uwierzytelniajÄ…ce klienta OAuth2 z konsoli Google API na https://console.developers.google.com/
-auths.tip.twitter=Przejdź na https://dev.twitter.com/apps, stwórz aplikację i upewnij się, że opcja “Allow this application to be used to Sign in with Twitter†jest włączona
-auths.tip.discord=Zarejestruj nowÄ… aplikacjÄ™ na https://discordapp.com/developers/applications/me
-auths.tip.yandex=`Utwórz nową aplikację na https://oauth.yandex.com/client/new. Wybierz następujące uprawnienia z "Yandex.Passport API": "Access to email address", "Access to user avatar" and "Access to username, first name and surname, gender"`
auths.tip.mastodon=Wprowadź niestandardowy adres URL instancji mastodona, którą chcesz uwierzytelnić (lub użyj domyślnego)
auths.edit=Edytuj źródło uwierzytelniania
auths.activated=To źródło uwierzytelniania jest aktywne
@@ -2420,7 +2385,6 @@ raw_minutes=minut
[dropzone]
default_message=Upuść pliki tutaj lub kliknij, aby przesłać.
-invalid_input_type=Nie można przesłać plików tego typu.
file_too_big=Rozmiar pliku ({{filesize}} MB) przekracza maksymalny rozmiar ({{maxFilesize}} MB).
remove_file=Usuń plik
@@ -2452,7 +2416,6 @@ error.unit_not_allowed=Nie masz uprawnień do tej sekcji repozytorium.
[packages]
filter.type=Typ
-alpine.repository.branches=Gałęzie
alpine.repository.repositories=Repozytoria
conan.details.repository=Repozytorium
owner.settings.cleanuprules.enabled=WÅ‚Ä…czone
diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini
index 10f8f4c2b1..6f4f710d7f 100644
--- a/options/locale/locale_pt-BR.ini
+++ b/options/locale/locale_pt-BR.ini
@@ -184,9 +184,6 @@ string.desc=Z - A
[error]
occurred=Ocorreu um erro
-report_message=Se você acredita que esse é um falha do Gitea, pesquise por issues no GitHub ou abra uma nova issue, se necessário.
-missing_csrf=Pedido inválido: não tem token CSRF presente
-invalid_csrf=Requisição Inválida: token CSRF inválido
not_found=Não foi possÃvel encontrar o destino.
network_error=Erro de rede
@@ -194,11 +191,9 @@ network_error=Erro de rede
app_desc=Um serviço de hospedagem Git amigável
install=Fácil de instalar
platform=Multi-plataforma
-platform_desc=Gitea roda em qualquer sistema operacional em que Go consegue compilar: Windows, macOS, Linux, ARM, etc. Escolha qual você gosta mais!
lightweight=Leve e rápido
lightweight_desc=Gitea utiliza poucos recursos e consegue mesmo rodar no barato Raspberry Pi. Economize energia elétrica da sua máquina!
license=Código aberto
-license_desc=Está tudo no GitHub! Contribua e torne este projeto ainda melhor. Não tenha vergonha de contribuir!
[install]
install=Instalação
@@ -412,7 +407,6 @@ authorize_title=Autorizar "%s" para acessar sua conta?
authorization_failed=Autorização falhou
authorization_failed_desc=A autorização falhou porque detectamos uma solicitação inválida. Entre em contato com o responsável do aplicativo que você tentou autorizar.
sspi_auth_failed=Falha de autenticação SSPI
-password_pwned=A senha que você escolheu faz parte de uma lista de senhas roubadas expostas anteriormente em violações de dados. Tente novamente com uma senha diferente e considere alterar essa senha em outro lugar também.
password_pwned_err=Não foi possÃvel concluir a requisição ao HaveIBeenPwned
last_admin=Você não pode remover o último administrador. Deve haver pelo menos um administrador.
@@ -620,11 +614,9 @@ applications=Aplicativos
orgs=Gerenciar organizações
repos=Repositórios
delete=Excluir conta
-twofa=Autenticação de dois fatores
account_link=Contas vinculadas
organization=Organizações
uid=UID
-webauthn=Chaves de segurança
public_profile=Perfil público
biography_placeholder=Conte-nos um pouco sobre você! (Você pode usar Markdown)
@@ -855,26 +847,20 @@ revoke_oauth2_grant=Revogar acesso
revoke_oauth2_grant_description=Revogando o acesso para este aplicativo de terceiros impedirá este aplicativo de acessar seus dados. Tem certeza?
revoke_oauth2_grant_success=Acesso revogado com sucesso.
-twofa_desc=Autenticação de dois fatores melhora a segurança de sua conta.
twofa_recovery_tip=Se você perder o seu dispositivo, você será capaz de usar uma chave de recuperação de uso único para recuperar o acesso à sua conta.
twofa_is_enrolled=Sua conta está atualmente habilitada com autenticação de dois fatores.
twofa_not_enrolled=Sua conta não está atualmente inscrita para a autenticação em duas etapas.
twofa_disable=Desabilitar a autenticação de dois fatores
-twofa_scratch_token_regenerate=Gerar novamente o token de backup
-twofa_scratch_token_regenerated=Seu token agora é %s. Guarde-a em um local seguro, pois ela nunca mais será exibido.
twofa_enroll=Inscrever para a autenticação de dois fatores
twofa_disable_note=Você pode desabilitar a autenticação de dois fatores se necessário.
twofa_disable_desc=Desabilitar a autenticação de dois fatores tornará sua conta menos segura. Tem certeza que deseja continuar?
-regenerate_scratch_token_desc=Se você perdeu o seu token de backup, ou teve que usá-lo para realizar um acesso, você pode redefini-lo.
twofa_disabled=A autenticação de dois fatores foi desabilitada.
scan_this_image=Escaneie esta imagem com o seu aplicativo de autenticação:
or_enter_secret=Ou digite esse código: %s
then_enter_passcode=E insira a senha mostrada no aplicativo:
passcode_invalid=Esse código de acesso é inválido. Tente novamente.
-twofa_enrolled=Sua conta foi inscrita na autenticação de dois fatores. Armazene seu token de backup (%s) em um local seguro, pois ele é exibido apenas uma vez!
twofa_failed_get_secret=Falha ao obter o segredo.
-webauthn_desc=Chaves de segurança são dispositivos de hardware que contém chaves de criptografia. Elas podem ser usadas para autenticação de dois fatores. A chave de segurança deve suportar o padrão WebAuthnn Authenticator.
webauthn_register_key=Adicionar chave de segurança
webauthn_nickname=Apelido
webauthn_delete_key=Remover chave de segurança
@@ -1009,9 +995,7 @@ author_search_tooltip=Mostra um máximo de 30 usuários
transfer.accept=Aceitar transferência
-transfer.accept_desc=`Transferir para "%s"`
transfer.reject=Rejeitar transferência
-transfer.reject_desc=`Cancelar a transferência para "%s"`
transfer.no_permission_to_accept=Você não tem permissão para aceitar essa transferência.
transfer.no_permission_to_reject=Você não tem permissão para rejeitar essa transferência.
@@ -1145,7 +1129,6 @@ releases=Versões
tag=Tag
released_this=lançou isto
tagged_this=criou essa tag
-file.title=%s em %s
file_raw=Original
file_history=Histórico
file_view_source=Exibir código-fonte
@@ -1159,7 +1142,6 @@ ambiguous_runes_header=`Este arquivo contém caracteres Unicode ambÃguos`
ambiguous_runes_description=`Este arquivo contém caracteres Unicode que podem ser confundidos com outros caracteres. Se você acha que isso é intencional, pode ignorar esse aviso com segurança. Use o botão Escapar para revelá-los
invisible_runes_line=`Esta linha tem caracteres unicode invisÃveis`
ambiguous_runes_line=`Esta linha tem caracteres unicode ambÃguos`
-ambiguous_character=`%[1]c [U+%04[1]X] é confundÃvel com o %[2]c [U+%04[2]X]`
escape_control_characters=Escapar
unescape_control_characters=Desescapar
@@ -1615,7 +1597,6 @@ issues.dependency.add_error_dep_not_same_repo=Ambas as issues devem estar no mes
issues.review.self.approval=Você não pode aprovar o seu próprio pull request.
issues.review.self.rejection=Você não pode solicitar alterações em seu próprio pull request.
issues.review.approve=aprovou estas alterações %s
-issues.review.comment=revisou %s
issues.review.dismissed=rejeitou a revisão de %s %s
issues.review.dismissed_label=Rejeitada
issues.review.left_comment=deixou um comentário
@@ -1640,6 +1621,7 @@ issues.review.hide_resolved=Ocultar resolvidas
issues.review.resolve_conversation=Resolver conversa
issues.review.un_resolve_conversation=Conversa não resolvida
issues.review.resolved_by=marcou esta conversa como resolvida
+issues.review.commented=Comentar
issues.assignee.error=Nem todos os responsáveis foram adicionados devido a um erro inesperado.
issues.reference_issue.body=Conteúdo
issues.content_history.deleted=excluÃdo
@@ -1709,7 +1691,6 @@ pulls.is_empty=As alterações neste branch já estão na branch de destino. Est
pulls.required_status_check_failed=Algumas verificações necessárias não foram bem sucedidas.
pulls.required_status_check_missing=Estão faltando algumas verificações necessárias.
pulls.required_status_check_administrator=Como administrador, você ainda pode aplicar o merge deste pull request.
-pulls.blocked_by_approvals=Este pull request ainda não tem aprovações suficientes. %d de %d aprovações concedidas.
pulls.blocked_by_rejection=Este pull request tem alterações solicitadas por um revisor oficial.
pulls.blocked_by_official_review_requests=Este pull request tem solicitações de revisão oficiais.
pulls.blocked_by_outdated_branch=Este pull request está bloqueado porque está desatualizado.
@@ -1750,9 +1731,7 @@ pulls.rebase_conflict_summary=Mensagem de Erro
pulls.unrelated_histories=Merge falhou: O merge do principal e da base não compartilham uma história comum. Dica: Tente uma estratégia diferente
pulls.merge_out_of_date=Merge falhou: durante a geração do merge, a base não foi atualizada. Dica: Tente novamente.
pulls.head_out_of_date=O merge falhou: Enquanto gerava o merge, a head foi atualizada. Dica: Tente novamente.
-pulls.push_rejected=O merge falhou: O push foi rejeitado. Revise os Git Hooks para este repositório.
pulls.push_rejected_summary=Mensagem completa da rejeição
-pulls.push_rejected_no_message=O merge falhou: O push foi rejeitado mas não houve mensagem remota.
Revise os Git Hooks para este repositório
pulls.open_unmerged_pull_exists=`Não é possÃvel executar uma operação de reabertura pois há um pull request pendente (#%d) com propriedades idênticas.`
pulls.status_checking=Algumas verificações estão pendentes
pulls.status_checks_success=Todas as verificações foram bem sucedidas
@@ -1804,7 +1783,6 @@ milestones.no_due_date=Sem data limite
milestones.open=Reabrir
milestones.close=Fechar
milestones.new_subheader=Os marcos podem ajudá-lo a organizar os problemas e acompanhar seu progresso.
-milestones.completeness=%d%% concluÃdo
milestones.create=Criar marco
milestones.title=TÃtulo
milestones.desc=Descrição
@@ -2010,7 +1988,6 @@ settings.pulls.default_delete_branch_after_merge=Excluir o branch de pull reques
settings.pulls.default_allow_edits_from_maintainers=Permitir edições de mantenedores por padrão
settings.releases_desc=Habilitar versões do Repositório
settings.packages_desc=Habilitar Registro de Pacotes de Repositório
-settings.projects_desc=Habilitar Projetos do Repositório
settings.projects_mode_all=Todos os projetos
settings.actions_desc=Habilitar ações do repositório
settings.admin_settings=Configurações do administrador
@@ -2171,7 +2148,6 @@ settings.event_pull_request_sync_desc=Pull request sincronizado.
settings.event_package=Pacote
settings.event_package_desc=Pacote criado ou excluÃdo em um repositório.
settings.branch_filter=Filtro de branch
-settings.branch_filter_desc=Lista dos branches a serem considerados nos eventos push, criação de branch e exclusão de branch, especificados como padrão glob. Se estiver vazio ou for *
, eventos para todos os branches serão relatados. Veja github.com/gobwas/glob documentação da sintaxe. Exemplos: master
, {master,release*}
.
settings.authorization_header=Header de Autorização
settings.authorization_header_desc=Será incluÃdo como header de autorização para solicitações quando estiver presente. Exemplos: %s.
settings.active=Ativo
@@ -2215,14 +2191,8 @@ settings.key_name_used=Uma chave de deploy já existe com esse mesmo nome.
settings.deploy_key_deletion=Remover chave de deploy
settings.deploy_key_deletion_desc=A exclusão de uma chave de deploy irá revogar o seu acesso a este repositório. Continuar?
settings.deploy_key_deletion_success=A chave de deploy foi removida.
-settings.branches=Branches
-settings.protected_branch=Proteção de Branch
settings.protected_branch.save_rule=Salvar Regra
settings.protected_branch.delete_rule=Excluir Regra
-settings.protected_branch_can_push=Permitir push?
-settings.protected_branch_can_push_yes=Você pode fazer push
-settings.protected_branch_can_push_no=Você não pode fazer push
-settings.branch_protection=Proteção de Branch para '%s'
settings.protect_this_branch=Habilitar Proteção de Branch
settings.protect_this_branch_desc=Previne a exclusão e restringe o merge e push para o branch.
settings.protect_disable_push=Desabilitar push
@@ -2231,10 +2201,8 @@ settings.protect_enable_push=Habilitar push
settings.protect_enable_push_desc=Qualquer pessoa com acesso de escrita terá permissão para realizar push neste branch (mas não forçar o push).
settings.protect_enable_merge=Permitir merge
settings.protect_check_status_contexts=Habilitar verificação de status
-settings.protect_check_status_contexts_desc=Exigir que as verificações de status passem antes de fazer merge. Escolha quais verificações de status devem passar antes que os branches possam ter o merge aplicado em um branch que corresponda a esta regra. Quando habilitado, os commits devem primeiro ser enviados para outro branch, então faça merge ou push diretamente para um branch que corresponde a esta regra após a verificação de status ter passado. Se nenhum contexto for selecionado, o último commit deve ser bem sucedido, independentemente do contexto.
settings.protect_check_status_contexts_list=Verificações de status encontradas na última semana para este repositório
settings.protect_required_approvals=Aprovações necessárias:
-settings.protect_required_approvals_desc=Permite apenas realizar merge do pull request com avaliações positivas suficientes.
settings.dismiss_stale_approvals=Descartar aprovações obsoletas
settings.dismiss_stale_approvals_desc=Quando novos commits que mudam o conteúdo do pull request são enviados para o branch, as antigas aprovações serão descartadas.
settings.require_signed_commits=Exibir commits assinados
@@ -2242,15 +2210,10 @@ settings.require_signed_commits_desc=Rejeitar pushes para este branch se não es
settings.protect_branch_name_pattern=Padrão de Nome de Branch Protegida
settings.protect_patterns=Padrões
settings.protect_protected_file_patterns=Padrões de arquivos protegidos (separados usando ponto e vÃrgula ';'):
-settings.protect_protected_file_patterns_desc=Arquivos protegidos não podem ser alterados diretamente, mesmo que o usuário tenha direitos para adicionar, editar ou excluir arquivos neste branch. Vários padrões podem ser separados usando ponto e vÃrgula (';'). Consulte a documentação github.com/gobwas/glob para a sintaxe padrão. Exemplos: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Padrões de arquivos desprotegidos (separados usando ponto e vÃrgula ';'):
-settings.protect_unprotected_file_patterns_desc=Arquivos não protegidos que podem ser alterados diretamente se o usuário tiver acesso de gravação, ignorando as restrições de push. Vários padrões podem ser separados usando ponto e vÃrgula (\;'). Veja github.com/gobwas/glob documentação para sintaxe de padrões. Exemplos: .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=Habilitar proteção
-settings.delete_protected_branch=Desabilitar proteção
settings.update_protect_branch_success=Proteção do branch "%s" foi atualizada.
settings.remove_protected_branch_success=Proteção do branch "%s" foi desabilitada.
settings.remove_protected_branch_failed=Removendo regra de proteção de branch "%s" falhou.
-settings.protected_branch_deletion=Desabilitar proteção de branch
settings.protected_branch_deletion_desc=Desabilitar a proteção de branch permite que os usuários com permissão de escrita realizem push. Continuar?
settings.block_rejected_reviews=Bloquear merge em revisões rejeitadas
settings.block_rejected_reviews_desc=O merge não será possÃvel quando são solicitadas alterações pelos revisores oficiais, mesmo que haja aprovação suficiente.
@@ -2260,7 +2223,6 @@ settings.block_outdated_branch=Bloquear o merge se o pull request estiver desatu
settings.block_outdated_branch_desc=O merge não será possÃvel quando o branch de topo estiver atrás do branch base.
settings.default_branch_desc=Selecione um branch padrão para pull requests e commits de código:
settings.merge_style_desc=Estilos de Merge
-settings.default_merge_style_desc=Estilo de merge padrão para pull requests:
settings.choose_branch=Escolha um branch...
settings.no_protected_branch=Não há branches protegidos.
settings.edit_protected_branch=Editar
@@ -2436,7 +2398,7 @@ branch.delete_html=Excluir Branch
branch.deletion_success=Branch "%s" excluÃdo.
branch.deletion_failed=Falha ao excluir o branch "%s".
branch.delete_branch_has_new_commits=O branch "%s" não pode ser excluÃdo porque novos commits foram feitos após o merge.
-branch.create_branch=Criar branch %s
+branch.create_branch=Criar branch %s
branch.create_from=`a partir de "%s"`
branch.create_success=Branch "%s" criado.
branch.branch_already_exists=Branch "%s" já existe neste repositório.
@@ -2460,7 +2422,7 @@ branch.new_branch=Criar novo branch
branch.new_branch_from=`Criar novo branch a partir de "%s"`
branch.renamed=Branch %s foi renomeado para %s.
-tag.create_tag=Criar tag %s
+tag.create_tag=Criar tag %s
tag.create_tag_operation=Criar tag
tag.confirm_create_tag=Criar tag
tag.create_tag_from=`Criar nova tag a partir de "%s"`
@@ -2469,7 +2431,6 @@ tag.create_success=Tag "%s" criada.
topic.manage_topics=Gerenciar Tópicos
topic.done=Feito
-topic.count_prompt=Você não pode selecionar mais de 25 tópicos
find_file.go_to_file=Ir para arquivo
find_file.no_matching=Nenhum arquivo correspondente encontrado
@@ -2559,7 +2520,6 @@ teams.leave.detail=Sair de %s?
teams.can_create_org_repo=Criar repositórios
teams.can_create_org_repo_helper=Membros podem criar novos repositórios na organização. O criador terá acesso administrativo ao novo repositório.
teams.none_access=Sem Acesso
-teams.none_access_helper=Os membros não podem ver ou fazer qualquer outra ação nesta unidade.
teams.general_access=Acesso Geral
teams.general_access_helper=As permissões dos membros serão decididas pela tabela de permissões abaixo.
teams.read_access=Leitura
@@ -2624,7 +2584,6 @@ last_page=Última
total=Total: %d
settings=Configurações de Administrador
-dashboard.new_version_hint=Uma nova versão está disponÃvel: %s. Versão atual: %s. Visite o blog para mais informações.
dashboard.statistic=Resumo
dashboard.system_status=Status do sistema
dashboard.operation_name=Nome da operação
@@ -2892,13 +2851,6 @@ auths.tips.oauth2.general=Autenticação OAuth2
auths.tips.oauth2.general.tip=Ao registrar uma nova autenticação OAuth2, o URL de retorno de chamada/redirecionamento deve ser:
auths.tip.oauth2_provider=Provedor OAuth2
auths.tip.nextcloud=`Registre um novo consumidor OAuth em sua instância usando o seguinte menu "Configurações -> Segurança -> Cliente OAuth 2.0"`
-auths.tip.dropbox=Criar um novo aplicativo em https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Cadastrar um novo aplicativo em https://developers.facebook.com/apps e adicionar o produto "Facebook Login"`
-auths.tip.github=Cadastrar um novo aplicativo de OAuth na https://github.com/settings/applications/new
-auths.tip.google_plus=Obter credenciais de cliente OAuth2 do console de API do Google em https://console.developers.google.com/
-auths.tip.twitter=Vá em https://dev.twitter.com/apps, crie um aplicativo e certifique-se de que está habilitada a opção “Allow this application to be used to Sign in with Twitter“
-auths.tip.discord=Cadastrar um novo aplicativo em https://discordapp.com/developers/applications/me
-auths.tip.yandex=`Crie um novo aplicativo em https://oauth.yandex.com/client/new. Selecione as seguintes permissões da seção "Yandex.Passport API": "Access to email address", "Access to user avatar" and "Access to username, first name and surname, gender"`
auths.tip.mastodon=Insira a URL da instância personalizada do mastodon que você deseja usar para autenticar (ou use o padrão)
auths.edit=Editar fonte de autenticação
auths.activated=Esta fonte de autenticação está ativada
@@ -2979,7 +2931,6 @@ config.default_enable_timetracking=Habilitar o Cronômetro por Padrão
config.default_allow_only_contributors_to_track_time=Permitir que apenas os colaboradores acompanhem o contador de tempo
config.no_reply_address=Ocultar domÃnio de e-mail
config.default_visibility_organization=Visibilidade padrão para novas organizações
-config.default_enable_dependencies=Habilitar dependências de issue por padrão
config.webhook_config=Configuração de Hook da Web
config.queue_length=Tamanho da fila
@@ -3058,7 +3009,6 @@ monitor.next=Próxima vez
monitor.previous=Vez anterior
monitor.execute_times=Execuções
monitor.process=Processos em execução
-monitor.stacktrace=Stacktraces
monitor.processes_count=%d processos
monitor.download_diagnosis_report=Baixar relatório de diagnóstico
monitor.desc=Descrição
@@ -3066,8 +3016,6 @@ monitor.start=Hora de inÃcio
monitor.execute_time=Tempo de execução
monitor.last_execution_result=Resultado
monitor.process.cancel=Cancelar processo
-monitor.process.cancel_desc=Cancelar um processo pode causar perda de dados
-monitor.process.cancel_notices=Cancelar: %s?
monitor.process.children=Descendentes
monitor.queues=Filas
@@ -3157,7 +3105,6 @@ raw_minutes=minutos
[dropzone]
default_message=Arraste e solte arquivos aqui, ou clique para selecioná-los.
-invalid_input_type=Você não pode enviar arquivos deste tipo.
file_too_big=Tamanho de arquivo ({{filesize}} MB) excede o máximo de ({{maxFilesize}} MB).
remove_file=Remover arquivo
@@ -3225,7 +3172,6 @@ alpine.registry.key=Baixe a chave RSA pública do registro para a pasta /e
alpine.registry.info=Escolha o $branch e $repository da lista abaixo.
alpine.install=Para instalar o pacote, execute o seguinte comando:
alpine.repository=Informações do repositório
-alpine.repository.branches=Branches
alpine.repository.repositories=Repositórios
alpine.repository.architectures=Arquiteturas
cargo.registry=Configurar este registro no arquivo de configuração de Cargo (por exemplo
~/.cargo/config.toml
):
@@ -3301,7 +3247,6 @@ settings.link=Vincular este pacote a um repositório
settings.link.description=Se você vincular um pacote a um repositório, o pacote será listado na lista de pacotes do repositório.
settings.link.select=Selecionar Repositório
settings.link.button=Atualizar Link do Repositório
-settings.link.success=Link do repositório foi atualizado com sucesso.
settings.link.error=Falha ao atualizar o link do repositório.
settings.delete=Excluir o pacote
settings.delete.description=A exclusão de um pacote é permanente e não pode ser desfeita.
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index 17a1e82ecc..cb521fe58c 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -159,6 +159,7 @@ filter.public=Público
filter.private=Privado
no_results_found=Não foram encontrados quaisquer resultados.
+internal_error_skipped=Ocorreu um erro interno mas foi ignorado: %s
[search]
search=Pesquisar...
@@ -177,6 +178,8 @@ code_search_by_git_grep=Os resultados da pesquisa no código-fonte neste momento
package_kind=Pesquisar pacotes...
project_kind=Pesquisar planeamentos...
branch_kind=Pesquisar ramos...
+tag_kind=Pesquisar etiquetas...
+tag_tooltip=Pesquisar etiquetas correspondentes. Use '%' para corresponder a qualquer sequência de números.
commit_kind=Pesquisar cometimentos...
runner_kind=Pesquisar executores...
no_results=Não foram encontrados resultados correspondentes.
@@ -218,22 +221,20 @@ string.desc=Z - A
[error]
occurred=Ocorreu um erro
-report_message=Se acredita de que se trata de um erro do Gitea, procure, por favor, questões relacionadas no GitHub ou abra uma nova questão, se necessário.
-missing_csrf=Pedido inválido: não há código CSRF
-invalid_csrf=Pedido inválido: código CSRF inválido
+report_message=Se acredita tratar-se de um erro do Gitea, procure questões relacionadas no GitHub ou abra uma nova questão, se necessário.
not_found=Não foi possÃvel encontrar o destino.
network_error=Erro de rede
[startpage]
app_desc=Um serviço Git auto-hospedado e fácil de usar
install=Fácil de instalar
-install_desc=Corra, simplesmente, o ficheiro binário executável para a sua plataforma, despache-o com o Docker, ou obtenha-o sob a forma de pacote.
+install_desc=Corra, simplesmente, o ficheiro binário executável para a sua plataforma, despache-o com o Docker, ou obtenha-o sob a forma de pacote.
platform=Multiplataforma
-platform_desc=Gitea corre em qualquer plataforma onde possa compilar em linguagem Go: Windows, macOS, Linux, ARM, etc. Escolha a sua preferida!
+platform_desc=Gitea corre em qualquer plataforma onde possa compilar em linguagem Go: Windows, macOS, Linux, ARM, etc. Escolha a sua preferida!
lightweight=Leve
lightweight_desc=Gitea requer poucos recursos e pode correr num simples Raspberry Pi. Economize a energia da sua máquina!
license=Código aberto
-license_desc=Vá buscá-lo em code.gitea.io/gitea! Junte-se a nós dando a sua contribuição para tornar este programa ainda melhor. Não se acanhe e contribua!
+license_desc=Vá buscar %[2]s! Junte-se a nós dando a sua contribuição para tornar este programa ainda melhor. Não se acanhe e contribua!
[install]
install=Instalação
@@ -456,7 +457,7 @@ authorize_title=Autorizar o acesso de "%s" Ã sua conta?
authorization_failed=A autorização falhou
authorization_failed_desc=A autorização falhou porque encontrámos um pedido inválido. Entre em contacto com o responsável pela aplicação que tentou autorizar.
sspi_auth_failed=Falhou a autenticação SSPI
-password_pwned=A senha utilizada está numa lista de senhas roubadas anteriormente expostas em fugas de dados públicas. Tente novamente com uma senha diferente e considere também mudar esta senha nos outros sÃtios.
+password_pwned=A senha que escolheu está numa lista de senhas roubadas anteriormente expostas em fugas de dados públicas. Tente novamente com uma senha diferente e considere também mudar esta senha nos outros sÃtios.
password_pwned_err=Não foi possÃvel completar o pedido ao HaveIBeenPwned
last_admin=Não pode remover o último administrador. Tem que existir pelo menos um administrador.
signin_passkey=Iniciar sessão com uma passkey
@@ -628,6 +629,7 @@ org_still_own_repo=Esta organização ainda possui um ou mais repositórios, eli
org_still_own_packages=Esta organização ainda possui um ou mais pacotes, elimine-os primeiro.
target_branch_not_exist=O ramo de destino não existe.
+target_ref_not_exist=A referência de destino não existe %s
admin_cannot_delete_self=Não se pode auto-remover quando tem privilégios de administração. Remova esses privilégios primeiro.
@@ -693,11 +695,11 @@ applications=Aplicações
orgs=Gerir organizações
repos=Repositórios
delete=Eliminar a conta
-twofa=Autenticação em dois passos
+twofa=Autenticação em dois passos (TOTP)
account_link=Contas vinculadas
organization=Organizações
uid=UID
-webauthn=Chaves de segurança
+webauthn=Autenticação em dois passos (Chaves de Segurança)
public_profile=Perfil público
biography_placeholder=Conte-nos um pouco sobre si! (Pode usar Markdown)
@@ -715,7 +717,7 @@ update_language_success=O idioma foi modificado.
update_profile_success=O seu perfil foi modificado.
change_username=O seu nome de utilizador foi modificado.
change_username_prompt=Note: Mudar o seu nome de utilizador também muda o URL da sua conta.
-change_username_redirect_prompt=O antigo nome de utilizador, enquanto não for reivindicado, irá reencaminhar para o novo.
+change_username_redirect_prompt=O antigo nome de utilizador, enquanto ninguém o reivindicar, irá reencaminhar para o novo.
continue=Continuar
cancel=Cancelar
language=Idioma
@@ -795,7 +797,7 @@ add_email_success=O novo endereço de email foi adicionado.
email_preference_set_success=As preferências relativas ao email foram definidas com sucesso.
add_openid_success=O novo endereço OpenID foi adicionado.
keep_email_private=Ocultar endereço de email
-keep_email_private_popup=Isto irá ocultar o seu endereço de email no seu perfil, assim como quando fizer um pedido de integração ou editar um ficheiro usando a interface web. Cometimentos enviados não serão modificados.
+keep_email_private_popup=Isto irá ocultar o seu endereço de email no seu perfil, assim como quando fizer um pedido de integração ou editar um ficheiro usando a interface web. Cometimentos enviados não serão modificados. Utilize %s nos cometimentos para os associar à sua conta.
openid_desc=O OpenID permite delegar a autenticação num fornecedor externo.
manage_ssh_keys=Gerir chaves SSH
@@ -925,7 +927,7 @@ oauth2_client_secret_hint=O segredo não voltará a ser mostrado depois de sair
oauth2_application_edit=Editar
oauth2_application_create_description=As aplicações OAuth2 dão à sua aplicação de terceiros acesso a contas de utilizador nesta instância.
oauth2_application_remove_description=A remoção de uma aplicação OAuth2 impedi-la-á de aceder a contas de utilizador autorizadas nesta instância. Quer continuar?
-oauth2_application_locked=O Gitea pré-regista algumas aplicações OAuth2 no arranque, se for habilitado na configuração. Para evitar comportamentos inesperados, estas não podem ser editadas nem removidas. Consulte a documentação sobre o OAuth2, para obter mais informações.
+oauth2_application_locked=O Gitea pré-regista algumas aplicações OAuth2 no arranque, se forem habilitadas na configuração. Para evitar comportamentos inesperados, estas não podem ser editadas nem removidas. Consulte a documentação sobre o OAuth2 para obter mais informações.
authorized_oauth2_applications=Aplicações OAuth2 autorizadas
authorized_oauth2_applications_description=Concedeu acesso à sua conta pessoal do Gitea a estas aplicações de terceiros. Por favor, revogue o acesso às aplicações que já não precisa.
@@ -934,13 +936,13 @@ revoke_oauth2_grant=Revogar acesso
revoke_oauth2_grant_description=Revogar o acesso desta aplicação de terceiros impedi-la-á de aceder aos seus dados. Tem a certeza?
revoke_oauth2_grant_success=Acesso revogado com sucesso.
-twofa_desc=Autenticação em dois passos melhora a segurança da sua conta.
+twofa_desc=Para proteger a sua conta contra o roubo de senhas, pode usar um telemóvel ou outro dispositivo para recerber um código de utilização única baseado no tempo ("TOTP").
twofa_recovery_tip=Se perder o seu dispositivo, poderá usar uma chave de recuperação de utilização única para voltar a ter acesso à sua conta.
twofa_is_enrolled=A autenticação em dois passos está neste momento habilitada na sua conta.
twofa_not_enrolled=A autenticação em dois passos não está neste momento habilitada na sua conta.
twofa_disable=Desabilitar autenticação em dois passos
-twofa_scratch_token_regenerate=Voltar a gerar o código de recuperação
-twofa_scratch_token_regenerated=O seu código de recuperação agora é %s. Guarde-o num lugar seguro, não será mostrado novamente.
+twofa_scratch_token_regenerate=Voltar a gerar o código de recuperação de utilização única
+twofa_scratch_token_regenerated=O seu código de recuperação de utilização única agora é %s. Guarde-o num lugar seguro, uma vez que nunca mais vai ser mostrado.
twofa_enroll=Habilitar autenticação em dois passos
twofa_disable_note=Pode desabilitar a autenticação em dois passos, se for necessário.
twofa_disable_desc=Desabilitar a autenticação em dois passos tornará a sua conta menos segura. Quer continuar?
@@ -950,10 +952,10 @@ scan_this_image=Digitalize esta imagem com a sua aplicação de autenticação:
or_enter_secret=Ou insira o segredo: %s
then_enter_passcode=E insira o código apresentado na aplicação:
passcode_invalid=O código está errado. Tente de novo.
-twofa_enrolled=A sua conta usa autenticação em dois passos. Guarde o seu código de recuperação (%s) num lugar seguro porque é mostrado somente uma vez!
+twofa_enrolled=A sua conta foi registada com sucesso. Guarde o seu código de recuperação de utilização única (%s) num lugar seguro, uma vez que não vai ser mostrado novamente.
twofa_failed_get_secret=Falhou a obtenção do segredo.
-webauthn_desc=Chaves de segurança são dispositivos de hardware contendo chaves criptográficas. Podem ser usadas para autenticação em dois passos. As chaves de segurança têm de suportar o standard Autenticador WebAuthn.
+webauthn_desc=Chaves de segurança são dispositivos de hardware contendo chaves criptográficas. Podem ser usadas para autenticação em dois passos. As chaves de segurança têm de suportar o standard Autenticador WebAuthn.
webauthn_register_key=Adicionar chave de segurança
webauthn_nickname=Apelido
webauthn_delete_key=Remover chave de segurança
@@ -1038,6 +1040,7 @@ issue_labels_helper=Escolha um conjunto de rótulos para as questões.
license=Licença
license_helper=Escolha um ficheiro de licença.
license_helper_desc=Uma licença rege o que os outros podem, ou não, fazer com o seu código fonte. Não tem a certeza sobre qual a mais indicada para o seu trabalho? Veja: Escolher uma licença.
+multiple_licenses=Múltiplas licenças
object_format=Formato dos elementos
object_format_helper=Formato dos elementos do repositório. Não poderá ser alterado mais tarde. SHA1 é o mais compatÃvel.
readme=README
@@ -1123,7 +1126,7 @@ template.one_item=Tem que escolher pelo menos um item do modelo
template.invalid=Tem que escolher um repositório modelo
archive.title=Este repositório está arquivado. Pode ver os seus ficheiros e cloná-lo, mas não pode fazer envios para o repositório nem lançar questões ou fazer pedidos de integração.
-archive.title_date=Este repositório foi arquivado em %s. Pode ver os ficheiros e cloná-lo, mas não pode fazer envios ou abrir questões/pedidos de integração.
+archive.title_date=Este repositório foi arquivado em %s. Pode ver os ficheiros e cloná-lo, mas não pode fazer envios ou abrir questões ou pedidos de integração.
archive.issue.nocomment=Este repositório está arquivado. Não pode comentar nas questões.
archive.pull.nocomment=Este repositório está arquivado. Não pode comentar nos pedidos de integração.
@@ -1175,6 +1178,11 @@ migrate.gogs.description=Migrar dados de notabug.org ou de outras instâncias do
migrate.onedev.description=Migrar dados de code.onedev.io ou de outras instâncias do OneDev.
migrate.codebase.description=Migrar dados de codebasehq.com.
migrate.gitbucket.description=Migrar dados de instâncias do GitBucket.
+migrate.codecommit.description=Migrar dados de AWS CodeCommit.
+migrate.codecommit.aws_access_key_id=ID da chave de acesso AWS
+migrate.codecommit.aws_secret_access_key=Chave de acesso secreto AWS
+migrate.codecommit.https_git_credentials_username=Nome de utilizador das credenciais Git para HTTPS
+migrate.codecommit.https_git_credentials_password=Senha das credenciais Git para HTTPS
migrate.migrating_git=Migrando dados Git
migrate.migrating_topics=Migrando tópicos
migrate.migrating_milestones=Migrando etapas
@@ -1412,7 +1420,7 @@ projects.column.new=Nova coluna
projects.column.set_default=Tornar predefinida
projects.column.set_default_desc=Definir esta coluna como a predefinida para questões e pedidos de integração não categorizados
projects.column.delete=Eliminar coluna
-projects.column.deletion_desc=Eliminar uma coluna de um planeamento faz com que todas as questões que nela constam sejam movidas para a coluna 'Sem categoria'. Continuar?
+projects.column.deletion_desc=Eliminar uma coluna de um planeamento faz com que todas as questões que nela constam sejam movidas para a coluna predefinida. Continuar?
projects.column.color=Colorido
projects.open=Abrir
projects.close=Fechar
@@ -1749,6 +1757,12 @@ issues.review.hide_resolved=Ocultar os concluÃdos
issues.review.resolve_conversation=Passar diálogo ao estado de resolvido
issues.review.un_resolve_conversation=Passar diálogo ao estado de não resolvido
issues.review.resolved_by=marcou este diálogo como estando concluÃdo
+issues.review.commented=Comentar
+issues.review.official=Aprovada
+issues.review.requested=Revisão pendente
+issues.review.rejected=Modificações solicitadas
+issues.review.stale=Modificada depois da aprovação
+issues.review.unofficial=Aprovação não oficial
issues.assignee.error=Nem todos os encarregados foram adicionados devido a um erro inesperado.
issues.reference_issue.body=Conteúdo
issues.content_history.deleted=eliminado
@@ -1822,7 +1836,8 @@ pulls.is_empty=As modificações feitas neste ramo já existem no ramo de destin
pulls.required_status_check_failed=Algumas das verificações obrigatórias não foram bem sucedidas.
pulls.required_status_check_missing=Estão faltando algumas verificações necessárias.
pulls.required_status_check_administrator=Uma vez que é administrador, ainda pode realizar a integração deste pedido.
-pulls.blocked_by_approvals=Este pedido de integração ainda não tem aprovações suficientes. Já foram concedidas %d de um total de %d aprovações.
+pulls.blocked_by_approvals=Este pedido de integração ainda não tem aprovações necessárias suficientes. Já foram concedidas %d de um total de %d aprovações oficiais.
+pulls.blocked_by_approvals_whitelisted=Este pedido de integração ainda não tem um número de aprovações suficiente. %d em %d aprovações atribuÃdas pelos utilizadores ou equipas da lista de permissões.
pulls.blocked_by_rejection=Este pedido de integração tem modificações solicitadas por um revisor oficial.
pulls.blocked_by_official_review_requests=Este pedido de integração tem pedidos de revisão oficiais.
pulls.blocked_by_outdated_branch=Este pedido de integração foi bloqueado por ser obsoleto.
@@ -1864,9 +1879,9 @@ pulls.unrelated_histories=A integração falhou: O topo da integração e a base
pulls.merge_out_of_date=Falhou a integração: Enquanto estava a gerar a integração, a base foi modificada. Dica: Tente de novo.
pulls.head_out_of_date=Falhou a integração: Enquanto estava a gerar a integração, o topo foi modificado. Dica: Tente de novo.
pulls.has_merged=Falhou: A integração constante do pedido foi executada, não pode integrar novamente nem modificar o ramo alvo.
-pulls.push_rejected=A integração falhou: O envio foi rejeitado. Reveja os Automatismos do Git neste repositório.
+pulls.push_rejected=O envio falhou: O envio foi rejeitado. Reveja os Automatismos do Git neste repositório.
pulls.push_rejected_summary=Mensagem completa de rejeição
-pulls.push_rejected_no_message=A integração falhou: O envio foi rejeitado mas não houve qualquer mensagem remota.
Reveja os Automatismos do Git para este repositório
+pulls.push_rejected_no_message=O envio falhou: O envio foi rejeitado mas não houve qualquer mensagem remota. Reveja os Automatismos do Git para este repositório
pulls.open_unmerged_pull_exists=`Não pode executar uma operação de reabertura porque há um pedido de integração pendente (#%d) com propriedades idênticas.`
pulls.status_checking=Algumas verificações estão pendentes
pulls.status_checks_success=Todas as verificações foram bem sucedidas
@@ -1912,6 +1927,7 @@ pulls.delete.text=Tem a certeza que quer eliminar este pedido de integração? I
pulls.recently_pushed_new_branches=Enviou para o ramo %[1]s %[2]s
pull.deleted_branch=(eliminado):%s
+pull.agit_documentation=Rever a documentação sobre o AGit
comments.edit.already_changed=Não foi possÃvel guardar as modificações do comentário. O conteúdo parece ter sido modificado por outro utilizador, entretanto. Refresque a página e tente editar de novo para evitar sobrepor as modificações dele.
@@ -1922,7 +1938,7 @@ milestones.no_due_date=Sem data de vencimento
milestones.open=Abrir
milestones.close=Fechar
milestones.new_subheader=As etapas podem ajudar organizar as questões e a acompanhar o seu progresso.
-milestones.completeness=%d%% concluÃdo
+milestones.completeness=%d%% concluÃdo
milestones.create=Criar etapa
milestones.title=TÃtulo
milestones.desc=Descrição
@@ -2145,7 +2161,7 @@ settings.pulls.default_delete_branch_after_merge=Eliminar, por norma, o ramo do
settings.pulls.default_allow_edits_from_maintainers=Permitir, por norma, que os responsáveis editem
settings.releases_desc=Habilitar lançamentos no repositório
settings.packages_desc=Habilitar o registo de pacotes do repositório
-settings.projects_desc=Habilitar planeamentos no repositório
+settings.projects_desc=Habilitar planeamentos
settings.projects_mode_desc=Modo de planeamentos (tipos de planeamentos a mostrar)
settings.projects_mode_repo=Apenas planeamentos de repositórios
settings.projects_mode_owner=Apenas planeamentos de utilizadores ou de organizações
@@ -2322,7 +2338,7 @@ settings.event_pull_request_merge=Integração constante no pedido
settings.event_package=Pacote
settings.event_package_desc=Pacote criado ou eliminado num repositório.
settings.branch_filter=Filtro de ramos
-settings.branch_filter_desc=Lista dos ramos a serem considerados nos eventos de envio e de criação e eliminação de ramos, especificada como um padrão glob. Se estiver em branco ou for *
, serão reportados eventos para todos os ramos. Veja a documentação github.com/gobwas/glob para ver os detalhes da sintaxe. Exemplos: trunk
, {trunk,release*}
.
+settings.branch_filter_desc=Lista dos ramos a serem considerados nos eventos de envio e de criação e eliminação de ramos, especificada como um padrão glob. Se estiver em branco ou for *
, serão reportados eventos para todos os ramos. Veja a documentação para ver os detalhes da sintaxe. Exemplos: main
, {main,release*}
.
settings.authorization_header=Cabeçalho de Autorização
settings.authorization_header_desc=Será incluÃdo como cabeçalho de autorização para pedidos, quando estiver presente. Exemplos: %s.
settings.active=Em funcionamento
@@ -2404,13 +2420,13 @@ settings.protect_merge_whitelist_teams=Equipas com permissão para executar inte
settings.protect_check_status_contexts=Habilitar verificação de estado
settings.protect_status_check_patterns=Padrões de verificação de estado:
settings.protect_status_check_patterns_desc=Insira padrões para especificar que verificações de estado têm de passar antes que os ramos possam ser integrados num ramo correspondente a esta regra. Cada linha especifÃca um padrão. Os padrões não podem estar em branco.
-settings.protect_check_status_contexts_desc=Exigir que as verificações de estado passem antes de ser aplicada a integração. Escolha quais as verificações de estado que têm de passar para que os ramos possam ser integrados num ramo que corresponda a esta regra. Quando habilitado, os cometimentos primeiro têm de ser enviados para outro ramo e depois integrados, ou então enviados imediatamente para um ramo que corresponda a esta regra, após terem passado as verificações de estado. Se não forem escolhidos quaisquer contextos, o último cometimento tem que ser bem sucedido, independentemente do contexto.
+settings.protect_check_status_contexts_desc=Exigir que as verificações de estado passem antes de ser aplicada a integração. Quando habilitado, os cometimentos primeiro têm de ser enviados para outro ramo, depois integrados ou enviados imediatamente para um ramo que corresponda a esta regra, após terem passado as verificações de estado. Se não houver correspondência com quaisquer contextos, o último cometimento tem que ser bem sucedido, independentemente do contexto.
settings.protect_check_status_contexts_list=Verificações de estado encontradas na última semana para este repositório
settings.protect_status_check_matched=Correspondido
settings.protect_invalid_status_check_pattern=Padrão de verificação de estado inválido: "%s".
settings.protect_no_valid_status_check_patterns=Não existem padrões de verificação de estado válidos.
settings.protect_required_approvals=Aprovações necessárias:
-settings.protect_required_approvals_desc=Permitir somente a integração constante de pedidos que tenham revisões positivas suficientes.
+settings.protect_required_approvals_desc=Permitir somente a integração constante de pedidos que tenham aprovações exigidas suficientes. Aprovações exigidas são as dos utilizadores ou das equipas ou de qualquer pessoa que esteja na lista de permissão com acesso de escrita.
settings.protect_approvals_whitelist_enabled=Restringir aprovações a utilizadores ou equipas da lista de permissão
settings.protect_approvals_whitelist_enabled_desc=Somente as revisões dos utilizadores ou equipas da lista de permissão irão contar para as aprovações necessárias. Se não houver uma lista de permissão de aprovações, revisões de qualquer pessoa com acesso de escrita contam para as aprovações necessárias.
settings.protect_approvals_whitelist_users=Revisores com permissão:
@@ -2422,18 +2438,18 @@ settings.ignore_stale_approvals_desc=Não contar as aprovações feitas em comet
settings.require_signed_commits=Exigir cometimentos assinados
settings.require_signed_commits_desc=Rejeitar envios para este ramo que não estejam assinados ou que não sejam validáveis.
settings.protect_branch_name_pattern=Padrão do nome do ramo protegido
-settings.protect_branch_name_pattern_desc=Padrões de nomes de ramos protegidos. Consulte a documentação para ver a sintaxe dos padrões. Exemplos: main, release/**
+settings.protect_branch_name_pattern_desc=Padrões de nomes de ramos protegidos. Consulte a documentação para ver a sintaxe dos padrões. Exemplos: main, release/**
settings.protect_patterns=Padrões
settings.protect_protected_file_patterns=Padrões de ficheiros protegidos (separados com ponto e vÃrgula ';'):
-settings.protect_protected_file_patterns_desc=Ficheiros protegidos não podem ser modificados imediatamente, mesmo que o utilizador tenha direitos para adicionar, editar ou eliminar ficheiros neste ramo. Múltiplos padrões podem ser separados com ponto e vÃrgula (';'). Veja a documentação em github.com/gobwas/glob para ver a sintaxe. Exemplos: .drone.yml
, /docs/**/*.txt
.
+settings.protect_protected_file_patterns_desc=Ficheiros protegidos não podem ser modificados imediatamente, mesmo que o utilizador tenha direitos para adicionar, editar ou eliminar ficheiros neste ramo. Múltiplos padrões podem ser separados com ponto e vÃrgula (';'). Veja a documentação %[2]s para ver a sintaxe. Exemplos: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Padrões de ficheiros desprotegidos (separados com ponto e vÃrgula ';'):
-settings.protect_unprotected_file_patterns_desc=Ficheiros desprotegidos que podem ser modificados imediatamente se o utilizador tiver direitos de escrita, contornando a restrição no envio. Padrões múltiplos podem ser separados com ponto e vÃrgula (';'). Veja a documentação em github.com/gobwas/glob para ver a sintaxe. Exemplos: .drone.yml
, /docs/**/*.txt
.
+settings.protect_unprotected_file_patterns_desc=Ficheiros desprotegidos que podem ser modificados imediatamente se o utilizador tiver direitos de escrita, contornando a restrição no envio. Padrões múltiplos podem ser separados com ponto e vÃrgula (';'). Veja a documentação %[2]s para ver a sintaxe. Exemplos: .drone.yml
, /docs/**/*.txt
.
settings.add_protected_branch=Habilitar salvaguarda
settings.delete_protected_branch=Desabilitar salvaguarda
settings.update_protect_branch_success=A salvaguarda do ramo "%s" foi modificada.
settings.remove_protected_branch_success=A salvaguarda do ramo "%s" foi removida.
settings.remove_protected_branch_failed=A remoção da regra "%s" de salvaguarda do ramo falhou.
-settings.protected_branch_deletion=Desabilitar salvaguarda do ramo
+settings.protected_branch_deletion=Eliminar salvaguarda do ramo
settings.protected_branch_deletion_desc=Desabilitar a salvaguarda do ramo irá permitir que os utilizadores que tenham permissão de escrita enviem para o ramo. Quer continuar?
settings.block_rejected_reviews=Bloquear a integração quando há revisões rejeitadas
settings.block_rejected_reviews_desc=A integração não será possÃvel quando as modificações forem pedidas pelos revisores oficiais, mesmo que haja aprovações suficientes.
@@ -2459,7 +2475,7 @@ settings.tags.protection.allowed.teams=Equipas com permissão
settings.tags.protection.allowed.noone=Ninguém
settings.tags.protection.create=Proteger etiqueta
settings.tags.protection.none=Não há etiquetas protegidas.
-settings.tags.protection.pattern.description=Pode usar um só nome ou um padrão glob ou uma expressão regular para corresponder a várias etiquetas. Para mais informações leia o guia das etiquetas protegidas.
+settings.tags.protection.pattern.description=Pode usar um só nome ou um padrão glob ou uma expressão regular para corresponder a várias etiquetas. Para mais informações leia o guia das etiquetas protegidas.
settings.bot_token=Código do bot
settings.chat_id=ID do diálogo
settings.thread_id=ID da discussão
@@ -2639,7 +2655,7 @@ branch.delete_desc=Eliminar um ramo é algo permanente. Embora o ramo eliminado
branch.deletion_success=O ramo "%s" foi eliminado.
branch.deletion_failed=Falhou a eliminação do ramo "%s".
branch.delete_branch_has_new_commits=O ramo "%s" não pode ser eliminado porque foram adicionados novos cometimentos após a integração.
-branch.create_branch=Criar ramo %s
+branch.create_branch=Criar ramo %s
branch.create_from=`a partir de "%s"`
branch.create_success=O ramo "%s" foi criado.
branch.branch_already_exists=O ramo "%s" já existe neste repositório.
@@ -2665,7 +2681,7 @@ branch.new_branch=Criar um novo ramo
branch.new_branch_from=`Criar um novo ramo a partir do ramo "%s"`
branch.renamed=O ramo %s foi renomeado para %s.
-tag.create_tag=Criar etiqueta %s
+tag.create_tag=Criar etiqueta %s
tag.create_tag_operation=Criar etiqueta
tag.confirm_create_tag=Criar etiqueta
tag.create_tag_from=`Criar uma etiqueta nova a partir do ramo "%s"`
@@ -2841,7 +2857,7 @@ last_page=Última
total=total: %d
settings=Configurações de administração
-dashboard.new_version_hint=O Gitea %s está disponÃvel, você está a correr a versão %s. Verifique o blog para mais detalhes.
+dashboard.new_version_hint=O Gitea %s está disponÃvel, você está a correr a versão %s. Verifique o blog para mais detalhes.
dashboard.statistic=Resumo
dashboard.maintenance_operations=Operações de manutenção
dashboard.system_status=Estado do sistema
@@ -2926,6 +2942,7 @@ dashboard.start_schedule_tasks=Iniciar tarefas de agendamento das operações
dashboard.sync_branch.started=Sincronização de ramos iniciada
dashboard.sync_tag.started=Sincronização de etiquetas iniciada
dashboard.rebuild_issue_indexer=Reconstruir indexador de questões
+dashboard.sync_repo_licenses=Sincronizar licenças do repositório
users.user_manage_panel=Gestão das contas de utilizadores
users.new_account=Criar conta de utilizador
@@ -3033,12 +3050,12 @@ packages.size=Tamanho
packages.published=Publicado
defaulthooks=Automatismos web predefinidos
-defaulthooks.desc=Os automatismos web fazem pedidos HTTP POST automaticamente a um servidor quando são despoletados determinados eventos do Gitea. Os automatismos web definidos aqui são os predefinidos e serão copiados para todos os novos repositórios. Leia mais no guia de automatismos web.
+defaulthooks.desc=Os automatismos web fazem pedidos HTTP POST automaticamente a um servidor quando são despoletados determinados eventos do Gitea. Os automatismos web definidos aqui são os predefinidos e serão copiados para todos os novos repositórios. Leia mais no guia de automatismos web.
defaulthooks.add_webhook=Adicionar automatismo web predefinido
defaulthooks.update_webhook=Modificar automatismo web predefinido
systemhooks=Automatismos web do sistema
-systemhooks.desc=Os automatismos web fazem pedidos HTTP POST automaticamente a um servidor quando são despoletados determinados eventos do Gitea. Os automatismos web definidos aqui irão operar em todos os repositórios deste sistema, por isso tenha em consideração quaisquer implicações de desempenho que isso possa ter. Leia mais no guia de automatismos web.
+systemhooks.desc=Os automatismos web fazem pedidos HTTP POST automaticamente a um servidor quando são despoletados determinados eventos do Gitea. Os automatismos web definidos aqui irão operar em todos os repositórios deste sistema, por isso tenha em consideração quaisquer implicações de desempenho que isso possa ter. Leia mais no guia de automatismos web.
systemhooks.add_webhook=Adicionar automatismo web do sistema
systemhooks.update_webhook=Modificar automatismo web do sistema
@@ -3133,18 +3150,18 @@ auths.tips=Dicas
auths.tips.oauth2.general=Autenticação OAuth2
auths.tips.oauth2.general.tip=Ao registar uma nova autenticação OAuth2, o URL da ligação de retorno ou do reencaminhamento deve ser:
auths.tip.oauth2_provider=Fornecedor OAuth2
-auths.tip.bitbucket=Registe um novo consumidor de OAuth em https://bitbucket.org/account/user/{your-username}/oauth-consumers/new e adicione a permissão 'Account' - 'Read'
+auths.tip.bitbucket=Registe um novo consumidor de OAuth em %s e adicione a permissão 'Account' - 'Read'
auths.tip.nextcloud=`Registe um novo consumidor OAuth na sua instância usando o seguinte menu "Configurações → Segurança → Cliente OAuth 2.0"`
-auths.tip.dropbox=Crie uma nova aplicação em https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Registe uma nova aplicação em https://developers.facebook.com/apps e adicione o produto "Facebook Login"`
-auths.tip.github=Registe uma nova aplicação OAuth em https://github.com/settings/applications/new
-auths.tip.gitlab_new=Registe uma nova aplicação em https://gitlab.com/-/profile/applications
-auths.tip.google_plus=Obtenha credenciais de cliente OAuth2 a partir da consola do Google API em https://console.developers.google.com/
+auths.tip.dropbox=Crie uma nova aplicação em %s
+auths.tip.facebook=`Registe uma nova aplicação em %s e adicione o produto "Facebook Login"`
+auths.tip.github=Registe uma nova aplicação OAuth em %s
+auths.tip.gitlab_new=Registe uma nova aplicação em %s
+auths.tip.google_plus=Obtenha credenciais de cliente OAuth2 a partir da consola do Google API em %s
auths.tip.openid_connect=Use o URL da descoberta de conexão OpenID "https://{server}/.well-known/openid-configuration" para especificar os extremos
-auths.tip.twitter=`Vá a https://dev.twitter.com/apps, crie uma aplicação e certifique-se de que está habilitada a opção "Allow this application to be used to Sign in with Twitter"`
-auths.tip.discord=Registe uma nova aplicação em https://discordapp.com/developers/applications/me
-auths.tip.gitea=Registe uma nova aplicação OAuth2. O guia pode ser encontrado em https://docs.gitea.com/development/oauth2-provider
-auths.tip.yandex=`Crie uma nova aplicação em https://oauth.yandex.com/client/new. Escolha as seguintes permissões da secção "Yandex.Passport API": "Acesso ao endereço de email", "Acesso ao avatar do utilizador" e "Acesso ao nome de utilizador, nome e sobrenome, género"`
+auths.tip.twitter=`Vá a %s, crie uma aplicação e certifique-se de que está habilitada a opção "Allow this application to be used to Sign in with Twitter"`
+auths.tip.discord=Registe uma nova aplicação em %s
+auths.tip.gitea=Registe uma nova aplicação OAuth2. O guia pode ser encontrado em %s
+auths.tip.yandex=`Crie uma nova aplicação em %s. Escolha as seguintes permissões da secção "Yandex.Passport API": "Acesso ao endereço de email", "Acesso ao avatar do utilizador" e "Acesso ao nome de utilizador, nome e sobrenome, género"`
auths.tip.mastodon=Insira o URL de uma instância personalizada para a instância do mastodon com que se pretende autenticar (ou então use a predefinida)
auths.edit=Editar fonte de autenticação
auths.activated=Esta fonte de autenticação está em funcionamento
@@ -3569,7 +3586,7 @@ settings.link=Vincular este pacote a um repositório
settings.link.description=Se você vincular um pacote a um repositório, o pacote será listado na lista de pacotes do repositório.
settings.link.select=Escolha o repositório
settings.link.button=Modificar vÃnculo ao repositório
-settings.link.success=O vÃnculo ao repositório foi modificado com sucesso.
+settings.link.success=A ligação ao repositório foi modificada com sucesso.
settings.link.error=Falhou a modificação do vÃnculo ao repositório.
settings.delete=Eliminar pacote
settings.delete.description=Eliminar o pacote é permanente e não pode ser desfeito.
@@ -3700,6 +3717,11 @@ workflow.disable_success=A sequência de trabalho '%s' foi desabilitada com suce
workflow.enable=Habilitar sequência de trabalho
workflow.enable_success=A sequência de trabalho '%s' foi habilitada com sucesso.
workflow.disabled=A sequência de trabalho está desabilitada.
+workflow.run=Executar sequência de trabalho
+workflow.not_found=A sequência de trabalho '%s' não foi encontrada.
+workflow.run_success=A sequência de trabalho '%s' foi executada com sucesso.
+workflow.from_ref=Usar sequência de trabalho de
+workflow.has_workflow_dispatch=Esta sequência de trabalho tem um despoletador de eventos workflow_dispatch.
need_approval_desc=É necessária aprovação para executar sequências de trabalho para a derivação do pedido de integração.
diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini
index b9c35331d0..03c6e2d073 100644
--- a/options/locale/locale_ru-RU.ini
+++ b/options/locale/locale_ru-RU.ini
@@ -182,22 +182,16 @@ string.desc=Я - Ð
[error]
occurred=Произошла ошибка
-report_message=ЕÑли вы Ñчитаете, что Ñто баг Gitea, пожалуйÑта, поищите задачу на GitHub или Ñоздайте новую при необходимоÑти.
-missing_csrf=Ðекорректный запроÑ: отÑутÑтвует токен CSRF
-invalid_csrf=Ðекорректный запроÑ: неверный токен CSRF
not_found=Цель не найдена.
network_error=Ошибка Ñети
[startpage]
app_desc=Удобный ÑÐµÑ€Ð²Ð¸Ñ ÑобÑтвенного хоÑтинга репозиториев Git
install=ПроÑтой в уÑтановке
-install_desc=ПроÑто запуÑтите иÑполнÑемый файл Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ платформы, разверните через Docker, или уÑтановите Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ менеджера пакетов.
platform=КроÑÑплатформенный
-platform_desc=Gitea работает на любой платформе, поддерживаемой Go: Windows, macOS, Linux, ARM и Ñ‚. д. Выбирайте, что вам больше нравитÑÑ!
lightweight=ЛегковеÑный
lightweight_desc=Gitea имеет низкие ÑиÑтемные Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ может работать на недорогом Raspberry Pi. Ðкономьте Ñнергию вашей машины!
license=Открытый иÑходный код
-license_desc=Ð’ÑÑ‘ Ñто на code.gitea.io/gitea! ПриÑоединÑйтеÑÑŒ к нам, вноÑÑ Ð²ÐºÐ»Ð°Ð´, чтобы Ñделать Ñтот проект ещё лучше. Ðе бойтеÑÑŒ помогать!
[install]
install=УÑтановка
@@ -411,7 +405,6 @@ authorize_title=Разрешить «%s» доÑтуп к вашей учётн
authorization_failed=Ошибка авторизации
authorization_failed_desc=Ошибка авторизации, обнаружен неверный запроÑ. ПожалуйÑта, ÑвÑжитеÑÑŒ Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¾Ð¼ приложениÑ, которое вы пыталиÑÑŒ авторизовать.
sspi_auth_failed=ÐÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ SSPI не удалаÑÑŒ
-password_pwned=Выбранный вами пароль находитÑÑ Ð² ÑпиÑке украденных паролей из ранее опубликованных утечек. Повторите попытку Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼ паролем. Также рекомендуем Ñменить Ñтот пароль в других меÑтах.
password_pwned_err=Ðе удалоÑÑŒ завершить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ðº HaveIBeenPwned
[mail]
@@ -617,11 +610,9 @@ applications=ПриложениÑ
orgs=Управление организациÑми
repos=Репозитории
delete=Удалить аккаунт
-twofa=Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ
account_link=ПривÑзанные аккаунты
organization=Организации
uid=UID
-webauthn=Ключи безопаÑноÑти
public_profile=Открытый профиль
biography_placeholder=РаÑÑкажите немного о Ñебе! (Можно иÑпользовать Markdown)
@@ -850,25 +841,20 @@ revoke_oauth2_grant=Отозвать доÑтуп
revoke_oauth2_grant_description=Отзыв доÑтупа у Ñтого Ñтороннего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ позволит ему получать доÑтуп к вашим данным. Ð’Ñ‹ уверены?
revoke_oauth2_grant_success=ДоÑтуп был уÑпешно отозван.
-twofa_desc=Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐ°ÐµÑ‚ уровень безопаÑноÑти вашей учётной запиÑи.
twofa_recovery_tip=Ð’ Ñлучае утраты уÑтройÑтва можно иÑпользовать одноразовый ключ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ñтупа к учётной запиÑи.
twofa_is_enrolled=Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¸Ñпользует двухфакторную аутентификацию.
twofa_not_enrolled=Ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð½Ðµ иÑпользует двухфакторную аутентификацию.
twofa_disable=Отключить двухфакторную аутентификацию
-twofa_scratch_token_regenerate=ПереÑоздать scratch-токен
twofa_enroll=Включить двухфакторную аутентификацию
twofa_disable_note=При необходимоÑти можно отключить двухфакторную аутентификацию.
twofa_disable_desc=Отключение двухфакторной аутентификации Ñделает ваш аккаунт менее безопаÑным. Продолжить?
-regenerate_scratch_token_desc=ЕÑли вы потерÑли Ñвой scratch-токен или уже иÑпользовали его Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°, вы можете ÑброÑить его здеÑÑŒ.
twofa_disabled=Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°.
scan_this_image=ОтÑканируйте Ñто изображение вашим приложением Ð´Ð»Ñ Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ð¹ аутентификации:
or_enter_secret=Или введите кодовое Ñлово: %s
then_enter_passcode=И введите пароль, показанный в приложении:
passcode_invalid=Ðеверный пароль. попробуйте Ñнова.
-twofa_enrolled=Ð”Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ аккаунта была включена Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ. Сохраните ваш scratch-токен (%s), он будет показан только один раз!
twofa_failed_get_secret=Ðе удалоÑÑŒ получить ключ.
-webauthn_desc=Ключи безопаÑноÑти - Ñто аппаратные уÑтройÑтва, Ñодержащие криптографичеÑкие ключи. Они могут иÑпользоватьÑÑ Ð´Ð»Ñ Ð´Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ð¹ аутентификации. Ключи безопаÑноÑти должны поддерживать Ñтандарт WebAuthn Authenticator.
webauthn_register_key=Добавить ключ безопаÑноÑти
webauthn_nickname=Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ
webauthn_delete_key=Удалить ключ безопаÑноÑти
@@ -998,9 +984,7 @@ tree_path_not_found_commit=Путь %[1]s не ÑущеÑтвует в комм
tree_path_not_found_branch=Путь %[1]s не ÑущеÑтвует в ветке %[2]s
transfer.accept=ПринÑÑ‚ÑŒ транÑфер
-transfer.accept_desc=ПеремеÑтить в «%s»
transfer.reject=ОтказатьÑÑ Ð¾Ñ‚ перемещениÑ
-transfer.reject_desc=Отменить перемещение в «%s»
desc.private=Приватный
desc.public=Публичный
@@ -1117,7 +1101,7 @@ projects=Проекты
packages=Пакеты
actions=ДейÑтвиÑ
labels=Метки
-org_labels_desc=Метки ÑƒÑ€Ð¾Ð²Ð½Ñ Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ð¸, которые можно иÑпользовать Ñ Ð²Ñеми репозиториÑми< / strong> в Ñтой организации
+org_labels_desc=Метки ÑƒÑ€Ð¾Ð²Ð½Ñ Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ð¸, которые можно иÑпользовать Ñ Ð²Ñеми репозиториÑми в Ñтой организации
org_labels_desc_manage=управлÑÑ‚ÑŒ
milestones=Ðтапы
@@ -1128,7 +1112,6 @@ releases=Релизы
tag=Тег
released_this=выпуÑтил(-а) Ñто
tagged_this=добавил(а) тег
-file.title=%s в %s
file_raw=ИÑходник
file_history=ИÑториÑ
file_view_source=ПроÑмотреть иÑходный код
@@ -1140,7 +1123,6 @@ invisible_runes_header=`Ðтот файл Ñодержит невидимые Ñ
ambiguous_runes_header=`Ðтот файл Ñодержит неоднозначные Ñимволы Юникода`
invisible_runes_line=`Ð’ Ñтой Ñтроке еÑÑ‚ÑŒ невидимые Ñимволы Юникода`
ambiguous_runes_line=`Ð’ Ñтой Ñтроке еÑÑ‚ÑŒ неоднозначные Ñимволы Юникода`
-ambiguous_character=`%[1]c [U+%04[1]X] можно Ñпутать Ñ %[2]c [U+%04[2]X]`
escape_control_characters=Ðкранировать
unescape_control_characters=Убрать Ñкранирование
@@ -1594,7 +1576,6 @@ issues.dependency.add_error_dep_not_same_repo=Обе задачи должны
issues.review.self.approval=Ð’Ñ‹ не можете одобрить ÑобÑтвенный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние.
issues.review.self.rejection=Ðевозможно запрашивать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñвоего запроÑа на ÑлиÑние.
issues.review.approve=одобрил(а) Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ %s
-issues.review.comment=раÑÑмотрел(а) Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ %s
issues.review.dismissed=отклонен отзыв %s %s
issues.review.dismissed_label=Отклонено
issues.review.left_comment=оÑтавил комментарий
@@ -1618,6 +1599,7 @@ issues.review.hide_resolved=Скрыть разрешенные
issues.review.resolve_conversation=Покинуть диалог
issues.review.un_resolve_conversation=Ðезавершённый разговор
issues.review.resolved_by=пометить Ñтот разговор как разрешённый
+issues.review.commented=Комментировать
issues.assignee.error=Ðе вÑе Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ добавлены из-за непредвиденной ошибки.
issues.reference_issue.body=Тело
issues.content_history.deleted=удалено
@@ -1685,7 +1667,6 @@ pulls.is_empty=Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð· Ñтой ветки уже еÑÑ‚ÑŒ в ц
pulls.required_status_check_failed=Ðекоторые необходимые проверки не были пройдены.
pulls.required_status_check_missing=ОтÑутÑтвуют некоторые обÑзательные проверки.
pulls.required_status_check_administrator=Как админиÑтратор, вы вÑе равно можете принÑÑ‚ÑŒ Ñтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние.
-pulls.blocked_by_approvals=Ðтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние пока не имеет доÑтаточного количеÑтва одобрений. Получено %d из %d одобрений.
pulls.blocked_by_rejection=Официальный рецензент запроÑил Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ðº Ñтому запроÑу на ÑлиÑние.
pulls.can_auto_merge_desc=Ðтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние может быть объединён автоматичеÑки.
pulls.cannot_auto_merge_desc=Ðтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние не может быть объединён автоматичеÑки.
@@ -1721,9 +1702,7 @@ pulls.rebase_conflict_summary=Сообщение об ошибке
pulls.unrelated_histories=СлиÑние не удалоÑÑŒ: У иÑточника и цели ÑлиÑÐ½Ð¸Ñ Ð½ÐµÑ‚ общей иÑтории. Совет: попробуйте другую Ñтратегию
pulls.merge_out_of_date=Ошибка ÑлиÑниÑ: при Ñоздании ÑлиÑÐ½Ð¸Ñ Ð±Ð°Ð·Ð° данных была обновлена. ПодÑказка: попробуйте ещё раз.
pulls.head_out_of_date=Ошибка ÑлиÑниÑ: во Ð²Ñ€ÐµÐ¼Ñ ÑлиÑÐ½Ð¸Ñ Ð³Ð¾Ð»Ð¾Ð²Ð½Ð¾Ð¹ коммит был обновлён. Попробуйте ещё раз.
-pulls.push_rejected=СлиÑние не удалоÑÑŒ: отправка была отклонена. Проверьте Git-хуки Ð´Ð»Ñ Ñтого репозиториÑ.
pulls.push_rejected_summary=ÐŸÐ¾Ð»Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° отклонениÑ
-pulls.push_rejected_no_message=СлиÑние не удалоÑÑŒ: отправка была отклонена, но Ñервер не указал причину.
Проверьте Git-хуки Ð´Ð»Ñ Ñтого репозиториÑ
pulls.open_unmerged_pull_exists=`Ð’Ñ‹ не можете Ñнова открыть, поÑкольку уже ÑущеÑтвует Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние (#%d) из того же Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ñ Ñ‚Ð¾Ð¹ же информацией о ÑлиÑнии и ожидающий ÑлиÑниÑ.`
pulls.status_checking=ВыполнÑÑŽÑ‚ÑÑ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ проверки
pulls.status_checks_success=Ð’Ñе проверки выполнены уÑпешно
@@ -1773,7 +1752,6 @@ milestones.update_ago=Обновлено %s
milestones.no_due_date=Срок не указан
milestones.open=Открыть
milestones.close=Закрыть
-milestones.completeness=%d%% выполнено
milestones.create=Создать Ñтап
milestones.title=Заголовок
milestones.desc=ОпиÑание
@@ -1980,7 +1958,6 @@ settings.pulls.default_delete_branch_after_merge=Удалить ветку за
settings.pulls.default_allow_edits_from_maintainers=По умолчанию разрешать редактирование Ñопровождающими
settings.releases_desc=Включить релизы
settings.packages_desc=Включить рееÑÑ‚Ñ€ пакетов
-settings.projects_desc=Включить проекты репозиториÑ
settings.projects_mode_all=Ð’Ñе проекты
settings.actions_desc=Включить дейÑÑ‚Ð²Ð¸Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ
settings.admin_settings=ÐаÑтройки админиÑтратора
@@ -2148,7 +2125,6 @@ settings.event_pull_request_merge=Удовлетворение запроÑов
settings.event_package=Пакеты
settings.event_package_desc=Пакет Ñоздан или удален в репозитории.
settings.branch_filter=Фильтр веток
-settings.branch_filter_desc=Белый ÑпиÑок ветвей Ð´Ð»Ñ Ñобытий Push, ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²ÐµÑ‚Ð²ÐµÐ¹ и ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÑ‚Ð²ÐµÐ¹, указанных в виде глоб-шаблона. ЕÑли пуÑтой или *
, то вÑе Ñобытий Ð´Ð»Ñ Ð²Ñех ветвей будут зарегиÑтрированы. Перейдите по ÑÑылке github.com/gobwas/glob на документацию по ÑинтакÑиÑу. Примеры: master
, {master,release*}
.
settings.authorization_header=Заголовок Authorization
settings.authorization_header_desc=Будет включён в качеÑтве заголовка авторизации Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов. Примеры: %s.
settings.active=Ðктивный
@@ -2193,14 +2169,11 @@ settings.add_key_success=Ключ Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Â«%s» добавл
settings.deploy_key_deletion=Удалить ключ развёртываниÑ
settings.deploy_key_deletion_desc=Удаление ключа Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñделает невозможным доÑтуп к репозиторию Ñ ÐµÐ³Ð¾ помощью. Ð’Ñ‹ уверены?
settings.deploy_key_deletion_success=Ключ Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½.
-settings.branches=Ветки
-settings.protected_branch=Защита веток
settings.protected_branch.save_rule=Сохранить правило
settings.protected_branch.delete_rule=Удалить правило
settings.protected_branch_can_push=Разрешить отправку?
settings.protected_branch_can_push_yes=Ð’Ñ‹ можете выполнÑÑ‚ÑŒ отправку
settings.protected_branch_can_push_no=Ð’Ñ‹ не можете выполнÑÑ‚ÑŒ отправку
-settings.branch_protection=Защита ветки %s
settings.protect_this_branch=Защитить Ñту ветку
settings.protect_this_branch_desc=Предотвращает удаление, ограничивает Push и ÑлиÑние Git в ветку.
settings.protect_disable_push=Отключить отправку
@@ -2212,30 +2185,22 @@ settings.protect_enable_merge_desc=Ð’Ñе, у кого еÑÑ‚ÑŒ доÑтуп н
settings.protect_check_status_contexts=Включить проверку ÑтатуÑа
settings.protect_status_check_patterns=Шаблоны проверки ÑоÑтоÑниÑ:
settings.protect_status_check_patterns_desc=Добавьте шаблоны, чтобы указать, какие проверки ÑоÑтоÑÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть пройдены, прежде чем ветви могут быть объединены в ветвь, ÑоответÑтвующую Ñтому правилу. Ð’ каждой Ñтроке указываетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½. Шаблоны не могут быть пуÑтыми.
-settings.protect_check_status_contexts_desc=ТребуетÑÑ Ð¿Ñ€Ð¾Ð¹Ñ‚Ð¸ проверку ÑоÑтоÑÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ ÑлиÑнием. Выберите, какие проверки ÑоÑтоÑÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть пройдены, прежде чем ветви можно будет объединить в ветвь, ÑоответÑтвующую Ñтому правилу. ЕÑли Ñтот параметр включен, коммиты Ñначала должны быть перемещены в другую ветвь, а затем объединены или перемещены непоÑредÑтвенно в ветвь, ÑоответÑтвующую Ñтому правилу, поÑле Ð¿Ñ€Ð¾Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ ÑоÑтоÑниÑ. ЕÑли контекÑÑ‚Ñ‹ не выбраны, то поÑледнÑÑ Ñ„Ð¸ÐºÑÐ°Ñ†Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть уÑпешной незавиÑимо от контекÑта.
settings.protect_check_status_contexts_list=Проверки ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð° поÑледнюю неделю Ð´Ð»Ñ Ñтого репозиториÑ
settings.protect_status_check_matched=Совпало
settings.protect_invalid_status_check_pattern=Ðеверный шаблон проверки ÑоÑтоÑниÑ: «%s».
settings.protect_no_valid_status_check_patterns=Ðет допуÑтимых шаблонов проверки ÑоÑтоÑниÑ.
settings.protect_required_approvals=Ðеобходимые одобрениÑ:
-settings.protect_required_approvals_desc=Разрешить принÑтие запроÑа на ÑлиÑние только Ñ Ð´Ð¾Ñтаточным количеÑтвом положительных отзывов.
settings.dismiss_stale_approvals=Отклонить уÑтаревшие разрешениÑ
settings.dismiss_stale_approvals_desc=Когда новые коммиты, изменÑющие Ñодержимое запроÑа на ÑлиÑние, отправлÑÑŽÑ‚ÑÑ Ð² ветку, Ñтарые Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ отклонены.
settings.require_signed_commits=Требовать подпиÑанные коммиты
settings.require_signed_commits_desc=Отклонить отправку изменений в Ñту ветку, еÑли они не подпиÑаны или не проверÑемы.
settings.protect_branch_name_pattern=Шаблон имени Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ñ… веток
-settings.protect_branch_name_pattern_desc=Шаблоны имён защищённых веток. О ÑинтакÑиÑе шаблонов читайте в документации. Примеры: main, release/**
settings.protect_patterns=Шаблоны
settings.protect_protected_file_patterns=Шаблоны защищённых файлов (разделённые точкой Ñ Ð·Ð°Ð¿Ñтой ';'):
-settings.protect_protected_file_patterns_desc=Защищенные файлы Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ напрÑмую, даже еÑли пользователь имеет право добавлÑÑ‚ÑŒ, редактировать или удалÑÑ‚ÑŒ файлы в Ñтой ветке. Можно указать неÑколько шаблонов, разделÑÑ Ð¸Ñ… точкой Ñ Ð·Ð°Ð¿Ñтой (';'). О ÑинтакÑиÑе шаблонов читайте в документации github.com/gobwas/glob. Примеры: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Шаблоны незащищённых файлов (разделённые точкой Ñ Ð·Ð°Ð¿Ñтой ';'):
-settings.protect_unprotected_file_patterns_desc=Ðезащищенные файлы, которые допуÑкаетÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑ‚ÑŒ напрÑмую, еÑли пользователь имеет право на запиÑÑŒ, неÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° ограничение отправки изменений. Можно указать неÑколько шаблонов, разделÑÑ Ð¸Ñ… точкой Ñ Ð·Ð°Ð¿Ñтой (';'). О ÑинтакÑиÑе шаблонов читайте в документации github.com/gobwas/glob. Примеры: .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=Включить защиту
-settings.delete_protected_branch=Отключить защиту
settings.update_protect_branch_success=Защита веток по правилу «%s» изменена.
settings.remove_protected_branch_success=Защита веток по правилу «%s» удалена.
settings.remove_protected_branch_failed=Ðе удалоÑÑŒ удалить правило защиты веток «%s».
-settings.protected_branch_deletion=Отключение защиты ветки
settings.protected_branch_deletion_desc=Любой пользователь Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñми на запиÑÑŒ Ñможет выполнÑÑ‚ÑŒ push в Ñту ветку. Ð’Ñ‹ уверены?
settings.block_rejected_reviews=Блокировка ÑлиÑÐ½Ð¸Ñ Ð¿Ð¾ отклоненным отзывам
settings.block_rejected_reviews_desc=СлиÑние будет невозможно, еÑли официальными рецензентами будут запрошены изменениÑ, даже еÑли имеетÑÑ Ð´Ð¾Ñтаточное количеÑтво одобрений.
@@ -2245,7 +2210,6 @@ settings.block_outdated_branch=Блокировать ÑлиÑние, еÑли
settings.block_outdated_branch_desc=СлиÑние будет невозможно, еÑли Ð³Ð¾Ð»Ð¾Ð²Ð½Ð°Ñ Ð²ÐµÑ‚Ð²ÑŒ находитÑÑ Ð¿Ð¾Ð·Ð°Ð´Ð¸ базовой ветви.
settings.default_branch_desc=Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ð²ÐµÑ‚ÐºÐ° ÑвлÑетÑÑ "базовой" Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ репозиториÑ, на которую по умолчанию направлены вÑе запроÑÑ‹ на ÑлиÑние и ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑвлÑетÑÑ Ð»Ð¸Ñ†Ð¾Ð¼ вашего репозиториÑ. Первое, что увидит поÑетитель — Ñто Ñодержимое главной ветки. Выберите её из уже ÑущеÑтвующих:
settings.merge_style_desc=Стили ÑлиÑниÑ
-settings.default_merge_style_desc=Стиль ÑлиÑÐ½Ð¸Ñ Ð¿Ð¾ умолчанию:
settings.choose_branch=Выберите ветку…
settings.no_protected_branch=Ðет защищённых веток.
settings.edit_protected_branch=Редактировать
@@ -2422,7 +2386,7 @@ branch.delete_desc=Удаление ветки необратимо. ÐеÑмо
branch.deletion_success=Ветка «%s» удалена.
branch.deletion_failed=Ðе удалоÑÑŒ удалить ветку «%s».
branch.delete_branch_has_new_commits=Ветку «%s» Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ, поÑкольку поÑле ÑлиÑÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ добавлены новые коммиты.
-branch.create_branch=Создать ветку %s
+branch.create_branch=Создать ветку %s
branch.create_from=от «%s»
branch.create_success=Ветка «%s» Ñоздана.
branch.branch_already_exists=Ветка «%s» уже ÑущеÑтвует в Ñтом репозитории.
@@ -2448,7 +2412,7 @@ branch.new_branch=Создать новую ветку
branch.new_branch_from=Создать новую ветку из «%s»
branch.renamed=Ветка %s была переименована в %s.
-tag.create_tag=Создать тег %s
+tag.create_tag=Создать тег %s
tag.create_tag_operation=Создать тег
tag.confirm_create_tag=Создать тег
tag.create_tag_from=Создать новый тег из «%s»
@@ -2610,7 +2574,6 @@ first_page=ПерваÑ
last_page=ПоÑледнÑÑ
total=Ð’Ñего: %d
-dashboard.new_version_hint=ДоÑтупна Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Gitea %s, вы иÑпользуете %s. Более подробную информацию читайте в блоге.
dashboard.statistic=СтатиÑтика
dashboard.system_status=СоÑтоÑние ÑиÑтемы
dashboard.operation_name=Ð˜Ð¼Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸
@@ -2882,13 +2845,6 @@ auths.tips=Советы
auths.tips.oauth2.general=ÐÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ OAuth2
auths.tip.oauth2_provider=ПоÑтавщик OAuth2
auths.tip.nextcloud=`ЗарегиÑтрируйте нового Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ OAuth в вашем ÑкземплÑре, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¼ÐµÐ½ÑŽ "Settings -> Security -> OAuth 2.0 client"`
-auths.tip.dropbox=Добавьте новое приложение на https://www.dropbox.com/developers/apps
-auths.tip.facebook=ЗарегиÑтрируйте новое приложение на https://developers.facebook.com/apps и добавьте модуль «Facebook Login»
-auths.tip.github=Добавьте OAuth приложение на https://github.com/settings/applications/new
-auths.tip.google_plus=Получите учётные данные клиента OAuth2 в конÑоли Google API на Ñтранице https://console.developers.google.com/
-auths.tip.twitter=Перейдите на https://dev.twitter.com/apps, Ñоздайте приложение и убедитеÑÑŒ, что включена Ð¾Ð¿Ñ†Ð¸Ñ Â«Ð Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ Ñто приложение Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Twitter»
-auths.tip.discord=Добавьте новое приложение на https://discordapp.com/developers/applications/me
-auths.tip.yandex=`Создайте новое приложение по адреÑу https://oauth.yandex.com/client/new. Ð’ разделе "API ЯндекÑ.ПаÑпорта" выберите Ñледующие разрешениÑ: "ДоÑтуп к адреÑу Ñлектронной почты", "ДоÑтуп к аватару пользователÑ" и "ДоÑтуп к имени пользователÑ, фамилии и полу"`
auths.tip.mastodon=Введите пользовательÑкий URL ÑкземплÑра Ð´Ð»Ñ ÑкземплÑра mastodon, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼ вы хотите аутентифицироватьÑÑ (или иÑпользовать его по умолчанию)
auths.edit=Обновить параметры аутентификации
auths.activated=ИÑточник аутентификации активирован
@@ -3049,7 +3005,6 @@ monitor.next=Следующий раз
monitor.previous=Предыдущий раз
monitor.execute_times=КоличеÑтво выполнений
monitor.process=Запущенные процеÑÑÑ‹
-monitor.stacktrace=ТраÑÑировки Ñтека
monitor.processes_count=%d процеÑÑов
monitor.download_diagnosis_report=Скачать диагноÑтичеÑкий отчёт
monitor.desc=ОпиÑание
@@ -3057,8 +3012,6 @@ monitor.start=Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð°
monitor.execute_time=Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ
monitor.last_execution_result=Результат
monitor.process.cancel=Отменить процеÑÑ
-monitor.process.cancel_desc=Отмена процеÑÑа может привеÑти к потере данных
-monitor.process.cancel_notices=Отменить: %s?
monitor.process.children=Потомки
monitor.queues=Очереди
@@ -3150,8 +3103,6 @@ raw_minutes=минут
[dropzone]
default_message=Перетащите файл или кликните Ñюда Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸.
-invalid_input_type=Ð’Ñ‹ не можете загружать файлы Ñтого типа.
-file_too_big=Размер файла ({{filesize}} МБ) больше чем макÑимальный размер ({{maxFilesize}} МБ).
remove_file=Удалить файл
[notification]
@@ -3219,7 +3170,6 @@ alpine.registry.key=Загрузите публичный ключ RSA рееÑ
alpine.registry.info=Выберите $branch и $repository из ÑпиÑка ниже.
alpine.install=Чтобы уÑтановить пакет, выполните Ñледующую команду:
alpine.repository=О репозитории
-alpine.repository.branches=Ветки
alpine.repository.repositories=Репозитории
alpine.repository.architectures=Ðрхитектуры
cargo.registry=ÐаÑтройте Ñтот рееÑÑ‚Ñ€ в файле конфигурации Cargo (например, ~/.cargo/config.toml
):
diff --git a/options/locale/locale_si-LK.ini b/options/locale/locale_si-LK.ini
index a6e1ae20cc..c9521d80f8 100644
--- a/options/locale/locale_si-LK.ini
+++ b/options/locale/locale_si-LK.ini
@@ -118,13 +118,11 @@ filter.private=පෞද්ගලික
[filter]
[error]
-missing_csrf=නරක ඉල්ලීම: CSRF ටà·à¶šà¶±à·Š නොමà·à¶
[startpage]
app_desc=වේදනà·à¶šà·à¶»à·“, ස්වයං-à·ƒà¶à·Šà¶šà·à¶»à¶š Git සේවà·à·€à¶šà·Š
install=ස්ථà·à¶´à¶±à¶ºà¶§ පහසුය
platform=හරස් වේදිකà·à·€
-platform_desc=Gitea ඕනෑම à¶à·à¶±à¶š ධà·à·€à¶±à¶º Go සඳහ෠සම්පà·à¶¯à¶±à¶º කළ à·„à·à¶šà·’ය: වින්ඩà·à·ƒà·Š, මà·à¶šà·à·ƒà·Š, ලිනක්ස්, ARM, ආදිය ඔබ ආදරය කරන එකක් à¶à·à¶»à¶±à·Šà¶±!
lightweight=à·ƒà·à·„à·à¶½à·Šà¶½à·”
lightweight_desc=Gitea අඩු අවම අවà·à·Šà¶ºà¶à· ඇà¶à·’ අà¶à¶» මිල අඩු Raspberry Pi මචධà·à·€à¶±à¶º කළ à·„à·à¶šà·’ය. ඔබේ යන්à¶à·Šà¶» à·à¶šà·Šà¶à·’ය සුරකින්න!
license=විවෘචමූලà·à·à·Šâ€à¶»
@@ -478,7 +476,6 @@ applications=යෙදුම්
orgs=සංවිධà·à¶± කළමනà·à¶šà¶»à¶«à¶º
repos=කà·à·‚්ඨ
delete=ගිණුම මකන්න
-twofa=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º
account_link=සම්බන්ධිචගිණුම්
organization=සංවිධà·à¶±
@@ -649,21 +646,17 @@ revoke_key=අවලංගු
revoke_oauth2_grant=ප්රවේ෠අවලංගු
revoke_oauth2_grant_description=මෙම à¶à·™à·€à¶± පà·à¶»à·Šà·à·€à·“ය යෙදුම සඳහ෠ප්රවේà·à¶º අවලංගු කිරීමෙන් මෙම යෙදුම ඔබගේ දà¶à·Šà¶ වෙචප්රවේ෠වීම වළක්වනු ඇà¶. ඔබට විà·à·Šà·€à·à·ƒà¶¯?
-twofa_desc=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º ඔබගේ ගිණුමේ ආරක්ෂà·à·€ à·€à·à¶©à·’ කරයි.
twofa_is_enrolled=ඔබගේ ගිණුම දà·à¶±à¶§ à·ƒà·à¶°à¶š දෙකක à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º à¶à·”à·… ලියà·à¶´à¶¯à·’ංචි කර ඇà¶.
twofa_not_enrolled=ඔබගේ ගිණුම දà·à¶±à¶§ à·ƒà·à¶°à¶š දෙකක à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º à¶à·”à·… ලියà·à¶´à¶¯à·’ංචි වී නොමà·à¶.
twofa_disable=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º අක්රීය කරන්න
-twofa_scratch_token_regenerate=ළමය ටà·à¶šà¶±à¶º ප්රà¶à·’ජනනය
twofa_enroll=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶± බවට ඇà¶à·”ල්
twofa_disable_note=අවà·à·Šà¶º නම් ඔබට ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º අක්රිය කළ à·„à·à¶šà·’ය.
twofa_disable_desc=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º අක්රීය කිරීමෙන් ඔබගේ ගිණුම අඩු ආරක්ෂිචවනු ඇà¶. දිගටම?
-regenerate_scratch_token_desc=ඔබ ඔබේ සීරීම් ටà·à¶šà¶±à¶º අස්ථà·à¶±à¶œà¶ කර ඇà¶à·Šà¶±à¶¸à·Š හ෠දà·à¶±à¶§à¶¸à¶à·Š ලියà·à¶´à¶¯à·’ංචි වීමට එය භà·à·€à·’à¶à· කර ඇà¶à·Šà¶±à¶¸à·Š ඔබට එය මෙහි නà·à·€à¶ සකස් කළ à·„à·à¶šà·’ය.
twofa_disabled=ද්වි-à·ƒà·à¶°à¶š à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º අක්රීය කර ඇà¶.
scan_this_image=ඔබගේ à·ƒà¶à·Šà¶ºà·à¶´à¶± යෙදුම සමඟ මෙම රූපය පරිලà·à¶šà¶±à¶º කරන්න:
or_enter_secret=නà·à¶à·„à·œà¶à·Š රහස ඇà¶à·”ල් කරන්න: %s
then_enter_passcode=යෙදුමේ දà·à¶šà·Šà·€à·™à¶± මුරකේà¶à¶º ඇà¶à·”à·…à¶à·Š කරන්න:
passcode_invalid=මුරකේà¶à¶º à·€à·à¶»à¶¯à·’ය. නà·à·€à¶ උà¶à·Šà·ƒà·à·„ කරන්න.
-twofa_enrolled=ඔබගේ ගිණුම à·ƒà·à¶°à¶š දෙකක à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º බවට පà¶à·Š කර ඇà¶. එක් වරක් පමණක් පෙන්වන පරිදි ඔබේ සීරීම් ටà·à¶šà¶±à¶º (%s) ආරක්ෂිචස්ථà·à¶±à¶ºà¶š ගබඩ෠කරන්න!
twofa_failed_get_secret=රහස්ය වීමට අසමà¶à·Š විය.
@@ -773,7 +766,6 @@ blame_prior=මෙම වෙනසට පෙර දොස් බලන්න
transfer.accept=මà·à¶»à·” කිරීම පිළිගන්න
-transfer.accept_desc=`"%s" වෙචමà·à¶»à·” කරන්න`
desc.private=පෞද්ගලික
desc.public=ප්â€à¶»à·ƒà·’ද්ධ
@@ -871,7 +863,6 @@ release=නිකුà¶à·”à·€
releases=නිකුà¶à·”
tag=ටà·à¶œ
released_this=මෙය නිකුà¶à·Š කරන ලදි
-file.title=%s දී %s
file_raw=අමු
file_history=ඉà¶à·’à·„à·à·ƒà¶º
file_view_source=මූලà·à·à·Šâ€à¶»à¶º දකින්න
@@ -1208,7 +1199,6 @@ issues.dependency.add_error_dep_not_same_repo=මෙම ගà·à¶§à·…à·” දෙ
issues.review.self.approval=ඔබ ඔබේ ම අදින්න ඉල්ලීම අනුමචකළ නොහà·à¶š.
issues.review.self.rejection=ඔබ ඔබේ ම අදින්න ඉල්ලීම මචවෙනස්කම් ඉල්ල෠සිටිය නොහà·à¶š.
issues.review.approve=මෙම වෙනස්කම් අනුමච%s
-issues.review.comment=සමà·à¶½à·à¶ නය %s
issues.review.dismissed=%sà·„à·’ සමà·à¶½à·à¶ නය %sප්රà¶à·’ක්ෂේප කරන ලද
issues.review.dismissed_label=බà·à·„à·à¶»
issues.review.left_comment=අදහසක් à·„à·à¶»à¶œà·’යà·
@@ -1229,6 +1219,7 @@ issues.review.hide_resolved=විසඳ෠සඟවන්න
issues.review.resolve_conversation=සංවà·à¶¯à¶º විසඳන්න
issues.review.un_resolve_conversation=නොවිසඳිය à·„à·à¶šà·’ සංවà·à¶¯à¶º
issues.review.resolved_by=මෙම සංවà·à¶¯à¶º විසඳ෠ඇà¶à·’ පරිදි සලකුණු කර ඇà¶
+issues.review.commented=අදහස
issues.assignee.error=අනපේක්ෂිචදà·à·‚යක් à·„à·šà¶à·”වෙන් සියලුම ඇසිග්නස් එකà¶à·” නොකළේය.
issues.reference_issue.body=à·à¶»à·“රය
issues.content_history.deleted=මක෠දà·à¶¸à·–
@@ -1338,7 +1329,6 @@ milestones.closed=%s වස෠ඇà¶
milestones.no_due_date=නියමිචදිනයක් නà·à¶
milestones.open=විවෘà¶
milestones.close=වසන්න
-milestones.completeness=%d% සම්පූර්ණ කරන ලදි
milestones.create=සන්ධිස්ථà·à¶±à¶ºà¶šà·Š à·ƒà·à¶¯à¶±à·Šà¶±
milestones.title=සිරà·à·ƒà·’ය
milestones.desc=සවිස්à¶à¶»à¶º
@@ -1501,7 +1491,6 @@ settings.pulls_desc=ගබඩà·à·€à¶šà·Š අදින්න ඉල්ලීම
settings.pulls.ignore_whitespace=ගà·à¶§à·”ම් සඳහ෠වයිට්ස්පේස් නොසලක෠හරින්න
settings.pulls.enable_autodetect_manual_merge=ස්වයංක්රීය හඳුනà·à¶œà·à¶±à·“මේ අà¶à·Šà¶´à·œà¶ ඒකà·à¶¶à¶¯à·Šà¶° කිරීම සක්රීය කරන්න (සටහන: සමහර විà·à·šà·‚ අවස්ථ෠වලදී à·€à·à¶»à¶¯à·’ විනිà·à·Šà¶ යන් සිදුවිය à·„à·à¶š)
settings.pulls.default_delete_branch_after_merge=පෙරනිමියෙන් ඒකà·à¶¶à¶¯à·Šà¶° කිරීමෙන් පසු අදින්න ඉල්ලීම à·à·à¶›à·à·€ මකන්න
-settings.projects_desc=ගබඩà·à·€à¶± ව්යà·à¶´à·˜à¶à·’ සක්රීය කරන්න
settings.admin_settings=පරිපà·à¶½à¶š à·ƒà·à¶šà·ƒà·”ම්
settings.admin_enable_health_check=ගබඩà·à·€à¶šà·Š සෞඛ්ය චෙක්පà¶à·Š සක්රීය කරන්න (git fsck)
settings.admin_enable_close_issues_via_commit_in_any_branch=පෙරනිමි නොවන à·à·à¶›à·à·€à¶šà·’න් සිදු කරන ලද කà·à¶´à·€à·“මක් හරහ෠ගà·à¶§à·…ුවක් වසන්න
@@ -1647,7 +1636,6 @@ settings.event_pull_request_review_desc=අදින්න ඉල්ලීම
settings.event_pull_request_sync=සමමුහුර්චඉල්ලීම අදින්න
settings.event_pull_request_sync_desc=සමමුහුර්චඉල්ලීම අදින්න.
settings.branch_filter=à·à·à¶›à· පෙරහන
-settings.branch_filter_desc=ග්ලà·à¶¶à·Š රටà·à·€ ලෙස නිà·à·Šà¶ à·’à¶à·€ දක්ව෠ඇà¶à·’ à¶à¶½à·Šà¶½à·”à·€, à·à·à¶›à· නිර්මà·à¶«à¶º සහ à·à·à¶›à· මකà·à¶¯à·à¶¸à·“මේ සිදුවීම් සඳහ෠à·à·à¶›à· වයිට්ලිස්ට්. හිස් à·„à· *
නම්, සියලු à·à·à¶›à· සඳහ෠සිදුවීම් à·€à·à¶»à·Šà¶à· වේ. සින්ටà·à¶šà·Šà·ƒà·Š සඳහ෠github.com/gobwas/glob ලියකියවිලි බලන්න. උදà·à·„රණ: ස්වà·à¶¸à·’යà·
, {ස්වà·à¶¸à·’යà·, මුදà·à·„à·à¶»à·“ම*}
.
settings.active=ක්රියà·à¶šà·à¶»à·“
settings.active_helper=අවුලුවà·à¶½à·– සිදුවීම් පිළිබඳ à¶à·œà¶»à¶à·”රු මෙම වෙබ්කොක් URL වෙචයවනු ලà·à¶¶à·š.
settings.add_hook_success=මෙම වෙබ් කොක්කෙන් එකà¶à·” කර ඇà¶.
@@ -1676,8 +1664,6 @@ settings.branches=à·à·à¶›à·
settings.protected_branch=à·à·à¶›à· ආරක්ෂà·à·€
settings.protected_branch_can_push=à¶à¶½à·Šà¶½à·”à·€ ඉඩ?
settings.protected_branch_can_push_yes=ඔබට à¶à¶½à·Šà¶½à·” කළ à·„à·à¶šà·’ය
-settings.protected_branch_can_push_no=ඔබට à¶à¶½à·Šà¶½à·” කළ නොහà·à¶š
-settings.branch_protection=à·à·à¶›à·à·€ සඳහ෠à·à·à¶›à· ආරක්ෂà·à·€ -%s
settings.protect_this_branch=à·à·à¶›à· ආරක්ෂà·à·€ සක්රීය කරන්න
settings.protect_this_branch_desc=මකà·à¶¯à·à¶¸à·“ම à·€à·à·…à·à¶šà·Šà·€à·“ම සහ à·à·à¶›à· වෙචà¶à¶½à·Šà¶½à·” කිරීම සහ ඒකà·à¶¶à¶¯à·Šà¶° කිරීම සීම෠කරයි.
settings.protect_disable_push=à¶à¶½à·Šà¶½à·”à·€ අක්රීය
@@ -1685,17 +1671,14 @@ settings.protect_disable_push_desc=මෙම à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·”
settings.protect_enable_push=à¶à¶½à·Šà¶½à·”à·€ සක්රීය කරන්න
settings.protect_enable_push_desc=ලිවීමේ ප්රවේà·à¶º ඇà¶à·’ ඕනෑම කෙනෙකුට මෙම à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·” කිරීමට ඉඩ දෙනු ඇච(නමුà¶à·Š බල à¶à¶½à·Šà¶½à·”à·€ නොවේ).
settings.protect_check_status_contexts=à¶à¶à·Šà·€à¶º පරීක්â€à·‚à·à·€ සබල කරන්න
-settings.protect_check_status_contexts_desc=ඒකà·à¶¶à¶¯à·Šà¶° කිරීමට පෙර සම්මචකිරීම සඳහ෠à¶à¶à·Šà·€ චෙක්පà¶à·Š අවà·à·Šà¶º වේ. මෙම රීà¶à·’යට ගà·à¶½à¶´à·™à¶± à·à·à¶›à·à·€à¶šà¶§ à·à·à¶›à· ඒකà·à¶¶à¶¯à·Šà¶° කිරීමට පෙර කුමන à¶à¶à·Šà¶à·Šà·€ චෙක්පà¶à·Š සමà¶à·Š විය යුà¶à·”ද යන්න à¶à·à¶»à¶±à·Šà¶±. සක්රීය කරන විට, සංක්රමණ පළමුව වෙනà¶à·Š à·à·à¶›à·à·€à¶šà¶§ à¶à¶½à·Šà¶½à·” කළ යුà¶à·”ය, පසුව à¶à¶à·Šà·€ පරීක්ෂà·à·€à¶±à·Š සම්මචවූ පසු මෙම රීà¶à·’යට ගà·à¶½à¶´à·™à¶± à·à·à¶›à·à·€à¶šà¶§ කෙලින්ම à¶à¶½à·Šà¶½à·” කළ යුà¶à·”ය. සන්දර්භයන් à¶à·à¶»à· නොගන්නේ නම්, සන්දර්භය නොසලක෠අවසà·à¶± කà·à¶´ කිරීම à·ƒà·à¶»à·Šà¶®à¶š විය යුà¶à·”ය.
settings.protect_check_status_contexts_list=මෙම ගබඩà·à·€ සඳහ෠පසුගිය à·ƒà¶à·’යේ හමු වූ à¶à¶à·Šà·€ පරීක්ෂà·à·€à¶±à·Š
settings.protect_required_approvals=අවà·à·Šà¶º අනුමà·à¶à·’ය:
-settings.protect_required_approvals_desc=ප්රමà·à¶«à·€à¶à·Š ධනà·à¶à·Šà¶¸à¶š සමà·à¶½à·à¶ න සමඟ අදින්න ඉල්ලීම ඒකà·à¶¶à¶¯à·Šà¶° කිරීමට පමණක් ඉඩ දෙන්න.
settings.dismiss_stale_approvals=ස්ථà·à·€à¶» අනුමà·à¶à·’ය බà·à·„à·à¶»
settings.dismiss_stale_approvals_desc=අදින්න ඉල්ලීමෙහි අන්à¶à¶»à·Šà¶œà¶à¶º වෙනස් කරන නව විවරයන් à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·” කරන විට, පà·à¶»à¶«à·’ අනුමචකිරීම් නිෂ්ප්රභ෠කරනු ලà·à¶¶à·š.
settings.require_signed_commits=අà¶à·Šà·ƒà¶±à·Š කළ යුà¶à·”
settings.require_signed_commits_desc=අà¶à·Šà·ƒà¶±à·Š නොකළ à·„à· à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º කළ නොහà·à¶šà·’ නම් මෙම à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·” කිරීම ප්රà¶à·’ක්ෂේප කරන්න.
settings.add_protected_branch=ආරක්ෂà·à·€ සක්රීය කරන්න
settings.delete_protected_branch=ආරක්ෂà·à·€ අක්â€à¶»à·“ය කරන්න
-settings.protected_branch_deletion=à·à·à¶›à· ආරක්ෂණය අක්රීය කරන්න
settings.protected_branch_deletion_desc=à·à·à¶›à· ආරක්ෂà·à·€ අක්රිය කිරීමෙන් පරිà·à·“ලකයින්ට à·à·à¶›à·à·€à¶§ à¶à¶½à·Šà¶½à·” කිරීමට ලිඛිචඅවසරයක් ඇà¶. දිගටම?
settings.block_rejected_reviews=ප්රà¶à·’ක්ෂේප කරන ලද සමà·à¶½à·à¶ න මචඒකà·à¶¶à¶¯à·Šà¶° කිරීම
settings.block_rejected_reviews_desc=නිල විචà·à¶»à¶šà¶ºà·’න් විසින් වෙනස්කම් ඉල්ල෠සිටින විට, ප්රමà·à¶«à·€à¶à·Š අනුමà·à¶à·“න් à¶à·’බුණà¶à·Š ඒකà·à¶¶à¶¯à·Šà¶° කිරීම කළ නොහà·à¶šà·’ වනු ඇà¶.
@@ -1704,7 +1687,6 @@ settings.block_on_official_review_requests_desc=නිල සමà·à¶½à·à¶ න
settings.block_outdated_branch=අදින්න ඉල්ලීම යල් පà·à¶± ගිය නම් à·€à·à¶»à¶« ඒකà·à¶¶à¶¯à·Šà¶°
settings.block_outdated_branch_desc=ප්රධà·à¶± à·à·à¶›à·à·€ මූලික à·à·à¶›à·à·€ පිටුපස ඇà¶à·’ විට ඒකà·à¶¶à¶¯à·Šà¶° කිරීම කළ නොහà·à¶šà·’ වනු ඇà¶.
settings.default_branch_desc=අදින්න ඉල්ලීම් සහ කේචවිවරණය සඳහ෠පෙරනිමි ගබඩà·à·€à·š à·à·à¶›à·à·€à¶šà·Š à¶à·à¶»à¶±à·Šà¶±:
-settings.default_merge_style_desc=අදින්න ඉල්ලීම් සඳහ෠පෙරනිමි ඒකà·à¶¶à¶¯à·Šà¶° à·à·›à¶½à·’ය:
settings.choose_branch=à·à·à¶›à·à·€à¶šà·Š à¶à·à¶»à¶±à·Šà¶±â€¦
settings.no_protected_branch=ආරක්ෂිචà·à·à¶›à· නොමà·à¶.
settings.edit_protected_branch=සංස්කරණය
@@ -1854,7 +1836,7 @@ release.add_tag=ටà·à¶œ පමණක් à·ƒà·à¶¯à¶±à·Šà¶±
branch.name=à·à·à¶›à·à·€à·š නම
branch.delete_head=මකන්න
branch.delete_html=à·à·à¶›à·à·€ මකන්න
-branch.create_branch=%s à·à·à¶›à·à·€ à·ƒà·à¶¯à¶±à·Šà¶±
+branch.create_branch=%s à·à·à¶›à·à·€ à·ƒà·à¶¯à¶±à·Šà¶±
branch.deleted_by=%sවිසින් මක෠දමන ලදි
branch.included_desc=මෙම à·à·à¶›à·à·€ පෙරනිමි à·à·à¶›à·à·€à·š කොටසකි
branch.included=ඇà¶à·”à·…à¶à·Š
@@ -1865,12 +1847,11 @@ branch.create_branch_operation=à·à·à¶›à·à·€ à·ƒà·à¶¯à¶±à·Šà¶±
branch.new_branch=නව à·à·à¶›à·à·€à¶šà·Š à·ƒà·à¶¯à¶±à·Šà¶±
branch.renamed=à·à·à¶›à·à·€ %s %sලෙස නම් කරන ලදී.
-tag.create_tag=ටà·à¶œà¶º නිර්මà·à¶«à¶º %s
+tag.create_tag=ටà·à¶œà¶º නිර්මà·à¶«à¶º %s
topic.manage_topics=මà·à¶à·˜à¶šà· කළමනà·à¶šà¶»à¶«à¶º
topic.done=සිදු
-topic.count_prompt=ඔබට 25 මà·à¶à·˜à¶šà· වලට වඩ෠à¶à·à¶»à· ගචනොහà·à¶š
error.csv.too_large=එය ඉà¶à· විà·à·à¶½ නිස෠මෙම ගොනුව විදà·à·„ුම්කරණය කළ නොහà·à¶š.
@@ -2234,13 +2215,6 @@ auths.tips=ඉඟි
auths.tips.oauth2.general=OUTU2 à·ƒà¶à·Šà¶ºà·à¶´à¶±
auths.tip.oauth2_provider=OUTU2 à·ƒà·à¶´à¶ºà·”ම්කරු
auths.tip.nextcloud=පහචසඳහන් මෙනුව භà·à·€à·’à¶à· කරමින් ඔබගේ උදà·à·„රණයක් මචනව OAUTH පà·à¶»à·’භà·à¶œà·’කයෙකු ලියà·à¶´à¶¯à·’ංචි කරන්න “සà·à¶šà·ƒà·“ම් -> ආරක්ෂà·à·€ -> OAUTH 2.0 සේවà·à¶¯à·à¶ºà¶šà¶ºà·â€
-auths.tip.dropbox=https://www.dropbox.com/developers/apps à·„à·’ නව යෙදුමක් à·ƒà·à¶¯à¶±à·Šà¶±
-auths.tip.facebook=https://developers.facebook.com/apps à·„à·’ නව යෙදුමක් ලියà·à¶´à¶¯à·’ංචි කර නිෂ්පà·à¶¯à¶±à¶º එකà¶à·” කරන්න “ෆේස්බුක් ලොගින් වන්නâ€
-auths.tip.github=https://github.com/settings/applications/new à·„à·’ නව OAUTH අයදුම්පà¶à¶šà·Š ලියà·à¶´à¶¯à·’ංචි කරන්න
-auths.tip.google_plus=ගූගල් API කොන්සà·à¶½à¶º වෙà¶à·’න් OUT2 සේවà·à¶¯à·à¶ºà¶š අක්à¶à¶´à¶à·Šà¶» ලබ෠ගන්න https://console.developers.google.com/
-auths.tip.twitter=https://dev.twitter.com/apps වෙචයන්න, යෙදුමක් à·ƒà·à¶¯à¶±à·Šà¶± සහ “මෙම යෙදුම ට්විටර් සමඟ පුරනය වීමට භà·à·€à·’à¶à· කිරීමට ඉඩ දෙන්න†විකල්පය සක්රීය කර ඇà¶à·’ බවට සහà¶à·’ක වන්න
-auths.tip.discord=https://discordapp.com/developers/applications/me à·„à·’ නව අයදුම්පà¶à¶šà·Š ලියà·à¶´à¶¯à·’ංචි කරන්න
-auths.tip.yandex=https://oauth.yandex.com/client/new à·„à·’ නව යෙදුමක් à·ƒà·à¶¯à¶±à·Šà¶±. “Yandex.Passport API†කොටසේ පහචසඳහන් අවසරයන් à¶à·à¶»à¶±à·Šà¶±: “විද්යුà¶à·Š à¶à·à¶´à·à¶½à·Š ලිපිනය වෙචප්රවේà·à¶ºâ€, “පරිà·à·“ලක අවà¶à·à¶»à·Š වෙචප්රවේà·à¶ºâ€ සහ “පරිà·à·“ලක නà·à¶¸à¶º, මුල් නම සහ à·€à·à·ƒà¶œà¶¸, ස්à¶à·Šà¶»à·“ පුරුෂ භà·à·€à¶ºâ€
auths.tip.mastodon=ඔබට à·ƒà¶à·Šà¶ºà·à¶´à¶±à¶º කිරීමට අවà·à·Šà¶º mastodon උදà·à·„රණයක් සඳහ෠අභිරුචි උදà·à·„රණයක් URL එකක් ආදà·à¶± කරන්න (හ෠පෙරනිමි එකක් භà·à·€à·’à¶à· කරන්න)
auths.edit=à·ƒà¶à·Šà¶ºà·à¶´à¶± මූලà·à·à·Šà¶»à¶º සංස්කරණය කරන්න
auths.activated=මෙම à·ƒà¶à·Šà¶ºà·à¶´à¶± මූලà·à·à·Šà¶»à¶º සක්රිය කර ඇà¶
@@ -2387,8 +2361,6 @@ monitor.desc=සවිස්à¶à¶»à¶º
monitor.start=ආරම්භක වේලà·à·€
monitor.execute_time=ක්රියà·à¶à·Šà¶¸à¶š කිරීමේ වේලà·à·€
monitor.process.cancel=ක්රියà·à·€à¶½à·’ය අවලංගු කරන්න
-monitor.process.cancel_desc=ක්රියà·à·€à¶½à·’යක් අවලංගු කිරීම දà¶à·Šà¶ අහිමි වීමට à·„à·šà¶à·” විය à·„à·à¶š
-monitor.process.cancel_notices=%s: අවලංගු කරන්නද?
monitor.queues=පà·à¶½à·’ම්
monitor.queue=පà·à¶½à·’ම: %s
diff --git a/options/locale/locale_sk-SK.ini b/options/locale/locale_sk-SK.ini
index 3b9c02c7c8..484fa320fa 100644
--- a/options/locale/locale_sk-SK.ini
+++ b/options/locale/locale_sk-SK.ini
@@ -181,22 +181,16 @@ string.desc=Z - A
[error]
occurred=Vyskytla sa chyba
-report_message=Ak si myslÃte, že ide o chybu Gitea, vyhľadajte problémy na GitHub-e alebo v prÃpade potreby otvorte nový problém.
-missing_csrf=Nesprávna žiadosÅ¥: neprÃtomný CSFR token
-invalid_csrf=Nesprávna žiadosť: nesprávny CSFR token
not_found=Nebolo možné nájsť cieľ.
network_error=Chyba siete
[startpage]
app_desc=Jednoducho prÃstupný vlastný Git
install=Jednoduchá inštalácia
-install_desc=Jednoducho spustite binárku pre vaÅ¡u platformu, poÅ¡lite ju ako Docker, alebo ju zÃskajte ako balÃÄek.
platform=Multiplatformový
-platform_desc=Gitea bežà všade kde je možné preložiť Go: Windows, macOS, Linux, ARM, a podobne. Vyberte si!
lightweight=Ľahká
lightweight_desc=Gitea má minimálne požiadavky a môže bežať na Raspberry Pi. Šetrite energiou vášho stroja!
license=Otvorený zdrojový kód
-license_desc=ZÃskajte code.gitea.io/gitea! Pridajte sa k nám a prispejte, aby bol tento projekt eÅ¡te lepÅ¡Ã. Nehanbite sa byÅ¥ prispievateľom!
[install]
install=Inštalácia
@@ -585,10 +579,8 @@ applications=Aplikácie
orgs=Spravovať organizácie
repos=Repozitáre
delete=ZmazaÅ¥ úÄet
-twofa=Dvojfaktorové overenie
account_link=Prepojené úÄty
organization=Organizácie
-webauthn=BezpeÄnostné kľúÄe
public_profile=Verejný profil
password_username_disabled=Externà použÃvatelia nemôžu meniÅ¥ svoje použÃvateľské meno. Kontaktujte, prosÃm, svojho administrátora kvôli detailom.
@@ -775,24 +767,19 @@ revoke_key=Odvolať
revoke_oauth2_grant=OdstrániÅ¥ prÃstup
revoke_oauth2_grant_description=ZruÅ¡enie prÃstupu tejto aplikáciu tretej strany zabráni tejto aplikácii v prÃstupe k vaÅ¡im údajom. Ste si istý?
-twofa_desc=Dvojstupňové overenie pridá ÄalÅ¡iu vrstvu bezpeÄnosti k vášmu úÄtu.
twofa_is_enrolled=Váš úÄet je momentálne použÃva dvojfaktorovú autentifikáciu.
twofa_not_enrolled=Váš úÄet momentálne nepoužÃva dvojfaktorovú autentifikáciu.
twofa_disable=Vypnúť dvojfaktorovú autentifikáciu
-twofa_scratch_token_regenerate=Obnoviť token
twofa_enroll=Povoliť dvojfaktorové overovanie
twofa_disable_note=V prÃpade potreby môžete zakázaÅ¥ dvojfaktorové overenie.
twofa_disable_desc=VypnutÃm dvojfaktorovej autentifikácie bude váš úÄet menej bezpeÄný. ÄŽalej?
-regenerate_scratch_token_desc=Ak ste svoj token nesprávne umiestnili alebo ste ho už použili na prihlásenie, môžete ho resetovať tu.
twofa_disabled=Dvojfaktorové overovanie bolo vypnuté.
scan_this_image=Naskenujte tento obrázok pomocou overovacej aplikácie:
or_enter_secret=Alebo zadajte tajný kód: %s
then_enter_passcode=A zadajte prÃstupový kód zobrazený v aplikácii:
passcode_invalid=PrÃstupový kód je nesprávny. Skúste to znova.
-twofa_enrolled=Váš úÄet bol zaregistrovaný do dvojfaktorovej autentifikácie. Uložte si token (%s) na bezpeÄnom mieste, pretože sa zobrazuje iba raz!
twofa_failed_get_secret=Nepodarilo sa zÃskaÅ¥ tajomstvo.
-webauthn_desc=BezpeÄnostné kľúÄe sú hardvérové ​​zariadenia obsahujúce kryptografické kľúÄe. Môžu byÅ¥ použité na dvojfaktorovú autentifikáciu. BezpeÄnostné kľúÄe musia podporovaÅ¥ Å¡tandard WebAuthn Authenticator.
webauthn_register_key=PridaÅ¥ bezpeÄnostný kľúÄ
webauthn_nickname=Prezývka
webauthn_delete_key=OdstrániÅ¥ bezpeÄnostný kľúÄ
@@ -894,9 +881,7 @@ delete_preexisting_success=Vymazané neprijaté súbory v %s
transfer.accept=Prijať prevod
-transfer.accept_desc=`Previesť do "%s"`
transfer.reject=Odmietnuť prevod
-transfer.reject_desc=`Zrušiť prevod do "%s"`
desc.private=Súkromný
desc.public=Verejný
@@ -1089,7 +1074,6 @@ issues.save=Uložiť
issues.cancel_tracking=Zahodiť
issues.add_time_cancel=Zrušiť
issues.dependency.cancel=Zrušiť
-issues.review.comment=revidoval %s
issues.review.dismissed=zamietol revÃziu od %s %s
issues.review.wait=bol požiadaný o revidovanie %s
issues.review.add_review_request=požiadal o revidovanie od %s %s
@@ -1200,7 +1184,6 @@ settings.delete_webhook=Odstrániť webhook
settings.slack_token=Token
settings.web_hook_name_gitea=Gitea
settings.packagist_api_token=API token
-settings.protect_required_approvals_desc=UmožniÅ¥ merge iba žiadostiam o natiahnutie s dostatoÄným poÄtom pozitÃvnych revÃziÃ.
settings.require_signed_commits=VyžadovaÅ¥ podpÃsané commity
settings.block_rejected_reviews=ZablokovaÅ¥ zlúÄenie pri zamietavých revÃziách
settings.block_rejected_reviews_desc=ZlúÄenie nebude možné v prÃpade že oficiálni revidenti požadujú zmeny, aj keÄ je k dispozÃcii dostatok schválenÃ.
diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini
index 11f5ed79fb..459b704506 100644
--- a/options/locale/locale_sv-SE.ini
+++ b/options/locale/locale_sv-SE.ini
@@ -113,11 +113,9 @@ filter.private=Privat
app_desc=En smidig, självhostad Git-tjänst
install=Lätt att installera
platform=Plattformsoberoende
-platform_desc=Gitea kan köra överallt där Go kan kompileras: Windows, macOS, Linux, ARM, etc. Välj den du gillar!
lightweight=Lättviktig
lightweight_desc=Gitea har låga minimum-krav och kan köras på en billig Rasperry Pi. Spara på din maskins kraft!
license=Öppen källkod
-license_desc=Hämta code.gitea.io/gitea! Gå med oss genom att bidra för att göra projektet ännu bättre. Var inte blyg för att bli en medarbetare!
[install]
install=Installation
@@ -416,7 +414,6 @@ applications=Applikationer
orgs=Hantera Organisationer
repos=Utvecklingskataloger
delete=Radera konto
-twofa=Tvåfaktorsautentisering
account_link=Länkade Konton
organization=Organisationer
@@ -560,21 +557,17 @@ revoke_key=Upphäv
revoke_oauth2_grant=Upphäv åtkomst
revoke_oauth2_grant_description=Återkallning av åtkomst för detta tredjepartsprogram kommer att hindra programmet från att komma åt dina data. Är du säker?
-twofa_desc=Tvåfaktorsautentisering förbättrar säkerheten på ditt konto.
twofa_is_enrolled=Ditt konto är för närvarande uppsäkrad med tvåfaktorsautentisering.
twofa_not_enrolled=Ditt konto är för närvarande inte uppsäkrad med tvåfaktorsautentisering.
twofa_disable=Inaktivera tvåfaktorsautentisering
-twofa_scratch_token_regenerate=Generera ny skrapkod
twofa_enroll=Aktivera tvåfaktorsautentisering
twofa_disable_note=Du kan inaktivera tvåfaktorsautentisering om det behövs.
twofa_disable_desc=Avaktivering av tvåfaktorsautentisering kommer göra ditt konto mindre säkert. Vill du fortsätta?
-regenerate_scratch_token_desc=Om du tappat bort din skrapkod, eller redan använt den för att logga in, så kan du återställa den här.
twofa_disabled=Tvåfaktorsautentisering har blivit avaktiverat.
scan_this_image=Skanna denna bild med ditt autentiseringsprogram:
or_enter_secret=Eller skriv in följande sträng: %s
then_enter_passcode=Och ange den lösenkod som visas i programmet:
passcode_invalid=Koden är ogiltig. Försök igen.
-twofa_enrolled=Tvåfaktorsautentisering har aktiverats för ditt konto. Förvara din skrapkod (%s) på en säker plats eftersom den bara visas en gång!
manage_account_links=Hantera Länkade Konton
@@ -1046,7 +1039,6 @@ issues.dependency.add_error_dep_not_same_repo=Båda ärendena måste vara i samm
issues.review.self.approval=Du kan inte godkänna din egen pull-begäran.
issues.review.self.rejection=Du kan inte begära ändringar för din egna pull-förfrågan.
issues.review.approve=godkände dessa ändringar %s
-issues.review.comment=granskad av %s
issues.review.left_comment=lämnade en kommentar
issues.review.content.empty=Du måste skriva en kommentar som anger de önskade ändringarna.
issues.review.reject=begärda ändringar %s
@@ -1063,6 +1055,7 @@ issues.review.show_resolved=Visa löst
issues.review.hide_resolved=Dölj löst
issues.review.resolve_conversation=Lös konversation
issues.review.resolved_by=markerade denna konversation som löst
+issues.review.commented=Kommentar
issues.assignee.error=Inte alla tilldelade har lagts till på grund av ett oväntat fel.
issues.content_history.options=Alternativ
@@ -1118,7 +1111,6 @@ milestones.closed=Stängt %s
milestones.no_due_date=Inget förfallodatum
milestones.open=Öppna
milestones.close=Stäng
-milestones.completeness=%d%% Slutförd
milestones.create=Skapa Milstolpe
milestones.title=Titel
milestones.desc=Beskrivning
@@ -1383,22 +1375,18 @@ settings.branches=Brancher
settings.protected_branch=Branchskydd
settings.protected_branch_can_push=Tillåt push?
settings.protected_branch_can_push_yes=Du kan pusha
-settings.protected_branch_can_push_no=Du kan inte pusha
-settings.branch_protection=Branchskydd för '%s'
settings.protect_this_branch=Aktivera branchskydd
settings.protect_disable_push=Inaktivera Push
settings.protect_disable_push_desc=Inga push-förfrågningar kommer att tillåtas till denna branch.
settings.protect_enable_push=Aktivera Push
settings.protect_enable_push_desc=Alla med skrivrättigheter kommer att kunna pusha till denna branch (men inte force-pusha).
settings.protect_check_status_contexts=Aktivera statuskontroller
-settings.protect_check_status_contexts_desc=Kräv godkända statuskontroller innan merge. Välj vilka statuskontroller som godkännas innan grenar kan slås samman till en gren som matchar denna regel. När aktiverad, måste committer först pushas till en annan gren, sedan mergas eller pushas direkt till en gren som matchar denna regel efter statuskontroll har har godkännts. Om inga context väljs måste den sista committen vara framgångsrik oavsett context.
settings.protect_check_status_contexts_list=Statuskontroller funna under senaste veckan för denna utvecklingskatalog
settings.protect_required_approvals=Godkännanden som krävs:
settings.require_signed_commits=Kräv signerade commits
settings.require_signed_commits_desc=Avvisa pushar till den här grenen om dom är osignerade eller inte verifierbara.
settings.add_protected_branch=Aktivera skydd
settings.delete_protected_branch=Inaktivera skydd
-settings.protected_branch_deletion=Inaktivera skydd för branch
settings.protected_branch_deletion_desc=Genom att inaktivera branchskyddet tillåts användare med skrivrättigheter att pusha till branchen. Vill du fortsätta?
settings.default_branch_desc=Välj en standard branch för Pull Requests och Code Commits:
settings.choose_branch=Välj en branch…
@@ -1501,14 +1489,13 @@ release.download_count=Nedladdningar: %s
branch.name=Branch namn
branch.delete_head=Radera
branch.delete_html=Radera branch
-branch.create_branch=Skapa branchen %s
+branch.create_branch=Skapa branchen %s
branch.deleted_by=Raderad av %s
topic.manage_topics=Hantera ämnen
topic.done=Klar
-topic.count_prompt=Du kan inte välja fler än 25 ämnen
@@ -1551,7 +1538,6 @@ settings.visibility.private=Privat (synlig endast för organisationens medlemmar
settings.visibility.private_shortname=Privat
settings.update_settings=Uppdatera inställningar
-settings.update_setting_success=Organisationsinställningarna har uppdaterats.
settings.update_avatar_success=Organisationens avatar har uppdateras.
settings.delete=Tag bort organisation
settings.delete_account=Tag bort denna organisation
@@ -1785,12 +1771,6 @@ auths.enable_auto_register=Aktivera Automatisk Registrering
auths.tips=Tips
auths.tips.oauth2.general=OAuth2 Autensiering
auths.tip.oauth2_provider=OAuth2 leverantör
-auths.tip.dropbox=Skapa en ny applikation på https://www.dropbox.com/developers/apps
-auths.tip.facebook=Registrera en ny appliaktion pÃ¥ https://developers.facebook.com/apps och lägg till produkten â€Facebook-inloggningâ€
-auths.tip.github=Registrera en ny OAuth applikation på https://github.com/settings/applications/new
-auths.tip.google_plus=Erhåll inloggningsuppgifter för OAuth2 från Google API-konsolen på https://console.developers.google.com/
-auths.tip.twitter=Gå till https://dev.twitter.com/app, skapa en applikation och försäkra att alternativet "Allow this application to be used to Sign in with Twitter" är aktiverat
-auths.tip.discord=Registrera en ny applikation på https://discordapp.com/developers/applications/me
auths.edit=Redigera autensieringskälla
auths.activated=Denna autentiseringskälla är aktiverad
auths.update_success=Autentiseringskällan har uppdaterats.
@@ -1978,7 +1958,6 @@ raw_minutes=minuter
[dropzone]
default_message=Släpp filer här eller klicka för att ladda upp.
-invalid_input_type=Du kan inte ladda upp filer av denna typen.
file_too_big=Filstorleken ({{filesize}} MB) överskrider maxstorleken ({{maxFilesize}} MB).
remove_file=Ta bort fil
diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini
index 868832948b..7ef6c1d35e 100644
--- a/options/locale/locale_tr-TR.ini
+++ b/options/locale/locale_tr-TR.ini
@@ -218,22 +218,16 @@ string.desc=Z - A
[error]
occurred=Bir hata oluÅŸtu
-report_message=Bunun bir Gitea hatası olduğunu düşünüyorsanız, lütfen GitHub sayfasında sorunu arayın veya gerekiyorsa yeni bir sorun oluşturun.
-missing_csrf=Hatalı İstek: CSRF anahtarı yok
-invalid_csrf=Hatalı İstek: geçersiz CSRF erişim anahtarı
not_found=Hedef bulunamadı.
network_error=Ağ hatası
[startpage]
app_desc=Zahmetsiz, kendi sunucunuzda barındırabileceğiniz Git servisi
install=Kurulumu kolay
-install_desc=Platformunuz için ikili dosyayı çalıştırın, Docker ile yükleyin veya paket olarak edinin.
platform=Farklı platformlarda çalışablir
-platform_desc=Gitea Go ile derleme yapılabilecek her yerde çalışmaktadır: Windows, macOS, Linux, ARM, vb. Hangisini seviyorsanız onu seçin!
lightweight=Hafif
lightweight_desc=Gitea'nın minimal gereksinimleri çok düşüktür ve ucuz bir Raspberry Pi üzerinde çalışabilmektedir. Makine enerjinizden tasarruf edin!
license=Açık Kaynak
-license_desc=Gidin ve code.gitea.io/gitea'yı edinin! Bu projeyi daha da iyi yapmak için katkıda bulunarak bize katılın. Katkıda bulunmaktan çekinmeyin!
[install]
install=Kurulum
@@ -456,7 +450,6 @@ authorize_title=Hesabınıza erişmesi için "%s" yetkilendirilsin mi?
authorization_failed=Yetkilendirme başarısız oldu
authorization_failed_desc=Geçersiz bir istek tespit ettiğimiz için yetkilendirme başarısız oldu. Lütfen izin vermeye çalıştığınız uygulamanın sağlayıcısı ile iletişim kurun.
sspi_auth_failed=SSPI kimlik doğrulaması başarısız oldu
-password_pwned=Seçtiğiniz parola, daha önce herkese açık veri ihlallerinde açığa çıkan bir çalınan parola listesindedir. Lütfen farklı bir parola ile tekrar deneyin ve başka yerlerde de bu parolayı değiştirmeyi düşünün.
password_pwned_err=HaveIBeenPwned'e yapılan istek tamamlanamadı
last_admin=Son yöneticiyi silemezsiniz. En azından bir yönetici olmalıdır.
signin_passkey=Bir parola anahtarı ile oturum aç
@@ -693,11 +686,9 @@ applications=Uygulamalar
orgs=Organizasyonları Yönet
repos=Depolar
delete=Hesabı Sil
-twofa=İki Aşamalı Doğrulama
account_link=Bağlı Hesaplar
organization=Organizasyonlar
uid=UID
-webauthn=Güvenlik Anahtarları
public_profile=Herkese Açık Profil
biography_placeholder=Bize kendiniz hakkında birşeyler söyleyin! (Markdown kullanabilirsiniz)
@@ -795,7 +786,6 @@ add_email_success=Yeni e-posta adresi eklendi.
email_preference_set_success=E-posta tercihi başarıyla ayarlandı.
add_openid_success=Yeni OpenID adresi eklendi.
keep_email_private=E-posta Adresini Gizle
-keep_email_private_popup=Bu, e-posta adresinizi profilde, değişiklik isteği yaptığınızda veya web arayüzünde dosya düzenlediğinizde gizleyecektir. İtilen işlemeler değişmeyecektir.
openid_desc=OpenID, kimlik doğrulama işlemini harici bir sağlayıcıya devretmenize olanak sağlar.
manage_ssh_keys=SSH Anahtarlarını Yönet
@@ -925,7 +915,6 @@ oauth2_client_secret_hint=Bu sayfadan ayrıldıktan veya yeniledikten sonra gizl
oauth2_application_edit=Düzenle
oauth2_application_create_description=OAuth2 uygulamaları, üçüncü taraf uygulamanıza bu durumda kullanıcı hesaplarına erişim sağlar.
oauth2_application_remove_description=Bir OAuth2 uygulamasının kaldırılması, bu sunucudaki yetkili kullanıcı hesaplarına erişmesini önler. Devam edilsin mi?
-oauth2_application_locked=Gitea kimi OAuth2 uygulamalarının başlangıçta ön kaydını, yapılandırmada etkinleştirilmişse yapabilir. Beklenmeyen davranışı önlemek için bunlar ne düzenlenmeli ne de kaldırılmalı. Daha fazla bilgi için OAuth2 belgesine bakın.
authorized_oauth2_applications=Yetkili OAuth2 Uygulamaları
authorized_oauth2_applications_description=Kişisel Gitea hesabınıza bu üçüncü parti uygulamalara erişim izni verdiniz. Lütfen artık ihtiyaç duyulmayan uygulamalara erişimi iptal edin.
@@ -934,26 +923,20 @@ revoke_oauth2_grant=EriÅŸimi Ä°ptal Et
revoke_oauth2_grant_description=Bu üçüncü taraf uygulamasına erişimin iptal edilmesi bu uygulamanın verilerinize erişmesini önleyecektir. Emin misiniz?
revoke_oauth2_grant_success=Erişim başarıyla kaldırıldı.
-twofa_desc=İki faktörlü kimlik doğrulama, hesabınızın güvenliğini artırır.
twofa_recovery_tip=Aygıtınızı kaybetmeniz durumunda, hesabınıza tekrar erişmek için tek kullanımlık kurtarma anahtarını kullanabileceksiniz.
twofa_is_enrolled=Hesabınız şu anda iki faktörlü kimlik doğrulaması içinde kaydedilmiş.
twofa_not_enrolled=Hesabınız şu anda iki faktörlü kimlik doğrulaması içinde kaydedilmemiş.
twofa_disable=İki Aşamalı Doğrulamayı Devre Dışı Bırak
-twofa_scratch_token_regenerate=Geçici Kodu Yeniden Üret
-twofa_scratch_token_regenerated=Geçici kodunuz şimdi %s. Güvenli bir yerde saklayın, tekrar gösterilmeyecektir.
twofa_enroll=İki Faktörlü Kimlik Doğrulamaya Kaydolun
twofa_disable_note=Gerekirse iki faktörlü kimlik doğrulamayı devre dışı bırakabilirsiniz.
twofa_disable_desc=İki faktörlü kimlik doğrulamayı devre dışı bırakmak hesabınızı daha az güvenli hale getirir. Devam edilsin mi?
-regenerate_scratch_token_desc=Geçici kodunuzu kaybettiyseniz veya oturum açmak için kullandıysanız, buradan sıfırlayabilirsiniz.
twofa_disabled=İki faktörlü kimlik doğrulama devre dışı bırakıldı.
scan_this_image=Kim doğrulama uygulamanızla bu görüntüyü tarayın:
or_enter_secret=Veya gizli ÅŸeyi girin: %s
then_enter_passcode=Ve uygulamada gösterilen şifreyi girin:
passcode_invalid=Şifre geçersiz. Tekrar deneyin.
-twofa_enrolled=Hesabınız iki faktörlü kimlik doğrulamasına kaydedildi. Kazıma belirtecini (%s) yalnızca bir kez gösterdiği gibi güvenli bir yerde saklayın!
twofa_failed_get_secret=Gizlilik elde edilemedi.
-webauthn_desc=Güvenlik anahtarları, şifreleme anahtarlarını içeren donanım aygıtlarıdır. İki aşamalı kimlik doğrulama için kullanılabilirler. Güvenlik anahtarları WebAuthn Authenticator standardını desteklemelidir.
webauthn_register_key=Güvenlik Anahtarı Ekle
webauthn_nickname=Takma Ad
webauthn_delete_key=Güvenlik Anahtarını Kaldır
@@ -1098,9 +1081,7 @@ tree_path_not_found_branch=%[1] yolu, %[2]s dalında mevcut değil
tree_path_not_found_tag=%[1] yolu, %[2]s etiketinde mevcut deÄŸil
transfer.accept=Aktarımı Kabul Et
-transfer.accept_desc=`"%s" tarafına aktar`
transfer.reject=Aktarımı Reddet
-transfer.reject_desc=`"%s" tarafına aktarımı iptal et`
transfer.no_permission_to_accept=Bu aktarımı kabul etme izniniz yok.
transfer.no_permission_to_reject=Bu aktarımı reddetme izniniz yok.
@@ -1217,7 +1198,7 @@ clear_ref='Geçerli referansı temizle'
filter_branch_and_tag=Dal veya biçim imini filtrele
find_tag=Etiketi bul
branches=Dal
-tags=Etiket
+tags=Etiketler
issues=Konular
pulls=DeÄŸiÅŸiklik Ä°stekleri
projects=Projeler
@@ -1235,7 +1216,6 @@ releases=Sürüm
tag=Etiket
released_this=bu sürümü yayınladı
tagged_this=ÅŸunu etiketledi
-file.title=%s dalındaki/etiketindeki %s
file_raw=Ham
file_history=Geçmiş
file_view_source=Kaynağı Görüntüle
@@ -1252,7 +1232,6 @@ ambiguous_runes_header=`Bu dosya muğlak Evrensel Kodlu karakter içeriyor`
ambiguous_runes_description=`Bu dosya, başka karakterlerle karıştırılabilecek evrensel kodlu karakter içeriyor. Eğer bunu kasıtlı olarak yaptıysanız bu uyarıyı yok sayabilirsiniz. Gizli karakterleri göstermek için Kaçış Karakterli düğmesine tıklayın.`
invisible_runes_line=`Bu satırda görünmez evrensel kodlu karakter var`
ambiguous_runes_line=`Bu satırda muğlak evrensel kodlu karakter var`
-ambiguous_character=`%[1]c [U+%04[1]X], %[2]c [U+%04[2]X] ile karıştırılabilir`
escape_control_characters=Kaçış Karakterli
unescape_control_characters=Kaçış Karaktersiz
@@ -1723,7 +1702,6 @@ issues.dependency.add_error_dep_not_same_repo=Her iki konu da aynı depoda olmal
issues.review.self.approval=Kendi değişiklik isteğinizi onaylayamazsınız.
issues.review.self.rejection=Kendi deÄŸiÅŸiklik isteÄŸinizde deÄŸiÅŸiklik isteyemezsiniz.
issues.review.approve=%s bu değişiklikleri onayladı
-issues.review.comment=%s incelendi
issues.review.dismissed=%s incelemesini %s reddetti
issues.review.dismissed_label=Reddedildi
issues.review.left_comment=bir yorum yaptı
@@ -1748,6 +1726,7 @@ issues.review.hide_resolved=Çözülenleri gizle
issues.review.resolve_conversation=Konuşmayı çöz
issues.review.un_resolve_conversation=Konuşmayı çözme
issues.review.resolved_by=bu konuşmayı çözümlenmiş olarak işaretledi
+issues.review.commented=Yorum Yap
issues.assignee.error=Beklenmeyen bir hata nedeniyle tüm atananlar eklenmedi.
issues.reference_issue.body=Gövde
issues.content_history.deleted=silindi
@@ -1821,7 +1800,6 @@ pulls.is_empty=Bu daldaki deÄŸiÅŸiklikler zaten hedef dalda mevcut. Bu boÅŸ bir
pulls.required_status_check_failed=Bazı gerekli denetimler başarılı olmadı.
pulls.required_status_check_missing=Gerekli bazı kontroller eksik.
pulls.required_status_check_administrator=Yönetici olarak, bu değişiklik isteğini yine de birleştirebilirsiniz.
-pulls.blocked_by_approvals=Bu değişiklik isteğinin henüz yeterli onayı yok. %d onay var, %d onay gerekiyor.
pulls.blocked_by_rejection=Bu değişiklik isteğinde resmi bir gözden geçiren tarafından istenen değişiklikler var.
pulls.blocked_by_official_review_requests=Bu deÄŸiÅŸiklik isteÄŸinde resmi inceleme istekleri var.
pulls.blocked_by_outdated_branch=Bu değişiklik isteği eskidiği için engellendi.
@@ -1863,9 +1841,7 @@ pulls.unrelated_histories=Birleştirme Başarısız: Birleştirme başlığı ve
pulls.merge_out_of_date=Birleştirme Başarısız: Birleştirme oluşturulurken, taban güncellendi. İpucu: Tekrar deneyin.
pulls.head_out_of_date=Birleştirme Başarısız: Birleştirme oluşturulurken, ana güncellendi. İpucu: Tekrar deneyin.
pulls.has_merged=Başarısız: Değişiklik isteği birleştirildi, yeniden birleştiremez veya hedef dalı değiştiremezsiniz.
-pulls.push_rejected=Birleştirme Başarısız Oldu: Gönderme reddedildi. Bu depo için Git İstemcilerini inceleyin.
pulls.push_rejected_summary=Tam Red Mesajı
-pulls.push_rejected_no_message=Birleştirme başarısız oldu: Gönderme reddedildi, ancak uzak bir mesaj yoktu.
Bu depo için Git İstemcilerini inceleyin
pulls.open_unmerged_pull_exists=`Aynı özelliklere sahip bekleyen bir değişiklik isteği (#%d) olduğundan yeniden açma işlemini gerçekleştiremezsiniz.`
pulls.status_checking=Bazı denetlemeler beklemede
pulls.status_checks_success=Tüm denetlemeler başarılı oldu
@@ -1920,7 +1896,6 @@ milestones.no_due_date=BitiÅŸ tarihi yok
milestones.open=Aç
milestones.close=Kapat
milestones.new_subheader=Kilometre taşları konuları yönetmenize ve gelişmelerini takip etmenize yardımcı olur.
-milestones.completeness=%d%% Tamamlandı
milestones.create=Kilometre Taşı Oluştur
milestones.title=Başlık
milestones.desc=Açıklama
@@ -2143,7 +2118,6 @@ settings.pulls.default_delete_branch_after_merge=Varsayılan olarak birleştirme
settings.pulls.default_allow_edits_from_maintainers=Bakımcıların düzenlemelerine izin ver
settings.releases_desc=Depo Sürümlerini Etkinleştir
settings.packages_desc=Depo Paket Kütüğünü Etkinleştir
-settings.projects_desc=Depo Projelerini EtkinleÅŸtir
settings.projects_mode_desc=Proje Modu (ne tür projeler görüntülensin)
settings.projects_mode_repo=Sadece depo projeleri
settings.projects_mode_owner=Sadece kullanıcı veya organizasyon projeleri
@@ -2319,7 +2293,6 @@ settings.event_pull_request_merge=DeÄŸiÅŸiklik Ä°steÄŸi BirleÅŸtirme
settings.event_package=Paket
settings.event_package_desc=Bir depoda paket oluÅŸturuldu veya silindi.
settings.branch_filter=Dal filtresi
-settings.branch_filter_desc=Gönderme, dal oluşturma ve dal silme olayları için glob deseni olarak belirtilen dal beyaz listesi. Boşsa veya *
ise, tüm dallar için olaylar raporlanır. Sözdizimi için github.com/gobwas/glob belgelerine bakın. Örnekler: master
, {master,release*}
.
settings.authorization_header=Yetkilendirme Başlığı
settings.authorization_header_desc=Mevcutsa isteklere yetkilendirme başlığı olarak eklenecektir. Örnekler: %s.
settings.active=Etkin
@@ -2368,10 +2341,6 @@ settings.branches=Dallar
settings.protected_branch=Dal Koruması
settings.protected_branch.save_rule=Kuralı Kaydet
settings.protected_branch.delete_rule=Kural sil
-settings.protected_branch_can_push=Ä°tmeye izin verilsin mi?
-settings.protected_branch_can_push_yes=Ä°tebilirsiniz
-settings.protected_branch_can_push_no=Ä°temezsiniz
-settings.branch_protection=%s dalı için Dal Koruması
settings.protect_this_branch=Dal Korumayı Etkinleştir
settings.protect_this_branch_desc=Silmeyi önler ve dala Git gönderimini ve birleştirmesini kısıtlar.
settings.protect_disable_push=İtmeyi Devre Dışı Bırak
@@ -2401,13 +2370,11 @@ settings.protect_merge_whitelist_teams=Birleştirme için izin listesindeki tak
settings.protect_check_status_contexts=Durum Denetimini EtkinleÅŸtir
settings.protect_status_check_patterns=Durum denetleme desenleri:
settings.protect_status_check_patterns_desc=Bu kurala uyan dala diğer dallar birleştirilmeden önce başarılı olması gereken durum denetlemelerini belirten desenleri girin. Her bir satır bir desen tanımlıyor. Desenler boş olamaz.
-settings.protect_check_status_contexts_desc=Birleştirmeden önce durum denetimlerinin geçmesini zorunlu kılın. Dalların bu kurala uyan bir dalda birleştirilebilmesi için hangi durum denetimlerinin geçmesi gerektiğini seçin. Etkinleştirildiğinde, işlemeler önce başka bir dala gönderilmeli, ardından durum denetimleri geçtikten sonra bu kuralla eşleşen bir dala birleştirilmeli veya doğrudan gönderilmelidir. Hiçbir bağlam seçilmezse, bağlamdan bağımsız olarak son işleme başarılı olmalıdır.
settings.protect_check_status_contexts_list=Bu depo için geçen haftadaki durum denetimleri
settings.protect_status_check_matched=EÅŸleÅŸen
settings.protect_invalid_status_check_pattern=Hatalı durum denetleme deseni: "%s".
settings.protect_no_valid_status_check_patterns=Geçerli durum denetleme deseni yok.
settings.protect_required_approvals=Gerekli onaylar:
-settings.protect_required_approvals_desc=Değişiklik isteğini yalnızca yeterince olumlu yorumla birleştirmeye izin ver.
settings.protect_approvals_whitelist_enabled=Onayları izin listesine giren kullanıcılar veya takımlar için kısıtla
settings.protect_approvals_whitelist_enabled_desc=Yalnızca izin listesindeki kullanıcıların veya takımların gözden geçirmeleri gerekli onaylar için dikkate alınır. Onaylı izin listesi olmadan, yazma erişimi olan herkesin gözden geçirmeleri gerekli onaylar için dikkate alınır.
settings.protect_approvals_whitelist_users=İzin listesindeki gözden geçirenler:
@@ -2419,18 +2386,12 @@ settings.ignore_stale_approvals_desc=Daha eski iÅŸlemelere (eski incelemelere) y
settings.require_signed_commits=İmzalı İşleme Gerekli
settings.require_signed_commits_desc=Reddetme, onlar imzasızsa veya doğrulanamazsa bu dala gönderir.
settings.protect_branch_name_pattern=Korunmuş Dal Adı Deseni
-settings.protect_branch_name_pattern_desc=Korunmuş dal isim desenleri. Desen sözdizimi için belgelere bakabilirsiniz. Örnekler: main, release/**
settings.protect_patterns=Desenler
settings.protect_protected_file_patterns=Korumalı dosya kalıpları (noktalı virgülle ayrılmış ';'):
-settings.protect_protected_file_patterns_desc=Kullanıcının bu dalda dosya ekleme, düzenleme veya silme hakları olsa bile doğrudan değiştirilmesine izin verilmeyen korumalı dosyalar. Birden çok desen noktalı virgül (';') kullanılarak ayrılabilir. Desen sözdizimi için github.com/gobwas/glob belgelerine bakın. Örnekler: .drone.yml
, /docs/**/*.txt
.
settings.protect_unprotected_file_patterns=Korunmasız dosya desenleri (noktalı virgülle ayrılmış ';'):
-settings.protect_unprotected_file_patterns_desc=Kullanıcının yazma erişimi, itme kısıtlamasını atlama hakkı olduğunda doğrudan değiştirmesine izin verilen korunmasız dosyalar. Birden çok desen noktalı virgül (';') kullanılarak ayrılabilir. Desen söz dizimi için github.com/gobwas/glob belgelerine bakın. Örnekler: .drone.yml
, /docs/**/*.txt
.
-settings.add_protected_branch=Korumayı etkinleştir
-settings.delete_protected_branch=Korumayı devre dışı bırak
settings.update_protect_branch_success=Dal koruma kuralı "%s" güncellendi.
settings.remove_protected_branch_success=Dal koruma kuralı "%s" kaldırıldı.
settings.remove_protected_branch_failed=Dal koruma kuralı "%s" kaldırılamadı.
-settings.protected_branch_deletion=Dal Korumasını Devre Dışı Bırak
settings.protected_branch_deletion_desc=Dal korumasını devre dışı bırakmak, kullanıcıların dalı itmek için yazma izni olmasını sağlar. Devam edilsin mi?
settings.block_rejected_reviews=Reddedilen incelemelerde birleÅŸtirmeyi engelle
settings.block_rejected_reviews_desc=Yeterli onay olsa bile resmi gözden geçirenler tarafından değişiklik istendiğinde birleşme mümkün olmayacaktır.
@@ -2440,7 +2401,6 @@ settings.block_outdated_branch=Değişiklik isteği güncel değilse birleştirm
settings.block_outdated_branch_desc=Baş dal taban dalın arkasındayken birleştirme mümkün olmayacaktır.
settings.default_branch_desc=Değişiklik istekleri ve kod işlemeleri için varsayılan bir depo dalı seçin:
settings.merge_style_desc=Biçimleri Birleştir
-settings.default_merge_style_desc=Değişiklik istekleri için varsayılan birleştirme tarzı:
settings.choose_branch=Bir dal seç…
settings.no_protected_branch=Korumalı dal yok.
settings.edit_protected_branch=Düzenle
@@ -2456,7 +2416,6 @@ settings.tags.protection.allowed.teams=İzin verilen takımlar
settings.tags.protection.allowed.noone=Hiç kimse
settings.tags.protection.create=Etiketi Koru
settings.tags.protection.none=Korumalı etiket yok.
-settings.tags.protection.pattern.description=Birden çok etiketi eşleştirmek için tek bir ad, glob deseni veya normal ifade kullanabilirsiniz. Daha fazlası için korumalı etiketler rehberini okuyun.
settings.bot_token=Bot Jetonu
settings.chat_id=Sohbet KimliÄŸi
settings.thread_id=İş Parçacığı ID
@@ -2624,7 +2583,7 @@ branch.delete_desc=Bir dalı silmek kalıcıdır. Her ne kadar silinen dal tamam
branch.deletion_success=`"%s" dalı silindi.`
branch.deletion_failed=`"%s" dalı silinemedi.`
branch.delete_branch_has_new_commits=`"%s" dalı silinemedi çünkü birleştirme sonrasında yeni işlemeler eklendi.`
-branch.create_branch=%s dalı oluştur
+branch.create_branch=%s dalı oluştur
branch.create_from=`"%s"den`
branch.create_success=`"%s" dalı oluşturuldu.`
branch.branch_already_exists=Bu depoda "%s" dalı zaten var.
@@ -2650,7 +2609,7 @@ branch.new_branch=Yeni dal oluÅŸtur
branch.new_branch_from=`"%s" dalından yeni dal oluştur`
branch.renamed=%s dalının adı %s olarak değiştirildi.
-tag.create_tag=%s etiketi oluÅŸtur
+tag.create_tag=%s etiketi oluÅŸtur
tag.create_tag_operation=Etiket oluÅŸtur
tag.confirm_create_tag=Etiket oluÅŸtur
tag.create_tag_from=`"%s" kullanarak yeni etiket oluÅŸtur`
@@ -2659,7 +2618,6 @@ tag.create_success=`"%s" etiketi oluÅŸturuldu.`
topic.manage_topics=Konuları Yönet
topic.done=Bitti
-topic.count_prompt=25'ten fazla konu seçemezsiniz
topic.format_prompt=Konular bir harf veya rakamla başlamalı, kısa çizgi ('-') ve nokta ('.') içerebilir ve en fazla 35 karakter uzunluğunda olabilir. Harfler küçük harf olmalıdır.
find_file.go_to_file=Dosyaya git
@@ -2757,7 +2715,6 @@ teams.leave.detail=%s bırakılsın mı?
teams.can_create_org_repo=Depoları oluştur
teams.can_create_org_repo_helper=Üyeler organizasyonda yeni depolar oluşturabilirler. Oluşturan yeni depoya yönetici erişimi sağlayacak.
teams.none_access=EriÅŸim Yok
-teams.none_access_helper=Üyeler bu birimi görüntüleyemez veya üzerinde başka bir işlem yapamaz.
teams.general_access=Genel EriÅŸim
teams.general_access_helper=Üyelerin izinleri aşağıdaki izin tablosuna göre kararlaştırılacaktır.
teams.read_access=Okuma
@@ -2826,7 +2783,6 @@ last_page=Son
total=Toplam: %d
settings=Yönetici Ayarları
-dashboard.new_version_hint=Gitea %s şimdi hazır, %s çalıştırıyorsunuz. Ayrıntılar için blog'a bakabilirsiniz.
dashboard.statistic=Özet
dashboard.maintenance_operations=Bakım İşlemleri
dashboard.system_status=Sistem Durumu
@@ -3018,12 +2974,10 @@ packages.size=Boyut
packages.published=Yayınlandı
defaulthooks=Varsayılan Web İstemcileri
-defaulthooks.desc=Web İstemcileri, belirli Gitea olayları tetiklendiğinde otomatik olarak HTTP POST isteklerini sunucuya yapar. Burada tanımlanan Web İstemcileri varsayılandır ve tüm yeni depolara kopyalanır. web istemcileri kılavuzunda daha fazla bilgi edinin.
defaulthooks.add_webhook=Varsayılan Web İstemcisi Ekle
defaulthooks.update_webhook=Varsayılan Web İstemcisini Güncelle
systemhooks=Sistem Web Ä°stemcileri
-systemhooks.desc=Belirli Gitea olayları tetiklendiğinde Web istemcileri otomatik olarak bir sunucuya HTTP POST istekleri yapar. Burada tanımlanan web istemcileri sistemdeki tüm depolar üzerinde çalışır, bu yüzden lütfen bunun olabilecek tüm performans sonuçlarını göz önünde bulundurun. web istemcileri kılavuzunda daha fazla bilgi edinin.
systemhooks.add_webhook=Sistem Web Ä°stemcisi Ekle
systemhooks.update_webhook=Sistem Web İstemcisi Güncelle
@@ -3118,18 +3072,8 @@ auths.tips=İpuçları
auths.tips.oauth2.general=OAuth2 Kimlik DoÄŸrulama
auths.tips.oauth2.general.tip=Yeni bir OAuth2 kimlik doğrulama kaydederken, geri çağırma/yönlendirme URL'si şu olmalıdır:
auths.tip.oauth2_provider=OAuth2 Sağlayıcısı
-auths.tip.bitbucket=https://bitbucket.org/account/user/{your-username}/oauth-consumers/new sayfasında yeni bir OAuth tüketicisi kaydedin ve 'Hesap' - 'Oku' iznini ekleyin
auths.tip.nextcloud=Aşağıdaki "Ayarlar -> Güvenlik -> OAuth 2.0 istemcisi" menüsünü kullanarak örneğinize yeni bir OAuth tüketicisi kaydedin
-auths.tip.dropbox=https://www.dropbox.com/developers/apps adresinde yeni bir uygulama oluÅŸtur
-auths.tip.facebook=https://developers.facebook.com/apps adresinde yeni bir uygulama kaydedin ve "Facebook Giriş" ürününü ekleyin
-auths.tip.github=https://github.com/settings/applications/new adresinde yeni bir OAuth uygulaması kaydedin
-auths.tip.gitlab_new=https://gitlab.com/-/profile/applications adresinde yeni bir uygulama kaydedin
-auths.tip.google_plus=OAuth2 istemci kimlik bilgilerini https://console.developers.google.com/ adresindeki Google API konsolundan edinin
auths.tip.openid_connect=Bitiş noktalarını belirlemek için OpenID Connect Discovery URL'sini (https://{server}/.well-known/openid-configuration) kullanın
-auths.tip.twitter=https://dev.twitter.com/apps adresine gidin, bir uygulama oluşturun ve “Bu uygulamanın Twitter ile oturum açmak için kullanılmasına izin ver†seçeneğinin etkin olduğundan emin olun
-auths.tip.discord=https://discordapp.com/developers/applications/me adresinde yeni bir uygulama kaydedin
-auths.tip.gitea=Yeni bir OAuth2 uygulaması kaydedin. Rehber https://docs.gitea.com/development/oauth2-provider adresinde bulunabilir
-auths.tip.yandex=`https://oauth.yandex.com/client/new adresinde yeni bir uygulama oluşturun. "Yandex.Passport API'sı" bölümünden aşağıdaki izinleri seçin: "E-posta adresine erişim", "Kullanıcı avatarına erişim" ve "Kullanıcı adına, ad ve soyadına, cinsiyete erişim"`
auths.tip.mastodon=Kimlik doğrulaması yapmak istediğiniz mastodon örneği için özel bir örnek URL girin (veya varsayılan olanı kullanın)
auths.edit=Kimlik Doğrulama Kaynağı Düzenle
auths.activated=Bu Kimlik Doğrulama Kaynağı Etkinleştirildi
@@ -3295,7 +3239,6 @@ monitor.next=Sonraki Zaman
monitor.previous=Önceki Zaman
monitor.execute_times=Çalıştırma
monitor.process=Çalışan Süreçler
-monitor.stacktrace=Yığın izleme
monitor.processes_count=%d Ä°ÅŸlem
monitor.download_diagnosis_report=Tanı raporunu indir
monitor.desc=Açıklama
@@ -3303,8 +3246,6 @@ monitor.start=Başlangıç Zamanı
monitor.execute_time=Çalıştırma Zamanı
monitor.last_execution_result=Sonuç
monitor.process.cancel=Ä°ÅŸlemi iptal et
-monitor.process.cancel_desc=Bir işlemi iptal etmek veri kaybına neden olabilir
-monitor.process.cancel_notices=Ä°ptal et: %s?
monitor.process.children=Çocuklar
monitor.queues=Kuyruklar
@@ -3406,7 +3347,6 @@ raw_minutes=dakikalar
[dropzone]
default_message=Dosyaları buraya bırakın veya yüklemek için tıklayın.
-invalid_input_type=Bu tür dosyaları yükleyemezsiniz.
file_too_big=Dosya boyutu ({{filesize}} MB) maksimum boyutu ({{maxFilesize}} MB) aşıyor.
remove_file=Dosya Kaldır
diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini
index cb3c140c5c..129ab1b7f5 100644
--- a/options/locale/locale_uk-UA.ini
+++ b/options/locale/locale_uk-UA.ini
@@ -120,18 +120,15 @@ filter.private=Приватний
[error]
occurred=СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°
-missing_csrf=Ðекоректний запит: токен CSRF не задано
network_error=Помилка мережі
[startpage]
app_desc=Зручний влаÑний ÑÐµÑ€Ð²Ñ–Ñ Ñ…Ð¾Ñтингу репозиторіїв Git
install=Легко вÑтановити
platform=ПлатформонезалежніÑÑ‚ÑŒ
-platform_desc=Gitea виконуєтьÑÑ Ð½Ð° платформі, Ð´Ð»Ñ Ñкої можливо Ñкомпілювати Go: Windows, macOS, Linux, ARM, та інших. Оберіть ту, Ñка вам до вподоби!
lightweight=ÐевибагливіÑÑ‚ÑŒ
lightweight_desc=Gitea має низькі вимоги до реÑурÑів та може працювати на недорогому Raspberry Pi. Збережіть Ñвою машину енергію!
license=Відкритий вихідний код
-license_desc=Відвідайте code.gitea.io/gitea! ПриєднайтеÑÑŒ до Ð½Ð°Ñ Ñ‚Ð° зробіть Ñвій внеÑок до проєкту, щоб зробити його ще краще. Ðе бійтеÑÑ Ð´Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ÑÑ!
[install]
install=Ð’ÑтановленнÑ
@@ -493,7 +490,6 @@ applications=Додатки
orgs=ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñми
repos=Репозиторії
delete=Видалити обліковий запиÑ
-twofa=Двофакторна авторизаціÑ
account_link=Прив'Ñзані облікові запиÑи
organization=Організації
@@ -669,21 +665,17 @@ revoke_key=Відкликати
revoke_oauth2_grant=СкаÑувати доÑтуп
revoke_oauth2_grant_description=СкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ñтупу Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— програми третьої Ñторони не дозволить їй отримувати доÑтуп до ваших даних. Ви впевнені?
-twofa_desc=Двофакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¿Ñ–Ð´Ð²Ð¸Ñ‰ÑƒÑ” безпеку вашого облікового запиÑу.
twofa_is_enrolled=Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° даний Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовує двофакторну автентифікацію.
twofa_not_enrolled=Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð½Ð°Ñ€Ð°Ð·Ñ– не викориÑтовує двофакторну автентифікаціїю.
twofa_disable=Вимкнути двофакторну автентифікацію
-twofa_scratch_token_regenerate=ПереÑтворити токен одноразового паролÑ
twofa_enroll=Увімкнути двофакторну автентифікацію
twofa_disable_note=При необхідноÑÑ‚Ñ– можна відключити двофакторну автентифікацію.
twofa_disable_desc=Ð’Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ð´Ð²Ð¾Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ñ— автентифікації зробить ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð¼ÐµÐ½Ñˆ безпечним. Продовжити?
-regenerate_scratch_token_desc=Якщо ви втратили Ñвій токен одноразового Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð°Ð±Ð¾ вже викориÑтовували його Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ, ви можете Ñкинути його тут.
twofa_disabled=Двофакторна Ð°Ð²Ñ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð°.
scan_this_image=ПроÑкануйте це Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð°ÑˆÐ¸Ð¼ додатком Ð´Ð»Ñ Ð´Ð²ÑƒÑ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð¾Ñ— автентифікації:
or_enter_secret=Ðбо введіть Ñекрет: %s
then_enter_passcode=І введіть пароль, Ñкий відображаєтьÑÑ Ð² додатку:
passcode_invalid=Ðекоректний пароль. Спробуй ще раз.
-twofa_enrolled=Ð”Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ облікового запиÑу було включена двофакторна автентифікаціÑ. Зберігайте Ñвій scratch-токен (%s) у безпечному міÑці, оÑкільки він показуєтьÑÑ Ð»Ð¸ÑˆÐµ один раз!
twofa_failed_get_secret=Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñекрет.
@@ -793,9 +785,7 @@ blame_prior=ПереглÑнути анотацію, що передує цій
transfer.accept=Дозволити транÑфер
-transfer.accept_desc=`ПереміÑтити до "%s"`
transfer.reject=Відхилити транÑфер
-transfer.reject_desc=`СкаÑувати Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð¾ "%s"`
desc.private=Приватний
desc.public=Публічний
@@ -907,7 +897,6 @@ release=Реліз
releases=Релізи
tag=Тег
released_this=випущені релізи
-file.title=%s в %s
file_raw=Ðеформатований
file_history=ІÑторіÑ
file_view_source=ПереглÑнути вихідний код
@@ -1255,7 +1244,6 @@ issues.dependency.add_error_dep_not_same_repo=Обидві задачі пови
issues.review.self.approval=Ви не можете Ñхвалити влаÑний пулл-реквеÑÑ‚.
issues.review.self.rejection=Ви не можете надіÑлати запит на зміну на влаÑний пулл-реквеÑÑ‚.
issues.review.approve=зміни затверджено %s
-issues.review.comment=рецензовано %s
issues.review.dismissed=відхилено відгук %s %s
issues.review.dismissed_label=Відхилено
issues.review.left_comment=додав коментар
@@ -1276,6 +1264,7 @@ issues.review.hide_resolved=Приховати вирішене
issues.review.resolve_conversation=Завершити обговореннÑ
issues.review.un_resolve_conversation=Поновити обговореннÑ
issues.review.resolved_by=позначив Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ð¼
+issues.review.commented=Коментар
issues.assignee.error=Додано не вÑÑ–Ñ… виконавців через непередбачену помилку.
issues.reference_issue.body=Тіло
issues.content_history.deleted=видалено
@@ -1385,7 +1374,6 @@ milestones.closed=Закрито %s
milestones.no_due_date=Ðемає дати завершеннÑ
milestones.open=Відкрити
milestones.close=Закрити
-milestones.completeness=%d%% завершено
milestones.create=Створити етап
milestones.title=Заголовок
milestones.desc=ОпиÑ
@@ -1549,7 +1537,6 @@ settings.pulls_desc=Увімкнути запити на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð² реп
settings.pulls.ignore_whitespace=Ігнорувати пробіл у конфліктах
settings.pulls.enable_autodetect_manual_merge=Увімкнути Ð°Ð²Ñ‚Ð¾Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€ÑƒÑ‡Ð½Ð¾Ð³Ð¾ Ð·Ð»Ð¸Ñ‚Ñ‚Ñ (Примітка: у деÑких оÑобливий випадках можуть виникнуть помилки)
settings.pulls.default_delete_branch_after_merge=ВидалÑти гілку запиту злиттÑ, коли його прийнÑто
-settings.projects_desc=Увімкнути проєкти у репозиторії
settings.admin_settings=ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратора
settings.admin_enable_health_check=Включити перевірки працездатноÑÑ‚Ñ– репозиторію (git fsck)
settings.admin_enable_close_issues_via_commit_in_any_branch=Закрити задачу за допомогою коміта, зробленого не в головній гілці
@@ -1695,7 +1682,6 @@ settings.event_pull_request_review_desc=Коментар запиту до зл
settings.event_pull_request_sync=Запит на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ ÑинхронізуєтьÑÑ
settings.event_pull_request_sync_desc=Запит до Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ñинхронізовано.
settings.branch_filter=Фільтр гілок
-settings.branch_filter_desc=Білий ÑпиÑок повідомлень Ð´Ð»Ñ push, ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð³Ñ–Ð»Ð¾Ðº та Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð³Ñ–Ð»Ð¾Ðº, визначаєтьÑÑ Ñк glob шаблон. Якщо він пуÑтий або міÑтить *
, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²Ñ–ÑÑ–Ñ… гілок ввімкнені. ДівітьÑÑ github.com/gobwas/glob документацію на ÑинтакÑиÑ. Ðаприклад: master
, {master,release*}
.
settings.active=Ðктивний
settings.active_helper=Інформацію про викликані події буде надіÑлано за цією веб-хук URL-адреÑою.
settings.add_hook_success=Веб-хук було додано.
@@ -1724,8 +1710,6 @@ settings.branches=Гілки
settings.protected_branch=ЗахиÑÑ‚ гілки
settings.protected_branch_can_push=Дозволити push?
settings.protected_branch_can_push_yes=Ви можете виконувати push
-settings.protected_branch_can_push_no=Ви не можете виконувати push
-settings.branch_protection=ЗахиÑÑ‚ гілки %s
settings.protect_this_branch=ЗахиÑтити цю гілку
settings.protect_this_branch_desc=Запобігає видаленню гілки та обмежує Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð² ній push та злиттÑ.
settings.protect_disable_push=Заборонити Push
@@ -1733,17 +1717,14 @@ settings.protect_disable_push_desc=Ð”Ð»Ñ Ñ†Ñ–Ñ”Ñ— гілки буде забо
settings.protect_enable_push=Дозволити Push
settings.protect_enable_push_desc=Будь-хто із правом запиÑу зможе виконувати push Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— гілки (за виключеннÑм force push).
settings.protect_check_status_contexts=Увімкнути перевірку Ñтану
-settings.protect_check_status_contexts_desc=Вимагати уÑпішного Ð¿Ñ€Ð¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¾Ðº Ñтану перед злиттÑм. Оберіть перевірки Ñтану, Ñкі Ñлід провеÑти Ð´Ð»Ñ Ð³Ñ–Ð»Ð¾Ðº, перед Ñ—Ñ… об'єднаннÑм з гілкою, що відповідає цьому правилу. Коли цей пункт увімкнено, коміти Ñпершу надÑилаютьÑÑ Ð´Ð¾ іншої гілки, а потім зливаютьÑÑ Ð°Ð±Ð¾ надÑилаютьÑÑ Ð±ÐµÐ·Ð¿Ð¾Ñередньо до гілки, Ñка відповідає цьому правилу піÑÐ»Ñ ÑƒÑпішного Ð¿Ñ€Ð¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¾Ðº Ñтану. Якщо не вибрано контекÑÑ‚, оÑтанній коміт має уÑпішно проходити перевірки, незалежно від контекÑту.
settings.protect_check_status_contexts_list=Перевірки ÑтатуÑу знайдено Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð°Ñ€Ñ–ÑŽ за минулий тиждень
settings.protect_required_approvals=Ðеобхідно ÑхваленнÑ:
-settings.protect_required_approvals_desc=Дозволити об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð»Ð¸ÑˆÐµ із доÑтатньою кількіÑÑ‚ÑŽ позитивних рецензій.
settings.dismiss_stale_approvals=Відхилити заÑтарілі погодженнÑ
settings.dismiss_stale_approvals_desc=Коли нові коміти що змінюють вміÑÑ‚ пулл-запиту відправлÑÑŽÑ‚ÑŒÑÑ Ð² гілку, Ñтарі Ð¿Ð¾Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ´ÑƒÑ‚ÑŒ відхилені.
settings.require_signed_commits=Потрібно підпиÑані коміти
settings.require_signed_commits_desc=ВідхилÑти push до цієї гілки, Ñкщо вони не підпиÑані або Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ перевірити.
settings.add_protected_branch=Увімкнути захиÑÑ‚
settings.delete_protected_branch=Вимкнути захиÑÑ‚
-settings.protected_branch_deletion=Відключити захиÑÑ‚ гілки
settings.protected_branch_deletion_desc=Будь-Ñкий кориÑтувач з дозволами на Ð·Ð°Ð¿Ð¸Ñ Ð·Ð¼Ð¾Ð¶Ðµ виконувати push в цю гілку. Ви впевнені?
settings.block_rejected_reviews=Блокувати Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ€Ð¸ відкидаючих рецензіÑÑ…
settings.block_rejected_reviews_desc=Ð—Ð»Ð¸Ñ‚Ñ‚Ñ Ð±ÑƒÐ´Ðµ недоÑтупним, Ñкщо Ñ” запит змін від офіційних рецензентів, навіть за наÑвноÑÑ‚Ñ– доÑтатньої кількоÑÑ‚Ñ– Ñхвалень.
@@ -1752,7 +1733,6 @@ settings.block_on_official_review_requests_desc=ÐžÐ±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶
settings.block_outdated_branch=Блокувати злиттÑ, Ñкщо запит на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð·Ð°Ñтарів
settings.block_outdated_branch_desc=Ð—Ð»Ð¸Ñ‚Ñ‚Ñ Ð±ÑƒÐ´Ðµ неможливим, коли головна гілка позаду оÑновної.
settings.default_branch_desc=Головна гілка Ñ” 'базовою' Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ репозиторіÑ, на Ñку за замовчуваннÑм ÑпрÑмовані вÑÑ– запити на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ñ– Ñка Ñ” обличчÑм вашого репозиторіÑ. Перше, що побачить відвідувач - це зміÑÑ‚ головної гілки. Виберіть Ñ—Ñ— з уже Ñ–Ñнуючих:
-settings.default_merge_style_desc=Стиль Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð·Ð° замовчуваннÑм:
settings.choose_branch=Оберіть гілку…
settings.no_protected_branch=Ðемає захищених гілок.
settings.edit_protected_branch=Редагувати
@@ -1904,7 +1884,7 @@ release.add_tag=Створити тільки мітку
branch.name=Ім'Ñ Ð³Ñ–Ð»ÐºÐ¸
branch.delete_head=Видалити
branch.delete_html=Видалити гілку
-branch.create_branch=Створити гілку %s
+branch.create_branch=Створити гілку %s
branch.deleted_by=Видалено %s
branch.included_desc=Ð¦Ñ Ð³Ñ–Ð»ÐºÐ° Ñ” чаÑтиною типової гілки
branch.included=Включено
@@ -1915,12 +1895,11 @@ branch.create_branch_operation=Створити гілку
branch.new_branch=Створити нову гілку
branch.renamed=Гілку %s перейменовано на %s.
-tag.create_tag=Створити тег %s
+tag.create_tag=Створити тег %s
topic.manage_topics=Керувати тематичними мітками
topic.done=Готово
-topic.count_prompt=Ви не можете вибрати більше 25 тем
error.csv.too_large=Ðе вдаєтьÑÑ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð·Ð¸Ñ‚Ð¸ цей файл, тому що він завеликий.
@@ -2284,13 +2263,6 @@ auths.tips=Поради
auths.tips.oauth2.general=OAuth2 автентифікаціÑ
auths.tip.oauth2_provider=ПоÑтачальник OAuth2
auths.tip.nextcloud=`ЗареєÑтруйте нового Ñпоживача OAuth у вашому екземплÑрі за допомогою наÑтупного меню "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ -> Безпека -> клієнт OAuth 2.0"`
-auths.tip.dropbox=Додайте новий додаток на https://www.dropbox.com/developers/apps
-auths.tip.facebook=`Створіть новий додаток на https://developers.facebook.com/apps і додайте модуль "Facebook Login"`
-auths.tip.github=Додайте OAuth додаток на https://github.com/settings/applications/new
-auths.tip.google_plus=Отримайте облікові дані клієнта OAuth2 в конÑолі Google API на Ñторінці https://console.developers.google.com/
-auths.tip.twitter=Перейдіть на https://dev.twitter.com/apps, Ñтворіть програму Ñ– переконайтеÑÑ, що включена Ð¾Ð¿Ñ†Ñ–Ñ Â«Ð”Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ‚Ð¸ цю програму Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ в ÑиÑтему за допомогою Twitter»
-auths.tip.discord=ЗареєÑтруйте новий додаток на https://discordapp.com/developers/applications/me
-auths.tip.yandex=`Створіть нову програму в https://oauth.yandex.com/client/new. Виберіть наÑтупні дозволи з "Yandex. assport API": "ДоÑтуп до адреÑи електронної пошти", "ДоÑтуп до аватара" Ñ– "ДоÑтуп до імені кориÑтувача, імені та прізвища, Ñтаті"`
auths.tip.mastodon=Введіть URL Ñпеціального екземплÑра Ð´Ð»Ñ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñра mastodon, Ñкий ви хочете автентифікувати за допомогою (або викориÑтовувати за замовчуваннÑм)
auths.edit=Редагувати джерело автентифікації
auths.activated=Ð¦Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð°ÐºÑ‚Ð¸Ð²Ð¾Ð²Ð°Ð½Ð°
@@ -2438,8 +2410,6 @@ monitor.desc=ОпиÑ
monitor.start=Ð§Ð°Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ
monitor.execute_time=Ð§Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ
monitor.process.cancel=Зупинити процеÑ
-monitor.process.cancel_desc=Зупинка процеÑу може призвеÑти до втрати даних
-monitor.process.cancel_notices=Зупинити: %s?
monitor.process.children=Дочірні процеÑи
monitor.queues=Черги
@@ -2524,7 +2494,6 @@ raw_minutes=хвилини
[dropzone]
default_message=ПеретÑгніть файли або натиÑніть тут, щоб завантажити.
-invalid_input_type=Ви не можете завантажувати файли цього типу.
file_too_big=Розмір файлу ({{filesize}} MB), що більше ніж макÑимальний розмір: ({{maxFilesize}} MB).
remove_file=Видалити файл
diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini
index 3a6dadf9f8..2827a8cd35 100644
--- a/options/locale/locale_zh-CN.ini
+++ b/options/locale/locale_zh-CN.ini
@@ -206,7 +206,7 @@ buttons.list.unordered.tooltip=æ·»åŠ å¾…åŠžæ¸…å•
buttons.list.ordered.tooltip=æ·»åŠ ç¼–å·åˆ—表
buttons.list.task.tooltip=æ·»åŠ ä»»åŠ¡åˆ—è¡¨
buttons.mention.tooltip=æåŠç”¨æˆ·æˆ–团队
-buttons.ref.tooltip=引用一个问题或拉å–请求
+buttons.ref.tooltip=引用一个问题或åˆå¹¶è¯·æ±‚
buttons.switch_to_legacy.tooltip=使用旧版编辑器
buttons.enable_monospace_font=å¯ç”¨ç‰å®½å—体
buttons.disable_monospace_font=ç¦ç”¨ç‰å®½å—体
@@ -217,22 +217,16 @@ string.desc=Z - A
[error]
occurred=å‘生了一个错误
-report_message=如果您确定这是一个 Gitea bug,请在 GitHub 上æœç´¢é—®é¢˜ï¼Œæˆ–在必è¦æ—¶åˆ›å»ºä¸€ä¸ªæ–°å·¥å•ã€‚
-missing_csrf=错误的请求:没有 CSRF 令牌
-invalid_csrf=é”™è¯¯çš„è¯·æ±‚ï¼šæ— æ•ˆçš„ CSRF 令牌
not_found=找ä¸åˆ°ç›®æ ‡ã€‚
network_error=网络错误
[startpage]
app_desc=一款æžæ˜“æ建的自助 Git æœåŠ¡
install=易安装
-install_desc=通过 二进制 æ¥è¿è¡Œï¼›æˆ–者通过 docker æ¥è¿è¡Œï¼›æˆ–者通过 安装包 æ¥è¿è¡Œ
platform=跨平å°
-platform_desc=任何 Go è¯è¨€ 支æŒçš„å¹³å°éƒ½å¯ä»¥è¿è¡Œ Gitea,包括 Windowsã€Macã€Linux ä»¥åŠ ARM。挑一个您喜欢的就行ï¼
lightweight=è½»é‡çº§
lightweight_desc=ä¸€ä¸ªå»‰ä»·çš„æ ‘èŽ“æ´¾çš„é…置足以满足 Gitea 的最低系统硬件è¦æ±‚。最大程度上节çœæ‚¨çš„æœåŠ¡å™¨èµ„æºï¼
license=å¼€æºåŒ–
-license_desc=所有的代ç 都开æºåœ¨ GitHub ä¸Šï¼Œèµ¶å¿«åŠ å…¥æˆ‘ä»¬æ¥å…±åŒå‘展这个伟大的项目ï¼è¿˜ç‰ä»€ä¹ˆï¼Ÿæˆä¸ºè´¡çŒ®è€…å§ï¼
[install]
install=安装页é¢
@@ -451,7 +445,6 @@ authorize_title=æŽˆæƒ %s 访问您的å¸æˆ·ï¼Ÿ
authorization_failed=授æƒå¤±è´¥
authorization_failed_desc=å› ä¸ºæ£€æµ‹åˆ°æ— æ•ˆè¯·æ±‚ï¼ŒæŽˆæƒå¤±è´¥ã€‚请å°è¯•è”系您授æƒåº”用的管ç†å‘˜ã€‚
sspi_auth_failed=SSPI 认è¯å¤±è´¥
-password_pwned=æ¤å¯†ç 出现在 被盗密ç 列表上并且曾ç»è¢«å…¬å¼€ã€‚ 请使用å¦ä¸€ä¸ªå¯†ç å†è¯•ä¸€æ¬¡ã€‚
password_pwned_err=æ— æ³•å®Œæˆå¯¹ HaveIBeenPwned 的请求
last_admin=您ä¸èƒ½åˆ 除最åŽä¸€ä¸ªç®¡ç†å‘˜ã€‚必须至少ä¿ç•™ä¸€ä¸ªç®¡ç†å‘˜ã€‚
@@ -685,11 +678,9 @@ applications=应用
orgs=管ç†ç»„织
repos=仓库列表
delete=åˆ é™¤å¸æˆ·
-twofa=两æ¥éªŒè¯
account_link=已绑定å¸æˆ·
organization=组织
uid=UID
-webauthn=安全密钥
public_profile=公开信æ¯
biography_placeholder=å‘Šè¯‰æˆ‘ä»¬ä¸€ç‚¹æ‚¨è‡ªå·±ï¼ (您å¯ä»¥ä½¿ç”¨Markdown)
@@ -787,7 +778,6 @@ add_email_success=新的电å邮件地å€å·²æ·»åŠ 。
email_preference_set_success=电å邮件首选项已æˆåŠŸè®¾ç½®ã€‚
add_openid_success=æ–°çš„ OpenID 地å€å·²æ·»åŠ 。
keep_email_private=éšè—电å邮件地å€
-keep_email_private_popup=这将会éšè—您的电å邮件地å€ï¼Œä¸ä»…在您的个人资料ä¸ï¼Œè¿˜åœ¨æ‚¨ä½¿ç”¨Webç•Œé¢åˆ›å»ºæ‹‰å–请求或编辑文件时。已推é€çš„æ交将ä¸ä¼šè¢«ä¿®æ”¹ã€‚
openid_desc=OpenID è®©ä½ å¯ä»¥å°†è®¤è¯è½¬å‘到外部æœåŠ¡ã€‚
manage_ssh_keys=ç®¡ç† SSH 密钥
@@ -916,7 +906,6 @@ oauth2_client_secret_hint=您离开或刷新æ¤é¡µé¢åŽå°†ä¸ä¼šå†æ˜¾ç¤ºæ¤å¯†
oauth2_application_edit=编辑
oauth2_application_create_description=OAuth2 应用å…许您的第三方应用程åºè®¿é—®æ¤å®žä¾‹çš„用户å¸æˆ·ã€‚
oauth2_application_remove_description=移除一个OAuth2应用将会阻æ¢å®ƒè®¿é—®æ¤å®žä¾‹ä¸Šçš„已授æƒç”¨æˆ·è´¦æˆ·ã€‚是å¦ç»§ç»ï¼Ÿ
-oauth2_application_locked=如果é…ç½®å¯ç”¨ï¼ŒGitea预注册一些OAuth2应用程åºã€‚ 为了防æ¢æ„外的行为, 这些应用既ä¸èƒ½ç¼–辑也ä¸èƒ½åˆ 除。请å‚阅OAuth2文档以获å–更多信æ¯ã€‚
authorized_oauth2_applications=已授æƒçš„ OAuth2 应用
authorized_oauth2_applications_description=您已授予这些第三方应用程åºè®¿é—®æ‚¨çš„个人 Gitea 账户的æƒé™ã€‚请撤销那些您ä¸å†éœ€è¦çš„应用程åºçš„访问æƒé™ã€‚
@@ -925,26 +914,20 @@ revoke_oauth2_grant=撤回æƒé™
revoke_oauth2_grant_description=确定撤销æ¤ä¸‰æ–¹åº”用程åºçš„授æƒï¼Œå¹¶é˜»æ¢æ¤åº”用程åºè®¿é—®æ‚¨çš„æ•°æ®ï¼Ÿ
revoke_oauth2_grant_success=æˆåŠŸæ’¤é”€äº†è®¿é—®æƒé™ã€‚
-twofa_desc=两æ¥éªŒè¯å¯ä»¥åŠ å¼ºä½ çš„è´¦å·å®‰å…¨æ€§ã€‚
twofa_recovery_tip=如果您丢失了您的设备,您将能够使用一次性æ¢å¤å¯†é’¥æ¥é‡æ–°èŽ·å¾—对您账户的访问。
twofa_is_enrolled=ä½ çš„è´¦å·å·²å¯ç”¨äº†ä¸¤æ¥éªŒè¯ã€‚
twofa_not_enrolled=ä½ çš„è´¦å·æœªå¼€å¯ä¸¤æ¥éªŒè¯ã€‚
twofa_disable=ç¦ç”¨ä¸¤æ¥è®¤è¯
-twofa_scratch_token_regenerate=é‡æ–°ç”Ÿæˆåˆå§‹ä»¤ç‰Œ
-twofa_scratch_token_regenerated=您的临时令牌现在是 %s。将其å˜æ”¾åœ¨å®‰å…¨çš„地方,它将ä¸ä¼šå†æ¬¡æ˜¾ç¤ºã€‚
twofa_enroll=å¯ç”¨ä¸¤æ¥éªŒè¯
twofa_disable_note=如果需è¦, å¯ä»¥ç¦ç”¨åŒå› ç´ èº«ä»½éªŒè¯ã€‚
twofa_disable_desc=关掉两æ¥éªŒè¯ä¼šä½¿å¾—您的账å·ä¸å®‰å…¨ï¼Œç»§ç»æ‰§è¡Œï¼Ÿ
-regenerate_scratch_token_desc=如果您丢失了您的验è¯å£ä»¤æˆ–å·²ç»ä½¿ç”¨å®ƒç™»å½•, 您å¯ä»¥åœ¨è¿™é‡Œé‡ç½®å®ƒã€‚
twofa_disabled=两æ¥éªŒè¯å·²è¢«ç¦ç”¨ã€‚
scan_this_image=使用您的授æƒåº”用扫æè¿™å¼ å›¾ç‰‡ï¼š
or_enter_secret=或者输入密钥:%s
then_enter_passcode=并输入应用程åºä¸æ˜¾ç¤ºçš„密ç :
passcode_invalid=密ç ä¸æ£ç¡®ã€‚å†è¯•ä¸€æ¬¡ã€‚
-twofa_enrolled=ä½ çš„è´¦å·å·²ç»å¯ç”¨äº†ä¸¤æ¥éªŒè¯ã€‚请ä¿å˜åˆå§‹ä»¤ç‰Œï¼ˆ%s)到一个安全的地方,æ¤ä»¤ç‰Œä»…当å‰æ˜¾ç¤ºä¸€æ¬¡ã€‚
twofa_failed_get_secret=èŽ·å– secret 失败。
-webauthn_desc=安全密钥是包å«åŠ 密密钥的硬件设备。它们å¯ä»¥ç”¨äºŽåŒå› ç´ èº«ä»½éªŒè¯ã€‚å®‰å…¨å¯†é’¥å¿…é¡»æ”¯æŒ WebAuthn 身份验è¯å™¨ æ ‡å‡†ã€‚
webauthn_register_key=æ·»åŠ å®‰å…¨å¯†é’¥
webauthn_nickname=昵称
webauthn_delete_key=移除安全密钥
@@ -1089,9 +1072,7 @@ tree_path_not_found_branch=路径 %[1]s ä¸å˜åœ¨äºŽåˆ†æ”¯ %[2]s ä¸ã€‚
tree_path_not_found_tag=路径 %[1]s ä¸å˜åœ¨äºŽæ ‡ç¾ %[2]s ä¸
transfer.accept=接å—转移
-transfer.accept_desc=`转移到 "%s"`
transfer.reject=æ‹’ç»è½¬ç§»
-transfer.reject_desc=`å–消转移到 "%s"`
transfer.no_permission_to_accept=您没有æƒé™æŽ¥å—æ¤è½¬è®©ã€‚
transfer.no_permission_to_reject=您没有æƒé™æ‹’ç»æ¤è½¬è®©ã€‚
@@ -1226,7 +1207,6 @@ releases=版本å‘布
tag=Gitæ ‡ç¾
released_this=å‘布
tagged_this=å·²æ ‡è®°
-file.title=%s ä½äºŽ %s
file_raw=原始文件
file_history=文件历å²
file_view_source=æºç 模å¼
@@ -1242,7 +1222,6 @@ ambiguous_runes_header=`æ¤æ–‡ä»¶å«æœ‰æ¨¡æ£±ä¸¤å¯çš„ Unicode å—符`
ambiguous_runes_description=`æ¤æ–‡ä»¶å«æœ‰å¯èƒ½ä¼šä¸Žå…¶ä»–å—符混淆的 Unicode å—符。 如果您是想特æ„è¿™æ ·çš„ï¼Œå¯ä»¥å®‰å…¨åœ°å¿½ç•¥è¯¥è¦å‘Šã€‚ 使用 Escape 按钮显示他们。`
invisible_runes_line=`æ¤è¡Œå«æœ‰ä¸å¯è§çš„ unicode å—符`
ambiguous_runes_line=`æ¤è¡Œæœ‰æ¨¡æ£±ä¸¤å¯çš„ unicode å—符`
-ambiguous_character=`%[1]c [U+%04[1]X] 容易和 %[2]c [U+%04[2]X] 混淆`
escape_control_characters=Escape
unescape_control_characters=Unescape
@@ -1711,7 +1690,6 @@ issues.dependency.add_error_dep_not_same_repo=这两个工å•å¿…须在åŒä¸€ä»“
issues.review.self.approval=您ä¸èƒ½æ‰¹å‡†æ‚¨è‡ªå·±çš„åˆå¹¶è¯·æ±‚。
issues.review.self.rejection=您ä¸èƒ½è¯·æ±‚对您自己的åˆå¹¶è¯·æ±‚进行更改。
issues.review.approve=于 %s 批准æ¤åˆå¹¶è¯·æ±‚
-issues.review.comment=评审于 %s
issues.review.dismissed=于 %[2]s å–消了 %[1]s 的评审
issues.review.dismissed_label=å·²å–消
issues.review.left_comment=留下了一æ¡è¯„论
@@ -1736,6 +1714,7 @@ issues.review.hide_resolved=éšè—已解决的
issues.review.resolve_conversation=已解决问题
issues.review.un_resolve_conversation=未解决问题
issues.review.resolved_by=æ ‡è®°é—®é¢˜ä¸ºå·²è§£å†³
+issues.review.commented=评论
issues.assignee.error=å› ä¸ºæœªçŸ¥åŽŸå› ï¼Œå¹¶éžæ‰€æœ‰çš„指派都æˆåŠŸã€‚
issues.reference_issue.body=内容
issues.content_history.deleted=åˆ é™¤äºŽ
@@ -1752,8 +1731,9 @@ compare.compare_head=比较
pulls.desc=å¯ç”¨åˆå¹¶è¯·æ±‚和代ç 评审。
pulls.new=创建åˆå¹¶è¯·æ±‚
pulls.new.blocked_user=æ— æ³•åˆ›å»ºåˆå¹¶è¯·æ±‚ï¼Œå› ä¸ºæ‚¨å·²è¢«ä»“åº“æ‰€æœ‰è€…å±è”½ã€‚
+pulls.new.must_collaborator=您必须是仓库的å作者æ‰èƒ½åˆ›å»ºåˆå¹¶è¯·æ±‚。
pulls.edit.already_changed=æ— æ³•ä¿å˜å¯¹åˆå¹¶è¯·æ±‚的更改。其内容似乎已被其他用户更改。 请刷新页é¢å¹¶é‡æ–°ç¼–辑以é¿å…覆盖他们的更改
-pulls.view=查看拉å–请求
+pulls.view=查看åˆå¹¶è¯·æ±‚
pulls.compare_changes=创建åˆå¹¶è¯·æ±‚
pulls.allow_edits_from_maintainers=å…许维护者编辑
pulls.allow_edits_from_maintainers_desc=对基础分支有写入æƒé™çš„用户也å¯ä»¥æŽ¨é€åˆ°æ¤åˆ†æ”¯
@@ -1809,6 +1789,7 @@ pulls.required_status_check_failed=一些必è¦çš„检查没有æˆåŠŸ
pulls.required_status_check_missing=缺少一些必è¦çš„检查。
pulls.required_status_check_administrator=作为管ç†å‘˜ï¼Œæ‚¨ä»å¯åˆå¹¶æ¤åˆå¹¶è¯·æ±‚
pulls.blocked_by_approvals=æ¤åˆå¹¶è¯·æ±‚还没有足够的批准。已获批准数 %d 个,需获批准数 %d 个。
+pulls.blocked_by_approvals_whitelisted=æ¤åˆå¹¶è¯·æ±‚还没有足够的批准。%[2]d ä¸çš„ %[1]d 个已由å…许åå•ä¸çš„用户或团队批准。
pulls.blocked_by_rejection=æ¤åˆå¹¶è¯·æ±‚æœ‰å®˜æ–¹å®¡æ ¸å‘˜è¯·æ±‚çš„æ›´æ”¹ã€‚
pulls.blocked_by_official_review_requests=æ¤åˆå¹¶è¯·æ±‚需è¦å®˜æ–¹è¯„审。
pulls.blocked_by_outdated_branch=æ¤åˆå¹¶è¯·æ±‚å› è¿‡æœŸè€Œè¢«é˜»æ¢ã€‚
@@ -1830,8 +1811,8 @@ pulls.wrong_commit_id=æ交 id å¿…é¡»åœ¨ç›®æ ‡åˆ†æ”¯ 上
pulls.no_merge_desc=由于未å¯ç”¨åˆå¹¶é€‰é¡¹ï¼Œæ¤åˆå¹¶è¯·æ±‚æ— æ³•è¢«åˆå¹¶ã€‚
pulls.no_merge_helper=在仓库设置ä¸å¯ç”¨åˆå¹¶é€‰é¡¹æˆ–者手工åˆå¹¶è¯·æ±‚。
pulls.no_merge_wip=这个åˆå¹¶è¯·æ±‚æ— æ³•åˆå¹¶ï¼Œå› ä¸ºè¢«æ ‡è®°ä¸ºå°šæœªå®Œæˆçš„工作。
-pulls.no_merge_not_ready=æ¤æ‹‰å–请求尚未准备好åˆå¹¶ï¼Œè¯·æ£€æŸ¥å®¡æ ¸çŠ¶æ€å’ŒçŠ¶æ€æ£€æŸ¥ã€‚
-pulls.no_merge_access=æ‚¨æ— æƒåˆå¹¶æ¤æ‹‰å–请求。
+pulls.no_merge_not_ready=æ¤åˆå¹¶è¯·æ±‚尚未准备好åˆå¹¶ï¼Œè¯·æ£€æŸ¥å®¡æ ¸çŠ¶æ€å’ŒçŠ¶æ€æ£€æŸ¥ã€‚
+pulls.no_merge_access=æ‚¨æ— æƒåˆå¹¶æ¤åˆå¹¶è¯·æ±‚。
pulls.merge_pull_request=创建åˆå¹¶æ交
pulls.rebase_merge_pull_request=å˜åŸºåŽå¿«è¿›
pulls.rebase_merge_commit_pull_request=å˜åŸºåŽåˆ›å»ºåˆå¹¶æ交
@@ -1850,9 +1831,7 @@ pulls.unrelated_histories=åˆå¹¶å¤±è´¥ï¼šä¸¤ä¸ªåˆ†æ”¯æ²¡æœ‰å…±åŒåŽ†å²ã€‚æ示
pulls.merge_out_of_date=åˆå¹¶å¤±è´¥ï¼šåœ¨ç”Ÿæˆåˆå¹¶æ—¶ï¼Œä¸»åˆ†æ”¯å·²æ›´æ–°ã€‚æ示:å†è¯•ä¸€æ¬¡ã€‚
pulls.head_out_of_date=åˆå¹¶å¤±è´¥ï¼šåœ¨ç”Ÿæˆåˆå¹¶æ—¶ï¼Œhead 已更新。æ示:å†è¯•ä¸€æ¬¡ã€‚
pulls.has_merged=失败:åˆå¹¶è¯·æ±‚å·²ç»è¢«åˆå¹¶ï¼Œæ‚¨ä¸èƒ½å†æ¬¡åˆå¹¶æˆ–æ›´æ”¹ç›®æ ‡åˆ†æ”¯ã€‚
-pulls.push_rejected=åˆå¹¶å¤±è´¥ï¼šæŽ¨é€è¢«æ‹’ç»ã€‚审查æ¤ä»“库的 Git é’©å。
pulls.push_rejected_summary=详细拒ç»ä¿¡æ¯
-pulls.push_rejected_no_message=åˆå¹¶å¤±è´¥ï¼šæ¤æŽ¨é€è¢«æ‹’ç»ä½†æœªæ供其他信æ¯ã€‚
请检查æ¤ä»“库的 Git Hook。
pulls.open_unmerged_pull_exists=`您ä¸èƒ½æ‰§è¡Œé‡æ–°æ‰“å¼€æ“作, å› ä¸ºå·²ç»å˜åœ¨ç›¸åŒçš„åˆå¹¶è¯·æ±‚ (#%d)。`
pulls.status_checking=一些检测ä»åœ¨ç‰å¾…è¿è¡Œ
pulls.status_checks_success=所有检测å‡æˆåŠŸ
@@ -1876,6 +1855,7 @@ pulls.cmd_instruction_checkout_title=检出
pulls.cmd_instruction_checkout_desc=ä»Žä½ çš„ä»“åº“ä¸æ£€å‡ºä¸€ä¸ªæ–°çš„分支并测试å˜æ›´ã€‚
pulls.cmd_instruction_merge_title=åˆå¹¶
pulls.cmd_instruction_merge_desc=åˆå¹¶å˜æ›´å¹¶æ›´æ–°åˆ° Gitea 上
+pulls.cmd_instruction_merge_warning=è¦å‘Šï¼šæ¤æ“作ä¸èƒ½åˆå¹¶è¯¥åˆå¹¶è¯·æ±‚ï¼Œå› ä¸ºâ€œè‡ªåŠ¨æ£€æµ‹æ‰‹åŠ¨åˆå¹¶â€æœªå¯ç”¨
pulls.clear_merge_message=清除åˆå¹¶ä¿¡æ¯
pulls.clear_merge_message_hint=清除åˆå¹¶æ¶ˆæ¯åªä¼šåˆ 除æ交消æ¯å†…容,并ä¿ç•™ç”Ÿæˆçš„ git é™„åŠ å†…å®¹ï¼Œå¦‚â€œCo-Authored-By …â€ã€‚
@@ -1888,11 +1868,11 @@ pulls.auto_merge_cancel_schedule=å–消自动åˆå¹¶
pulls.auto_merge_not_scheduled=æ¤åˆå¹¶è¯·æ±‚没有计划自动åˆå¹¶ã€‚
pulls.auto_merge_canceled_schedule=æ¤åˆå¹¶è¯·æ±‚的自动åˆå¹¶å·²å–消。
-pulls.auto_merge_newly_scheduled_comment=`已于 %[1]s 设置æ¤æ‹‰å–请求在所有检查æˆåŠŸåŽè‡ªåŠ¨åˆå¹¶`
+pulls.auto_merge_newly_scheduled_comment=`已于 %[1]s 设置æ¤åˆå¹¶è¯·æ±‚在所有检查æˆåŠŸåŽè‡ªåŠ¨åˆå¹¶`
pulls.auto_merge_canceled_schedule_comment=`已于 %[1]s å–消了自动åˆå¹¶è®¾ç½® `
-pulls.delete.title=åˆ é™¤æ¤æ‹‰å–请求?
-pulls.delete.text=ä½ çœŸçš„è¦åˆ 除这个拉å–请求å—? (è¿™å°†æ°¸ä¹…åˆ é™¤æ‰€æœ‰å†…å®¹ã€‚å¦‚æžœä½ æ‰“ç®—å°†å†…å®¹å˜æ¡£ï¼Œè¯·è€ƒè™‘å…³é—它)
+pulls.delete.title=åˆ é™¤æ¤åˆå¹¶è¯·æ±‚?
+pulls.delete.text=ä½ çœŸçš„è¦åˆ 除这个åˆå¹¶è¯·æ±‚å—? (è¿™å°†æ°¸ä¹…åˆ é™¤æ‰€æœ‰å†…å®¹ã€‚å¦‚æžœä½ æ‰“ç®—å°†å†…å®¹å˜æ¡£ï¼Œè¯·è€ƒè™‘å…³é—它)
pulls.recently_pushed_new_branches=您已ç»äºŽ%[2]s推é€äº†åˆ†æ”¯ %[1]s
@@ -1907,7 +1887,6 @@ milestones.no_due_date=æš‚æ— æˆªæ¢æ—¥æœŸ
milestones.open=å¼€å¯ä¸
milestones.close=å…³é—
milestones.new_subheader=里程碑å¯ä»¥å¸®åŠ©æ‚¨ç»„织工å•å¹¶è·Ÿè¸ªå…¶è¿›åº¦ã€‚
-milestones.completeness=%d%% 完æˆ
milestones.create=创建里程碑
milestones.title=æ ‡é¢˜
milestones.desc=æè¿°
@@ -1978,7 +1957,6 @@ wiki.original_git_entry_tooltip=查看原始的 Git 文件而ä¸æ˜¯ä½¿ç”¨å‹å¥½
activity=动æ€
activity.navbar.pulse=活动
activity.navbar.code_frequency=代ç 频率
-activity.navbar.contributors=贡献者
activity.navbar.recent_commits=最近的æ交
activity.period.filter_label=周期:
activity.period.daily=1 天
@@ -2125,12 +2103,11 @@ settings.allow_only_contributors_to_track_time=ä»…å…许æˆå‘˜è·Ÿè¸ªæ—¶é—´
settings.pulls_desc=å¯ç”¨åˆå¹¶è¯·æ±‚
settings.pulls.ignore_whitespace=忽略空白冲çª
settings.pulls.enable_autodetect_manual_merge=å¯ç”¨è‡ªåŠ¨æ£€æµ‹æ‰‹åŠ¨åˆå¹¶ (注æ„:在æŸäº›ç‰¹æ®Šæƒ…况下å¯èƒ½å‘生错误判æ–)
-settings.pulls.allow_rebase_update=å…许通过å˜åŸºæ›´æ–°æ‹‰å–请求分支
+settings.pulls.allow_rebase_update=å…许通过å˜åŸºæ›´æ–°åˆå¹¶è¯·æ±‚分支
settings.pulls.default_delete_branch_after_merge=默认åˆå¹¶åŽåˆ 除åˆå¹¶è¯·æ±‚分支
settings.pulls.default_allow_edits_from_maintainers=默认开å¯å…许维护者编辑
settings.releases_desc=å¯ç”¨å‘布
settings.packages_desc=å¯ç”¨ä»“库软件包注册ä¸å¿ƒ
-settings.projects_desc=å¯ç”¨ä»“库项目
settings.projects_mode_desc=é¡¹ç›®æ¨¡å¼ (è¦æ˜¾ç¤ºçš„项目类型)
settings.projects_mode_repo=仅仓库项目
settings.projects_mode_owner=ä»…é™ç”¨æˆ·æˆ–组织项目
@@ -2305,7 +2282,6 @@ settings.event_pull_request_merge=åˆå¹¶è¯·æ±‚åˆå¹¶
settings.event_package=软件包
settings.event_package_desc=软件包已在仓库ä¸è¢«åˆ›å»ºæˆ–åˆ é™¤ã€‚
settings.branch_filter=分支过滤
-settings.branch_filter_desc=推é€ã€åˆ›å»ºï¼Œåˆ 除分支事件的分支白åå•ï¼Œä½¿ç”¨ glob 模å¼åŒ¹é…指定。若为空或 *
,则将报告所有分支的事件。è¯æ³•æ–‡æ¡£è§ github.com/gobwas/glob。示例:master
,{master,release*}
。
settings.authorization_header=授æƒæ ‡å¤´
settings.authorization_header_desc=当å˜åœ¨æ—¶å°†è¢«ä½œä¸ºæŽˆæƒæ ‡å¤´åŒ…å«åœ¨å†…。例如: %s。
settings.active=激活
@@ -2351,13 +2327,9 @@ settings.deploy_key_deletion=åˆ é™¤éƒ¨ç½²å¯†é’¥
settings.deploy_key_deletion_desc=åˆ é™¤éƒ¨ç½²å¯†é’¥å°†å–消æ¤å¯†é’¥å¯¹æ¤ä»“库的访问æƒé™ã€‚继ç»ï¼Ÿ
settings.deploy_key_deletion_success=éƒ¨ç½²å¯†é’¥å·²åˆ é™¤ã€‚
settings.branches=分支
-settings.protected_branch=分支ä¿æŠ¤
settings.protected_branch.save_rule=ä¿å˜è§„则
settings.protected_branch.delete_rule=åˆ é™¤è§„åˆ™
-settings.protected_branch_can_push=å…许推å—?
settings.protected_branch_can_push_yes=ä½ å¯ä»¥æŽ¨
-settings.protected_branch_can_push_no=ä½ ä¸èƒ½æŽ¨
-settings.branch_protection=分支 '%s' 的分支ä¿æŠ¤
settings.protect_this_branch=å¯ç”¨åˆ†æ”¯ä¿æŠ¤
settings.protect_this_branch_desc=阻æ¢åˆ 除并é™åˆ¶Git推é€å’Œåˆå¹¶åˆ°åˆ†æ”¯ã€‚
settings.protect_disable_push=ç¦ç”¨æŽ¨é€
@@ -2369,13 +2341,11 @@ settings.protect_enable_merge_desc=任何具有写入æƒé™çš„人都å¯ä»¥å°†åˆ
settings.protect_check_status_contexts=å¯ç”¨çŠ¶æ€æ£€æŸ¥
settings.protect_status_check_patterns=状æ€æ£€æŸ¥æ¨¡å¼ï¼š
settings.protect_status_check_patterns_desc=输入模å¼ï¼ŒæŒ‡å®šå“ªäº›çŠ¶æ€æ£€æŸ¥å¿…须通过,æ‰èƒ½å°†åˆ†æ”¯åˆå¹¶åˆ°ç¬¦åˆæ¤è§„则的分支ä¸åŽ»ã€‚æ¯ä¸€è¡ŒæŒ‡å®šä¸€ä¸ªæ¨¡å¼ï¼Œæ¨¡å¼ä¸èƒ½ä¸ºç©ºã€‚
-settings.protect_check_status_contexts_desc=è¦æ±‚状æ€æ£€æŸ¥é€šè¿‡æ‰èƒ½åˆå¹¶ï¼Œé€‰æ‹©å¿…须先通过哪些状æ€æ£€æŸ¥æ‰èƒ½åˆå¹¶ã€‚如果å¯ç”¨ï¼ŒæŽ¨é€çš„åˆå¹¶è¯·æ±‚必须先通过状æ€æ£€æŸ¥æ‰èƒ½å¤Ÿåˆå¹¶åˆ°å¯¹åº”的分支。如果没有选择具体的状æ€æ£€æŸ¥ä¸Šä¸‹æ–‡ï¼Œåˆ™æ‰€æœ‰çš„状æ€æ£€æŸ¥éƒ½é€šè¿‡æ‰èƒ½åˆå¹¶ã€‚
settings.protect_check_status_contexts_list=æ¤ä»“库上周进行过的状æ€æ£€æŸ¥
settings.protect_status_check_matched=匹é…
settings.protect_invalid_status_check_pattern=æ— æ•ˆçš„çŠ¶æ€æ£€æŸ¥è§„则:“%sâ€ã€‚
settings.protect_no_valid_status_check_patterns=没有有效的状æ€æ£€æŸ¥è§„则。
settings.protect_required_approvals=所需的批准:
-settings.protect_required_approvals_desc=åªå…许åˆå¹¶æœ‰è¶³å¤Ÿå®¡æ ¸äººæ•°çš„拉å–请求。
settings.dismiss_stale_approvals=å–消过时的批准
settings.dismiss_stale_approvals_desc=当新的æ交更改åˆå¹¶è¯·æ±‚内容被推é€åˆ°åˆ†æ”¯æ—¶ï¼Œæ—§çš„批准将被撤销。
settings.ignore_stale_approvals=忽略过期批准
@@ -2383,28 +2353,21 @@ settings.ignore_stale_approvals_desc=对旧æäº¤ï¼ˆè¿‡æœŸå®¡æ ¸ï¼‰çš„æ‰¹å‡†å°†
settings.require_signed_commits=需è¦ç¾åæ交
settings.require_signed_commits_desc=æ‹’ç»æŽ¨é€æœªç¾åæˆ–æ— æ³•éªŒè¯çš„æ交到分支
settings.protect_branch_name_pattern=å—ä¿æŠ¤çš„分支å称模å¼
-settings.protect_branch_name_pattern_desc=分支ä¿æŠ¤çš„å称匹é…规则。è¯æ³•è¯·å‚阅 文档 。如:main, release/**
settings.protect_patterns=规则
settings.protect_protected_file_patterns=å—ä¿æŠ¤çš„文件模å¼(ä½¿ç”¨åˆ†å· ';' 分隔):
-settings.protect_protected_file_patterns_desc=å³ä½¿ç”¨æˆ·æœ‰æƒæ·»åŠ ã€ç¼–è¾‘æˆ–åˆ é™¤æ¤åˆ†æ”¯ä¸çš„文件,也ä¸å…许直接更改å—ä¿æŠ¤çš„文件。 å¯ä»¥ä½¿ç”¨åˆ†å· (';') 分隔多个模å¼ã€‚ è§github.com/gobwas/glob文档了解模å¼è¯æ³•ã€‚例如: .drone.yml
, /docs/**/*.txt
settings.protect_unprotected_file_patterns=ä¸å—ä¿æŠ¤çš„文件模å¼(ä½¿ç”¨åˆ†å· ';' 分隔):
-settings.protect_unprotected_file_patterns_desc=如果用户有写æƒé™ï¼Œåˆ™å…许直接更改的ä¸å—ä¿æŠ¤çš„文件,以绕过推é€é™åˆ¶ã€‚å¯ä»¥ä½¿ç”¨åˆ†å·åˆ†éš”å¤šä¸ªæ¨¡å¼ (';')。 è§ github.com/gobwas/glob 文档了解模å¼è¯æ³•ã€‚例如: .drone.yml
, /docs/**/*.txt
-settings.add_protected_branch=å¯ç”¨ä¿æŠ¤
-settings.delete_protected_branch=ç¦ç”¨ä¿æŠ¤
settings.update_protect_branch_success=分支ä¿æŠ¤è§„则 %s æ›´æ–°æˆåŠŸã€‚
settings.remove_protected_branch_success=移除分支ä¿æŠ¤è§„则"%s"æˆåŠŸã€‚
settings.remove_protected_branch_failed=移除分支ä¿æŠ¤è§„则"%s"失败。
-settings.protected_branch_deletion=ç¦ç”¨åˆ†æ”¯ä¿æŠ¤
settings.protected_branch_deletion_desc=ç¦ç”¨åˆ†æ”¯ä¿æŠ¤å…许具有写入æƒé™çš„用户推é€æ交到æ¤åˆ†æ”¯ã€‚继ç»ï¼Ÿ
settings.block_rejected_reviews=æ‹’ç»å®¡æ ¸é˜»æ¢äº†æ¤åˆå¹¶
settings.block_rejected_reviews_desc=如果官方审查人员è¦æ±‚作出改动,å³ä½¿æœ‰è¶³å¤Ÿçš„批准,åˆå¹¶ä¹Ÿä¸å…许。
settings.block_on_official_review_requests=æœ‰å®˜æ–¹å®¡æ ¸é˜»æ¢äº†ä»£ç åˆå¹¶
settings.block_on_official_review_requests_desc=处于评审状æ€æ—¶ï¼Œå³ä½¿æœ‰è¶³å¤Ÿçš„批准,也ä¸èƒ½åˆå¹¶ã€‚
-settings.block_outdated_branch=如果拉å–请求已ç»è¿‡æ—¶ï¼Œé˜»æ¢åˆå¹¶
+settings.block_outdated_branch=如果åˆå¹¶è¯·æ±‚å·²ç»è¿‡æ—¶ï¼Œé˜»æ¢åˆå¹¶
settings.block_outdated_branch_desc=当头部分支è½åŽåŸºç¡€åˆ†æ”¯æ—¶ï¼Œä¸èƒ½åˆå¹¶ã€‚
settings.default_branch_desc=请选择一个默认的分支用于åˆå¹¶è¯·æ±‚å’Œæ交:
settings.merge_style_desc=åˆå¹¶æ–¹å¼
-settings.default_merge_style_desc=åˆå¹¶è¯·æ±‚的默认åˆå¹¶æ ·å¼ï¼š
settings.choose_branch=选择一个分支...
settings.no_protected_branch=没有å—ä¿æŠ¤çš„分支
settings.edit_protected_branch=编辑
@@ -2420,7 +2383,6 @@ settings.tags.protection.allowed.teams=å…许的团队
settings.tags.protection.allowed.noone=æ—
settings.tags.protection.create=ä¿æŠ¤Gitæ ‡ç¾
settings.tags.protection.none=没有å—ä¿æŠ¤çš„Gitæ ‡ç¾
-settings.tags.protection.pattern.description=ä½ å¯ä»¥ä½¿ç”¨å•ä¸ªå称或 glob 模å¼åŒ¹é…或æ£åˆ™è¡¨è¾¾å¼æ¥åŒ¹é…å¤šä¸ªæ ‡ç¾ã€‚了解详情请访问 å—ä¿æŠ¤Gitæ ‡ç¾æŒ‡å—。
settings.bot_token=Bot 令牌
settings.chat_id=èŠå¤© ID
settings.thread_id=线程 ID
@@ -2588,7 +2550,7 @@ branch.delete_desc=åˆ é™¤åˆ†æ”¯æ˜¯æ°¸ä¹…çš„ã€‚è™½ç„¶å·²åˆ é™¤çš„åˆ†æ”¯åœ¨å®žé™…
branch.deletion_success=分支 %s å·²è¢«åˆ é™¤ã€‚
branch.deletion_failed=åˆ é™¤åˆ†æ”¯ %s 失败。
branch.delete_branch_has_new_commits=å› ä¸ºåˆå¹¶ä¹‹åŽæœ‰æ–°çš„æ交,分支 %s æ— æ³•è¢«åˆ é™¤ã€‚
-branch.create_branch=创建分支 %s
+branch.create_branch=创建分支 %s
branch.create_from=从 %s
branch.create_success=分支 '%s' 已创建。
branch.branch_already_exists=æ¤ä»“库已å˜åœ¨å为 %s 的分支。
@@ -2614,7 +2576,7 @@ branch.new_branch=创建新分支
branch.new_branch_from=基于"%s"创建新分支
branch.renamed=分支 %s 被é‡å‘½å为 %s。
-tag.create_tag=åˆ›å»ºæ ‡ç¾ %s
+tag.create_tag=åˆ›å»ºæ ‡ç¾ %s
tag.create_tag_operation=åˆ›å»ºæ ‡ç¾
tag.confirm_create_tag=åˆ›å»ºæ ‡ç¾
tag.create_tag_from=基于"%s"åˆ›å»ºæ–°æ ‡ç¾
@@ -2623,7 +2585,6 @@ tag.create_success=æ ‡ç¾"%s"å·²å˜åœ¨
topic.manage_topics=管ç†ä¸»é¢˜
topic.done=ä¿å˜
-topic.count_prompt=您最多选择25个主题
topic.format_prompt=主题必须以å—æ¯æˆ–æ•°å—开头,å¯ä»¥åŒ…å«è¿žå—符 ('-') å’Œå¥ç‚¹ ('.'),长度ä¸å¾—超过35个å—符。å—符必须为å°å†™ã€‚
find_file.go_to_file=转到文件
@@ -2696,7 +2657,6 @@ settings.delete_prompt=åˆ é™¤æ“作会永久清除该组织的信æ¯ï¼Œå¹¶ä¸” 所有仓库。
settings.labels_desc=æ·»åŠ èƒ½å¤Ÿè¢«è¯¥ç»„ç»‡ä¸‹çš„ 所有仓库 çš„å·¥å•ä½¿ç”¨çš„æ ‡ç¾ã€‚
@@ -2721,7 +2681,6 @@ teams.leave.detail=离开 %s?
teams.can_create_org_repo=创建仓库
teams.can_create_org_repo_helper=æˆå‘˜å¯ä»¥åœ¨ç»„织ä¸åˆ›å»ºä»“库。创建者将自动获得创建的仓库的管ç†å‘˜æƒé™ã€‚
teams.none_access=æ— è®¿é—®æƒé™
-teams.none_access_helper=æˆå‘˜æ— 法查看æ¤å•å…ƒæˆ–对其执行任何其他æ“作。
teams.general_access=常规访问
teams.general_access_helper=æˆå‘˜æƒé™å°†ç”±ä»¥ä¸‹æƒé™è¡¨å†³å®šã€‚
teams.read_access=å¯è¯»
@@ -2790,7 +2749,6 @@ last_page=末页
total=总计:%d
settings=管ç†è®¾ç½®
-dashboard.new_version_hint=Gitea %s 现已å¯ç”¨ï¼Œæ‚¨æ£åœ¨è¿è¡Œ %s。查看 åšå®¢ 了解详情。
dashboard.statistic=摘è¦
dashboard.maintenance_operations=è¿ç»´
dashboard.system_status=系统状æ€
@@ -2971,12 +2929,10 @@ packages.size=大å°
packages.published=å·²å‘布
defaulthooks=默认Webé’©å
-defaulthooks.desc=当æŸäº› Gitea 事件触å‘时,Web é’©å自动å‘æœåŠ¡å™¨å‘出 HTTP POST 请求。这里定义的 Web é’©å是默认é…置,将被å¤åˆ¶åˆ°æ‰€æœ‰æ–°çš„仓库ä¸ã€‚详情请访问 Web é’©å指å—。
defaulthooks.add_webhook=æ·»åŠ é»˜è®¤Web é’©å
defaulthooks.update_webhook=更新默认 Web 钩å
systemhooks=系统 Web é’©å
-systemhooks.desc=当æŸäº› Gitea 事件触å‘时,Web é’©å自动å‘æœåŠ¡å™¨å‘出HTTP POST请求。这里定义的 Web é’©å将作用于系统上的所有仓库,所以请考虑这å¯èƒ½å¸¦æ¥çš„任何性能影å“。了解详情请访问 Web é’©å指å—。
systemhooks.add_webhook=æ·»åŠ ç³»ç»Ÿ Web é’©å
systemhooks.update_webhook=更新系统 Web é’©å
@@ -3071,18 +3027,8 @@ auths.tips=帮助æ示
auths.tips.oauth2.general=OAuth2 认è¯
auths.tips.oauth2.general.tip=当注册新的 OAuth2 身份验è¯æ—¶ï¼Œå›žè°ƒ/é‡å®šå‘ URL 应该是:
auths.tip.oauth2_provider=OAuth2 æ供程åº
-auths.tip.bitbucket=在 https://bitbucket.org/account/user/{your username}/oauth-consumers/new 注册新的 OAuth 使用者åŒæ—¶æ·»åŠ æƒé™â€œè´¦å·â€-“读å–â€
auths.tip.nextcloud=使用下é¢çš„èœå•â€œè®¾ç½®ï¼ˆSettings) -> 安全(Security) -> OAuth 2.0 clientâ€åœ¨æ‚¨çš„实例上注册一个新的 OAuth 客户端。
-auths.tip.dropbox=在 https://www.dropbox.com/developers/apps 上创建一个新的应用程åº
-auths.tip.facebook=`在 https://developers.facebook.com/apps æ³¨å†Œä¸€ä¸ªæ–°çš„åº”ç”¨ï¼Œå¹¶æ·»åŠ äº§å“"Facebook 登录"`
-auths.tip.github=在 https://github.com/settings/applications/new 注册一个 OAuth 应用程åº
-auths.tip.gitlab_new=在 https://gitlab.com/-/profile/applications 注册一个新的应用
-auths.tip.google_plus=ä»Žè°·æŒ API æŽ§åˆ¶å° (https://console.developers.google.com/) 获得 OAuth2 客户端å‡æ®
auths.tip.openid_connect=使用 OpenID 连接å‘现 URL ({server}/.well-known/openid-configuration) æ¥æŒ‡å®šç»ˆç‚¹
-auths.tip.twitter=访问 https://dev.twitter.com/apps,创建应用并确ä¿å¯ç”¨äº†"å…许æ¤åº”用程åºç”¨äºŽç™»å½• Twitter"的选项。
-auths.tip.discord=在 https://discordapp.com/developers/applications/me 上注册新应用程åº
-auths.tip.gitea=注册一个新的 OAuth2 应用程åºã€‚å¯ä»¥è®¿é—® https://docs.gitea.com/development/oauth2-provider 查看帮助
-auths.tip.yandex=在 https://oauth.yandex.com/client/new 上创建一个新的应用程åºã€‚在“ Yandex.Passport APIâ€è¿™éƒ¨åˆ†ä¸é€‰æ‹©ä»¥ä¸‹æƒé™ï¼šâ€œè®¿é—®ç”µå邮件地å€ï¼ˆAccess to email address)â€ï¼Œâ€œè®¿é—®ç”¨æˆ·å¤´åƒï¼ˆAccess to user avatar)â€å’Œâ€œè®¿é—®ç”¨æˆ·å,åå—和姓æ°ï¼Œæ€§åˆ«ï¼ˆAccess to username, first name and surname, genderAccess to username, first name and surname, gender)â€
auths.tip.mastodon=输入您想è¦è®¤è¯çš„ mastodon 实例的自定义 URL (或使用默认值)
auths.edit=修改认è¯æº
auths.activated=该认è¯æºå·²ç»å¯ç”¨
@@ -3244,7 +3190,6 @@ monitor.next=下次执行时间
monitor.previous=上次执行时间
monitor.execute_times=执行次数
monitor.process=è¿è¡Œä¸è¿›ç¨‹
-monitor.stacktrace=è°ƒç”¨æ ˆè¸ªè¿¹
monitor.processes_count=%d 个进程
monitor.download_diagnosis_report=下载诊æ–报告
monitor.desc=进程æè¿°
@@ -3252,8 +3197,6 @@ monitor.start=开始时间
monitor.execute_time=执行时长
monitor.last_execution_result=结果
monitor.process.cancel=ä¸æ¢è¿›ç¨‹
-monitor.process.cancel_desc=ä¸æ¢ä¸€ä¸ªè¿›ç¨‹å¯èƒ½å¯¼è‡´æ•°æ®ä¸¢å¤±
-monitor.process.cancel_notices=ä¸æ¢ï¼š%s ?
monitor.process.children=å进程
monitor.queues=队列
@@ -3355,8 +3298,6 @@ raw_minutes=分钟
[dropzone]
default_message=拖动文件或者点击æ¤å¤„ä¸Šä¼ ã€‚
-invalid_input_type=您ä¸èƒ½ä¸Šä¼ 该类型的文件
-file_too_big=文件体积({{filesize}} MB)超过了最大å…许体积({{maxFilesize}} MB)
remove_file=移除文件
[notification]
@@ -3503,7 +3444,6 @@ settings.link=å°†æ¤è½¯ä»¶åŒ…链接到仓库
settings.link.description=如果您将一个软件包与一个代ç 库链接起æ¥ï¼Œè½¯ä»¶åŒ…将显示在代ç 库的软件包列表ä¸ã€‚
settings.link.select=选择仓库
settings.link.button=更新仓库链接
-settings.link.success=仓库链接已æˆåŠŸæ›´æ–°ã€‚
settings.link.error=更新仓库链接失败。
settings.delete=åˆ é™¤è½¯ä»¶åŒ…
settings.delete.description=åˆ é™¤è½¯ä»¶åŒ…æ˜¯æ°¸ä¹…æ€§çš„ï¼Œæ— æ³•æ’¤æ¶ˆã€‚
diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini
index 64a012e307..509be15270 100644
--- a/options/locale/locale_zh-HK.ini
+++ b/options/locale/locale_zh-HK.ini
@@ -217,7 +217,6 @@ social=社交帳號ç¶å®š
orgs=管ç†çµ„ç¹”
repos=儲å˜åº«ç®¡ç†
delete=刪除帳戶
-twofa=å…©æ¥é©Ÿé©—è‰
organization=組織管ç†
public_profile=公開訊æ¯
@@ -600,13 +599,6 @@ settings.deploy_keys=管ç†éƒ¨ç½²é‡‘é‘°
settings.add_deploy_key=新增部署金鑰
settings.title=標題
settings.deploy_key_content=金鑰文本
-settings.branches=分支列表
-settings.protected_branch=分支ä¿è·
-settings.protected_branch_can_push=å…許推é€ï¼Ÿ
-settings.protected_branch_can_push_yes=ä½ å¯ä»¥æŽ¨é€
-settings.protected_branch_can_push_no=ä½ ä¸èƒ½æŽ¨é€
-settings.add_protected_branch=啟用ä¿è·
-settings.delete_protected_branch=åœç”¨ä¿è·
settings.edit_protected_branch=編輯
diff.browse_source=ç€è¦½ä»£ç¢¼
@@ -805,9 +797,6 @@ auths.enable_auto_register=å…許授權用戶自動註冊
auths.tips=幫助æ示
auths.tips.oauth2.general=OAuth2 èªè‰
auths.tip.oauth2_provider=OAuth2 æ供者
-auths.tip.dropbox=建立新 App 在 https://www.dropbox.com/developers/apps
-auths.tip.facebook=`在 https://developers.facebook.com/apps è¨»å†Šä¸€å€‹æ–°çš„æ‡‰ç”¨ï¼Œä¸¦ä¸”æ–°å¢žä¸€å€‹ç”¢å“ "Facebook Login"`
-auths.tip.github=在 https://github.com/settings/applications/new 註冊一個新的 OAuth 應用程å¼
auths.delete=刪除èªè‰ä¾†æº
auths.delete_auth_title=刪除èªè‰ä¾†æº
@@ -966,7 +955,6 @@ error.not_signed_commit=未簽åçš„æ交
[packages]
filter.type=èªè‰é¡žåž‹
-alpine.repository.branches=分支列表
alpine.repository.repositories=儲å˜åº«ç®¡ç†
conan.details.repository=儲å˜åº«
owner.settings.cleanuprules.enabled=已啟用
diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini
index a2e0d9298b..9406419e6b 100644
--- a/options/locale/locale_zh-TW.ini
+++ b/options/locale/locale_zh-TW.ini
@@ -167,8 +167,6 @@ string.desc=Z - A
[error]
occurred=發生錯誤
-missing_csrf=錯誤的請求:未æä¾› CSRF token
-invalid_csrf=錯誤的請求:無效的 CSRF token
not_found=找ä¸åˆ°ç›®æ¨™ã€‚
network_error=網路錯誤
@@ -176,11 +174,9 @@ network_error=網路錯誤
app_desc=一套極易架è¨çš„ Git æœå‹™
install=安è£å®¹æ˜“
platform=跨平å°
-platform_desc=Gitea å¯ä»¥åœ¨æ‰€æœ‰èƒ½ç·¨è¯ Go 語言的平å°ä¸ŠåŸ·è¡Œ: Windows, macOS, Linux, ARM ç‰ç‰ã€‚挑一個您喜æ¡çš„å§ï¼
lightweight=輕é‡ç´š
lightweight_desc=一片便宜的 Raspberry Pi å°±å¯ä»¥æ»¿è¶³ Gitea 的最低需求。節çœæ‚¨çš„機器資æºï¼
license=開放原始碼
-license_desc=å–å¾— code.gitea.io/gitea ï¼æˆç‚ºä¸€åè²¢ç»è€…和我們一起讓 Gitea æ›´å¥½ï¼Œå¿«é»žåŠ å…¥æˆ‘å€‘å§ï¼
[install]
install=安è£é é¢
@@ -583,10 +579,8 @@ applications=應用程å¼
orgs=管ç†çµ„ç¹”
repos=儲å˜åº«
delete=刪除帳戶
-twofa=å…©æ¥é©Ÿé©—è‰
account_link=已連çµå¸³è™Ÿ
organization=組織
-webauthn=安全金鑰
public_profile=公開的個人資料
password_username_disabled=éžæœ¬åœ°ä½¿ç”¨è€…ä¸å…許更改他們的帳號。詳細資訊請è¯çµ¡æ‚¨çš„系統管ç†å“¡ã€‚
@@ -784,24 +778,19 @@ revoke_key=撤銷
revoke_oauth2_grant=撤銷å˜å–權
revoke_oauth2_grant_description=撤銷æ¤ç¬¬ä¸‰æ–¹æ‡‰ç”¨ç¨‹å¼çš„å˜å–權,æ¤æ‡‰ç”¨ç¨‹å¼å°±ç„¡æ³•å†å˜å–您的資料?您確定嗎?
-twofa_desc=å…©æ¥é©Ÿé©—è‰å¯ä»¥å¢žå¼·æ‚¨çš„帳戶安全性。
twofa_is_enrolled=您的帳戶已經啟用兩æ¥é©Ÿé©—è‰ã€‚
twofa_not_enrolled=您的帳戶目å‰å°šæœªå•Ÿç”¨å…©æ¥é©Ÿé©—è‰ã€‚
twofa_disable=åœç”¨å…©æ¥é©Ÿé©—è‰
-twofa_scratch_token_regenerate=é‡æ–°ç”¢ç”Ÿå‚™ç”¨é©—è‰ç¢¼
twofa_enroll=啟用兩æ¥é©Ÿé©—è‰
twofa_disable_note=如有需è¦ï¼Œæ‚¨å¯ä»¥åœç”¨å…©æ¥é©Ÿé©—è‰ã€‚
twofa_disable_desc=關閉兩æ¥é©Ÿé©—è‰æœƒä½¿æ‚¨çš„帳戶安全性é™ä½Žï¼Œæ˜¯å¦ç¹¼çºŒï¼Ÿ
-regenerate_scratch_token_desc=如果您éºå¤±äº†å‚™ç”¨é©—è‰ç¢¼æˆ–已經使用它登入,您å¯ä»¥åœ¨æ¤é‡æ–°è¨å®šã€‚
twofa_disabled=å…©æ¥é©Ÿé©—è‰å·²ç¶“被關閉。
scan_this_image=使用您的授權應用程å¼ä¾†æŽƒçž„圖片:
or_enter_secret=或者輸入密碼: %s
then_enter_passcode=然後輸入應用程å¼ä¸é¡¯ç¤ºçš„é©—è‰ç¢¼ï¼š
passcode_invalid=無效的驗è‰ç¢¼ï¼Œè«‹é‡è©¦ã€‚
-twofa_enrolled=您的帳戶已經啟用了兩æ¥é©Ÿé©—è‰ã€‚請將備用驗è‰ç¢¼ (%s) ä¿å˜åˆ°å®‰å…¨çš„地方,它åªæœƒé¡¯ç¤ºé€™éº¼ä¸€æ¬¡ï¼
twofa_failed_get_secret=å–得密鑰 (Secret) 失敗。
-webauthn_desc=安全金鑰是包å«åŠ 密密鑰的硬體è¨å‚™ï¼Œå®ƒå€‘å¯ä»¥ç”¨æ–¼å…©æ¥é©Ÿé©—è‰ã€‚å®‰å…¨é‡‘é‘°å¿…é ˆæ”¯æ´ WebAuthn Authenticator 標準。
webauthn_register_key=新增安全金鑰
webauthn_nickname=暱稱
webauthn_delete_key=移除安全金鑰
@@ -920,9 +909,7 @@ author_search_tooltip=最多顯示 30 ä½ä½¿ç”¨è€…
transfer.accept=åŒæ„轉移
-transfer.accept_desc=轉移到「%sã€
transfer.reject=拒絕轉移
-transfer.reject_desc=å–消轉移到「%sã€
desc.private=ç§æœ‰
desc.public=公開
@@ -1046,7 +1033,6 @@ releases=版本發布
tag=標籤
released_this=發布了æ¤ç‰ˆæœ¬
tagged_this=標記了æ¤æ¨™ç±¤
-file.title=%s æ–¼ %s
file_raw=原始文件
file_history=æ·å²è¨˜éŒ„
file_view_source=檢視原始碼
@@ -1056,7 +1042,6 @@ file_permalink=永久連çµ
file_too_large=檔案太大,無法顯示。
invisible_runes_line=`這一行有看ä¸è¦‹çš„ Unicode å—å…ƒ`
ambiguous_runes_line=`這一行有易混淆的 Unicode å—å…ƒ`
-ambiguous_character=`%[1]c [U+%04[1]X] 容易與 %[2]c [U+%04[2]X] 混淆`
escape_control_characters=Escape
unescape_control_characters=Unescape
@@ -1480,7 +1465,6 @@ issues.dependency.add_error_dep_not_same_repo=這兩個å•é¡Œå¿…é ˆåœ¨åŒä¸€å€‹
issues.review.self.approval=您ä¸èƒ½æ ¸å¯è‡ªå·±çš„åˆä½µè«‹æ±‚。
issues.review.self.rejection=您ä¸èƒ½å°è‡ªå·±çš„åˆä½µè«‹æ±‚æ出請求變更。
issues.review.approve=æ ¸å¯äº†é€™äº›è®Šæ›´ %s
-issues.review.comment=å·²å¯©æ ¸ %s
issues.review.dismissed=å–消 %s çš„å¯©æ ¸ %s
issues.review.dismissed_label=å·²å–消
issues.review.left_comment=留下了回應
@@ -1501,6 +1485,7 @@ issues.review.hide_resolved=éš±è—已解決
issues.review.resolve_conversation=解決å°è©±
issues.review.un_resolve_conversation=å–消解決å°è©±
issues.review.resolved_by=標記了æ¤å°è©±ç‚ºå·²è§£æ±º
+issues.review.commented=留言
issues.assignee.error=å› ç‚ºæœªé 期的錯誤,未能æˆåŠŸåŠ å…¥æ‰€æœ‰è² è²¬äººã€‚
issues.reference_issue.body=內容
issues.content_history.deleted=刪除
@@ -1594,9 +1579,7 @@ pulls.rebase_conflict_summary=錯誤訊æ¯
pulls.unrelated_histories=åˆä½µå¤±æ•—:è¦åˆä½µçš„ HEAD 和基底分支沒有共åŒçš„æ·å²ã€‚ æ示:請嘗試ä¸åŒçš„ç–ç•¥
pulls.merge_out_of_date=åˆä½µå¤±æ•—:產生åˆä½µæ™‚,基底已被更新。æ示:å†è©¦ä¸€æ¬¡ã€‚
pulls.head_out_of_date=åˆä½µå¤±æ•—:產生åˆä½µæ™‚,head 已被更新。æ示:å†è©¦ä¸€æ¬¡ã€‚
-pulls.push_rejected=åˆä½µå¤±æ•—:æ¤æŽ¨é€è¢«æ‹’絕。請檢查æ¤å„²å˜åº«çš„ Git Hook。
pulls.push_rejected_summary=完整的拒絕訊æ¯
-pulls.push_rejected_no_message=åˆä½µå¤±æ•—:æ¤æŽ¨é€è¢«æ‹’絕但未æ供其他資訊。
請檢查æ¤å„²å˜åº«çš„ Git Hook。
pulls.open_unmerged_pull_exists=`您ä¸èƒ½é‡æ–°é–‹æ”¾ï¼Œå› 為目å‰æœ‰ç›¸åŒçš„åˆä½µè«‹æ±‚ (#%d) æ£åœ¨é€²è¡Œä¸ã€‚`
pulls.status_checking=還在進行一些檢查
pulls.status_checks_success=已通éŽæ‰€æœ‰æª¢æŸ¥
@@ -1640,7 +1623,6 @@ milestones.update_ago=已更新 %s
milestones.no_due_date=暫無截æ¢æ—¥æœŸ
milestones.open=é–‹å•Ÿ
milestones.close=關閉
-milestones.completeness=%d%% 完æˆ
milestones.create=建立里程碑
milestones.title=標題
milestones.desc=æè¿°
@@ -1819,7 +1801,6 @@ settings.pulls.default_delete_branch_after_merge=é è¨åœ¨åˆä½µå¾Œåˆªé™¤åˆä½µ
settings.pulls.default_allow_edits_from_maintainers=é è¨å…許ç¶è·è€…進行編輯
settings.releases_desc=啟用儲å˜åº«ç‰ˆæœ¬ç™¼ä½ˆ
settings.packages_desc=啟用儲å˜åº«å¥—件註冊ä¸å¿ƒ
-settings.projects_desc=啟用儲å˜åº«å°ˆæ¡ˆ
settings.projects_mode_all=所有專案
settings.actions_desc=啟用儲å˜åº« Actions
settings.admin_settings=管ç†å“¡è¨å®š
@@ -1981,7 +1962,6 @@ settings.event_pull_request_sync_desc=åˆä½µè«‹æ±‚åŒæ¥ã€‚
settings.event_package=套件
settings.event_package_desc=套件已在儲å˜åº«ä¸å»ºç«‹æˆ–刪除。
settings.branch_filter=分支篩é¸
-settings.branch_filter_desc=推é€ã€å»ºç«‹åˆ†æ”¯ã€åˆªé™¤åˆ†æ”¯äº‹ä»¶çš„白å單,請使用 glob 比å°æ¨¡å¼ã€‚如果留白或輸入*
ï¼Œæ‰€æœ‰åˆ†æ”¯çš„äº‹ä»¶éƒ½æœƒè¢«å›žå ±ã€‚èªžæ³•åƒè¦‹ github.com/gobwas/glob。範例:master
, {master,release*}
。
settings.authorization_header=Authorization 標é
settings.authorization_header_desc=å˜åœ¨æ™‚將將包å«æ¤ Authorization 標é 在請求ä¸ã€‚例: %s。
settings.active=啟用
@@ -2027,13 +2007,8 @@ settings.deploy_key_deletion=刪除部署金鑰
settings.deploy_key_deletion_desc=移除部署金鑰將拒絕它å˜å–æ¤å„²å˜åº«ã€‚是å¦ç¹¼çºŒï¼Ÿ
settings.deploy_key_deletion_success=部署金鑰已移除。
settings.branches=分支
-settings.protected_branch=分支ä¿è·
settings.protected_branch.save_rule=儲å˜è¦å‰‡
settings.protected_branch.delete_rule=刪除è¦å‰‡
-settings.protected_branch_can_push=å…許推é€ï¼Ÿ
-settings.protected_branch_can_push_yes=ä½ å¯ä»¥æŽ¨é€
-settings.protected_branch_can_push_no=ä½ ä¸èƒ½æŽ¨é€
-settings.branch_protection=%s 的分支ä¿è·
settings.protect_this_branch=啟用分支ä¿è·
settings.protect_this_branch_desc=防æ¢åˆªé™¤åˆ†æ”¯ï¼Œä¸¦é™åˆ¶ Git 推é€èˆ‡åˆä½µåˆ°åˆ†æ”¯ã€‚
settings.protect_disable_push=åœç”¨æŽ¨é€
@@ -2043,22 +2018,15 @@ settings.protect_enable_push_desc=任何æ“有寫入權é™çš„使用者將å¯æŽ¨
settings.protect_enable_merge=啟用åˆä½µ
settings.protect_enable_merge_desc=任何有寫入權é™çš„人都å¯å°‡åˆä½µè«‹æ±‚åˆä½µåˆ°æ¤åˆ†æ”¯
settings.protect_check_status_contexts=啟用狀態檢查
-settings.protect_check_status_contexts_desc=åˆä½µå‰å¿…é ˆå…ˆé€šéŽç‹€æ…‹æª¢æŸ¥ã€‚é¸æ“‡åˆä½µå‰å¿…é ˆé€šéŽçš„æª¢æŸ¥ã€‚å•Ÿç”¨æ™‚ï¼Œå¿…é ˆå…ˆå°‡æ交推é€åˆ°å¦ä¸€å€‹åˆ†æ”¯ï¼Œé€šéŽç‹€æ…‹æª¢æŸ¥å¾Œå†åˆä½µæˆ–直接推é€åˆ°ç¬¦åˆè¦å‰‡çš„分支。如果未é¸æ“‡ä»»ä½•é …目,最一個æ交必將æˆåŠŸé€šéŽç‹€æ…‹æª¢æŸ¥ã€‚
settings.protect_check_status_contexts_list=æ¤å„²å˜åº«ä¸€é€±å…§æ›¾é€²è¡ŒéŽç‹€æ…‹æª¢æŸ¥
settings.protect_required_approvals=需è¦çš„æ ¸å¯æ•¸é‡ï¼š
-settings.protect_required_approvals_desc=åªæœ‰åœ¨ç²å¾—è¶³å¤ æ•¸é‡çš„æ ¸å¯å¾Œæ‰èƒ½é€²è¡Œåˆä½µã€‚
settings.dismiss_stale_approvals=æ¨æ£„éŽæ™‚çš„æ ¸å¯
settings.dismiss_stale_approvals_desc=當新的æ交有修改到åˆä½µè«‹æ±‚的內容,並被推é€åˆ°æ¤åˆ†æ”¯æ™‚,將æ¨æ£„èˆŠçš„æ ¸å¯ã€‚
settings.require_signed_commits=僅接å—經簽署的æ交
settings.require_signed_commits_desc=拒絕未經簽署或未經驗è‰çš„æ交推é€åˆ°æ¤åˆ†æ”¯ã€‚
settings.protect_branch_name_pattern=å—ä¿è·çš„分支å稱模å¼
settings.protect_protected_file_patterns=å—ä¿è·çš„æª”æ¡ˆæ¨¡å¼ (以分號å€éš”「;ã€):
-settings.protect_protected_file_patterns_desc=å³ä¾¿ä½¿ç”¨è€…有權é™æ–°å¢žã€ä¿®æ”¹ã€åˆªé™¤æ¤åˆ†æ”¯çš„檔案,ä»ä¸å…許直接修改å—ä¿è·çš„檔案。å¯ä»¥ç”¨åŠå½¢åˆ†è™Ÿã€Œ;ã€åˆ†éš”多個模å¼ã€‚è«‹æ–¼ github.com/gobwas/glob 文件查看模å¼æ ¼å¼ã€‚範例: .drone.yml
, /docs/**/*.txt
。
settings.protect_unprotected_file_patterns=未å—ä¿è·çš„æª”æ¡ˆæ¨¡å¼ (以分號å€éš”「;ã€):
-settings.protect_unprotected_file_patterns_desc=當使用者有寫入權é™æ™‚,å¯ç¹žéŽæŽ¨é€é™åˆ¶ï¼Œç›´æŽ¥ä¿®æ”¹æœªå—ä¿è·çš„檔案。å¯ä»¥ç”¨åŠå½¢åˆ†è™Ÿã€Œ;ã€åˆ†éš”多個模å¼ã€‚è«‹æ–¼ github.com/gobwas/glob 文件查看模å¼æ ¼å¼ã€‚範例: .drone.yml
, /docs/**/*.txt
。
-settings.add_protected_branch=啟用ä¿è·
-settings.delete_protected_branch=åœç”¨ä¿è·
-settings.protected_branch_deletion=åœç”¨åˆ†æ”¯ä¿è·
settings.protected_branch_deletion_desc=åœç”¨åˆ†æ”¯ä¿è·å°‡å…許有寫入權é™çš„使用者推é€è‡³è©²åˆ†æ”¯ï¼Œæ˜¯å¦ç¹¼çºŒï¼Ÿ
settings.block_rejected_reviews=æœ‰é€€å›žçš„å¯©æ ¸æ™‚é˜»æ“‹åˆä½µ
settings.block_rejected_reviews_desc=å¦‚æžœå®˜æ–¹å¯©æ ¸äººå“¡æ出變更請求,å³ä½¿æœ‰è¶³å¤ çš„æ ¸å¯ä¹Ÿä¸å…許進行åˆä½µã€‚
@@ -2238,7 +2206,7 @@ branch.delete_html=刪除分支
branch.deletion_success=已刪除分支「%sã€ã€‚
branch.deletion_failed=刪除分支「%sã€å¤±æ•—。
branch.delete_branch_has_new_commits=å› ç‚ºåˆä½µå¾Œå·²åŠ 入了新的æ交,「%sã€åˆ†æ”¯ç„¡æ³•è¢«åˆªé™¤ã€‚
-branch.create_branch=建立分支 %s
+branch.create_branch=建立分支 %s
branch.create_from=從「%sã€
branch.create_success=已建立分支「%sã€ã€‚
branch.branch_already_exists=æ¤å„²å˜åº«å·²æœ‰å為「%sã€çš„分支。
@@ -2260,7 +2228,7 @@ branch.new_branch=建立新分支
branch.new_branch_from=從「%sã€å»ºç«‹æ–°åˆ†æ”¯
branch.renamed=分支 %s 被é‡æ–°å‘½å為 %s。
-tag.create_tag=建立標籤 %s
+tag.create_tag=建立標籤 %s
tag.create_tag_operation=建立標籤
tag.confirm_create_tag=建立標籤
tag.create_tag_from=從「%sã€å»ºç«‹æ–°æ¨™ç±¤
@@ -2269,7 +2237,6 @@ tag.create_success=已建立標籤「%sã€ã€‚
topic.manage_topics=管ç†ä¸»é¡Œ
topic.done=完æˆ
-topic.count_prompt=您最多能é¸æ“‡ 25 個主題
find_file.go_to_file=移至檔案
find_file.no_matching=找ä¸åˆ°ç¬¦åˆçš„檔案
@@ -2416,7 +2383,6 @@ first_page=首é
last_page=末é
total=總計:%d
-dashboard.new_version_hint=ç¾å·²æŽ¨å‡º Gitea %s,您æ£åœ¨åŸ·è¡Œ %s。詳情請åƒé–±éƒ¨è½æ ¼çš„說明。
dashboard.statistic=摘è¦
dashboard.system_status=系統狀態
dashboard.operation_name=作æ¥å稱
@@ -2679,13 +2645,6 @@ auths.tips=幫助æ示
auths.tips.oauth2.general=OAuth2 èªè‰
auths.tip.oauth2_provider=OAuth2 æ供者
auths.tip.nextcloud=在您的執行個體ä¸ï¼Œæ–¼é¸å–®ã€Œè¨å®š -> 安全性 -> OAuth 2.0 客戶端ã€è¨»å†Šæ–°çš„ OAuth 客戶端
-auths.tip.dropbox=建立新的 App。網å€ï¼šhttps://www.dropbox.com/developers/apps
-auths.tip.facebook=註冊新的應用程å¼ä¸¦æ–°å¢žç”¢å“「Facebook 登入ã€ã€‚網å€ï¼šhttps://developers.facebook.com/apps
-auths.tip.github=註冊新的 OAuth 應用程å¼ã€‚網å€ï¼šhttps://github.com/settings/applications/new
-auths.tip.google_plus=從 Google API 控制å°å–å¾— OAuth2 用戶端憑è‰ã€‚網å€ï¼šhttps://console.developers.google.com/
-auths.tip.twitter=建立應用程å¼ä¸¦ç¢ºä¿æœ‰å•Ÿç”¨ã€ŒAllow this application to be used to Sign in with Twitterã€ã€‚網å€ï¼šhttps://dev.twitter.com/apps
-auths.tip.discord=註冊新的應用程å¼ã€‚網å€ï¼šhttps://discordapp.com/developers/applications/me
-auths.tip.yandex=建立新的應用程å¼ï¼Œå¾žã€ŒYandex.Passport APIã€å€å¡Šé¸æ“‡ã€ŒAccess to email addressã€ã€ã€ŒAccess to user avatarã€å’Œã€ŒAccess to username, first name and surname, genderã€ã€‚網å€ï¼šhttps://oauth.yandex.com/client/new
auths.tip.mastodon=輸入您欲èªè‰çš„ Mastodon åŸ·è¡Œå€‹é«”çš„è‡ªè¨‚ç¶²å€ (或使用é è¨å€¼)
auths.edit=修改èªè‰ä¾†æº
auths.activated=該èªè‰ä¾†æºå·²å•Ÿç”¨
@@ -2841,14 +2800,11 @@ monitor.next=下次執行時間
monitor.previous=上次執行時間
monitor.execute_times=執行次數
monitor.process=執行ä¸çš„處ç†ç¨‹åº
-monitor.stacktrace=å †ç–Šè¿½è¹¤
monitor.desc=æè¿°
monitor.start=開始時間
monitor.execute_time=已執行時間
monitor.last_execution_result=çµæžœ
monitor.process.cancel=çµæŸè™•ç†ç¨‹åº
-monitor.process.cancel_desc=çµæŸè™•ç†ç¨‹åºå¯èƒ½é€ æˆè³‡æ–™éºå¤±
-monitor.process.cancel_notices=çµæŸ: %s?
monitor.process.children=å程åº
monitor.queues=佇列
@@ -2936,7 +2892,6 @@ raw_minutes=分é˜
[dropzone]
default_message=拖放檔案或是點擊æ¤è™•ä¸Šå‚³ã€‚
-invalid_input_type=您無法上傳æ¤é¡žåž‹çš„檔案
file_too_big=檔案大å°({{filesize}} MB) 超éŽäº†æœ€å¤§å…許大å°({{maxFilesize}} MB)
remove_file=移除文件
diff --git a/package-lock.json b/package-lock.json
index 5c56531ec0..e0e83b60ec 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"@citation-js/plugin-csl": "0.7.14",
"@citation-js/plugin-software-formats": "0.6.1",
"@github/markdown-toolbar-element": "2.2.3",
- "@github/relative-time-element": "4.4.2",
+ "@github/relative-time-element": "4.4.3",
"@github/text-expander-element": "2.7.1",
"@mcaptcha/vanilla-glue": "0.1.0-alpha-3",
"@primer/octicons": "19.11.0",
@@ -18,34 +18,34 @@
"add-asset-webpack-plugin": "3.0.0",
"ansi_up": "6.0.2",
"asciinema-player": "3.8.0",
- "chart.js": "4.4.3",
+ "chart.js": "4.4.4",
"chartjs-adapter-dayjs-4": "1.0.4",
"chartjs-plugin-zoom": "2.0.1",
"clippie": "4.1.3",
"css-loader": "7.1.2",
- "dayjs": "1.11.12",
+ "dayjs": "1.11.13",
"dropzone": "6.0.0-beta.2",
"easymde": "2.18.0",
"esbuild-loader": "4.2.2",
"escape-goat": "4.0.0",
"fast-glob": "3.3.2",
- "htmx.org": "2.0.0",
+ "htmx.org": "2.0.2",
"idiomorph": "0.3.0",
"jquery": "3.7.1",
"katex": "0.16.11",
"license-checker-webpack-plugin": "0.2.1",
- "mermaid": "10.9.1",
- "mini-css-extract-plugin": "2.9.0",
+ "mermaid": "11.0.2",
+ "mini-css-extract-plugin": "2.9.1",
"minimatch": "10.0.1",
- "monaco-editor": "0.50.0",
+ "monaco-editor": "0.51.0",
"monaco-editor-webpack-plugin": "7.1.0",
"pdfobject": "2.3.0",
- "postcss": "8.4.40",
+ "postcss": "8.4.41",
"postcss-loader": "8.1.1",
- "postcss-nesting": "12.1.5",
+ "postcss-nesting": "13.0.0",
"sortablejs": "1.15.2",
"swagger-ui-dist": "5.17.14",
- "tailwindcss": "3.4.7",
+ "tailwindcss": "3.4.10",
"temporal-polyfill": "0.2.5",
"throttle-debounce": "5.0.2",
"tinycolor2": "1.6.0",
@@ -55,20 +55,20 @@
"typescript": "5.5.4",
"uint8-to-base64": "0.2.0",
"vanilla-colorful": "0.7.2",
- "vue": "3.4.35",
+ "vue": "3.4.38",
"vue-bar-graph": "2.1.0",
"vue-chartjs": "5.3.1",
"vue-loader": "17.4.2",
- "webpack": "5.93.0",
+ "webpack": "5.94.0",
"webpack-cli": "5.1.4",
"wrap-ansi": "9.0.0"
},
"devDependencies": {
- "@eslint-community/eslint-plugin-eslint-comments": "4.3.0",
- "@playwright/test": "1.45.3",
+ "@eslint-community/eslint-plugin-eslint-comments": "4.4.0",
+ "@playwright/test": "1.46.1",
"@stoplight/spectral-cli": "6.11.1",
- "@stylistic/eslint-plugin-js": "2.6.1",
- "@stylistic/stylelint-plugin": "3.0.0",
+ "@stylistic/eslint-plugin-js": "2.6.5",
+ "@stylistic/stylelint-plugin": "3.0.1",
"@types/dropzone": "5.7.8",
"@types/jquery": "3.5.30",
"@types/katex": "0.16.7",
@@ -79,11 +79,11 @@
"@types/throttle-debounce": "5.0.2",
"@types/tinycolor2": "1.4.6",
"@types/toastify-js": "1.12.3",
- "@typescript-eslint/eslint-plugin": "8.0.0",
- "@typescript-eslint/parser": "8.0.0",
+ "@typescript-eslint/eslint-plugin": "8.3.0",
+ "@typescript-eslint/parser": "8.3.0",
"@vitejs/plugin-vue": "5.1.2",
"eslint": "8.57.0",
- "eslint-import-resolver-typescript": "3.6.1",
+ "eslint-import-resolver-typescript": "3.6.3",
"eslint-plugin-array-func": "4.0.0",
"eslint-plugin-deprecation": "3.0.0",
"eslint-plugin-github": "5.0.1",
@@ -92,14 +92,14 @@
"eslint-plugin-no-use-extend-native": "0.5.0",
"eslint-plugin-playwright": "1.6.2",
"eslint-plugin-regexp": "2.6.0",
- "eslint-plugin-sonarjs": "1.0.4",
+ "eslint-plugin-sonarjs": "2.0.1",
"eslint-plugin-unicorn": "55.0.0",
"eslint-plugin-vitest": "0.4.1",
"eslint-plugin-vitest-globals": "1.5.0",
"eslint-plugin-vue": "9.27.0",
"eslint-plugin-vue-scoped-css": "2.8.1",
- "eslint-plugin-wc": "2.1.0",
- "happy-dom": "14.12.3",
+ "eslint-plugin-wc": "2.1.1",
+ "happy-dom": "15.3.1",
"markdownlint-cli": "0.41.0",
"nolyfill": "1.0.39",
"postcss-html": "1.7.0",
@@ -108,8 +108,8 @@
"stylelint-declaration-strict-value": "1.10.6",
"stylelint-value-no-unknown-custom-properties": "6.0.1",
"svgo": "3.3.2",
- "type-fest": "4.23.0",
- "updates": "16.3.7",
+ "type-fest": "4.26.0",
+ "updates": "16.4.0",
"vite-string-plugin": "1.3.4",
"vitest": "2.0.5"
},
@@ -166,6 +166,377 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/compat-data": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz",
+ "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.24.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz",
+ "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.1",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.24.1",
+ "@babel/parser": "^7.24.1",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.1",
+ "@babel/types": "^7.24.0",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/eslint-parser": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz",
+ "integrity": "sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
+ "eslint-visitor-keys": "^2.1.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.11.0",
+ "eslint": "^7.5.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
+ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@babel/eslint-parser/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.25.5",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz",
+ "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.4",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
+ "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz",
+ "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
+ "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.25.2",
+ "@babel/helper-validator-option": "^7.24.8",
+ "browserslist": "^4.23.1",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz",
+ "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-member-expression-to-functions": "^7.24.8",
+ "@babel/helper-optimise-call-expression": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.25.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/traverse": "^7.25.4",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz",
+ "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
+ "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
+ "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.8",
+ "@babel/types": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
+ "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
+ "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-simple-access": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/traverse": "^7.25.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
+ "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
+ "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz",
+ "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-wrap-function": "^7.25.0",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
+ "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.24.8",
+ "@babel/helper-optimise-call-expression": "^7.24.7",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
+ "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz",
+ "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-string-parser": {
"version": "7.24.8",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
@@ -184,6 +555,45 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
+ "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz",
+ "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz",
+ "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/highlight": {
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
@@ -258,12 +668,6 @@
"node": ">=4"
}
},
- "node_modules/@babel/highlight/node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "license": "MIT"
- },
"node_modules/@babel/highlight/node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -277,12 +681,12 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.25.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz",
- "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz",
+ "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.25.2"
+ "@babel/types": "^7.25.4"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -291,10 +695,1472 @@
"node": ">=6.0.0"
}
},
- "node_modules/@babel/runtime": {
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.25.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz",
- "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz",
+ "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz",
+ "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/plugin-transform-optional-chaining": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz",
+ "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz",
+ "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.24.1",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-decorators": "^7.24.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-decorators": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz",
+ "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-flow": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz",
+ "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz",
+ "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
+ "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz",
+ "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz",
+ "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz",
+ "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-remap-async-to-generator": "^7.25.0",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/traverse": "^7.25.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz",
+ "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-remap-async-to-generator": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz",
+ "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz",
+ "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz",
+ "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.4",
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz",
+ "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz",
+ "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-compilation-targets": "^7.25.2",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-replace-supers": "^7.25.0",
+ "@babel/traverse": "^7.25.4",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
+ "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/template": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz",
+ "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz",
+ "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz",
+ "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz",
+ "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz",
+ "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz",
+ "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-flow-strip-types": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz",
+ "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/plugin-syntax-flow": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz",
+ "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.25.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz",
+ "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.24.8",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/traverse": "^7.25.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz",
+ "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz",
+ "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz",
+ "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz",
+ "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz",
+ "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz",
+ "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.24.8",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-simple-access": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz",
+ "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.25.0",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "@babel/traverse": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz",
+ "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz",
+ "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz",
+ "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz",
+ "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz",
+ "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz",
+ "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz",
+ "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-replace-supers": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz",
+ "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz",
+ "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz",
+ "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz",
+ "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.4",
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz",
+ "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-create-class-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz",
+ "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz",
+ "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz",
+ "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.8",
+ "@babel/plugin-syntax-jsx": "^7.24.7",
+ "@babel/types": "^7.25.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz",
+ "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz",
+ "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz",
+ "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "regenerator-transform": "^0.15.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz",
+ "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz",
+ "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz",
+ "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz",
+ "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz",
+ "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz",
+ "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz",
+ "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz",
+ "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz",
+ "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.24.7",
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz",
+ "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.25.2",
+ "@babel/helper-plugin-utils": "^7.24.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.24.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.3.tgz",
+ "integrity": "sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.24.1",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.24.1",
+ "@babel/plugin-syntax-import-attributes": "^7.24.1",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.24.1",
+ "@babel/plugin-transform-async-generator-functions": "^7.24.3",
+ "@babel/plugin-transform-async-to-generator": "^7.24.1",
+ "@babel/plugin-transform-block-scoped-functions": "^7.24.1",
+ "@babel/plugin-transform-block-scoping": "^7.24.1",
+ "@babel/plugin-transform-class-properties": "^7.24.1",
+ "@babel/plugin-transform-class-static-block": "^7.24.1",
+ "@babel/plugin-transform-classes": "^7.24.1",
+ "@babel/plugin-transform-computed-properties": "^7.24.1",
+ "@babel/plugin-transform-destructuring": "^7.24.1",
+ "@babel/plugin-transform-dotall-regex": "^7.24.1",
+ "@babel/plugin-transform-duplicate-keys": "^7.24.1",
+ "@babel/plugin-transform-dynamic-import": "^7.24.1",
+ "@babel/plugin-transform-exponentiation-operator": "^7.24.1",
+ "@babel/plugin-transform-export-namespace-from": "^7.24.1",
+ "@babel/plugin-transform-for-of": "^7.24.1",
+ "@babel/plugin-transform-function-name": "^7.24.1",
+ "@babel/plugin-transform-json-strings": "^7.24.1",
+ "@babel/plugin-transform-literals": "^7.24.1",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.24.1",
+ "@babel/plugin-transform-member-expression-literals": "^7.24.1",
+ "@babel/plugin-transform-modules-amd": "^7.24.1",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.1",
+ "@babel/plugin-transform-modules-systemjs": "^7.24.1",
+ "@babel/plugin-transform-modules-umd": "^7.24.1",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.24.1",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1",
+ "@babel/plugin-transform-numeric-separator": "^7.24.1",
+ "@babel/plugin-transform-object-rest-spread": "^7.24.1",
+ "@babel/plugin-transform-object-super": "^7.24.1",
+ "@babel/plugin-transform-optional-catch-binding": "^7.24.1",
+ "@babel/plugin-transform-optional-chaining": "^7.24.1",
+ "@babel/plugin-transform-parameters": "^7.24.1",
+ "@babel/plugin-transform-private-methods": "^7.24.1",
+ "@babel/plugin-transform-private-property-in-object": "^7.24.1",
+ "@babel/plugin-transform-property-literals": "^7.24.1",
+ "@babel/plugin-transform-regenerator": "^7.24.1",
+ "@babel/plugin-transform-reserved-words": "^7.24.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.24.1",
+ "@babel/plugin-transform-spread": "^7.24.1",
+ "@babel/plugin-transform-sticky-regex": "^7.24.1",
+ "@babel/plugin-transform-template-literals": "^7.24.1",
+ "@babel/plugin-transform-typeof-symbol": "^7.24.1",
+ "@babel/plugin-transform-unicode-escapes": "^7.24.1",
+ "@babel/plugin-transform-unicode-property-regex": "^7.24.1",
+ "@babel/plugin-transform-unicode-regex": "^7.24.1",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.24.1",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.4",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-env/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/preset-flow": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.1.tgz",
+ "integrity": "sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-transform-flow-strip-types": "^7.24.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/preset-react": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz",
+ "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-transform-react-display-name": "^7.24.1",
+ "@babel/plugin-transform-react-jsx": "^7.23.4",
+ "@babel/plugin-transform-react-jsx-development": "^7.22.5",
+ "@babel/plugin-transform-react-pure-annotations": "^7.24.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz",
+ "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==",
"license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
@@ -303,10 +2169,54 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/template": {
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
+ "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.25.0",
+ "@babel/types": "^7.25.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz",
+ "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.4",
+ "@babel/parser": "^7.25.4",
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.4",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/@babel/types": {
- "version": "7.25.2",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz",
- "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
+ "version": "7.25.4",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz",
+ "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.24.8",
@@ -318,11 +2228,50 @@
}
},
"node_modules/@braintree/sanitize-url": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
- "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.0.tgz",
+ "integrity": "sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==",
"license": "MIT"
},
+ "node_modules/@chevrotain/cst-dts-gen": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz",
+ "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@chevrotain/gast": "11.0.3",
+ "@chevrotain/types": "11.0.3",
+ "lodash-es": "4.17.21"
+ }
+ },
+ "node_modules/@chevrotain/gast": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz",
+ "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@chevrotain/types": "11.0.3",
+ "lodash-es": "4.17.21"
+ }
+ },
+ "node_modules/@chevrotain/regexp-to-ast": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz",
+ "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@chevrotain/types": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz",
+ "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@chevrotain/utils": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz",
+ "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==",
+ "license": "Apache-2.0"
+ },
"node_modules/@citation-js/core": {
"version": "0.7.14",
"resolved": "https://registry.npmjs.org/@citation-js/core/-/core-0.7.14.tgz",
@@ -470,9 +2419,9 @@
}
},
"node_modules/@csstools/css-parser-algorithms": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz",
- "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz",
+ "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==",
"dev": true,
"funding": [
{
@@ -486,16 +2435,16 @@
],
"license": "MIT",
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
},
"peerDependencies": {
- "@csstools/css-tokenizer": "^2.4.1"
+ "@csstools/css-tokenizer": "^3.0.1"
}
},
"node_modules/@csstools/css-tokenizer": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz",
- "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz",
+ "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==",
"dev": true,
"funding": [
{
@@ -509,13 +2458,13 @@
],
"license": "MIT",
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
}
},
"node_modules/@csstools/media-query-list-parser": {
- "version": "2.1.13",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz",
- "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz",
+ "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==",
"dev": true,
"funding": [
{
@@ -529,17 +2478,17 @@
],
"license": "MIT",
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^2.7.1",
- "@csstools/css-tokenizer": "^2.4.1"
+ "@csstools/css-parser-algorithms": "^3.0.1",
+ "@csstools/css-tokenizer": "^3.0.1"
}
},
"node_modules/@csstools/selector-resolve-nested": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-1.1.0.tgz",
- "integrity": "sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-2.0.0.tgz",
+ "integrity": "sha512-oklSrRvOxNeeOW1yARd4WNCs/D09cQjunGZUgSq6vM8GpzFswN+8rBZyJA29YFZhOTQ6GFzxgLDNtVbt9wPZMA==",
"funding": [
{
"type": "github",
@@ -552,16 +2501,16 @@
],
"license": "MIT-0",
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
},
"peerDependencies": {
- "postcss-selector-parser": "^6.0.13"
+ "postcss-selector-parser": "^6.1.0"
}
},
"node_modules/@csstools/selector-specificity": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz",
- "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz",
+ "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==",
"funding": [
{
"type": "github",
@@ -574,10 +2523,10 @@
],
"license": "MIT-0",
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
},
"peerDependencies": {
- "postcss-selector-parser": "^6.0.13"
+ "postcss-selector-parser": "^6.1.0"
}
},
"node_modules/@discoveryjs/json-ext": {
@@ -969,9 +2918,9 @@
}
},
"node_modules/@eslint-community/eslint-plugin-eslint-comments": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.3.0.tgz",
- "integrity": "sha512-6e93KtgsndNkvwCCa07LOQJSwzzLLxwrFll3+huyFoiiQXWG0KBcmo0Q1bVgYQQDLfWOOZl2VPBsXqZL6vHIBQ==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.4.0.tgz",
+ "integrity": "sha512-yljsWl5Qv3IkIRmJ38h3NrHXFCm4EUl55M8doGTF6hvzvFF8kRpextgSrg2dwHev9lzBZyafCr9RelGIyQm6fw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -981,6 +2930,9 @@
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
}
@@ -1157,9 +3109,9 @@
"license": "MIT"
},
"node_modules/@github/relative-time-element": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/@github/relative-time-element/-/relative-time-element-4.4.2.tgz",
- "integrity": "sha512-wTXunu3hmuGljA5CHaaoUIKV0oI35wno0FKJl2yqKplTRnsCA5bPNj4bDeVIubkuskql6jwionWLlGM1Y6QLaw==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/@github/relative-time-element/-/relative-time-element-4.4.3.tgz",
+ "integrity": "sha512-EVKokqx9/DdUAZ2l9WVyY51EtRCO2gQWWMvsRIn7r4glJ91q9CXcnILVHZVCpfD52ucXUhUvtYsAjNJ4qP4uIg==",
"license": "MIT"
},
"node_modules/@github/text-expander-element": {
@@ -1465,6 +3417,49 @@
"@mcaptcha/core-glue": "^0.1.0-alpha-5"
}
},
+ "node_modules/@mermaid-js/parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.2.0.tgz",
+ "integrity": "sha512-33dyFdhwsX9n4+E8SRj1ulxwAgwCj9RyCMtoqXD5cDfS9F6y9xmvmjFjHoPaViH4H7I7BXD8yP/XEWig5XrHSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "langium": "3.0.0"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
+ "version": "5.1.1-v1",
+ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
+ "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-scope": "5.1.1"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -1500,6 +3495,16 @@
"node": ">= 8"
}
},
+ "node_modules/@nolyfill/is-core-module": {
+ "version": "1.0.39",
+ "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz",
+ "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
"node_modules/@nolyfill/shared": {
"version": "1.0.28",
"resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.28.tgz",
@@ -1531,13 +3536,13 @@
}
},
"node_modules/@playwright/test": {
- "version": "1.45.3",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.3.tgz",
- "integrity": "sha512-UKF4XsBfy+u3MFWEH44hva1Q8Da28G6RFtR2+5saw+jgAFQV5yYnB1fu68Mz7fO+5GJF3wgwAIs0UelU8TxFrA==",
+ "version": "1.46.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.46.1.tgz",
+ "integrity": "sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright": "1.45.3"
+ "playwright": "1.46.1"
},
"bin": {
"playwright": "cli.js"
@@ -1613,9 +3618,9 @@
"license": "MIT"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.2.tgz",
- "integrity": "sha512-OHflWINKtoCFSpm/WmuQaWW4jeX+3Qt3XQDepkkiFTsoxFc5BpF3Z5aDxFZgBqRjO6ATP5+b1iilp4kGIZVWlA==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.1.tgz",
+ "integrity": "sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==",
"cpu": [
"arm"
],
@@ -1627,9 +3632,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.2.tgz",
- "integrity": "sha512-k0OC/b14rNzMLDOE6QMBCjDRm3fQOHAL8Ldc9bxEWvMo4Ty9RY6rWmGetNTWhPo+/+FNd1lsQYRd0/1OSix36A==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.1.tgz",
+ "integrity": "sha512-t1lLYn4V9WgnIFHXy1d2Di/7gyzBWS8G5pQSXdZqfrdCGTwi1VasRMSS81DTYb+avDs/Zz4A6dzERki5oRYz1g==",
"cpu": [
"arm64"
],
@@ -1641,9 +3646,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.2.tgz",
- "integrity": "sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.1.tgz",
+ "integrity": "sha512-AH/wNWSEEHvs6t4iJ3RANxW5ZCK3fUnmf0gyMxWCesY1AlUj8jY7GC+rQE4wd3gwmZ9XDOpL0kcFnCjtN7FXlA==",
"cpu": [
"arm64"
],
@@ -1655,9 +3660,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.2.tgz",
- "integrity": "sha512-52udDMFDv54BTAdnw+KXNF45QCvcJOcYGl3vQkp4vARyrcdI/cXH8VXTEv/8QWfd6Fru8QQuw1b2uNersXOL0g==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.1.tgz",
+ "integrity": "sha512-dO0BIz/+5ZdkLZrVgQrDdW7m2RkrLwYTh2YMFG9IpBtlC1x1NPNSXkfczhZieOlOLEqgXOFH3wYHB7PmBtf+Bg==",
"cpu": [
"x64"
],
@@ -1669,9 +3674,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.2.tgz",
- "integrity": "sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.1.tgz",
+ "integrity": "sha512-sWWgdQ1fq+XKrlda8PsMCfut8caFwZBmhYeoehJ05FdI0YZXk6ZyUjWLrIgbR/VgiGycrFKMMgp7eJ69HOF2pQ==",
"cpu": [
"arm"
],
@@ -1683,9 +3688,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.2.tgz",
- "integrity": "sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.1.tgz",
+ "integrity": "sha512-9OIiSuj5EsYQlmwhmFRA0LRO0dRRjdCVZA3hnmZe1rEwRk11Jy3ECGGq3a7RrVEZ0/pCsYWx8jG3IvcrJ6RCew==",
"cpu": [
"arm"
],
@@ -1697,9 +3702,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.2.tgz",
- "integrity": "sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.1.tgz",
+ "integrity": "sha512-0kuAkRK4MeIUbzQYu63NrJmfoUVicajoRAL1bpwdYIYRcs57iyIV9NLcuyDyDXE2GiZCL4uhKSYAnyWpjZkWow==",
"cpu": [
"arm64"
],
@@ -1711,9 +3716,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.2.tgz",
- "integrity": "sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.1.tgz",
+ "integrity": "sha512-/6dYC9fZtfEY0vozpc5bx1RP4VrtEOhNQGb0HwvYNwXD1BBbwQ5cKIbUVVU7G2d5WRE90NfB922elN8ASXAJEA==",
"cpu": [
"arm64"
],
@@ -1725,9 +3730,9 @@
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.2.tgz",
- "integrity": "sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.1.tgz",
+ "integrity": "sha512-ltUWy+sHeAh3YZ91NUsV4Xg3uBXAlscQe8ZOXRCVAKLsivGuJsrkawYPUEyCV3DYa9urgJugMLn8Z3Z/6CeyRQ==",
"cpu": [
"ppc64"
],
@@ -1739,9 +3744,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.2.tgz",
- "integrity": "sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.1.tgz",
+ "integrity": "sha512-BggMndzI7Tlv4/abrgLwa/dxNEMn2gC61DCLrTzw8LkpSKel4o+O+gtjbnkevZ18SKkeN3ihRGPuBxjaetWzWg==",
"cpu": [
"riscv64"
],
@@ -1753,9 +3758,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.2.tgz",
- "integrity": "sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.1.tgz",
+ "integrity": "sha512-z/9rtlGd/OMv+gb1mNSjElasMf9yXusAxnRDrBaYB+eS1shFm6/4/xDH1SAISO5729fFKUkJ88TkGPRUh8WSAA==",
"cpu": [
"s390x"
],
@@ -1767,9 +3772,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.2.tgz",
- "integrity": "sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.1.tgz",
+ "integrity": "sha512-kXQVcWqDcDKw0S2E0TmhlTLlUgAmMVqPrJZR+KpH/1ZaZhLSl23GZpQVmawBQGVhyP5WXIsIQ/zqbDBBYmxm5w==",
"cpu": [
"x64"
],
@@ -1781,9 +3786,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.2.tgz",
- "integrity": "sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.1.tgz",
+ "integrity": "sha512-CbFv/WMQsSdl+bpX6rVbzR4kAjSSBuDgCqb1l4J68UYsQNalz5wOqLGYj4ZI0thGpyX5kc+LLZ9CL+kpqDovZA==",
"cpu": [
"x64"
],
@@ -1795,9 +3800,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.2.tgz",
- "integrity": "sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.1.tgz",
+ "integrity": "sha512-3Q3brDgA86gHXWHklrwdREKIrIbxC0ZgU8lwpj0eEKGBQH+31uPqr0P2v11pn0tSIxHvcdOWxa4j+YvLNx1i6g==",
"cpu": [
"arm64"
],
@@ -1809,9 +3814,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.2.tgz",
- "integrity": "sha512-Mda7iG4fOLHNsPqjWSjANvNZYoW034yxgrndof0DwCy0D3FvTjeNo+HGE6oGWgvcLZNLlcp0hLEFcRs+UGsMLg==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.1.tgz",
+ "integrity": "sha512-tNg+jJcKR3Uwe4L0/wY3Ro0H+u3nrb04+tcq1GSYzBEmKLeOQF2emk1whxlzNqb6MMrQ2JOcQEpuuiPLyRcSIw==",
"cpu": [
"ia32"
],
@@ -1823,9 +3828,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.2.tgz",
- "integrity": "sha512-DPi0ubYhSow/00YqmG1jWm3qt1F8aXziHc/UNy8bo9cpCacqhuWu+iSq/fp2SyEQK7iYTZ60fBU9cat3MXTjIQ==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.1.tgz",
+ "integrity": "sha512-xGiIH95H1zU7naUyTKEyOA/I0aexNMUdO9qRv0bLKN3qu25bBdrxZHqA3PTJ24YNN/GdMzG4xkDcd/GvjuhfLg==",
"cpu": [
"x64"
],
@@ -2380,9 +4385,9 @@
}
},
"node_modules/@stylistic/eslint-plugin-js": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.1.tgz",
- "integrity": "sha512-iLOiVzcvqzDGD9U0EuVOX680v+XOPiPAjkxWj+Q6iV2GLOM5NB27tKVOpJY7AzBhidwpRbaLTgg3T4UzYx09jw==",
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.5.tgz",
+ "integrity": "sha512-RSXHczNa9RO5aLKUB+3P3iLOtM52rfIt11zxnmp5qdXUs2ve7rPAWVoom9krdzYNSARnNpeKH5c5uQ3VuHoEaA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2399,20 +4404,20 @@
}
},
"node_modules/@stylistic/stylelint-plugin": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-3.0.0.tgz",
- "integrity": "sha512-GymY+9CSqkPaZ1A3m3w/tvCdpP3qQcaL1FSaoVv9aKL3Tn6GVJWHc2VWVkbNEsYr4QImHjWnlmVZROwgUEjMmQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-3.0.1.tgz",
+ "integrity": "sha512-j3mH8HSw2Rob/KJFWZ627w3CQ8gQqVHtzCdPeEffUg5vOgpz4rgrR+Xw2kU0OQCDcdW8Y1nKfdXKKjM5Rn8X0g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@csstools/css-parser-algorithms": "^2.7.1",
- "@csstools/css-tokenizer": "^2.4.1",
- "@csstools/media-query-list-parser": "^2.1.13",
+ "@csstools/css-parser-algorithms": "^3.0.0",
+ "@csstools/css-tokenizer": "^3.0.0",
+ "@csstools/media-query-list-parser": "^3.0.0",
"is-plain-object": "^5.0.0",
- "postcss-selector-parser": "^6.1.1",
+ "postcss-selector-parser": "^6.1.2",
"postcss-value-parser": "^4.2.0",
"style-search": "^0.1.0",
- "stylelint": "^16.8.0"
+ "stylelint": "^16.8.2"
},
"engines": {
"node": "^18.12 || >=20.9"
@@ -2421,6 +4426,170 @@
"stylelint": "^16.8.0"
}
},
+ "node_modules/@stylistic/stylelint-plugin/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/balanced-match": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/file-entry-cache": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz",
+ "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/flat-cache": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz",
+ "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.3.1",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/postcss-safe-parser": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz",
+ "integrity": "sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.31"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@stylistic/stylelint-plugin/node_modules/stylelint": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.9.0.tgz",
+ "integrity": "sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.1",
+ "@csstools/css-tokenizer": "^3.0.1",
+ "@csstools/media-query-list-parser": "^3.0.1",
+ "@csstools/selector-specificity": "^4.0.0",
+ "@dual-bundle/import-meta-resolve": "^4.1.0",
+ "balanced-match": "^2.0.0",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^9.0.0",
+ "css-functions-list": "^3.2.2",
+ "css-tree": "^2.3.1",
+ "debug": "^4.3.6",
+ "fast-glob": "^3.3.2",
+ "fastest-levenshtein": "^1.0.16",
+ "file-entry-cache": "^9.0.0",
+ "global-modules": "^2.0.0",
+ "globby": "^11.1.0",
+ "globjoin": "^0.1.4",
+ "html-tags": "^3.3.1",
+ "ignore": "^5.3.2",
+ "imurmurhash": "^0.1.4",
+ "is-plain-object": "^5.0.0",
+ "known-css-properties": "^0.34.0",
+ "mathml-tag-names": "^2.1.3",
+ "meow": "^13.2.0",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "picocolors": "^1.0.1",
+ "postcss": "^8.4.41",
+ "postcss-resolve-nested-selector": "^0.1.6",
+ "postcss-safe-parser": "^7.0.0",
+ "postcss-selector-parser": "^6.1.2",
+ "postcss-value-parser": "^4.2.0",
+ "resolve-from": "^5.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^7.1.0",
+ "supports-hyperlinks": "^3.1.0",
+ "svg-tags": "^1.0.0",
+ "table": "^6.8.2",
+ "write-file-atomic": "^5.0.1"
+ },
+ "bin": {
+ "stylelint": "bin/stylelint.mjs"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
"node_modules/@swc/helpers": {
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.2.14.tgz",
@@ -2446,36 +4615,6 @@
"@types/tern": "*"
}
},
- "node_modules/@types/d3-scale": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
- "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-time": "*"
- }
- },
- "node_modules/@types/d3-scale-chromatic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz",
- "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==",
- "license": "MIT"
- },
- "node_modules/@types/d3-time": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
- "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==",
- "license": "MIT"
- },
- "node_modules/@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
- "license": "MIT",
- "dependencies": {
- "@types/ms": "*"
- }
- },
"node_modules/@types/dropzone": {
"version": "5.7.8",
"resolved": "https://registry.npmjs.org/@types/dropzone/-/dropzone-5.7.8.tgz",
@@ -2497,25 +4636,16 @@
}
},
"node_modules/@types/eslint": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz",
- "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==",
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
+ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
}
},
- "node_modules/@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
- "license": "MIT",
- "dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
- }
- },
"node_modules/@types/estree": {
"version": "0.0.39",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
@@ -2568,28 +4698,13 @@
"integrity": "sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==",
"license": "MIT"
},
- "node_modules/@types/mdast": {
- "version": "3.0.15",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
- "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^2"
- }
- },
- "node_modules/@types/ms": {
- "version": "0.7.34",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
- "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
- "license": "MIT"
- },
"node_modules/@types/node": {
- "version": "22.1.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz",
- "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==",
+ "version": "22.5.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz",
+ "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==",
"license": "MIT",
"dependencies": {
- "undici-types": "~6.13.0"
+ "undici-types": "~6.19.2"
}
},
"node_modules/@types/normalize-package-data": {
@@ -2688,12 +4803,6 @@
"source-map": "^0.6.1"
}
},
- "node_modules/@types/unist": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
- "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==",
- "license": "MIT"
- },
"node_modules/@types/urijs": {
"version": "1.19.25",
"resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.25.tgz",
@@ -2702,9 +4811,9 @@
"license": "MIT"
},
"node_modules/@types/webpack": {
- "version": "4.41.38",
- "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.38.tgz",
- "integrity": "sha512-oOW7E931XJU1mVfCnxCVgv8GLFL768pDO5u2Gzk82i8yTIgX6i7cntyZOkZYb/JtYM8252SN9bQp9tgkVDSsRw==",
+ "version": "4.41.39",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.39.tgz",
+ "integrity": "sha512-otxUJvoi6FbBq/64gGH34eblpKLgdi+gf08GaAh8Bx6So0ZZic028Ev/SUxD22gbthMKCkeeiXEat1kHLDJfYg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2739,17 +4848,17 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0.tgz",
- "integrity": "sha512-STIZdwEQRXAHvNUS6ILDf5z3u95Gc8jzywunxSNqX00OooIemaaNIA0vEgynJlycL5AjabYLLrIyHd4iazyvtg==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz",
+ "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.0.0",
- "@typescript-eslint/type-utils": "8.0.0",
- "@typescript-eslint/utils": "8.0.0",
- "@typescript-eslint/visitor-keys": "8.0.0",
+ "@typescript-eslint/scope-manager": "8.3.0",
+ "@typescript-eslint/type-utils": "8.3.0",
+ "@typescript-eslint/utils": "8.3.0",
+ "@typescript-eslint/visitor-keys": "8.3.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@@ -2773,16 +4882,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.0.tgz",
- "integrity": "sha512-pS1hdZ+vnrpDIxuFXYQpLTILglTjSYJ9MbetZctrUawogUsPdz31DIIRZ9+rab0LhYNTsk88w4fIzVheiTbWOQ==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz",
+ "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.0.0",
- "@typescript-eslint/types": "8.0.0",
- "@typescript-eslint/typescript-estree": "8.0.0",
- "@typescript-eslint/visitor-keys": "8.0.0",
+ "@typescript-eslint/scope-manager": "8.3.0",
+ "@typescript-eslint/types": "8.3.0",
+ "@typescript-eslint/typescript-estree": "8.3.0",
+ "@typescript-eslint/visitor-keys": "8.3.0",
"debug": "^4.3.4"
},
"engines": {
@@ -2802,14 +4911,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.0.tgz",
- "integrity": "sha512-V0aa9Csx/ZWWv2IPgTfY7T4agYwJyILESu/PVqFtTFz9RIS823mAze+NbnBI8xiwdX3iqeQbcTYlvB04G9wyQw==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz",
+ "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.0.0",
- "@typescript-eslint/visitor-keys": "8.0.0"
+ "@typescript-eslint/types": "8.3.0",
+ "@typescript-eslint/visitor-keys": "8.3.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2820,14 +4929,14 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.0.tgz",
- "integrity": "sha512-mJAFP2mZLTBwAn5WI4PMakpywfWFH5nQZezUQdSKV23Pqo6o9iShQg1hP2+0hJJXP2LnZkWPphdIq4juYYwCeg==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz",
+ "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.0.0",
- "@typescript-eslint/utils": "8.0.0",
+ "@typescript-eslint/typescript-estree": "8.3.0",
+ "@typescript-eslint/utils": "8.3.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.3.0"
},
@@ -2845,9 +4954,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.0.tgz",
- "integrity": "sha512-wgdSGs9BTMWQ7ooeHtu5quddKKs5Z5dS+fHLbrQI+ID0XWJLODGMHRfhwImiHoeO2S5Wir2yXuadJN6/l4JRxw==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz",
+ "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2859,16 +4968,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0.tgz",
- "integrity": "sha512-5b97WpKMX+Y43YKi4zVcCVLtK5F98dFls3Oxui8LbnmRsseKenbbDinmvxrWegKDMmlkIq/XHuyy0UGLtpCDKg==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz",
+ "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "8.0.0",
- "@typescript-eslint/visitor-keys": "8.0.0",
+ "@typescript-eslint/types": "8.3.0",
+ "@typescript-eslint/visitor-keys": "8.3.0",
"debug": "^4.3.4",
- "globby": "^11.1.0",
+ "fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
"minimatch": "^9.0.4",
"semver": "^7.6.0",
@@ -2904,16 +5013,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.0.tgz",
- "integrity": "sha512-k/oS/A/3QeGLRvOWCg6/9rATJL5rec7/5s1YmdS0ZU6LHveJyGFwBvLhSRBv6i9xaj7etmosp+l+ViN1I9Aj/Q==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz",
+ "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.0.0",
- "@typescript-eslint/types": "8.0.0",
- "@typescript-eslint/typescript-estree": "8.0.0"
+ "@typescript-eslint/scope-manager": "8.3.0",
+ "@typescript-eslint/types": "8.3.0",
+ "@typescript-eslint/typescript-estree": "8.3.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2927,13 +5036,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0.tgz",
- "integrity": "sha512-oN0K4nkHuOyF3PVMyETbpP5zp6wfyOvm7tWhTMfoqxSSsPmJIh6JNASuZDlODE8eE+0EB9uar+6+vxr9DBTYOA==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz",
+ "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.0.0",
+ "@typescript-eslint/types": "8.3.0",
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
@@ -3093,39 +5202,39 @@
}
},
"node_modules/@vue/compiler-core": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.35.tgz",
- "integrity": "sha512-gKp0zGoLnMYtw4uS/SJRRO7rsVggLjvot3mcctlMXunYNsX+aRJDqqw/lV5/gHK91nvaAAlWFgdVl020AW1Prg==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz",
+ "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.24.7",
- "@vue/shared": "3.4.35",
+ "@vue/shared": "3.4.38",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-dom": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.35.tgz",
- "integrity": "sha512-pWIZRL76/oE/VMhdv/ovZfmuooEni6JPG1BFe7oLk5DZRo/ImydXijoZl/4kh2406boRQ7lxTYzbZEEXEhj9NQ==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz",
+ "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-core": "3.4.35",
- "@vue/shared": "3.4.35"
+ "@vue/compiler-core": "3.4.38",
+ "@vue/shared": "3.4.38"
}
},
"node_modules/@vue/compiler-sfc": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.35.tgz",
- "integrity": "sha512-xacnRS/h/FCsjsMfxBkzjoNxyxEyKyZfBch/P4vkLRvYJwe5ChXmZZrj8Dsed/752H2Q3JE8kYu9Uyha9J6PgA==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz",
+ "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.24.7",
- "@vue/compiler-core": "3.4.35",
- "@vue/compiler-dom": "3.4.35",
- "@vue/compiler-ssr": "3.4.35",
- "@vue/shared": "3.4.35",
+ "@vue/compiler-core": "3.4.38",
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/compiler-ssr": "3.4.38",
+ "@vue/shared": "3.4.38",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.10",
"postcss": "^8.4.40",
@@ -3142,63 +5251,63 @@
}
},
"node_modules/@vue/compiler-ssr": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.35.tgz",
- "integrity": "sha512-7iynB+0KB1AAJKk/biENTV5cRGHRdbdaD7Mx3nWcm1W8bVD6QmnH3B4AHhQQ1qZHhqFwzEzMwiytXm3PX1e60A==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz",
+ "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-dom": "3.4.35",
- "@vue/shared": "3.4.35"
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/shared": "3.4.38"
}
},
"node_modules/@vue/reactivity": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.35.tgz",
- "integrity": "sha512-Ggtz7ZZHakriKioveJtPlStYardwQH6VCs9V13/4qjHSQb/teE30LVJNrbBVs4+aoYGtTQKJbTe4CWGxVZrvEw==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz",
+ "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==",
"license": "MIT",
"dependencies": {
- "@vue/shared": "3.4.35"
+ "@vue/shared": "3.4.38"
}
},
"node_modules/@vue/runtime-core": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.35.tgz",
- "integrity": "sha512-D+BAjFoWwT5wtITpSxwqfWZiBClhBbR+bm0VQlWYFOadUUXFo+5wbe9ErXhLvwguPiLZdEF13QAWi2vP3ZD5tA==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz",
+ "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==",
"license": "MIT",
"dependencies": {
- "@vue/reactivity": "3.4.35",
- "@vue/shared": "3.4.35"
+ "@vue/reactivity": "3.4.38",
+ "@vue/shared": "3.4.38"
}
},
"node_modules/@vue/runtime-dom": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.35.tgz",
- "integrity": "sha512-yGOlbos+MVhlS5NWBF2HDNgblG8e2MY3+GigHEyR/dREAluvI5tuUUgie3/9XeqhPE4LF0i2wjlduh5thnfOqw==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz",
+ "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==",
"license": "MIT",
"dependencies": {
- "@vue/reactivity": "3.4.35",
- "@vue/runtime-core": "3.4.35",
- "@vue/shared": "3.4.35",
+ "@vue/reactivity": "3.4.38",
+ "@vue/runtime-core": "3.4.38",
+ "@vue/shared": "3.4.38",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.35.tgz",
- "integrity": "sha512-iZ0e/u9mRE4T8tNhlo0tbA+gzVkgv8r5BX6s1kRbOZqfpq14qoIvCZ5gIgraOmYkMYrSEZgkkojFPr+Nyq/Mnw==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz",
+ "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-ssr": "3.4.35",
- "@vue/shared": "3.4.35"
+ "@vue/compiler-ssr": "3.4.38",
+ "@vue/shared": "3.4.38"
},
"peerDependencies": {
- "vue": "3.4.35"
+ "vue": "3.4.38"
}
},
"node_modules/@vue/shared": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.35.tgz",
- "integrity": "sha512-hvuhBYYDe+b1G8KHxsQ0diDqDMA8D9laxWZhNAjE83VZb5UDaXl9Xnz7cGdDSyiHM90qqI/CyGMcpBpiDy6VVQ==",
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz",
+ "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==",
"license": "MIT"
},
"node_modules/@webassemblyjs/ast": {
@@ -3639,6 +5748,27 @@
"node": ">=8"
}
},
+ "node_modules/array.prototype.findlast": {
+ "name": "@nolyfill/array.prototype.findlast",
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.findlast/-/array.prototype.findlast-1.0.24.tgz",
+ "integrity": "sha512-yFCyZLs0iNNubzYnBINcOCJAiGtusxiR2F1DnwkOB1HQbWXl/zltkDIWIXO3cJxhQdngDlmM4ysTfyAfoB297g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nolyfill/shared": "1.0.24"
+ },
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/array.prototype.findlast/node_modules/@nolyfill/shared": {
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.24.tgz",
+ "integrity": "sha512-TGCpg3k5N7jj9AgU/1xFw9K1g4AC1vEE5ZFkW77oPNNLzprxT17PvFaNr/lr3BkkT5fJ5LNMntaTIq+pyWaeEA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/array.prototype.findlastindex": {
"name": "@nolyfill/array.prototype.findlastindex",
"version": "1.0.24",
@@ -3688,6 +5818,27 @@
"node": ">=12.4.0"
}
},
+ "node_modules/array.prototype.tosorted": {
+ "name": "@nolyfill/array.prototype.tosorted",
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/array.prototype.tosorted/-/array.prototype.tosorted-1.0.24.tgz",
+ "integrity": "sha512-lVo8TVDqaslOaOvEH7iL7glu/WdlX7ZrB+7FZY4BL25hg8TLHvg3e9pxafCp8vAQ96IOL+tdgBdfeoC7qLeQYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nolyfill/shared": "1.0.24"
+ },
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/array.prototype.tosorted/node_modules/@nolyfill/shared": {
+ "version": "1.0.24",
+ "resolved": "https://registry.npmjs.org/@nolyfill/shared/-/shared-1.0.24.tgz",
+ "integrity": "sha512-TGCpg3k5N7jj9AgU/1xFw9K1g4AC1vEE5ZFkW77oPNNLzprxT17PvFaNr/lr3BkkT5fJ5LNMntaTIq+pyWaeEA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/as-table": {
"version": "1.0.55",
"resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
@@ -3749,9 +5900,9 @@
}
},
"node_modules/astring": {
- "version": "1.8.6",
- "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz",
- "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz",
+ "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3791,6 +5942,58 @@
"deep-equal": "^2.0.5"
}
},
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
+ "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
+ "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "core-js-compat": "^3.38.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
+ "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -3948,6 +6151,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/cac": {
"version": "6.7.14",
"resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
@@ -3977,9 +6190,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001646",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz",
- "integrity": "sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==",
+ "version": "1.0.30001653",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz",
+ "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==",
"funding": [
{
"type": "opencollective",
@@ -4029,20 +6242,10 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/character-entities": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/chart.js": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.3.tgz",
- "integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
+ "version": "4.4.4",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz",
+ "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==",
"license": "MIT",
"dependencies": {
"@kurkle/color": "^0.3.0"
@@ -4086,6 +6289,32 @@
"node": ">= 16"
}
},
+ "node_modules/chevrotain": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz",
+ "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@chevrotain/cst-dts-gen": "11.0.3",
+ "@chevrotain/gast": "11.0.3",
+ "@chevrotain/regexp-to-ast": "11.0.3",
+ "@chevrotain/types": "11.0.3",
+ "@chevrotain/utils": "11.0.3",
+ "lodash-es": "4.17.21"
+ }
+ },
+ "node_modules/chevrotain-allstar": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz",
+ "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==",
+ "license": "MIT",
+ "dependencies": {
+ "lodash-es": "^4.17.21"
+ },
+ "peerDependencies": {
+ "chevrotain": "^11.0.0"
+ }
+ },
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -4316,14 +6545,21 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"license": "MIT"
},
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/core-js-compat": {
- "version": "3.37.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz",
- "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==",
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz",
+ "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "browserslist": "^4.23.0"
+ "browserslist": "^4.23.3"
},
"funding": {
"type": "opencollective",
@@ -4535,9 +6771,9 @@
"license": "MIT"
},
"node_modules/cytoscape": {
- "version": "3.30.1",
- "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.1.tgz",
- "integrity": "sha512-TRJc3HbBPkHd50u9YfJh2FxD1lDLZ+JXnJoyBn5LkncoeuT7fapO/Hq/Ed8TdFclaKshzInge2i30bg7VKeoPQ==",
+ "version": "3.30.2",
+ "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.30.2.tgz",
+ "integrity": "sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==",
"license": "MIT",
"engines": {
"node": ">=0.10"
@@ -5030,15 +7266,16 @@
"license": "MIT"
},
"node_modules/dayjs": {
- "version": "1.11.12",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz",
- "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==",
+ "version": "1.11.13",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"license": "MIT"
},
"node_modules/debug": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
"integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ms": "2.1.2"
@@ -5052,19 +7289,6 @@
}
}
},
- "node_modules/decode-named-character-reference": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
- "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
- "license": "MIT",
- "dependencies": {
- "character-entities": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/decode-uri-component": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
@@ -5139,6 +7363,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -5150,15 +7375,6 @@
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
"license": "Apache-2.0"
},
- "node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -5295,17 +7511,11 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz",
- "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==",
+ "version": "1.5.13",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz",
+ "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==",
"license": "ISC"
},
- "node_modules/elkjs": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz",
- "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==",
- "license": "EPL-2.0"
- },
"node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -5615,18 +7825,19 @@
}
},
"node_modules/eslint-import-resolver-typescript": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz",
- "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==",
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz",
+ "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==",
"dev": true,
"license": "ISC",
"dependencies": {
- "debug": "^4.3.4",
- "enhanced-resolve": "^5.12.0",
- "eslint-module-utils": "^2.7.4",
- "fast-glob": "^3.3.1",
- "get-tsconfig": "^4.5.0",
- "is-core-module": "^2.11.0",
+ "@nolyfill/is-core-module": "1.0.39",
+ "debug": "^4.3.5",
+ "enhanced-resolve": "^5.15.0",
+ "eslint-module-utils": "^2.8.1",
+ "fast-glob": "^3.3.2",
+ "get-tsconfig": "^4.7.5",
+ "is-bun-module": "^1.0.2",
"is-glob": "^4.0.3"
},
"engines": {
@@ -5637,13 +7848,22 @@
},
"peerDependencies": {
"eslint": "*",
- "eslint-plugin-import": "*"
+ "eslint-plugin-import": "*",
+ "eslint-plugin-import-x": "*"
+ },
+ "peerDependenciesMeta": {
+ "eslint-plugin-import": {
+ "optional": true
+ },
+ "eslint-plugin-import-x": {
+ "optional": true
+ }
}
},
"node_modules/eslint-module-utils": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz",
- "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==",
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.2.tgz",
+ "integrity": "sha512-3XnC5fDyc8M4J2E8pt8pmSVRX2M+5yWMCfI/kDZwauQeFgzQOuhcRBFKjTeJagqgk4sFKxe1mvNVnaWwImx/Tg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5829,9 +8049,9 @@
}
},
"node_modules/eslint-plugin-escompat": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.0.tgz",
- "integrity": "sha512-kSTb1wxBRW4aL43Yu23Ula5lSFd9KVVwxyZ4zkG2feBFoj/o4mmgqkN12DXYv3VclZ559ePpBG6b9UjAeYeUyA==",
+ "version": "3.11.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.1.tgz",
+ "integrity": "sha512-j/H70uveM+G9M0onQJOYM+h5trTjQfmBnhGzxAxwGrqARfgXwkfjs+SkvJ1j/a4ofyCIYpBQsGg7q+TowwPNmA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6366,9 +8586,9 @@
}
},
"node_modules/eslint-plugin-no-only-tests": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz",
- "integrity": "sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz",
+ "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6447,6 +8667,117 @@
}
}
},
+ "node_modules/eslint-plugin-react": {
+ "version": "7.35.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz",
+ "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-includes": "^3.1.8",
+ "array.prototype.findlast": "^1.2.5",
+ "array.prototype.flatmap": "^1.3.2",
+ "array.prototype.tosorted": "^1.1.4",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.19",
+ "estraverse": "^5.3.0",
+ "hasown": "^2.0.2",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.8",
+ "object.fromentries": "^2.0.8",
+ "object.values": "^1.2.0",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.5",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.11",
+ "string.prototype.repeat": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
+ "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/eslint-plugin-regexp": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.6.0.tgz",
@@ -6470,18 +8801,604 @@
}
},
"node_modules/eslint-plugin-sonarjs": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-1.0.4.tgz",
- "integrity": "sha512-jF0eGCUsq/HzMub4ExAyD8x1oEgjOyB9XVytYGyWgSFvdiJQJp6IuP7RmtauCf06o6N/kZErh+zW4b10y1WZ+Q==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-2.0.1.tgz",
+ "integrity": "sha512-hkiM2yJakXsEzdBhCzCvjd0DfdVL7w1JFSFYp08KEzlwu7SZtP5QKbDU7Hf8VI3Jkve3/py/yUGuT46+juSk6Q==",
"dev": true,
"license": "LGPL-3.0-only",
- "engines": {
- "node": ">=16"
+ "dependencies": {
+ "@babel/core": "7.24.3",
+ "@babel/eslint-parser": "7.24.1",
+ "@babel/plugin-proposal-decorators": "7.24.1",
+ "@babel/preset-env": "7.24.3",
+ "@babel/preset-flow": "7.24.1",
+ "@babel/preset-react": "7.24.1",
+ "@eslint-community/regexpp": "4.10.0",
+ "@types/eslint": "8.56.10",
+ "@typescript-eslint/eslint-plugin": "7.16.1",
+ "@typescript-eslint/utils": "^7.16.1",
+ "builtin-modules": "3.3.0",
+ "bytes": "3.1.2",
+ "eslint-plugin-import": "^2.29.1",
+ "eslint-plugin-jsx-a11y": "^6.8.0",
+ "eslint-plugin-react": "^7.35.0",
+ "eslint-plugin-react-hooks": "4.6.0",
+ "eslint-scope": "8.0.1",
+ "functional-red-black-tree": "1.0.1",
+ "jsx-ast-utils": "^3.3.5",
+ "minimatch": "^9.0.3",
+ "scslre": "0.3.0",
+ "semver": "7.6.0",
+ "typescript": "5.4.3",
+ "vue-eslint-parser": "9.4.3"
},
"peerDependencies": {
"eslint": "^8.0.0 || ^9.0.0"
}
},
+ "node_modules/eslint-plugin-sonarjs/node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@types/eslint": {
+ "version": "8.56.10",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz",
+ "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.16.1.tgz",
+ "integrity": "sha512-SxdPak/5bO0EnGktV05+Hq8oatjAYVY3Zh2bye9pGZy6+jwyR3LG3YKkV4YatlsgqXP28BTeVm9pqwJM96vf2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "7.16.1",
+ "@typescript-eslint/type-utils": "7.16.1",
+ "@typescript-eslint/utils": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^7.0.0",
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz",
+ "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz",
+ "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz",
+ "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "7.16.1",
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/typescript-estree": "7.16.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/parser": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
+ "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "7.18.0",
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/typescript-estree": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
+ "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+ "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.18.0",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.16.1.tgz",
+ "integrity": "sha512-nYpyv6ALte18gbMz323RM+vpFpTjfNdyakbf3nsLvF43uF9KeNC289SUEW3QLZ1xPtyINJ1dIsZOuWuSRIWygw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz",
+ "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/type-utils": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.16.1.tgz",
+ "integrity": "sha512-rbu/H2MWXN4SkjIIyWcmYBjlp55VT+1G3duFOIukTNFxr9PI35pLc2ydwAfejCEitCv4uztA07q0QWanOHC7dA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "7.16.1",
+ "@typescript-eslint/utils": "7.16.1",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz",
+ "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.16.1.tgz",
+ "integrity": "sha512-0vFPk8tMjj6apaAZ1HlwM8w7jbghC8jc1aRNJG5vN8Ym5miyhTQGMqU++kuBFDNKe9NcPeZ6x0zfSzV8xC1UlQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/visitor-keys": "7.16.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.16.1.tgz",
+ "integrity": "sha512-WrFM8nzCowV0he0RlkotGDujx78xudsxnGMBHI88l5J8wEhED6yBwaSLP99ygfrzAjsQvcYQ94quDwI0d7E1fA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "7.16.1",
+ "@typescript-eslint/types": "7.16.1",
+ "@typescript-eslint/typescript-estree": "7.16.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/types": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
+ "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
+ "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+ "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "7.18.0",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/utils": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
+ "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "7.18.0",
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/typescript-estree": "7.18.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
+ "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "7.18.0",
+ "@typescript-eslint/visitor-keys": "7.18.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
+ "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "7.18.0",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.16.1.tgz",
+ "integrity": "sha512-Qlzzx4sE4u3FsHTPQAAQFJFNOuqtuY0LFrZHwQ8IHK705XxBiWOFkfKRWu6niB7hwfgnwIpO4jTC75ozW1PHWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "7.16.1",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": {
+ "version": "7.16.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.16.1.tgz",
+ "integrity": "sha512-AQn9XqCzUXd4bAVEsAXM/Izk11Wx2u4H3BAfQVhSfzfDOm/wAON9nP7J5rpkCxts7E5TELmN845xTUCQrD1xIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/eslint-scope": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz",
+ "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/typescript": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz",
+ "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/eslint-plugin-sonarjs/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/eslint-plugin-unicorn": {
"version": "55.0.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-55.0.0.tgz",
@@ -6529,6 +9446,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/eslint-plugin-unicorn/node_modules/jsesc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/eslint-plugin-vitest": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-vitest/-/eslint-plugin-vitest-0.4.1.tgz",
@@ -6743,9 +9673,9 @@
}
},
"node_modules/eslint-plugin-wc": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-2.1.0.tgz",
- "integrity": "sha512-s/BGOtmpgQ2yifR6EC1OM9t0DwYLgg4ZAL07Kw4eXvBb5TYaPafI+65tswvnZvhH8FqcjERLbBZPPvYsvinkfg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-2.1.1.tgz",
+ "integrity": "sha512-GfJo05ZgWfwAFbW6Gkf+9CMOIU6fmbd3b4nm+PKESHgUdUTmi7vawlELCrzOhdiQjXUPZxDfFIVxYt9D/v/GdQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7174,9 +10104,9 @@
"license": "ISC"
},
"node_modules/foreground-child": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",
- "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
"license": "ISC",
"dependencies": {
"cross-spawn": "^7.0.0",
@@ -7224,6 +10154,23 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
+ "node_modules/functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -7494,6 +10441,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/hachure-fill": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz",
+ "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==",
+ "license": "MIT"
+ },
"node_modules/hammerjs": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
@@ -7504,9 +10457,9 @@
}
},
"node_modules/happy-dom": {
- "version": "14.12.3",
- "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-14.12.3.tgz",
- "integrity": "sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==",
+ "version": "15.3.1",
+ "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-15.3.1.tgz",
+ "integrity": "sha512-3nwi8abkBUHzdq/6UhseErN6b6J1obWZFl5XKKMUEp+OL4Vq7AIiLSVDmXQp83qykJHjhdrBxsae3CTA5nB36A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7515,7 +10468,7 @@
"whatwg-mimetype": "^3.0.0"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
"node_modules/has-flag": {
@@ -7595,9 +10548,9 @@
}
},
"node_modules/htmx.org": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-2.0.0.tgz",
- "integrity": "sha512-N0r1VjrqeCpig0mTi2/sooDZBeQlp1RBohnWQ/ufqc7ICaI0yjs04fNGhawm6+/HWhJFlcXn8MqOjWI9QGG2lQ==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-2.0.2.tgz",
+ "integrity": "sha512-eUPIpQaWKKstX393XNCRCMJTrqPzikh36Y9RceqsUZLTtlFjFaVDgwZLUsrFk8J2uzZxkkfiy0TE359j2eN6hA==",
"license": "0BSD"
},
"node_modules/human-signals": {
@@ -7661,9 +10614,9 @@
"license": "BSD-3-Clause"
},
"node_modules/ignore": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7815,6 +10768,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-bun-module": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.1.0.tgz",
+ "integrity": "sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.6.3"
+ }
+ },
"node_modules/is-core-module": {
"name": "@nolyfill/is-core-module",
"version": "1.0.39",
@@ -8049,10 +11012,9 @@
"license": "MIT"
},
"node_modules/js-tokens": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz",
- "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==",
- "dev": true,
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"license": "MIT"
},
"node_modules/js-types": {
@@ -8078,9 +11040,9 @@
}
},
"node_modules/jsdoc-type-pratt-parser": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz",
- "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz",
+ "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8098,16 +11060,16 @@
}
},
"node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true,
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
"engines": {
- "node": ">=6"
+ "node": ">=4"
}
},
"node_modules/json-buffer": {
@@ -8250,15 +11212,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/known-css-properties": {
"version": "0.34.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz",
@@ -8266,6 +11219,22 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/langium": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz",
+ "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==",
+ "license": "MIT",
+ "dependencies": {
+ "chevrotain": "~11.0.3",
+ "chevrotain-allstar": "~0.3.0",
+ "vscode-languageserver": "~9.0.1",
+ "vscode-languageserver-textdocument": "~1.0.11",
+ "vscode-uri": "~3.0.8"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/language-subtag-registry": {
"version": "0.3.23",
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
@@ -8471,6 +11440,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/lodash.kebabcase": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
@@ -8539,6 +11515,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
"node_modules/loupe": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz",
@@ -8560,10 +11549,14 @@
}
},
"node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "license": "ISC"
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
},
"node_modules/magic-string": {
"version": "0.25.9",
@@ -8726,43 +11719,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/mdast-util-from-markdown": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz",
- "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "mdast-util-to-string": "^3.1.0",
- "micromark": "^3.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-decode-string": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "uvu": "^0.5.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
- "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/mdn-data": {
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
@@ -8806,479 +11762,46 @@
}
},
"node_modules/mermaid": {
- "version": "10.9.1",
- "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.1.tgz",
- "integrity": "sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==",
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.0.2.tgz",
+ "integrity": "sha512-KFM1o560odBHvXTTSx47ne/SE4aJKb2GbysHAVdQafIJtB6O3c0K4F+v3nC+zqS6CJhk7sXaagectNrTG+ARDw==",
"license": "MIT",
"dependencies": {
- "@braintree/sanitize-url": "^6.0.1",
- "@types/d3-scale": "^4.0.3",
- "@types/d3-scale-chromatic": "^3.0.0",
- "cytoscape": "^3.28.1",
+ "@braintree/sanitize-url": "^7.0.1",
+ "@mermaid-js/parser": "^0.2.0",
+ "cytoscape": "^3.29.2",
"cytoscape-cose-bilkent": "^4.1.0",
- "d3": "^7.4.0",
+ "d3": "^7.9.0",
"d3-sankey": "^0.12.3",
"dagre-d3-es": "7.0.10",
- "dayjs": "^1.11.7",
- "dompurify": "^3.0.5",
- "elkjs": "^0.9.0",
+ "dayjs": "^1.11.10",
+ "dompurify": "^3.0.11",
"katex": "^0.16.9",
- "khroma": "^2.0.0",
+ "khroma": "^2.1.0",
"lodash-es": "^4.17.21",
- "mdast-util-from-markdown": "^1.3.0",
- "non-layered-tidy-tree-layout": "^2.0.2",
- "stylis": "^4.1.3",
+ "marked": "^13.0.2",
+ "roughjs": "^4.6.6",
+ "stylis": "^4.3.1",
"ts-dedent": "^2.2.0",
- "uuid": "^9.0.0",
- "web-worker": "^1.2.0"
+ "uuid": "^9.0.1"
}
},
- "node_modules/micromark": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz",
- "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
+ "node_modules/mermaid/node_modules/marked": {
+ "version": "13.0.3",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz",
+ "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==",
"license": "MIT",
- "dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "micromark-core-commonmark": "^1.0.1",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-sanitize-uri": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 18"
}
},
- "node_modules/micromark-core-commonmark": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz",
- "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-factory-destination": "^1.0.0",
- "micromark-factory-label": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-factory-title": "^1.0.0",
- "micromark-factory-whitespace": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-classify-character": "^1.0.0",
- "micromark-util-html-tag-name": "^1.0.0",
- "micromark-util-normalize-identifier": "^1.0.0",
- "micromark-util-resolve-all": "^1.0.0",
- "micromark-util-subtokenize": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.1",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/micromark-factory-destination": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz",
- "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-factory-label": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz",
- "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/micromark-factory-space": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz",
- "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-factory-title": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz",
- "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-factory-whitespace": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz",
- "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-character": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz",
- "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-chunked": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz",
- "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-classify-character": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz",
- "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-combine-extensions": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz",
- "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-decode-numeric-character-reference": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz",
- "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-decode-string": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz",
- "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-decode-numeric-character-reference": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-encode": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz",
- "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-html-tag-name": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz",
- "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-normalize-identifier": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz",
- "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-resolve-all": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz",
- "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^1.0.0"
- }
- },
- "node_modules/micromark-util-sanitize-uri": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz",
- "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^1.0.0",
- "micromark-util-encode": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
- }
- },
- "node_modules/micromark-util-subtokenize": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz",
- "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-chunked": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/micromark-util-symbol": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz",
- "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-types": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
- "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
"node_modules/micromatch": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
- "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"license": "MIT",
"dependencies": {
"braces": "^3.0.3",
@@ -9333,9 +11856,9 @@
}
},
"node_modules/mini-css-extract-plugin": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz",
- "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==",
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.1.tgz",
+ "integrity": "sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==",
"license": "MIT",
"dependencies": {
"schema-utils": "^4.0.0",
@@ -9387,9 +11910,9 @@
}
},
"node_modules/monaco-editor": {
- "version": "0.50.0",
- "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.50.0.tgz",
- "integrity": "sha512-8CclLCmrRRh+sul7C08BmPBP3P8wVWfBHomsTcndxg5NRCEPfu/mc2AGU8k37ajjDVXcXFc12ORAMUkmk+lkFA==",
+ "version": "0.51.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.51.0.tgz",
+ "integrity": "sha512-xaGwVV1fq343cM7aOYB6lVE4Ugf0UyimdD/x5PWcWBMKENwectaEu77FAN7c5sFiyumqeJdX1RPTh1ocioyDjw==",
"license": "MIT"
},
"node_modules/monaco-editor-webpack-plugin": {
@@ -9411,19 +11934,11 @@
"integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==",
"license": "BSD-3-Clause"
},
- "node_modules/mri": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
- "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true,
"license": "MIT"
},
"node_modules/mz": {
@@ -9552,12 +12067,6 @@
"node": ">=12.4.0"
}
},
- "node_modules/non-layered-tidy-tree-layout": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz",
- "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==",
- "license": "MIT"
- },
"node_modules/normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -9674,6 +12183,20 @@
"node": ">=12.4.0"
}
},
+ "node_modules/object.entries": {
+ "name": "@nolyfill/object.entries",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/object.entries/-/object.entries-1.0.28.tgz",
+ "integrity": "sha512-2t4PayP6Sx7Z20HJjcf8XhhPBO8/H31bwMdP0yEdDcxSXeEhl90Ibb9E3XKzSlcsGf43nXyfabHNrnfvdWE4Ng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nolyfill/shared": "1.0.28"
+ },
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
"node_modules/object.fromentries": {
"name": "@nolyfill/object.fromentries",
"version": "1.0.28",
@@ -9843,6 +12366,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/path-data-parser": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz",
+ "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==",
+ "license": "MIT"
+ },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -9892,6 +12421,12 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -10026,13 +12561,13 @@
}
},
"node_modules/playwright": {
- "version": "1.45.3",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.3.tgz",
- "integrity": "sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==",
+ "version": "1.46.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.46.1.tgz",
+ "integrity": "sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "playwright-core": "1.45.3"
+ "playwright-core": "1.46.1"
},
"bin": {
"playwright": "cli.js"
@@ -10045,9 +12580,9 @@
}
},
"node_modules/playwright-core": {
- "version": "1.45.3",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.3.tgz",
- "integrity": "sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==",
+ "version": "1.46.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.1.tgz",
+ "integrity": "sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -10067,6 +12602,22 @@
"node": ">=4"
}
},
+ "node_modules/points-on-curve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz",
+ "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==",
+ "license": "MIT"
+ },
+ "node_modules/points-on-path": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz",
+ "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==",
+ "license": "MIT",
+ "dependencies": {
+ "path-data-parser": "0.1.0",
+ "points-on-curve": "0.2.0"
+ }
+ },
"node_modules/pony-cause": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-1.1.1.tgz",
@@ -10078,9 +12629,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.40",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz",
- "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==",
+ "version": "8.4.41",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz",
+ "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==",
"funding": [
{
"type": "opencollective",
@@ -10121,6 +12672,13 @@
"node": "^12 || >=14"
}
},
+ "node_modules/postcss-html/node_modules/js-tokens": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz",
+ "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/postcss-import": {
"version": "15.1.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
@@ -10320,9 +12878,9 @@
}
},
"node_modules/postcss-nesting": {
- "version": "12.1.5",
- "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.5.tgz",
- "integrity": "sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==",
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.0.tgz",
+ "integrity": "sha512-TCGQOizyqvEkdeTPM+t6NYwJ3EJszYE/8t8ILxw/YoeUvz2rz7aM8XTAmBWh9/DJjfaaabL88fWrsVHSPF2zgA==",
"funding": [
{
"type": "github",
@@ -10335,21 +12893,21 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/selector-resolve-nested": "^1.1.0",
- "@csstools/selector-specificity": "^3.1.1",
+ "@csstools/selector-resolve-nested": "^2.0.0",
+ "@csstools/selector-specificity": "^4.0.0",
"postcss-selector-parser": "^6.1.0"
},
"engines": {
- "node": "^14 || ^16 || >=18"
+ "node": ">=18"
},
"peerDependencies": {
"postcss": "^8.4"
}
},
"node_modules/postcss-resolve-nested-selector": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.4.tgz",
- "integrity": "sha512-R6vHqZWgVnTAPq0C+xjyHfEZqfIYboCBVSy24MjxEDm+tIh1BU4O6o7DP7AA7kHzf136d+Qc5duI4tlpHjixDw==",
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz",
+ "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==",
"dev": true,
"license": "MIT"
},
@@ -10398,9 +12956,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz",
- "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -10482,6 +13040,18 @@
"dev": true,
"license": "Unlicense"
},
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
"node_modules/proto-props": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/proto-props/-/proto-props-2.0.0.tgz",
@@ -10540,6 +13110,13 @@
"safe-buffer": "^5.1.0"
}
},
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -10696,12 +13273,42 @@
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/regenerator-runtime": {
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"license": "MIT"
},
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
"node_modules/regexp-ast-analysis": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.7.1.tgz",
@@ -10726,6 +13333,46 @@
"regexp-tree": "bin/regexp-tree"
}
},
+ "node_modules/regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regexpu-core/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/regexpu-core/node_modules/regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "jsesc": "~0.5.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
"node_modules/regjsparser": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz",
@@ -10881,6 +13528,18 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/roughjs": {
+ "version": "4.6.6",
+ "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz",
+ "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==",
+ "license": "MIT",
+ "dependencies": {
+ "hachure-fill": "^0.5.2",
+ "path-data-parser": "^0.1.0",
+ "points-on-curve": "^0.2.0",
+ "points-on-path": "^0.2.1"
+ }
+ },
"node_modules/run-con": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz",
@@ -10926,18 +13585,6 @@
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
"license": "BSD-3-Clause"
},
- "node_modules/sade": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
- "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
- "license": "MIT",
- "dependencies": {
- "mri": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -11169,9 +13816,9 @@
}
},
"node_modules/solid-js": {
- "version": "1.8.19",
- "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.19.tgz",
- "integrity": "sha512-h8z/TvTQYsf894LM9Iau/ZW2iAKrCzAWDwjPhMcXnonmW1OIIihc28wp82b1wwei1p81fH5+gnfNOe8RzLbDRQ==",
+ "version": "1.8.22",
+ "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.22.tgz",
+ "integrity": "sha512-VBzN5j+9Y4rqIKEnK301aBk+S7fvFSTs9ljg+YEdFxjNjH0hkjXPiQRcws9tE5fUzMznSS6KToL5hwMfHDgpLA==",
"license": "MIT",
"dependencies": {
"csstype": "^3.1.0",
@@ -11287,9 +13934,9 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.18",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz",
- "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==",
+ "version": "3.0.20",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
+ "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
"license": "CC0-1.0"
},
"node_modules/spdx-ranges": {
@@ -11389,6 +14036,34 @@
"node": ">=12.4.0"
}
},
+ "node_modules/string.prototype.matchall": {
+ "name": "@nolyfill/string.prototype.matchall",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/string.prototype.matchall/-/string.prototype.matchall-1.0.28.tgz",
+ "integrity": "sha512-k74WKi7WmtRV847QWlY1ndg6XU1loeAyO9+NVoXrd7RL5lEjBtovp4CPZkifipBMBrZrZu2WwrQqkGrvLNZYpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nolyfill/shared": "1.0.28"
+ },
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
+ "node_modules/string.prototype.repeat": {
+ "name": "@nolyfill/string.prototype.repeat",
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@nolyfill/string.prototype.repeat/-/string.prototype.repeat-1.0.28.tgz",
+ "integrity": "sha512-8ww39xe0r4qki8HwAaXTRamO0KpkHHyYoG+PCOFGaBZ8rrlAKcGQcJhu5aB2axauggqsnUfU25j5snEC0aJvYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nolyfill/shared": "1.0.28"
+ },
+ "engines": {
+ "node": ">=12.4.0"
+ }
+ },
"node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -11577,6 +14252,96 @@
"stylelint": ">=16"
}
},
+ "node_modules/stylelint/node_modules/@csstools/css-parser-algorithms": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz",
+ "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^2.4.1"
+ }
+ },
+ "node_modules/stylelint/node_modules/@csstools/css-tokenizer": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz",
+ "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ }
+ },
+ "node_modules/stylelint/node_modules/@csstools/media-query-list-parser": {
+ "version": "2.1.13",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz",
+ "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^2.7.1",
+ "@csstools/css-tokenizer": "^2.4.1"
+ }
+ },
+ "node_modules/stylelint/node_modules/@csstools/selector-specificity": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz",
+ "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^6.0.13"
+ }
+ },
"node_modules/stylelint/node_modules/ansi-regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
@@ -11598,9 +14363,9 @@
"license": "MIT"
},
"node_modules/stylelint/node_modules/file-entry-cache": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz",
- "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz",
+ "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11678,9 +14443,9 @@
}
},
"node_modules/stylis": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz",
- "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz",
+ "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==",
"license": "MIT"
},
"node_modules/stylus": {
@@ -11799,9 +14564,9 @@
}
},
"node_modules/supports-hyperlinks": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz",
- "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz",
+ "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11810,6 +14575,9 @@
},
"engines": {
"node": ">=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/supports-preserve-symlinks-flag": {
@@ -11931,9 +14699,9 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.7.tgz",
- "integrity": "sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz",
+ "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==",
"license": "MIT",
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
@@ -11992,9 +14760,9 @@
"license": "ISC"
},
"node_modules/terser": {
- "version": "5.31.3",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz",
- "integrity": "sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==",
+ "version": "5.31.6",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz",
+ "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==",
"license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
@@ -12149,9 +14917,9 @@
"license": "MIT"
},
"node_modules/tinypool": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz",
- "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz",
+ "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12281,9 +15049,9 @@
}
},
"node_modules/tslib": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
"dev": true,
"license": "0BSD"
},
@@ -12301,9 +15069,9 @@
}
},
"node_modules/type-fest": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.23.0.tgz",
- "integrity": "sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==",
+ "version": "4.26.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz",
+ "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -12346,22 +15114,53 @@
"license": "ISC"
},
"node_modules/undici-types": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz",
- "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==",
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"license": "MIT"
},
- "node_modules/unist-util-stringify-position": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
- "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@types/unist": "^2.0.0"
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/universalify": {
@@ -12405,9 +15204,9 @@
}
},
"node_modules/updates": {
- "version": "16.3.7",
- "resolved": "https://registry.npmjs.org/updates/-/updates-16.3.7.tgz",
- "integrity": "sha512-TTehJxoTMb/tdFDctvroLhFTA/r93Ow1OC87GAPtQ5NGp4/YwYsPqivnQqkBAe1nV3UMJWBoKUMZZKC4yoTrsw==",
+ "version": "16.4.0",
+ "resolved": "https://registry.npmjs.org/updates/-/updates-16.4.0.tgz",
+ "integrity": "sha512-HtkG1MgXbQ5gpqu5eX4qVOwclMHbygiTYjSkFMVDEXuwb5clwkDh75xRb11PzRX9ozVOfcVUHl7lpBNDPquXrw==",
"dev": true,
"license": "BSD-2-Clause",
"bin": {
@@ -12462,24 +15261,6 @@
"uuid": "dist/bin/uuid"
}
},
- "node_modules/uvu": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
- "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
- "license": "MIT",
- "dependencies": {
- "dequal": "^2.0.0",
- "diff": "^5.0.0",
- "kleur": "^4.0.3",
- "sade": "^1.7.3"
- },
- "bin": {
- "uvu": "bin.js"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -12508,15 +15289,15 @@
"license": "MIT"
},
"node_modules/vite": {
- "version": "5.3.5",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz",
- "integrity": "sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==",
+ "version": "5.4.2",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz",
+ "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==",
"dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "^0.21.3",
- "postcss": "^8.4.39",
- "rollup": "^4.13.0"
+ "postcss": "^8.4.41",
+ "rollup": "^4.20.0"
},
"bin": {
"vite": "bin/vite.js"
@@ -12535,6 +15316,7 @@
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
+ "sass-embedded": "*",
"stylus": "*",
"sugarss": "*",
"terser": "^5.4.0"
@@ -12552,6 +15334,9 @@
"sass": {
"optional": true
},
+ "sass-embedded": {
+ "optional": true
+ },
"stylus": {
"optional": true
},
@@ -12616,9 +15401,9 @@
}
},
"node_modules/vite/node_modules/rollup": {
- "version": "4.19.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.2.tgz",
- "integrity": "sha512-6/jgnN1svF9PjNYJ4ya3l+cqutg49vOZ4rVgsDKxdl+5gpGPnByFXWGyfH9YGx9i3nfBwSu1Iyu6vGwFFA0BdQ==",
+ "version": "4.21.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.1.tgz",
+ "integrity": "sha512-ZnYyKvscThhgd3M5+Qt3pmhO4jIRR5RGzaSovB6Q7rGNrK5cUncrtLmcTTJVSdcKXyZjW8X8MB0JMSuH9bcAJg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12632,22 +15417,22 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.19.2",
- "@rollup/rollup-android-arm64": "4.19.2",
- "@rollup/rollup-darwin-arm64": "4.19.2",
- "@rollup/rollup-darwin-x64": "4.19.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.19.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.19.2",
- "@rollup/rollup-linux-arm64-gnu": "4.19.2",
- "@rollup/rollup-linux-arm64-musl": "4.19.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.19.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.19.2",
- "@rollup/rollup-linux-s390x-gnu": "4.19.2",
- "@rollup/rollup-linux-x64-gnu": "4.19.2",
- "@rollup/rollup-linux-x64-musl": "4.19.2",
- "@rollup/rollup-win32-arm64-msvc": "4.19.2",
- "@rollup/rollup-win32-ia32-msvc": "4.19.2",
- "@rollup/rollup-win32-x64-msvc": "4.19.2",
+ "@rollup/rollup-android-arm-eabi": "4.21.1",
+ "@rollup/rollup-android-arm64": "4.21.1",
+ "@rollup/rollup-darwin-arm64": "4.21.1",
+ "@rollup/rollup-darwin-x64": "4.21.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.21.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.21.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.21.1",
+ "@rollup/rollup-linux-arm64-musl": "4.21.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.21.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.21.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.21.1",
+ "@rollup/rollup-linux-x64-gnu": "4.21.1",
+ "@rollup/rollup-linux-x64-musl": "4.21.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.21.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.21.1",
+ "@rollup/rollup-win32-x64-msvc": "4.21.1",
"fsevents": "~2.3.2"
}
},
@@ -12726,17 +15511,66 @@
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
- "node_modules/vue": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.35.tgz",
- "integrity": "sha512-+fl/GLmI4GPileHftVlCdB7fUL4aziPcqTudpTGXCT8s+iZWuOCeNEB5haX6Uz2IpRrbEXOgIFbe+XciCuGbNQ==",
+ "node_modules/vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vscode-languageserver": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz",
+ "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-dom": "3.4.35",
- "@vue/compiler-sfc": "3.4.35",
- "@vue/runtime-dom": "3.4.35",
- "@vue/server-renderer": "3.4.35",
- "@vue/shared": "3.4.35"
+ "vscode-languageserver-protocol": "3.17.5"
+ },
+ "bin": {
+ "installServerIntoExtension": "bin/installServerIntoExtension"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-jsonrpc": "8.2.0",
+ "vscode-languageserver-types": "3.17.5"
+ }
+ },
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
+ "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
+ "license": "MIT"
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
+ "license": "MIT"
+ },
+ "node_modules/vscode-uri": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
+ "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
+ "license": "MIT"
+ },
+ "node_modules/vue": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz",
+ "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.38",
+ "@vue/compiler-sfc": "3.4.38",
+ "@vue/runtime-dom": "3.4.38",
+ "@vue/server-renderer": "3.4.38",
+ "@vue/shared": "3.4.38"
},
"peerDependencies": {
"typescript": "*"
@@ -12845,9 +15679,9 @@
}
},
"node_modules/watchpack": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",
- "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz",
+ "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==",
"license": "MIT",
"dependencies": {
"glob-to-regexp": "^0.4.1",
@@ -12857,12 +15691,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/web-worker": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz",
- "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==",
- "license": "Apache-2.0"
- },
"node_modules/webidl-conversions": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
@@ -12874,12 +15702,11 @@
}
},
"node_modules/webpack": {
- "version": "5.93.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz",
- "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==",
+ "version": "5.94.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
+ "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"license": "MIT",
"dependencies": {
- "@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
"@webassemblyjs/ast": "^1.12.1",
"@webassemblyjs/wasm-edit": "^1.12.1",
@@ -12888,7 +15715,7 @@
"acorn-import-attributes": "^1.9.5",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.17.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
@@ -13218,9 +16045,9 @@
}
},
"node_modules/wrap-ansi/node_modules/emoji-regex": {
- "version": "10.3.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz",
- "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
"license": "MIT"
},
"node_modules/wrap-ansi/node_modules/string-width": {
@@ -13295,6 +16122,13 @@
"node": ">=10"
}
},
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/yaml": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz",
diff --git a/package.json b/package.json
index d1a624f116..d188e99a30 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,7 @@
"@citation-js/plugin-csl": "0.7.14",
"@citation-js/plugin-software-formats": "0.6.1",
"@github/markdown-toolbar-element": "2.2.3",
- "@github/relative-time-element": "4.4.2",
+ "@github/relative-time-element": "4.4.3",
"@github/text-expander-element": "2.7.1",
"@mcaptcha/vanilla-glue": "0.1.0-alpha-3",
"@primer/octicons": "19.11.0",
@@ -17,34 +17,34 @@
"add-asset-webpack-plugin": "3.0.0",
"ansi_up": "6.0.2",
"asciinema-player": "3.8.0",
- "chart.js": "4.4.3",
+ "chart.js": "4.4.4",
"chartjs-adapter-dayjs-4": "1.0.4",
"chartjs-plugin-zoom": "2.0.1",
"clippie": "4.1.3",
"css-loader": "7.1.2",
- "dayjs": "1.11.12",
+ "dayjs": "1.11.13",
"dropzone": "6.0.0-beta.2",
"easymde": "2.18.0",
"esbuild-loader": "4.2.2",
"escape-goat": "4.0.0",
"fast-glob": "3.3.2",
- "htmx.org": "2.0.0",
+ "htmx.org": "2.0.2",
"idiomorph": "0.3.0",
"jquery": "3.7.1",
"katex": "0.16.11",
"license-checker-webpack-plugin": "0.2.1",
- "mermaid": "10.9.1",
- "mini-css-extract-plugin": "2.9.0",
+ "mermaid": "11.0.2",
+ "mini-css-extract-plugin": "2.9.1",
"minimatch": "10.0.1",
- "monaco-editor": "0.50.0",
+ "monaco-editor": "0.51.0",
"monaco-editor-webpack-plugin": "7.1.0",
"pdfobject": "2.3.0",
- "postcss": "8.4.40",
+ "postcss": "8.4.41",
"postcss-loader": "8.1.1",
- "postcss-nesting": "12.1.5",
+ "postcss-nesting": "13.0.0",
"sortablejs": "1.15.2",
"swagger-ui-dist": "5.17.14",
- "tailwindcss": "3.4.7",
+ "tailwindcss": "3.4.10",
"temporal-polyfill": "0.2.5",
"throttle-debounce": "5.0.2",
"tinycolor2": "1.6.0",
@@ -54,20 +54,20 @@
"typescript": "5.5.4",
"uint8-to-base64": "0.2.0",
"vanilla-colorful": "0.7.2",
- "vue": "3.4.35",
+ "vue": "3.4.38",
"vue-bar-graph": "2.1.0",
"vue-chartjs": "5.3.1",
"vue-loader": "17.4.2",
- "webpack": "5.93.0",
+ "webpack": "5.94.0",
"webpack-cli": "5.1.4",
"wrap-ansi": "9.0.0"
},
"devDependencies": {
- "@eslint-community/eslint-plugin-eslint-comments": "4.3.0",
- "@playwright/test": "1.45.3",
+ "@eslint-community/eslint-plugin-eslint-comments": "4.4.0",
+ "@playwright/test": "1.46.1",
"@stoplight/spectral-cli": "6.11.1",
- "@stylistic/eslint-plugin-js": "2.6.1",
- "@stylistic/stylelint-plugin": "3.0.0",
+ "@stylistic/eslint-plugin-js": "2.6.5",
+ "@stylistic/stylelint-plugin": "3.0.1",
"@types/dropzone": "5.7.8",
"@types/jquery": "3.5.30",
"@types/katex": "0.16.7",
@@ -78,11 +78,11 @@
"@types/throttle-debounce": "5.0.2",
"@types/tinycolor2": "1.4.6",
"@types/toastify-js": "1.12.3",
- "@typescript-eslint/eslint-plugin": "8.0.0",
- "@typescript-eslint/parser": "8.0.0",
+ "@typescript-eslint/eslint-plugin": "8.3.0",
+ "@typescript-eslint/parser": "8.3.0",
"@vitejs/plugin-vue": "5.1.2",
"eslint": "8.57.0",
- "eslint-import-resolver-typescript": "3.6.1",
+ "eslint-import-resolver-typescript": "3.6.3",
"eslint-plugin-array-func": "4.0.0",
"eslint-plugin-deprecation": "3.0.0",
"eslint-plugin-github": "5.0.1",
@@ -91,14 +91,14 @@
"eslint-plugin-no-use-extend-native": "0.5.0",
"eslint-plugin-playwright": "1.6.2",
"eslint-plugin-regexp": "2.6.0",
- "eslint-plugin-sonarjs": "1.0.4",
+ "eslint-plugin-sonarjs": "2.0.1",
"eslint-plugin-unicorn": "55.0.0",
"eslint-plugin-vitest": "0.4.1",
"eslint-plugin-vitest-globals": "1.5.0",
"eslint-plugin-vue": "9.27.0",
"eslint-plugin-vue-scoped-css": "2.8.1",
- "eslint-plugin-wc": "2.1.0",
- "happy-dom": "14.12.3",
+ "eslint-plugin-wc": "2.1.1",
+ "happy-dom": "15.3.1",
"markdownlint-cli": "0.41.0",
"nolyfill": "1.0.39",
"postcss-html": "1.7.0",
@@ -107,8 +107,8 @@
"stylelint-declaration-strict-value": "1.10.6",
"stylelint-value-no-unknown-custom-properties": "6.0.1",
"svgo": "3.3.2",
- "type-fest": "4.23.0",
- "updates": "16.3.7",
+ "type-fest": "4.26.0",
+ "updates": "16.4.0",
"vite-string-plugin": "1.3.4",
"vitest": "2.0.5"
},
@@ -131,6 +131,10 @@
"object.values": "npm:@nolyfill/object.values@^1",
"safe-regex-test": "npm:@nolyfill/safe-regex-test@^1",
"string.prototype.includes": "npm:@nolyfill/string.prototype.includes@^1",
- "is-core-module": "npm:@nolyfill/is-core-module@^1"
+ "is-core-module": "npm:@nolyfill/is-core-module@^1",
+ "array.prototype.findlast": "npm:@nolyfill/array.prototype.findlast@^1",
+ "array.prototype.tosorted": "npm:@nolyfill/array.prototype.tosorted@^1",
+ "string.prototype.matchall": "npm:@nolyfill/string.prototype.matchall@^1",
+ "string.prototype.repeat": "npm:@nolyfill/string.prototype.repeat@^1"
}
}
diff --git a/poetry.lock b/poetry.lock
index 74536495d2..48ac8d22de 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -42,13 +42,13 @@ six = ">=1.13.0"
[[package]]
name = "djlint"
-version = "1.34.1"
+version = "1.34.2"
description = "HTML Template Linter and Formatter"
optional = false
-python-versions = ">=3.8.0,<4.0.0"
+python-versions = "<4.0.0,>=3.8.0"
files = [
- {file = "djlint-1.34.1-py3-none-any.whl", hash = "sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8"},
- {file = "djlint-1.34.1.tar.gz", hash = "sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346"},
+ {file = "djlint-1.34.2-py3-none-any.whl", hash = "sha256:4825389e395eb77371857c77f547fa5ebd1a644b1bc4fe9fed19d49a2786b9e5"},
+ {file = "djlint-1.34.2.tar.gz", hash = "sha256:db9b2e59203a452b83532499bc243c749279090b905cc1f657973f78e7a31ddd"},
]
[package.dependencies]
@@ -357,4 +357,4 @@ dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"]
[metadata]
lock-version = "2.0"
python-versions = "^3.10"
-content-hash = "cd2ff218e9f27a464dfbc8ec2387824a90f4360e04c3f2e58cc375796b7df33a"
+content-hash = "af89bce0c442463621b6e536f9b94c31e188e1662c2caa84372c0858a2ee7d5c"
diff --git a/public/assets/img/svg/gitea-codecommit.svg b/public/assets/img/svg/gitea-codecommit.svg
new file mode 100644
index 0000000000..b44847d9e1
--- /dev/null
+++ b/public/assets/img/svg/gitea-codecommit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 0724a8e24a..ff2c233cfb 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -5,7 +5,7 @@ package-mode = false
python = "^3.10"
[tool.poetry.group.dev.dependencies]
-djlint = "1.34.1"
+djlint = "1.34.2"
yamllint = "1.35.1"
[tool.djlint]
diff --git a/routers/api/actions/artifacts_chunks.go b/routers/api/actions/artifacts_chunks.go
index 3d1a3891d9..cf48da12aa 100644
--- a/routers/api/actions/artifacts_chunks.go
+++ b/routers/api/actions/artifacts_chunks.go
@@ -123,6 +123,54 @@ func listChunksByRunID(st storage.ObjectStorage, runID int64) (map[int64][]*chun
return chunksMap, nil
}
+func listChunksByRunIDV4(st storage.ObjectStorage, runID, artifactID int64, blist *BlockList) ([]*chunkFileItem, error) {
+ storageDir := fmt.Sprintf("tmpv4%d", runID)
+ var chunks []*chunkFileItem
+ chunkMap := map[string]*chunkFileItem{}
+ dummy := &chunkFileItem{}
+ for _, name := range blist.Latest {
+ chunkMap[name] = dummy
+ }
+ if err := st.IterateObjects(storageDir, func(fpath string, obj storage.Object) error {
+ baseName := filepath.Base(fpath)
+ if !strings.HasPrefix(baseName, "block-") {
+ return nil
+ }
+ // when read chunks from storage, it only contains storage dir and basename,
+ // no matter the subdirectory setting in storage config
+ item := chunkFileItem{Path: storageDir + "/" + baseName, ArtifactID: artifactID}
+ var size int64
+ var b64chunkName string
+ if _, err := fmt.Sscanf(baseName, "block-%d-%d-%s", &item.RunID, &size, &b64chunkName); err != nil {
+ return fmt.Errorf("parse content range error: %v", err)
+ }
+ rchunkName, err := base64.URLEncoding.DecodeString(b64chunkName)
+ if err != nil {
+ return fmt.Errorf("failed to parse chunkName: %v", err)
+ }
+ chunkName := string(rchunkName)
+ item.End = item.Start + size - 1
+ if _, ok := chunkMap[chunkName]; ok {
+ chunkMap[chunkName] = &item
+ }
+ return nil
+ }); err != nil {
+ return nil, err
+ }
+ for i, name := range blist.Latest {
+ chunk, ok := chunkMap[name]
+ if !ok || chunk.Path == "" {
+ return nil, fmt.Errorf("missing Chunk (%d/%d): %s", i, len(blist.Latest), name)
+ }
+ chunks = append(chunks, chunk)
+ if i > 0 {
+ chunk.Start = chunkMap[blist.Latest[i-1]].End + 1
+ chunk.End += chunk.Start
+ }
+ }
+ return chunks, nil
+}
+
func mergeChunksForRun(ctx *ArtifactContext, st storage.ObjectStorage, runID int64, artifactName string) error {
// read all db artifacts by name
artifacts, err := db.Find[actions.ActionArtifact](ctx, actions.FindArtifactsOptions{
@@ -230,7 +278,7 @@ func mergeChunksForArtifact(ctx *ArtifactContext, chunks []*chunkFileItem, st st
rawChecksum := hash.Sum(nil)
actualChecksum := hex.EncodeToString(rawChecksum)
if !strings.HasSuffix(checksum, actualChecksum) {
- return fmt.Errorf("update artifact error checksum is invalid")
+ return fmt.Errorf("update artifact error checksum is invalid %v vs %v", checksum, actualChecksum)
}
}
diff --git a/routers/api/actions/artifactsv4.go b/routers/api/actions/artifactsv4.go
index e78ed7a0c2..9e463cceeb 100644
--- a/routers/api/actions/artifactsv4.go
+++ b/routers/api/actions/artifactsv4.go
@@ -24,8 +24,15 @@ package actions
// PUT: http://localhost:3000/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=mO7y35r4GyjN7fwg0DTv3-Fv1NDXD84KLEgLpoPOtDI=&expires=2024-01-23+21%3A48%3A37.20833956+%2B0100+CET&artifactName=test&taskID=75&comp=block
// 1.3. Continue Upload Zip Content to Blobstorage (unauthenticated request), repeat until everything is uploaded
// PUT: http://localhost:3000/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=mO7y35r4GyjN7fwg0DTv3-Fv1NDXD84KLEgLpoPOtDI=&expires=2024-01-23+21%3A48%3A37.20833956+%2B0100+CET&artifactName=test&taskID=75&comp=appendBlock
-// 1.4. Unknown xml payload to Blobstorage (unauthenticated request), ignored for now
+// 1.4. BlockList xml payload to Blobstorage (unauthenticated request)
+// Files of about 800MB are parallel in parallel and / or out of order, this file is needed to enshure the correct order
// PUT: http://localhost:3000/twirp/github.actions.results.api.v1.ArtifactService/UploadArtifact?sig=mO7y35r4GyjN7fwg0DTv3-Fv1NDXD84KLEgLpoPOtDI=&expires=2024-01-23+21%3A48%3A37.20833956+%2B0100+CET&artifactName=test&taskID=75&comp=blockList
+// Request
+//
+// {{ctx.Locale.Tr "admin.auths.tip.oauth2_provider"}}
diff --git a/templates/home.tmpl b/templates/home.tmpl
index e6fd4ef020..116dc487dc 100644
--- a/templates/home.tmpl
+++ b/templates/home.tmpl
@@ -17,7 +17,7 @@
{{svg "octicon-flame"}} {{ctx.Locale.Tr "startpage.install"}}