diff --git a/netlify.toml b/netlify.toml index faaee64b..27b1d3ef 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,3 +1,6 @@ +[build.environment] + NODE_VERSION = "20.12.0" + [build] command = "npm run build" publish = "out" diff --git a/package.json b/package.json index 1c239b61..17275b66 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,9 @@ { "name": "gateway-edit", - "version": "2.3.0", + "version": "2.4.0", + "engines": { + "node": ">=18.18.0" + }, "scripts": { "dev": "bash -c \"source ./scripts/set-env.sh && next\"", "build": "bash -c \"source ./scripts/set-env.sh && next build\"", @@ -35,7 +38,7 @@ "@mui/styles": "^5.8.7", "@sendgrid/mail": "^7.4.2", "autoprefixer": "^10.1.0", - "bible-reference-rcl": "1.3.0", + "bible-reference-rcl": "1.4.0", "core-js": "^3.8.3", "deep-equal": "^2.0.5", "gitea-react-toolkit": "2.4.0", @@ -55,7 +58,7 @@ "single-scripture-rcl": "3.4.19", "tailwindcss": "^2.0.4", "tc-ui-toolkit": "5.3.3", - "translation-helps-rcl": "3.5.16", + "translation-helps-rcl": "3.6.0", "use-deep-compare-effect": "^1.3.1", "word-aligner": "^1.0.0", "word-aligner-rcl": "1.0.4" @@ -63,6 +66,7 @@ "devDependencies": { "@cypress/code-coverage": "^3.9.11", "@cypress/instrument-cra": "^1.4.0", + "@next/bundle-analyzer": "^14.2.3", "@swc/core": "^1.4.17", "@swc/jest": "^0.2.36", "@testing-library/jest-dom": "^5.14.1", diff --git a/src/components/AccountSetup.js b/src/components/AccountSetup.js index ae0454ce..a7bfdc14 100644 --- a/src/components/AccountSetup.js +++ b/src/components/AccountSetup.js @@ -1,7 +1,7 @@ import React, { useContext } from 'react' import PropTypes from 'prop-types' import Button from '@material-ui/core/Button' -import Paper from 'translation-helps-rcl/dist/components/Paper' +import { Paper } from 'translation-helps-rcl' import SaveIcon from '@material-ui/icons/Save' import { StoreContext } from '@context/StoreContext' import TranslationSettings from '@components/TranslationSettings' diff --git a/src/components/ErrorPopUp.js b/src/components/ErrorPopUp.js index 56c3e04d..e588f44e 100644 --- a/src/components/ErrorPopUp.js +++ b/src/components/ErrorPopUp.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' import Button from '@material-ui/core/Button' -import DraggableCard from 'translation-helps-rcl/dist/components/DraggableCard' +import { DraggableCard } from 'translation-helps-rcl' import { CANCEL } from '@common/constants' export default function ErrorPopup( diff --git a/src/components/Onboarding.js b/src/components/Onboarding.js index 334ef719..428921a9 100644 --- a/src/components/Onboarding.js +++ b/src/components/Onboarding.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' import dynamic from 'next/dynamic' -import Paper from 'translation-helps-rcl/dist/components/Paper' +import { Paper } from 'translation-helps-rcl' import CircularProgress from '@components/CircularProgress' const AccountSetup = dynamic(() => import('@components/AccountSetup'), { diff --git a/src/components/TranslationSettings.js b/src/components/TranslationSettings.js index e5abcd3a..c600f6e1 100644 --- a/src/components/TranslationSettings.js +++ b/src/components/TranslationSettings.js @@ -1,6 +1,6 @@ import React, { useContext, useEffect, useState } from 'react' import PropTypes from 'prop-types' -import Paper from 'translation-helps-rcl/dist/components/Paper' +import { Paper } from 'translation-helps-rcl' import FormControl from '@material-ui/core/FormControl' import { makeStyles } from '@material-ui/core/styles' import InputLabel from '@material-ui/core/InputLabel' diff --git a/yarn.lock b/yarn.lock index 67553a54..cac46d95 100644 --- a/yarn.lock +++ b/yarn.lock @@ -434,6 +434,11 @@ debug "^3.1.0" lodash.once "^4.1.1" +"@discoveryjs/json-ext@0.5.7": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + "@emotion/babel-plugin@^11.10.6": version "11.10.6" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz#a68ee4b019d661d6f37dec4b8903255766925ead" @@ -1466,6 +1471,13 @@ prop-types "^15.8.1" react-transition-group "^4.4.5" +"@next/bundle-analyzer@^14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-14.2.3.tgz#dfa43586983d3fffdeb5f3c50f2c65ab1c51f184" + integrity sha512-Z88hbbngMs7njZKI8kTJIlpdLKYfMSLwnsqYe54AP4aLmgL70/Ynx/J201DQ+q2Lr6FxFw1uCeLGImDrHOl2ZA== + dependencies: + webpack-bundle-analyzer "4.10.1" + "@next/env@12.3.4": version "12.3.4" resolved "https://registry.yarnpkg.com/@next/env/-/env-12.3.4.tgz#c787837d36fcad75d72ff8df6b57482027d64a47" @@ -1564,6 +1576,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@polka/url@^1.0.0-next.24": + version "1.0.0-next.25" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" + integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== + "@popperjs/core@^2.11.6": version "2.11.6" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" @@ -2187,6 +2204,11 @@ acorn-walk@^7.0.0, acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn-walk@^8.0.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + acorn@^5.5.3: version "5.7.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" @@ -2202,6 +2224,11 @@ acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.0.4: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + acorn@^8.2.4: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" @@ -2888,10 +2915,10 @@ bible-reference-range@^1.1.1: resolved "https://registry.yarnpkg.com/bible-reference-range/-/bible-reference-range-1.1.1.tgz#9438bb870f853439fa92afe61a04fab53922ab91" integrity sha512-rEHpdcTrlJcLP/KuSl5hJjPND3EBD67m81hvDrSbZ48xyE1r6V7qgxUacDY2ZfT6nu1pBTkc6JizH9a+m3LMRQ== -bible-reference-rcl@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bible-reference-rcl/-/bible-reference-rcl-1.3.0.tgz#e6499291da42267320a9a0cf29883af17783284c" - integrity sha512-33eMjbHm2p+dyhXhHQNNkcruaRFom0kiDvhxScrD7+WSYqDOHpdUlr66ch0jhX0Ds1cByyv+yg5+6kJq9EYGww== +bible-reference-rcl@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/bible-reference-rcl/-/bible-reference-rcl-1.4.0.tgz#6e97b87ca8f04307067949d602dad61d35214ac5" + integrity sha512-VDpz9uXhXTs7EfkLgtKdPaA/K5IKJadKjTKx3U0hV7m8mjL8NI6eK3P5PU+w/RJyVmnAhZg/QIoUEWnlRxWduA== dependencies: "@emotion/react" "^11.11.0" "@emotion/styled" "^11.11.0" @@ -2900,7 +2927,7 @@ bible-reference-rcl@1.3.0: "@mui/material" "^5.12.3" "@rollup/plugin-terser" "^0.4.1" bible-reference-range "^1.1.1" - lodash "^4.5.0" + lodash.clonedeep "^4.5.0" lodash.isequal "^4.5.0" styled-components "^5.2.1" @@ -3361,6 +3388,11 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@^8.0.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" @@ -3704,6 +3736,11 @@ debounce-promise@^3.1.0: resolved "https://registry.yarnpkg.com/debounce-promise/-/debounce-promise-3.1.2.tgz#320fb8c7d15a344455cd33cee5ab63530b6dc7c5" integrity sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg== +debounce@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -4018,7 +4055,7 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.1" -duplexer@~0.1.1: +duplexer@^0.1.2, duplexer@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== @@ -5481,6 +5518,13 @@ gulp-header@^1.7.1: lodash.template "^4.4.0" through2 "^2.0.0" +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -5651,7 +5695,7 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-escaper@^2.0.0: +html-escaper@^2.0.0, html-escaper@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== @@ -6157,6 +6201,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -7504,7 +7553,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.5.0, lodash@^4.7.0: +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7761,6 +7810,11 @@ modern-normalize@^1.1.0: resolved "https://registry.yarnpkg.com/modern-normalize/-/modern-normalize-1.1.0.tgz#da8e80140d9221426bd4f725c6e11283d34f90b7" integrity sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA== +mrmime@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" + integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -8136,6 +8190,11 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -9560,6 +9619,15 @@ single-scripture-rcl@3.4.19: ts-loader "^8.0.12" typescript "^5.2.2" +sirv@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" + integrity sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ== + dependencies: + "@polka/url" "^1.0.0-next.24" + mrmime "^2.0.0" + totalist "^3.0.0" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -10266,6 +10334,11 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -10303,14 +10376,13 @@ transform-runtime@0.0.0: resolved "https://registry.yarnpkg.com/transform-runtime/-/transform-runtime-0.0.0.tgz#e714d9b69211dd9537939d50e3aa5788c442b85c" integrity sha512-PX3vXzO8lucrVm82vZb7BABBLHyMDPGzn9zElHr+DnvtS3JPXtqwB1iTRe+D6iFXYmjtAF3zH7O0Xc5XpLpMEg== -translation-helps-rcl@3.5.16: - version "3.5.16" - resolved "https://registry.yarnpkg.com/translation-helps-rcl/-/translation-helps-rcl-3.5.16.tgz#ec78d6303545170f8d89208724c49dbe7125f3b9" - integrity sha512-SyBzGTvJAITm3mHFkGK4T+3hWsCj87825kePUqyXwyIXC+/cl9vt+85Z6q3pXgqidnThllTpL7mNkb8IQBHn5g== +translation-helps-rcl@3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/translation-helps-rcl/-/translation-helps-rcl-3.6.0.tgz#8b7cc4b54de3b91741a67be6ead357c62df1cf34" + integrity sha512-BuJqXq8Zdrs3grACWoouFz5PqmPd9/C4snTw0BozLJE2ThbIYoO4nS+6hWSzXVu7umDh0NN9C4PANUOo9/Fdew== dependencies: "@gwdevs/extensible-rcl" "^1.0.1" "@mui/styled-engine" "npm:@mui/styled-engine-sc@latest" - axios "^0.27.2" bible-reference-range "^1.1.0" dcs-branch-merger "1.4.1" deep-equal "^2.0.5" @@ -10884,6 +10956,25 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webpack-bundle-analyzer@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" + integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ== + dependencies: + "@discoveryjs/json-ext" "0.5.7" + acorn "^8.0.4" + acorn-walk "^8.0.0" + commander "^7.2.0" + debounce "^1.2.1" + escape-string-regexp "^4.0.0" + gzip-size "^6.0.0" + html-escaper "^2.0.2" + is-plain-object "^5.0.0" + opener "^1.5.2" + picocolors "^1.0.0" + sirv "^2.0.3" + ws "^7.3.1" + whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -11106,7 +11197,7 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^7.4.6: +ws@^7.3.1, ws@^7.4.6: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==