@openocean.finance/wallet 0.3.8 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/lib/.DS_Store +0 -0
  2. package/lib/Chains/BaseChain.js +8 -0
  3. package/lib/Chains/EthChain.js +41 -0
  4. package/lib/Chains/index.js +1 -0
  5. package/lib/WalletManager.js +117 -0
  6. package/lib/Wallets/BaseWallet.js +8 -0
  7. package/lib/Wallets/BraveWallet.js +129 -0
  8. package/lib/Wallets/BscWallet.js +112 -0
  9. package/lib/Wallets/CloverWallet.js +136 -0
  10. package/lib/Wallets/Coin98.js +139 -0
  11. package/lib/Wallets/CoinbaseWallet.js +111 -0
  12. package/lib/Wallets/CryptoCom.d.ts +16 -0
  13. package/lib/Wallets/CryptoCom.js +111 -0
  14. package/lib/Wallets/Cyano.js +108 -0
  15. package/lib/Wallets/ImTokenWallet.js +111 -0
  16. package/lib/Wallets/KeplrWallet.js +121 -0
  17. package/lib/Wallets/MathWallet.js +111 -0
  18. package/lib/Wallets/MetaMask.js +130 -0
  19. package/lib/Wallets/MetaXWallet.js +112 -0
  20. package/lib/Wallets/OKExWallet.js +112 -0
  21. package/lib/Wallets/OntoMobile.js +111 -0
  22. package/lib/Wallets/OntoWallet.js +112 -0
  23. package/lib/Wallets/Phantom.js +65 -0
  24. package/lib/Wallets/SafePalWallet.js +126 -0
  25. package/lib/Wallets/SlopeWallet.js +110 -0
  26. package/lib/Wallets/SolflareWallet.js +106 -0
  27. package/lib/Wallets/Sollet.js +67 -0
  28. package/lib/Wallets/SolletIo.js +64 -0
  29. package/lib/Wallets/TerraStation.js +64 -0
  30. package/lib/Wallets/TokenPocket.js +111 -0
  31. package/lib/Wallets/TronLink.js +101 -0
  32. package/lib/Wallets/TrustWallet.js +163 -0
  33. package/lib/Wallets/WalletConnect.js +163 -0
  34. package/lib/Wallets/{XDEFIWallet.d.ts → XDeFiWallet.d.ts} +0 -0
  35. package/lib/Wallets/XDeFiWallet.js +138 -0
  36. package/lib/assets/.DS_Store +0 -0
  37. package/lib/assets/approveErc20Abi.json +23 -0
  38. package/lib/assets/brave.svg +24 -0
  39. package/lib/assets/bscwallet.svg +23 -0
  40. package/lib/assets/clover.svg +11 -0
  41. package/lib/assets/coin98.svg +18 -0
  42. package/lib/assets/coinbase.svg +17 -0
  43. package/lib/assets/cryptoCom.svg +14 -0
  44. package/lib/assets/cyano.svg +7 -0
  45. package/lib/assets/erc20Abi.json +222 -0
  46. package/lib/assets/imtoken.svg +12 -0
  47. package/lib/assets/keplr.png +0 -0
  48. package/lib/assets/math.svg +1 -0
  49. package/lib/assets/metamask.svg +1 -0
  50. package/lib/assets/metax.svg +10 -0
  51. package/lib/assets/okex.svg +21 -0
  52. package/lib/assets/onto.svg +1 -0
  53. package/lib/assets/phantom.svg +22 -0
  54. package/lib/assets/safepal.svg +1 -0
  55. package/lib/assets/slope.svg +25 -0
  56. package/lib/assets/solflare.svg +23 -0
  57. package/lib/assets/sollet.svg +7 -0
  58. package/lib/assets/terra.svg +17 -0
  59. package/lib/assets/tokenpocket.svg +1 -0
  60. package/lib/assets/tronlink.svg +25 -0
  61. package/lib/assets/trust.svg +10 -0
  62. package/lib/assets/walletconnect.svg +1 -0
  63. package/lib/assets/xdefi.svg +15 -0
  64. package/lib/index.d.ts +3 -2
  65. package/lib/index.js +72 -2
  66. package/lib/types.d.ts +4 -2
  67. package/lib/types.js +101 -0
  68. package/package.json +28 -10
  69. package/README.md +0 -6
  70. package/lib/index.js.LICENSE.txt +0 -216
package/lib/types.d.ts CHANGED
@@ -66,7 +66,8 @@ export declare enum EnumWalletName {
66
66
  SolflareWallet = "Solflare Wallet",
67
67
  MetaXWallet = "MetaX Wallet",
68
68
  keplrWallet = "Keplr Wallet",
69
- BraveWallet = "Brave Wallet"
69
+ BraveWallet = "Brave Wallet",
70
+ CryptoCom = "Crypto.com"
70
71
  }
71
72
  export declare enum EnumErrors {
72
73
  NotMetamask = "40001",
@@ -92,7 +93,8 @@ export declare enum EnumErrors {
92
93
  NoOnto = "40022",
93
94
  OntoChainIdNotMath = "40023",
94
95
  NoKeplr = "40024",
95
- NoBrave = "40025"
96
+ NoBrave = "40025",
97
+ NoCryptoCom = "40026"
96
98
  }
97
99
  export interface ConnectResult {
98
100
  chain: EnumChains;
package/lib/types.js ADDED
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ /**
3
+ * @name types
4
+ * @author openocean
5
+ * @date 2021/4/20
6
+ * @desc
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.EnumErrors = exports.EnumWalletName = exports.EnumWalletType = exports.EnumChains = void 0;
10
+ var EnumChains;
11
+ (function (EnumChains) {
12
+ EnumChains["ETH"] = "eth";
13
+ EnumChains["ROPSTEN"] = "ropsten";
14
+ EnumChains["ONT"] = "ont";
15
+ EnumChains["BSC"] = "bsc";
16
+ EnumChains["BSCTEST"] = "bsctest";
17
+ EnumChains["TRON"] = "tron";
18
+ EnumChains["Solana"] = "solana";
19
+ EnumChains["Polygon"] = "polygon";
20
+ EnumChains["XDai"] = "xdai";
21
+ EnumChains["HECO"] = "heco";
22
+ EnumChains["Fantom"] = "fantom";
23
+ EnumChains["Avalanche"] = "avax";
24
+ EnumChains["OKEX"] = "okex";
25
+ EnumChains["Arbitrum"] = "arbitrum";
26
+ EnumChains["Optimism"] = "optimism";
27
+ EnumChains["Terra"] = "terra";
28
+ EnumChains["Boba"] = "boba";
29
+ EnumChains["Moonriver"] = "moonriver";
30
+ EnumChains["Aurora"] = "aurora";
31
+ EnumChains["Cronos"] = "cronos";
32
+ EnumChains["Harmony"] = "harmony";
33
+ EnumChains["Osmosis"] = "osmosis";
34
+ EnumChains["Sifchain"] = "sifchain";
35
+ })(EnumChains = exports.EnumChains || (exports.EnumChains = {}));
36
+ var EnumWalletType;
37
+ (function (EnumWalletType) {
38
+ EnumWalletType["Extension"] = "Extension";
39
+ EnumWalletType["WalletConnect"] = "WalletConnect";
40
+ EnumWalletType["Web"] = "Web";
41
+ EnumWalletType["Mobile"] = "Mobile";
42
+ })(EnumWalletType = exports.EnumWalletType || (exports.EnumWalletType = {}));
43
+ var EnumWalletName;
44
+ (function (EnumWalletName) {
45
+ EnumWalletName["MetaMask"] = "MetaMask";
46
+ EnumWalletName["BscWallet"] = "Binance Wallet";
47
+ EnumWalletName["Cyano"] = "Cyano";
48
+ EnumWalletName["TronLink"] = "TronLink";
49
+ EnumWalletName["WalletConnect"] = "WalletConnect";
50
+ EnumWalletName["Sollet"] = "Sollet";
51
+ EnumWalletName["SolletIo"] = "Sollet.io";
52
+ EnumWalletName["OntoMobile"] = "ONTO Mobile";
53
+ EnumWalletName["OntoExt"] = "ONTO Extension";
54
+ EnumWalletName["TrustWallet"] = "Trust Wallet";
55
+ EnumWalletName["MathWallet"] = "Math Wallet";
56
+ EnumWalletName["TokenPocket"] = "Token Pocket";
57
+ EnumWalletName["SafePalWallet"] = "SafePal Wallet";
58
+ EnumWalletName["ImTokenWallet"] = "ImToken Wallet";
59
+ EnumWalletName["OntoWallet"] = "ONTO Wallet";
60
+ EnumWalletName["Coin98"] = "Coin98 Wallet";
61
+ EnumWalletName["OKExWallet"] = "OKEx Wallet";
62
+ EnumWalletName["Phantom"] = "Phantom";
63
+ EnumWalletName["TerraStation"] = "Terra Station";
64
+ EnumWalletName["CoinbaseWallet"] = "Coinbase Wallet";
65
+ EnumWalletName["CloverWallet"] = "Clover Wallet";
66
+ EnumWalletName["XDEFIWallet"] = "XDEFI Wallet";
67
+ EnumWalletName["SlopeWallet"] = "Slope Wallet";
68
+ EnumWalletName["SolflareWallet"] = "Solflare Wallet";
69
+ EnumWalletName["MetaXWallet"] = "MetaX Wallet";
70
+ EnumWalletName["keplrWallet"] = "Keplr Wallet";
71
+ EnumWalletName["BraveWallet"] = "Brave Wallet";
72
+ EnumWalletName["CryptoCom"] = "Crypto.com";
73
+ })(EnumWalletName = exports.EnumWalletName || (exports.EnumWalletName = {}));
74
+ var EnumErrors;
75
+ (function (EnumErrors) {
76
+ EnumErrors["NotMetamask"] = "40001";
77
+ EnumErrors["NotBinance"] = "40002";
78
+ EnumErrors["NoTronLink"] = "40003";
79
+ EnumErrors["NoTronLinkAccount"] = "40004";
80
+ EnumErrors["NoSollet"] = "40005";
81
+ EnumErrors["ChainIdNotMath"] = "40006";
82
+ EnumErrors["UserCanceled"] = "40007";
83
+ EnumErrors["NotConnected"] = "40008";
84
+ EnumErrors["UnSupported"] = "40009";
85
+ EnumErrors["NoCoin98"] = "40011";
86
+ EnumErrors["NoMath"] = "40012";
87
+ EnumErrors["NoPhantom"] = "40013";
88
+ EnumErrors["NoOKExWallet"] = "40014";
89
+ EnumErrors["NoTerraStation"] = "40015";
90
+ EnumErrors["NoCoinbase"] = "40016";
91
+ EnumErrors["NoClover"] = "40017";
92
+ EnumErrors["NoXDeFi"] = "40018";
93
+ EnumErrors["NoSlope"] = "40019";
94
+ EnumErrors["NoSolflare"] = "40020";
95
+ EnumErrors["NoMetaX"] = "40021";
96
+ EnumErrors["NoOnto"] = "40022";
97
+ EnumErrors["OntoChainIdNotMath"] = "40023";
98
+ EnumErrors["NoKeplr"] = "40024";
99
+ EnumErrors["NoBrave"] = "40025";
100
+ EnumErrors["NoCryptoCom"] = "40026";
101
+ })(EnumErrors = exports.EnumErrors || (exports.EnumErrors = {}));
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@openocean.finance/wallet",
3
- "version": "0.3.8",
3
+ "version": "0.4.2",
4
4
  "description": "A multi-chain wallets manager",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
7
- "build": "webpack",
7
+ "build": "tsc",
8
+ "buildWeb": "webpack",
8
9
  "test": "echo \"Error: no test specified\" && exit 1"
9
10
  },
10
- "author": "support@openocean.finance",
11
+ "author": "openocean",
11
12
  "license": "ISC",
12
13
  "repository": {
13
14
  "type": "git",
@@ -23,7 +24,6 @@
23
24
  "homepage": "",
24
25
  "devDependencies": {
25
26
  "@types/node": "^17.0.21",
26
- "assert": "^2.0.0",
27
27
  "clean-webpack-plugin": "^4.0.0-alpha.0",
28
28
  "crypto-browserify": "^3.12.0",
29
29
  "file-loader": "^6.2.0",
@@ -43,13 +43,31 @@
43
43
  "@cosmjs/launchpad": "^0.27.1",
44
44
  "@cosmjs/stargate": "^0.28.4",
45
45
  "@ont-dev/ontology-dapi": "^0.5.7",
46
- "@project-serum/sol-wallet-adapter": "^0.2.0",
47
- "@solana/web3.js": "^1.5.0",
48
- "@terra-money/terra.js": "^3.0.1",
46
+ "@project-serum/sol-wallet-adapter": "0.2.0",
47
+ "@solana/web3.js": "1.31.0",
48
+ "@terra-money/terra.js": "3.0.8",
49
49
  "@walletconnect/web3-provider": "^1.5.2",
50
+ "web3": "^1.6.0",
50
51
  "buffer": "^6.0.3",
51
52
  "fs": "^0.0.1-security",
52
- "path-browserify": "^1.0.1",
53
- "web3": "^1.6.0"
53
+ "path-browserify": "^1.0.1"
54
+ },
55
+ "eslintConfig": {
56
+ "root": true,
57
+ "env": {
58
+ "node": true,
59
+ "browser": true
60
+ },
61
+ "extends": [
62
+ "eslint:recommended"
63
+ ],
64
+ "parserOptions": {
65
+ "parser": "babel-eslint"
66
+ },
67
+ "rules": {
68
+ "no-debugger": "off",
69
+ "no-console": "off",
70
+ "no-unused-vars": "off"
71
+ }
54
72
  }
55
- }
73
+ }
package/README.md DELETED
@@ -1,6 +0,0 @@
1
- # wallets-manager
2
-
3
- ### todos
4
-
5
- -[ ] add eslint
6
- -[ ] add webpack
@@ -1,216 +0,0 @@
1
- /*
2
- object-assign
3
- (c) Sindre Sorhus
4
- @license MIT
5
- */
6
-
7
- /*!
8
- * The buffer module from node.js, for the browser.
9
- *
10
- * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
11
- * @license MIT
12
- */
13
-
14
- /*!
15
- * The buffer module from node.js, for the browser.
16
- *
17
- * @author Feross Aboukhadijeh <https://feross.org>
18
- * @license MIT
19
- */
20
-
21
- /*!
22
- * v2.1.4-104-gc868b3a
23
- *
24
- */
25
-
26
- /*!
27
- Copyright (C) 2013-2017 by Andrea Giammarchi - @WebReflection
28
-
29
- Permission is hereby granted, free of charge, to any person obtaining a copy
30
- of this software and associated documentation files (the "Software"), to deal
31
- in the Software without restriction, including without limitation the rights
32
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
33
- copies of the Software, and to permit persons to whom the Software is
34
- furnished to do so, subject to the following conditions:
35
-
36
- The above copyright notice and this permission notice shall be included in
37
- all copies or substantial portions of the Software.
38
-
39
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
40
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
42
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
43
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
44
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
45
- THE SOFTWARE.
46
-
47
- */
48
-
49
- /*! *****************************************************************************
50
- Copyright (c) Microsoft Corporation.
51
-
52
- Permission to use, copy, modify, and/or distribute this software for any
53
- purpose with or without fee is hereby granted.
54
-
55
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
56
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
57
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
58
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
59
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
60
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
61
- PERFORMANCE OF THIS SOFTWARE.
62
- ***************************************************************************** */
63
-
64
- /*! @ont-community/window-post-message-proxy v0.2.14 | (c) 2016 Microsoft Corporation MIT */
65
-
66
- /*! https://mths.be/punycode v1.3.2 by @mathias */
67
-
68
- /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
69
-
70
- /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
71
-
72
- /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
73
-
74
- /**
75
- * Support for translating between Buffer instances and JavaScript
76
- * native types.
77
- *
78
- * {@link module:Layout~Layout|Layout} is the basis of a class
79
- * hierarchy that associates property names with sequences of encoded
80
- * bytes.
81
- *
82
- * Layouts are supported for these scalar (numeric) types:
83
- * * {@link module:Layout~UInt|Unsigned integers in little-endian
84
- * format} with {@link module:Layout.u8|8-bit}, {@link
85
- * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit},
86
- * {@link module:Layout.u32|32-bit}, {@link
87
- * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit}
88
- * representation ranges;
89
- * * {@link module:Layout~UIntBE|Unsigned integers in big-endian
90
- * format} with {@link module:Layout.u16be|16-bit}, {@link
91
- * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit},
92
- * {@link module:Layout.u40be|40-bit}, and {@link
93
- * module:Layout.u48be|48-bit} representation ranges;
94
- * * {@link module:Layout~Int|Signed integers in little-endian
95
- * format} with {@link module:Layout.s8|8-bit}, {@link
96
- * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit},
97
- * {@link module:Layout.s32|32-bit}, {@link
98
- * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit}
99
- * representation ranges;
100
- * * {@link module:Layout~IntBE|Signed integers in big-endian format}
101
- * with {@link module:Layout.s16be|16-bit}, {@link
102
- * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit},
103
- * {@link module:Layout.s40be|40-bit}, and {@link
104
- * module:Layout.s48be|48-bit} representation ranges;
105
- * * 64-bit integral values that decode to an exact (if magnitude is
106
- * less than 2^53) or nearby integral Number in {@link
107
- * module:Layout.nu64|unsigned little-endian}, {@link
108
- * module:Layout.nu64be|unsigned big-endian}, {@link
109
- * module:Layout.ns64|signed little-endian}, and {@link
110
- * module:Layout.ns64be|unsigned big-endian} encodings;
111
- * * 32-bit floating point values with {@link
112
- * module:Layout.f32|little-endian} and {@link
113
- * module:Layout.f32be|big-endian} representations;
114
- * * 64-bit floating point values with {@link
115
- * module:Layout.f64|little-endian} and {@link
116
- * module:Layout.f64be|big-endian} representations;
117
- * * {@link module:Layout.const|Constants} that take no space in the
118
- * encoded expression.
119
- *
120
- * and for these aggregate types:
121
- * * {@link module:Layout.seq|Sequence}s of instances of a {@link
122
- * module:Layout~Layout|Layout}, with JavaScript representation as
123
- * an Array and constant or data-dependent {@link
124
- * module:Layout~Sequence#count|length};
125
- * * {@link module:Layout.struct|Structure}s that aggregate a
126
- * heterogeneous sequence of {@link module:Layout~Layout|Layout}
127
- * instances, with JavaScript representation as an Object;
128
- * * {@link module:Layout.union|Union}s that support multiple {@link
129
- * module:Layout~VariantLayout|variant layouts} over a fixed
130
- * (padded) or variable (not padded) span of bytes, using an
131
- * unsigned integer at the start of the data or a separate {@link
132
- * module:Layout.unionLayoutDiscriminator|layout element} to
133
- * determine which layout to use when interpreting the buffer
134
- * contents;
135
- * * {@link module:Layout.bits|BitStructure}s that contain a sequence
136
- * of individual {@link
137
- * module:Layout~BitStructure#addField|BitField}s packed into an 8,
138
- * 16, 24, or 32-bit unsigned integer starting at the least- or
139
- * most-significant bit;
140
- * * {@link module:Layout.cstr|C strings} of varying length;
141
- * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link
142
- * module:Layout~Blob#length|length} raw data.
143
- *
144
- * All {@link module:Layout~Layout|Layout} instances are immutable
145
- * after construction, to prevent internal state from becoming
146
- * inconsistent.
147
- *
148
- * @local Layout
149
- * @local ExternalLayout
150
- * @local GreedyCount
151
- * @local OffsetLayout
152
- * @local UInt
153
- * @local UIntBE
154
- * @local Int
155
- * @local IntBE
156
- * @local NearUInt64
157
- * @local NearUInt64BE
158
- * @local NearInt64
159
- * @local NearInt64BE
160
- * @local Float
161
- * @local FloatBE
162
- * @local Double
163
- * @local DoubleBE
164
- * @local Sequence
165
- * @local Structure
166
- * @local UnionDiscriminator
167
- * @local UnionLayoutDiscriminator
168
- * @local Union
169
- * @local VariantLayout
170
- * @local BitStructure
171
- * @local BitField
172
- * @local Boolean
173
- * @local Blob
174
- * @local CString
175
- * @local Constant
176
- * @local bindConstructorLayout
177
- * @module Layout
178
- * @license MIT
179
- * @author Peter A. Bigot
180
- * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub}
181
- */
182
-
183
- /**
184
- * [js-sha3]{@link https://github.com/emn178/js-sha3}
185
- *
186
- * @version 0.5.7
187
- * @author Chen, Yi-Cyuan [emn178@gmail.com]
188
- * @copyright Chen, Yi-Cyuan 2015-2016
189
- * @license MIT
190
- */
191
-
192
- /**
193
- * [js-sha3]{@link https://github.com/emn178/js-sha3}
194
- *
195
- * @version 0.8.0
196
- * @author Chen, Yi-Cyuan [emn178@gmail.com]
197
- * @copyright Chen, Yi-Cyuan 2015-2018
198
- * @license MIT
199
- */
200
-
201
- /** @preserve
202
- * Counter block mode compatible with Dr Brian Gladman fileenc.c
203
- * derived from CryptoJS.mode.CTR
204
- * Jan Hruby jhruby.web@gmail.com
205
- */
206
-
207
- /** @preserve
208
- (c) 2012 by Cédric Mesnil. All rights reserved.
209
-
210
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
211
-
212
- - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
213
- - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
214
-
215
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
216
- */