From c8eb7065697620b553c87f593ae268683c99f212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Fri, 18 Aug 2023 05:27:19 +0900 Subject: [PATCH] Update js dependencies We can now use node 18 because the hardhat issue was fixed --- contracts/package.json | 2 +- contracts/requirements.txt | 4 +- ops/charts/devnet/templates/deployment.yaml | 2 +- packages-ts/integration-multisig/package.json | 2 +- packages-ts/starknet/package.json | 2 +- shell.nix | 7 +- yarn.lock | 149 +++++++++++++----- 7 files changed, 120 insertions(+), 48 deletions(-) diff --git a/contracts/package.json b/contracts/package.json index 82387ffb8..131fc7d74 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -19,7 +19,7 @@ "@types/mocha": "^9.1.1", "chai": "^4.3.6", "ethers": "^5.6.8", - "hardhat": "^2.10.2", + "hardhat": "^2.16.1", "solidity-coverage": "^0.8.2" }, "dependencies": { diff --git a/contracts/requirements.txt b/contracts/requirements.txt index 08b297bfa..a50aff25e 100644 --- a/contracts/requirements.txt +++ b/contracts/requirements.txt @@ -1,5 +1,5 @@ ecdsa fastecdsa sympy -cairo-lang>=0.12.1a0 -starknet-devnet>=0.6.0a0 +cairo-lang>=0.12.1 +starknet-devnet>=0.6.0 diff --git a/ops/charts/devnet/templates/deployment.yaml b/ops/charts/devnet/templates/deployment.yaml index 8e4466a5e..3e920911d 100644 --- a/ops/charts/devnet/templates/deployment.yaml +++ b/ops/charts/devnet/templates/deployment.yaml @@ -47,7 +47,7 @@ spec: {{- else }} - name: cairo-build mountPath: /cairo-build - image: "{{ .Values.repository | default "shardlabs/starknet-devnet"}}:{{ .Values.tag | default "0.6.0a0"}}" + image: "{{ .Values.repository | default "shardlabs/starknet-devnet"}}:{{ .Values.tag | default "0.6.0"}}" args: ["--sierra-compiler-path", "/cairo-build/bin/starknet-sierra-compile", "--lite-mode", "--port", {{ .Values.service.internalPort | quote}}, "--seed", {{ .Values.seed | quote}}] {{- end }} imagePullPolicy: IfNotPresent diff --git a/packages-ts/integration-multisig/package.json b/packages-ts/integration-multisig/package.json index 748a8e492..bd2b8aeeb 100644 --- a/packages-ts/integration-multisig/package.json +++ b/packages-ts/integration-multisig/package.json @@ -18,7 +18,7 @@ "@types/mocha": "^9.1.1", "chai": "^4.3.6", "ethers": "^5.6.8", - "hardhat": "^2.10.2", + "hardhat": "^2.16.1", "starsign-multisig": "^0.3.0" } } diff --git a/packages-ts/starknet/package.json b/packages-ts/starknet/package.json index 32a6a1d9f..f298931e7 100644 --- a/packages-ts/starknet/package.json +++ b/packages-ts/starknet/package.json @@ -24,6 +24,6 @@ }, "devDependencies": { "@shardlabs/starknet-hardhat-plugin": "^0.8.0-alpha.2", - "hardhat": "^2.10.2" + "hardhat": "^2.16.1" } } diff --git a/shell.nix b/shell.nix index f81253978..fb9328832 100644 --- a/shell.nix +++ b/shell.nix @@ -11,9 +11,8 @@ python39Packages.fastecdsa # so libgmp is correctly sourced zlib # for numpy gmp - # use nodejs 16.x due to https://github.com/NomicFoundation/hardhat/issues/3877 - nodejs-16_x - (yarn.override { nodejs = nodejs-16_x; }) + nodejs-18_x + (yarn.override { nodejs = nodejs-18_x; }) nodePackages.typescript nodePackages.typescript-language-server nodePackages.npm @@ -41,6 +40,6 @@ venvDir = "./.venv"; postShellHook = '' - helm repo update + # helm repo update ''; } diff --git a/yarn.lock b/yarn.lock index b5ad19d9f..2e863f84b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1372,21 +1372,26 @@ rxjs "6" semver "^7.3.5" -"@ledgerhq/devices@^8.0.6": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.6.tgz#c318a3d5c756e20065370539a395f3024f0fac43" - integrity sha512-KWA68krUD9pFp6bJAhTe2nurhku4HnS5LwtHnCXg8PB0DbzWt27PTKgVOCKO7TEdJ3wu4eVcgP5RQrap22pQHQ== +"@ledgerhq/devices@^8.0.7": + version "8.0.7" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.0.7.tgz#206434dbd8a097529bbfc95f5eef94c2923c7578" + integrity sha512-BbPyET52lXnVs7CxJWrGYqmtGdbGzj+XnfCqLsDnA7QYr1CZREysxmie+Rr6BKpNDBRVesAovXjtaVaZOn+upw== dependencies: - "@ledgerhq/errors" "^6.13.1" + "@ledgerhq/errors" "^6.14.0" "@ledgerhq/logs" "^6.10.1" rxjs "6" semver "^7.3.5" -"@ledgerhq/errors@^6.11.1", "@ledgerhq/errors@^6.12.3", "@ledgerhq/errors@^6.13.1": +"@ledgerhq/errors@^6.11.1", "@ledgerhq/errors@^6.12.3": version "6.13.1" resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.13.1.tgz#fd9570c1806824de734aed21df1a3d643ba8ed0c" integrity sha512-y5qOFiX7ILACF7GvCAB67S5nCABEP5rm8lxK66qKIBRApcLlTplbjUACDRfKQbAIwf0SJPuR31rtTKB92ykwKQ== +"@ledgerhq/errors@^6.14.0": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.14.0.tgz#0bf253983773ef12eebce2091f463bc719223b37" + integrity sha512-ZWJw2Ti6Dq1Ott/+qYqJdDWeZm16qI3VNG5rFlb0TQ3UcAyLIQZbnnzzdcVVwVeZiEp66WIpINd/pBdqsHVyOA== + "@ledgerhq/hw-app-starknet@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-starknet/-/hw-app-starknet-2.0.3.tgz#3d964321ef96ae1cdc210b8f87ba945363d37849" @@ -1396,26 +1401,26 @@ "@types/bn.js" "^5.1.1" bn.js "^5.2.1" -"@ledgerhq/hw-transport-node-hid-noevents@^6.27.18": - version "6.27.18" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.18.tgz#1fd1c9e9e28a4cd2361293a6fd40aff1f05907e3" - integrity sha512-duVDQUzjdZ+BmKnp68XHxd3/osB7OeYVIMc/uYmk7InPsHUexpEPuyGBQMGPZlvJ/N6YpArEWJHzcxbcXoCZ2A== +"@ledgerhq/hw-transport-node-hid-noevents@^6.27.19": + version "6.27.19" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.27.19.tgz#3bbb6b02c7cab30519b1bf8b8e490d27d70d32a2" + integrity sha512-zOIB1fBiQH9ZYFzoEpNY4n1lE7bGPgRT+k85fKuLM7cxxm5Sy+TgrdxImvBz0IQUS8EvrtZCm+dVWkb2sH/6OA== dependencies: - "@ledgerhq/devices" "^8.0.6" - "@ledgerhq/errors" "^6.13.1" - "@ledgerhq/hw-transport" "^6.28.7" + "@ledgerhq/devices" "^8.0.7" + "@ledgerhq/errors" "^6.14.0" + "@ledgerhq/hw-transport" "^6.28.8" "@ledgerhq/logs" "^6.10.1" node-hid "^2.1.2" "@ledgerhq/hw-transport-node-hid@^6.27.6": - version "6.27.20" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.20.tgz#83f77e5c942785814ecd5bf670f5a8214e6115b1" - integrity sha512-0uwngV37xxfkAcvXTrcJ2u6Rz/iswcDempY8LWVYJ8Vyh0nlNFmMenVAxeErBF+BPE9GqSxE9lQFsuBuDgfCOQ== - dependencies: - "@ledgerhq/devices" "^8.0.6" - "@ledgerhq/errors" "^6.13.1" - "@ledgerhq/hw-transport" "^6.28.7" - "@ledgerhq/hw-transport-node-hid-noevents" "^6.27.18" + version "6.27.21" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.27.21.tgz#44bc003a0279296e1d613ddaada5005638aa0217" + integrity sha512-8G3Owpa2ex+TkGQSMkKoAbMEGZ7a23g0wZUvVzalQphMqbayebMhuXxue8iPp7F9pulm7uyLxgMYptYyw5i4yQ== + dependencies: + "@ledgerhq/devices" "^8.0.7" + "@ledgerhq/errors" "^6.14.0" + "@ledgerhq/hw-transport" "^6.28.8" + "@ledgerhq/hw-transport-node-hid-noevents" "^6.27.19" "@ledgerhq/logs" "^6.10.1" lodash "^4.17.21" node-hid "^2.1.2" @@ -1430,13 +1435,13 @@ "@ledgerhq/errors" "^6.11.1" events "^3.3.0" -"@ledgerhq/hw-transport@^6.28.7": - version "6.28.7" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.7.tgz#17120f0ea8bdd34632010ed4e284a1c57f1bd41d" - integrity sha512-P6XWv/Blb3AvzNH/33ouqFvsUwjCsQN5iMTLuVJqxVKwj91QmdYZfYR9U9FB0gBKrIQ7BONUgTX/ko9EnDV6/g== +"@ledgerhq/hw-transport@^6.28.8": + version "6.28.8" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.28.8.tgz#f99a5c71c5c09591e9bfb1b970c42aafbe81351f" + integrity sha512-XxQVl4htd018u/M66r0iu5nlHi+J6QfdPsORzDF6N39jaz+tMqItb7tUlXM/isggcuS5lc7GJo7NOuJ8rvHZaQ== dependencies: - "@ledgerhq/devices" "^8.0.6" - "@ledgerhq/errors" "^6.13.1" + "@ledgerhq/devices" "^8.0.7" + "@ledgerhq/errors" "^6.14.0" events "^3.3.0" "@ledgerhq/logs@^6.10.1": @@ -1813,6 +1818,36 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== +"@rometools/cli-darwin-arm64@12.1.3": + version "12.1.3" + resolved "https://registry.yarnpkg.com/@rometools/cli-darwin-arm64/-/cli-darwin-arm64-12.1.3.tgz#b00fe225e34047c4dac63588e237b11ebec47694" + integrity sha512-AmFTUDYjBuEGQp/Wwps+2cqUr+qhR7gyXAUnkL5psCuNCz3807TrUq/ecOoct5MIavGJTH6R4aaSL6+f+VlBEg== + +"@rometools/cli-darwin-x64@12.1.3": + version "12.1.3" + resolved "https://registry.yarnpkg.com/@rometools/cli-darwin-x64/-/cli-darwin-x64-12.1.3.tgz#e5bbf02afb1aab7447e743092245dea992b4b29f" + integrity sha512-k8MbWna8q4LRlb005N2X+JS1UQ+s3ZLBBvwk4fP8TBxlAJXUz17jLLu/Fi+7DTTEmMhM84TWj4FDKW+rNar28g== + +"@rometools/cli-linux-arm64@12.1.3": + version "12.1.3" + resolved "https://registry.yarnpkg.com/@rometools/cli-linux-arm64/-/cli-linux-arm64-12.1.3.tgz#e75b01b74c134edc811e21fa7e1e440602930d59" + integrity sha512-X/uLhJ2/FNA3nu5TiyeNPqiD3OZoFfNfRvw6a3ut0jEREPvEn72NI7WPijH/gxSz55znfQ7UQ6iM4DZumUknJg== + +"@rometools/cli-linux-x64@12.1.3": + version "12.1.3" + resolved "https://registry.yarnpkg.com/@rometools/cli-linux-x64/-/cli-linux-x64-12.1.3.tgz#2b9f4a68079783f275d4d27df83e4fa2220ec6fc" + integrity sha512-csP17q1eWiUXx9z6Jr/JJPibkplyKIwiWPYNzvPCGE8pHlKhwZj3YHRuu7Dm/4EOqx0XFIuqqWZUYm9bkIC8xg== + +"@rometools/cli-win32-arm64@12.1.3": + version "12.1.3" + resolved "https://registry.yarnpkg.com/@rometools/cli-win32-arm64/-/cli-win32-arm64-12.1.3.tgz#714acb67ac4ea4c15e2bc6aea4dd290c76c8efc6" + integrity sha512-RymHWeod57EBOJY4P636CgUwYA6BQdkQjh56XKk4pLEHO6X1bFyMet2XL7KlHw5qOTalzuzf5jJqUs+vf3jdXQ== + +"@rometools/cli-win32-x64@12.1.3": + version "12.1.3" + resolved "https://registry.yarnpkg.com/@rometools/cli-win32-x64/-/cli-win32-x64-12.1.3.tgz#b4f53491d2ca8f1234b3613b7cc73418ad8d76bb" + integrity sha512-yHSKYidqJMV9nADqg78GYA+cZ0hS1twANAjiFibQdXj9aGzD+s/IzIFEIi/U/OBLvWYg/SCw0QVozi2vTlKFDQ== + "@scure/base@~1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" @@ -2125,9 +2160,9 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^18.7.11": - version "18.17.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.4.tgz#bf8ae9875528929cc9930dc3f066cd0481fe1231" - integrity sha512-ATL4WLgr7/W40+Sp1WnNTSKbgVn6Pvhc/2RHAdt8fl6NsQyp4oPCi2eKcGOvA494bwf1K/W6nGgZ9TwDqvpjdw== + version "18.17.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.5.tgz#c58b12bca8c2a437b38c15270615627e96dd0bc5" + integrity sha512-xNbS75FxH6P4UXTPUJp/zNPq6/xsfdJKussCWNOnz4aULWIRwMgP1LgaB5RiBnMX1DPCYenuqGZfnIAx5mbFLA== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -2206,6 +2241,17 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== +abi-wan-kanabi@^1.0.1, abi-wan-kanabi@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abi-wan-kanabi/-/abi-wan-kanabi-1.0.3.tgz#0d8607f2a2ccb2151a69debea1c3bb68b76c5aa2" + integrity sha512-Xwva0AnhXx/IVlzo3/kwkI7Oa7ZX7codtcSn+Gmoa2PmjGPF/0jeVud9puasIPtB7V50+uBdUj4Mh3iATqtBvg== + dependencies: + abi-wan-kanabi "^1.0.1" + fs-extra "^10.0.0" + rome "^12.1.3" + typescript "^4.9.5" + yargs "^17.7.2" + abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" @@ -3907,6 +3953,15 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -4194,7 +4249,7 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -hardhat@^*, hardhat@^2.10.2: +hardhat@^*, hardhat@^2.16.1: version "2.17.1" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.1.tgz#4b6c8c8f624fd23d9f40185a4af24815d05a486a" integrity sha512-1PxRkfjhEzXs/wDxI5YgzYBxNmvzifBTjYzuopwel+vXpAhCudplusJthN5eig0FTs4qbi828DBIITEDh8x9LA== @@ -5709,9 +5764,9 @@ neo-async@^2.6.2: integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== node-abi@^3.3.0: - version "3.45.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.45.0.tgz#f568f163a3bfca5aacfce1fbeee1fa2cc98441f5" - integrity sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ== + version "3.47.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.47.0.tgz#6cbfa2916805ae25c2b7156ca640131632eb05e8" + integrity sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A== dependencies: semver "^7.3.5" @@ -6483,6 +6538,18 @@ rlp@^2.2.3, rlp@^2.2.4: dependencies: bn.js "^5.2.0" +rome@^12.1.3: + version "12.1.3" + resolved "https://registry.yarnpkg.com/rome/-/rome-12.1.3.tgz#4d4d62cad16216843680bd3ca11a4c248134902a" + integrity sha512-e+ff72hxDpe/t5/Us7YRBVw3PBET7SeczTQNn6tvrWdrCaAw3qOukQQ+tDCkyFtS4yGsnhjrJbm43ctNbz27Yg== + optionalDependencies: + "@rometools/cli-darwin-arm64" "12.1.3" + "@rometools/cli-darwin-x64" "12.1.3" + "@rometools/cli-linux-arm64" "12.1.3" + "@rometools/cli-linux-x64" "12.1.3" + "@rometools/cli-win32-arm64" "12.1.3" + "@rometools/cli-win32-x64" "12.1.3" + run-parallel-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" @@ -6886,11 +6953,12 @@ starknet@^4.22.0: url-join "^4.0.1" starknet@^5.17.0: - version "5.19.0" - resolved "https://registry.yarnpkg.com/starknet/-/starknet-5.19.0.tgz#95e9a6d3832340005eb6e7dc3f22ccf76290826d" - integrity sha512-H3sdKPhnB9m8mrYK/qut+yrm+XNK/m39Tg+3ZrLP+Ku2H7fLRXn0YuAA98bqOhs/TCcJu7rlihl1jyqwrDNKzQ== + version "5.19.1" + resolved "https://registry.yarnpkg.com/starknet/-/starknet-5.19.1.tgz#84f1d4e82c5badc5d76d4d954fec3d1ec1883bdb" + integrity sha512-UYQnMxTbFSr+8D8s60rnB6pw80vlQCUVAJ00uJ4qFRMkhykT1IQJfhx5AUKiYgoWhDVLYlbY9LpEPwQ2rkxhsw== dependencies: "@noble/curves" "~1.0.0" + abi-wan-kanabi "^1.0.2" isomorphic-fetch "^3.0.0" lossless-json "^2.0.8" micro-starknet "~0.2.1" @@ -7423,6 +7491,11 @@ typescript@4.7.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" @@ -7833,7 +7906,7 @@ yargs@^17.3.1: y18n "^5.0.5" yargs-parser "^21.0.0" -yargs@^17.7.1: +yargs@^17.7.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==