meteor-node-stubs 1.2.16 → 1.2.18

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 (1268) hide show
  1. package/node_modules/@meteorjs/browserify-sign/LICENSE +13 -0
  2. package/node_modules/@meteorjs/browserify-sign/README.md +13 -0
  3. package/node_modules/@meteorjs/browserify-sign/algos.js +3 -0
  4. package/node_modules/@meteorjs/browserify-sign/browser/algorithms.json +152 -0
  5. package/node_modules/@meteorjs/browserify-sign/browser/curves.json +8 -0
  6. package/node_modules/@meteorjs/browserify-sign/browser/index.js +92 -0
  7. package/node_modules/@meteorjs/browserify-sign/browser/sign.js +150 -0
  8. package/node_modules/@meteorjs/browserify-sign/browser/verify.js +86 -0
  9. package/node_modules/@meteorjs/browserify-sign/index.js +9 -0
  10. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/.travis.yml +34 -0
  11. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  12. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/GOVERNANCE.md +136 -0
  13. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/LICENSE +47 -0
  14. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/README.md +58 -0
  15. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  16. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/duplex-browser.js +1 -0
  17. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/duplex.js +1 -0
  18. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  19. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  20. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  21. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  22. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js +685 -0
  23. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/internal/streams/BufferList.js +78 -0
  24. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js +84 -0
  25. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  26. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  27. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/LICENSE +21 -0
  28. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/README.md +584 -0
  29. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/index.d.ts +187 -0
  30. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/index.js +62 -0
  31. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/package.json +37 -0
  32. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/package.json +52 -0
  33. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/passthrough.js +1 -0
  34. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/readable-browser.js +7 -0
  35. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/readable.js +19 -0
  36. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/transform.js +1 -0
  37. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/writable-browser.js +1 -0
  38. package/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream/writable.js +8 -0
  39. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/.travis.yml +50 -0
  40. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/LICENSE +48 -0
  41. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/README.md +47 -0
  42. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/lib/string_decoder.js +296 -0
  43. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/LICENSE +21 -0
  44. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/README.md +584 -0
  45. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts +187 -0
  46. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/index.js +62 -0
  47. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer/package.json +37 -0
  48. package/node_modules/@meteorjs/browserify-sign/node_modules/string_decoder/package.json +31 -0
  49. package/node_modules/@meteorjs/browserify-sign/package.json +85 -0
  50. package/node_modules/@meteorjs/create-ecdh/.travis.yml +7 -0
  51. package/node_modules/@meteorjs/create-ecdh/LICENSE +21 -0
  52. package/node_modules/@meteorjs/create-ecdh/browser.js +124 -0
  53. package/node_modules/@meteorjs/create-ecdh/elliptic/README.md +238 -0
  54. package/node_modules/@meteorjs/create-ecdh/elliptic/benchmarks/deps/jodid.js +82 -0
  55. package/node_modules/@meteorjs/create-ecdh/elliptic/benchmarks/deps/secp256k1.js +41 -0
  56. package/node_modules/@meteorjs/create-ecdh/elliptic/benchmarks/index.js +153 -0
  57. package/node_modules/@meteorjs/create-ecdh/elliptic/benchmarks/package.json +21 -0
  58. package/node_modules/@meteorjs/create-ecdh/elliptic/dist/.gitkeep +0 -0
  59. package/node_modules/@meteorjs/create-ecdh/elliptic/dist/elliptic.js +8961 -0
  60. package/node_modules/@meteorjs/create-ecdh/elliptic/dist/elliptic.min.js +1 -0
  61. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/base.js +381 -0
  62. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/edwards.js +435 -0
  63. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/index.js +8 -0
  64. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/mont.js +178 -0
  65. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curve/short.js +938 -0
  66. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/curves.js +206 -0
  67. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/ec/index.js +278 -0
  68. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/ec/key.js +121 -0
  69. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/ec/signature.js +176 -0
  70. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/eddsa/index.js +121 -0
  71. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/eddsa/key.js +95 -0
  72. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/eddsa/signature.js +66 -0
  73. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/precomputed/secp256k1.js +780 -0
  74. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic/utils.js +122 -0
  75. package/node_modules/@meteorjs/create-ecdh/elliptic/lib/elliptic.js +13 -0
  76. package/node_modules/@meteorjs/create-ecdh/elliptic/test/api-test.js +20 -0
  77. package/node_modules/@meteorjs/create-ecdh/elliptic/test/curve-test.js +357 -0
  78. package/node_modules/@meteorjs/create-ecdh/elliptic/test/ecdh-test.js +43 -0
  79. package/node_modules/@meteorjs/create-ecdh/elliptic/test/ecdsa-test.js +547 -0
  80. package/node_modules/@meteorjs/create-ecdh/elliptic/test/ed25519-test.js +138 -0
  81. package/node_modules/@meteorjs/create-ecdh/elliptic/test/fixtures/derivation-fixtures.js +3842 -0
  82. package/node_modules/@meteorjs/create-ecdh/elliptic/test/fixtures/sign.input +1024 -0
  83. package/node_modules/@meteorjs/create-ecdh/elliptic/test/index.js +10 -0
  84. package/node_modules/@meteorjs/create-ecdh/elliptic/test/unittests.html +39 -0
  85. package/node_modules/@meteorjs/create-ecdh/index.js +3 -0
  86. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/LICENSE +19 -0
  87. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/README.md +200 -0
  88. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/lib/bn.js +3447 -0
  89. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/package.json +36 -0
  90. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/util/genCombMulTo.js +65 -0
  91. package/node_modules/@meteorjs/create-ecdh/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  92. package/node_modules/@meteorjs/create-ecdh/package.json +53 -0
  93. package/node_modules/@meteorjs/create-ecdh/readme.md +4 -0
  94. package/node_modules/@meteorjs/crypto-browserify/.eslintrc +24 -0
  95. package/node_modules/@meteorjs/crypto-browserify/.github/FUNDING.yml +12 -0
  96. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/node-aught.yml +12 -0
  97. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/node-pretest.yml +9 -0
  98. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/node-tens.yml +11 -0
  99. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/rebase.yml +9 -0
  100. package/node_modules/@meteorjs/crypto-browserify/.github/workflows/require-allow-edits.yml +12 -0
  101. package/node_modules/@meteorjs/crypto-browserify/.travis.yml +18 -0
  102. package/node_modules/@meteorjs/crypto-browserify/LICENSE +24 -0
  103. package/node_modules/@meteorjs/crypto-browserify/README.md +69 -0
  104. package/node_modules/@meteorjs/crypto-browserify/example/bundle.js +605 -0
  105. package/node_modules/@meteorjs/crypto-browserify/example/index.html +12 -0
  106. package/node_modules/@meteorjs/crypto-browserify/example/test.js +6 -0
  107. package/node_modules/@meteorjs/crypto-browserify/index.js +103 -0
  108. package/node_modules/@meteorjs/crypto-browserify/package.json +64 -0
  109. package/node_modules/@meteorjs/crypto-browserify/test/aes.js +53 -0
  110. package/node_modules/@meteorjs/crypto-browserify/test/create-hash.js +51 -0
  111. package/node_modules/@meteorjs/crypto-browserify/test/create-hmac.js +54 -0
  112. package/node_modules/@meteorjs/crypto-browserify/test/dh.js +60 -0
  113. package/node_modules/@meteorjs/crypto-browserify/test/ecdh.js +62 -0
  114. package/node_modules/@meteorjs/crypto-browserify/test/index.js +22 -0
  115. package/node_modules/@meteorjs/crypto-browserify/test/node/dh.js +69 -0
  116. package/node_modules/@meteorjs/crypto-browserify/test/pbkdf2.js +23 -0
  117. package/node_modules/@meteorjs/crypto-browserify/test/public-encrypt.js +39 -0
  118. package/node_modules/@meteorjs/crypto-browserify/test/random-bytes.js +65 -0
  119. package/node_modules/@meteorjs/crypto-browserify/test/random-fill.js +55 -0
  120. package/node_modules/@meteorjs/crypto-browserify/test/sign.js +61 -0
  121. package/node_modules/asn1.js/README.md +100 -0
  122. package/node_modules/asn1.js/lib/asn1/api.js +61 -0
  123. package/node_modules/asn1.js/lib/asn1/base/buffer.js +116 -0
  124. package/node_modules/asn1.js/lib/asn1/base/index.js +6 -0
  125. package/node_modules/asn1.js/lib/asn1/base/node.js +634 -0
  126. package/node_modules/asn1.js/lib/asn1/base/reporter.js +121 -0
  127. package/node_modules/asn1.js/lib/asn1/constants/der.js +42 -0
  128. package/node_modules/asn1.js/lib/asn1/constants/index.js +19 -0
  129. package/node_modules/asn1.js/lib/asn1/decoders/der.js +324 -0
  130. package/node_modules/asn1.js/lib/asn1/decoders/index.js +4 -0
  131. package/node_modules/asn1.js/lib/asn1/decoders/pem.js +49 -0
  132. package/node_modules/asn1.js/lib/asn1/encoders/der.js +295 -0
  133. package/node_modules/asn1.js/lib/asn1/encoders/index.js +4 -0
  134. package/node_modules/asn1.js/lib/asn1/encoders/pem.js +21 -0
  135. package/node_modules/asn1.js/lib/asn1.js +9 -0
  136. package/node_modules/asn1.js/node_modules/bn.js/LICENSE +19 -0
  137. package/node_modules/asn1.js/node_modules/bn.js/README.md +200 -0
  138. package/node_modules/asn1.js/node_modules/bn.js/lib/bn.js +3447 -0
  139. package/node_modules/asn1.js/node_modules/bn.js/package.json +36 -0
  140. package/node_modules/asn1.js/node_modules/bn.js/util/genCombMulTo.js +65 -0
  141. package/node_modules/asn1.js/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  142. package/node_modules/asn1.js/package.json +31 -0
  143. package/node_modules/assert/LICENSE +18 -0
  144. package/node_modules/assert/README.md +75 -0
  145. package/node_modules/assert/build/assert.js +590 -0
  146. package/node_modules/assert/build/internal/assert/assertion_error.js +445 -0
  147. package/node_modules/assert/build/internal/errors.js +171 -0
  148. package/node_modules/assert/build/internal/util/comparisons.js +575 -0
  149. package/node_modules/assert/package.json +46 -0
  150. package/node_modules/available-typed-arrays/.eslintrc +5 -0
  151. package/node_modules/available-typed-arrays/.github/FUNDING.yml +12 -0
  152. package/node_modules/available-typed-arrays/.nycrc +9 -0
  153. package/node_modules/available-typed-arrays/CHANGELOG.md +100 -0
  154. package/node_modules/available-typed-arrays/LICENSE +21 -0
  155. package/node_modules/available-typed-arrays/README.md +55 -0
  156. package/node_modules/available-typed-arrays/index.d.ts +8 -0
  157. package/node_modules/available-typed-arrays/index.js +17 -0
  158. package/node_modules/available-typed-arrays/package.json +93 -0
  159. package/node_modules/available-typed-arrays/test/index.js +18 -0
  160. package/node_modules/available-typed-arrays/tsconfig.json +49 -0
  161. package/node_modules/base64-js/LICENSE +21 -0
  162. package/node_modules/base64-js/README.md +34 -0
  163. package/node_modules/base64-js/base64js.min.js +1 -0
  164. package/node_modules/base64-js/index.d.ts +3 -0
  165. package/node_modules/base64-js/index.js +150 -0
  166. package/node_modules/base64-js/package.json +47 -0
  167. package/node_modules/bn.js/LICENSE +19 -0
  168. package/node_modules/bn.js/README.md +214 -0
  169. package/node_modules/bn.js/lib/bn.js +3548 -0
  170. package/node_modules/bn.js/package.json +39 -0
  171. package/node_modules/brorand/.npmignore +2 -0
  172. package/node_modules/brorand/README.md +26 -0
  173. package/node_modules/brorand/index.js +65 -0
  174. package/node_modules/brorand/package.json +31 -0
  175. package/node_modules/brorand/test/api-test.js +8 -0
  176. package/node_modules/browserify-aes/.travis.yml +15 -0
  177. package/node_modules/browserify-aes/LICENSE +21 -0
  178. package/node_modules/browserify-aes/README.md +19 -0
  179. package/node_modules/browserify-aes/aes.js +228 -0
  180. package/node_modules/browserify-aes/authCipher.js +117 -0
  181. package/node_modules/browserify-aes/browser.js +13 -0
  182. package/node_modules/browserify-aes/decrypter.js +124 -0
  183. package/node_modules/browserify-aes/encrypter.js +114 -0
  184. package/node_modules/browserify-aes/ghash.js +89 -0
  185. package/node_modules/browserify-aes/incr32.js +15 -0
  186. package/node_modules/browserify-aes/index.js +7 -0
  187. package/node_modules/browserify-aes/modes/cbc.js +17 -0
  188. package/node_modules/browserify-aes/modes/cfb.js +33 -0
  189. package/node_modules/browserify-aes/modes/cfb1.js +42 -0
  190. package/node_modules/browserify-aes/modes/cfb8.js +25 -0
  191. package/node_modules/browserify-aes/modes/ctr.js +30 -0
  192. package/node_modules/browserify-aes/modes/ecb.js +7 -0
  193. package/node_modules/browserify-aes/modes/index.js +18 -0
  194. package/node_modules/browserify-aes/modes/list.json +191 -0
  195. package/node_modules/browserify-aes/modes/ofb.js +16 -0
  196. package/node_modules/browserify-aes/package.json +43 -0
  197. package/node_modules/browserify-aes/streamCipher.js +27 -0
  198. package/node_modules/browserify-cipher/.travis.yml +14 -0
  199. package/node_modules/browserify-cipher/LICENSE +21 -0
  200. package/node_modules/browserify-cipher/README.md +7 -0
  201. package/node_modules/browserify-cipher/browser.js +67 -0
  202. package/node_modules/browserify-cipher/index.js +7 -0
  203. package/node_modules/browserify-cipher/package.json +26 -0
  204. package/node_modules/browserify-cipher/test.js +55 -0
  205. package/node_modules/browserify-des/.travis.yml +8 -0
  206. package/node_modules/browserify-des/index.js +50 -0
  207. package/node_modules/browserify-des/license +21 -0
  208. package/node_modules/browserify-des/modes.js +24 -0
  209. package/node_modules/browserify-des/package.json +30 -0
  210. package/node_modules/browserify-des/readme.md +6 -0
  211. package/node_modules/browserify-des/test.js +81 -0
  212. package/node_modules/browserify-rsa/CHANGELOG.md +98 -0
  213. package/node_modules/browserify-rsa/LICENSE +21 -0
  214. package/node_modules/browserify-rsa/README.md +15 -0
  215. package/node_modules/browserify-rsa/index.js +38 -0
  216. package/node_modules/browserify-rsa/package.json +66 -0
  217. package/node_modules/browserify-zlib/.npmignore +7 -0
  218. package/node_modules/browserify-zlib/.travis.yml +16 -0
  219. package/node_modules/browserify-zlib/LICENSE +70 -0
  220. package/node_modules/browserify-zlib/README.md +24 -0
  221. package/node_modules/browserify-zlib/karma.conf.js +11 -0
  222. package/node_modules/browserify-zlib/lib/binding.js +409 -0
  223. package/node_modules/browserify-zlib/lib/index.js +609 -0
  224. package/node_modules/browserify-zlib/package.json +64 -0
  225. package/node_modules/browserify-zlib/src/binding.js +432 -0
  226. package/node_modules/browserify-zlib/src/index.js +650 -0
  227. package/node_modules/buffer/AUTHORS.md +70 -0
  228. package/node_modules/buffer/LICENSE +21 -0
  229. package/node_modules/buffer/README.md +410 -0
  230. package/node_modules/buffer/index.d.ts +186 -0
  231. package/node_modules/buffer/index.js +1817 -0
  232. package/node_modules/buffer/package.json +96 -0
  233. package/node_modules/buffer-xor/.npmignore +1 -0
  234. package/node_modules/buffer-xor/.travis.yml +9 -0
  235. package/node_modules/buffer-xor/LICENSE +21 -0
  236. package/node_modules/buffer-xor/README.md +41 -0
  237. package/node_modules/buffer-xor/index.js +10 -0
  238. package/node_modules/buffer-xor/inline.js +1 -0
  239. package/node_modules/buffer-xor/inplace.js +9 -0
  240. package/node_modules/buffer-xor/package.json +37 -0
  241. package/node_modules/buffer-xor/test/fixtures.json +23 -0
  242. package/node_modules/buffer-xor/test/index.js +38 -0
  243. package/node_modules/builtin-status-codes/browser.js +64 -0
  244. package/node_modules/builtin-status-codes/build.js +8 -0
  245. package/node_modules/builtin-status-codes/index.js +3 -0
  246. package/node_modules/builtin-status-codes/license +21 -0
  247. package/node_modules/builtin-status-codes/package.json +39 -0
  248. package/node_modules/builtin-status-codes/readme.md +31 -0
  249. package/node_modules/call-bind/.eslintignore +1 -0
  250. package/node_modules/call-bind/.eslintrc +16 -0
  251. package/node_modules/call-bind/.github/FUNDING.yml +12 -0
  252. package/node_modules/call-bind/.nycrc +9 -0
  253. package/node_modules/call-bind/CHANGELOG.md +106 -0
  254. package/node_modules/call-bind/LICENSE +21 -0
  255. package/node_modules/call-bind/README.md +64 -0
  256. package/node_modules/call-bind/callBound.js +15 -0
  257. package/node_modules/call-bind/index.js +24 -0
  258. package/node_modules/call-bind/package.json +93 -0
  259. package/node_modules/call-bind/test/callBound.js +54 -0
  260. package/node_modules/call-bind/test/index.js +74 -0
  261. package/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
  262. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
  263. package/node_modules/call-bind-apply-helpers/.nycrc +9 -0
  264. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
  265. package/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  266. package/node_modules/call-bind-apply-helpers/README.md +62 -0
  267. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
  268. package/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
  269. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
  270. package/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
  271. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
  272. package/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
  273. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
  274. package/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
  275. package/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
  276. package/node_modules/call-bind-apply-helpers/index.js +15 -0
  277. package/node_modules/call-bind-apply-helpers/package.json +85 -0
  278. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
  279. package/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
  280. package/node_modules/call-bind-apply-helpers/test/index.js +63 -0
  281. package/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
  282. package/node_modules/call-bound/.eslintrc +13 -0
  283. package/node_modules/call-bound/.github/FUNDING.yml +12 -0
  284. package/node_modules/call-bound/.nycrc +9 -0
  285. package/node_modules/call-bound/CHANGELOG.md +42 -0
  286. package/node_modules/call-bound/LICENSE +21 -0
  287. package/node_modules/call-bound/README.md +53 -0
  288. package/node_modules/call-bound/index.d.ts +94 -0
  289. package/node_modules/call-bound/index.js +19 -0
  290. package/node_modules/call-bound/package.json +99 -0
  291. package/node_modules/call-bound/test/index.js +61 -0
  292. package/node_modules/call-bound/tsconfig.json +10 -0
  293. package/node_modules/cipher-base/.eslintrc +26 -0
  294. package/node_modules/cipher-base/.github/FUNDING.yml +12 -0
  295. package/node_modules/cipher-base/CHANGELOG.md +66 -0
  296. package/node_modules/cipher-base/LICENSE +21 -0
  297. package/node_modules/cipher-base/README.md +17 -0
  298. package/node_modules/cipher-base/index.js +167 -0
  299. package/node_modules/cipher-base/package.json +62 -0
  300. package/node_modules/cipher-base/test/index.js +221 -0
  301. package/node_modules/console-browserify/.testem.json +14 -0
  302. package/node_modules/console-browserify/.travis.yml +11 -0
  303. package/node_modules/console-browserify/CHANGELOG.md +10 -0
  304. package/node_modules/console-browserify/LICENCE +19 -0
  305. package/node_modules/console-browserify/README.md +42 -0
  306. package/node_modules/console-browserify/index.js +87 -0
  307. package/node_modules/console-browserify/package.json +59 -0
  308. package/node_modules/console-browserify/test/index.js +67 -0
  309. package/node_modules/console-browserify/test/static/index.html +12 -0
  310. package/node_modules/console-browserify/test/static/test-adapter.js +53 -0
  311. package/node_modules/constants-browserify/README.md +54 -0
  312. package/node_modules/constants-browserify/build.sh +1 -0
  313. package/node_modules/constants-browserify/constants.json +209 -0
  314. package/node_modules/constants-browserify/package.json +34 -0
  315. package/node_modules/constants-browserify/test.js +18 -0
  316. package/node_modules/core-util-is/LICENSE +19 -0
  317. package/node_modules/core-util-is/README.md +3 -0
  318. package/node_modules/core-util-is/lib/util.js +107 -0
  319. package/node_modules/core-util-is/package.json +38 -0
  320. package/node_modules/create-hash/.travis.yml +17 -0
  321. package/node_modules/create-hash/LICENSE +21 -0
  322. package/node_modules/create-hash/README.md +19 -0
  323. package/node_modules/create-hash/browser.js +30 -0
  324. package/node_modules/create-hash/index.js +1 -0
  325. package/node_modules/create-hash/md5.js +5 -0
  326. package/node_modules/create-hash/package.json +39 -0
  327. package/node_modules/create-hash/test.js +41 -0
  328. package/node_modules/create-hmac/LICENSE +21 -0
  329. package/node_modules/create-hmac/README.md +20 -0
  330. package/node_modules/create-hmac/browser.js +62 -0
  331. package/node_modules/create-hmac/index.js +1 -0
  332. package/node_modules/create-hmac/legacy.js +46 -0
  333. package/node_modules/create-hmac/package.json +45 -0
  334. package/node_modules/define-data-property/.eslintrc +24 -0
  335. package/node_modules/define-data-property/.github/FUNDING.yml +12 -0
  336. package/node_modules/define-data-property/.nycrc +13 -0
  337. package/node_modules/define-data-property/CHANGELOG.md +70 -0
  338. package/node_modules/define-data-property/LICENSE +21 -0
  339. package/node_modules/define-data-property/README.md +67 -0
  340. package/node_modules/define-data-property/index.d.ts +12 -0
  341. package/node_modules/define-data-property/index.js +56 -0
  342. package/node_modules/define-data-property/package.json +106 -0
  343. package/node_modules/define-data-property/test/index.js +392 -0
  344. package/node_modules/define-data-property/tsconfig.json +59 -0
  345. package/node_modules/define-properties/.editorconfig +13 -0
  346. package/node_modules/define-properties/.eslintrc +19 -0
  347. package/node_modules/define-properties/.github/FUNDING.yml +12 -0
  348. package/node_modules/define-properties/.nycrc +9 -0
  349. package/node_modules/define-properties/CHANGELOG.md +91 -0
  350. package/node_modules/define-properties/LICENSE +21 -0
  351. package/node_modules/define-properties/README.md +84 -0
  352. package/node_modules/define-properties/index.js +47 -0
  353. package/node_modules/define-properties/package.json +88 -0
  354. package/node_modules/des.js/.jscsrc +46 -0
  355. package/node_modules/des.js/.jshintrc +89 -0
  356. package/node_modules/des.js/README.md +26 -0
  357. package/node_modules/des.js/lib/des/cbc.js +65 -0
  358. package/node_modules/des.js/lib/des/cipher.js +142 -0
  359. package/node_modules/des.js/lib/des/des.js +150 -0
  360. package/node_modules/des.js/lib/des/ede.js +54 -0
  361. package/node_modules/des.js/lib/des/utils.js +256 -0
  362. package/node_modules/des.js/lib/des.js +7 -0
  363. package/node_modules/des.js/package.json +33 -0
  364. package/node_modules/des.js/test/cbc-test.js +73 -0
  365. package/node_modules/des.js/test/des-test.js +139 -0
  366. package/node_modules/des.js/test/ede-test.js +106 -0
  367. package/node_modules/des.js/test/fixtures.js +5 -0
  368. package/node_modules/des.js/test/utils-test.js +169 -0
  369. package/node_modules/diffie-hellman/.travis.yml +10 -0
  370. package/node_modules/diffie-hellman/LICENSE +19 -0
  371. package/node_modules/diffie-hellman/browser.js +42 -0
  372. package/node_modules/diffie-hellman/index.js +10 -0
  373. package/node_modules/diffie-hellman/lib/dh.js +164 -0
  374. package/node_modules/diffie-hellman/lib/generatePrime.js +105 -0
  375. package/node_modules/diffie-hellman/lib/primes.json +34 -0
  376. package/node_modules/diffie-hellman/node_modules/bn.js/LICENSE +19 -0
  377. package/node_modules/diffie-hellman/node_modules/bn.js/README.md +200 -0
  378. package/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js +3447 -0
  379. package/node_modules/diffie-hellman/node_modules/bn.js/package.json +36 -0
  380. package/node_modules/diffie-hellman/node_modules/bn.js/util/genCombMulTo.js +65 -0
  381. package/node_modules/diffie-hellman/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  382. package/node_modules/diffie-hellman/package.json +35 -0
  383. package/node_modules/diffie-hellman/readme.md +4 -0
  384. package/node_modules/domain-browser/.prettierignore +57 -0
  385. package/node_modules/domain-browser/LICENSE.md +101 -0
  386. package/node_modules/domain-browser/README.md +126 -0
  387. package/node_modules/domain-browser/package.json +135 -0
  388. package/node_modules/domain-browser/source/index.js +66 -0
  389. package/node_modules/dunder-proto/.eslintrc +5 -0
  390. package/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
  391. package/node_modules/dunder-proto/.nycrc +13 -0
  392. package/node_modules/dunder-proto/CHANGELOG.md +24 -0
  393. package/node_modules/dunder-proto/LICENSE +21 -0
  394. package/node_modules/dunder-proto/README.md +54 -0
  395. package/node_modules/dunder-proto/get.d.ts +5 -0
  396. package/node_modules/dunder-proto/get.js +30 -0
  397. package/node_modules/dunder-proto/package.json +76 -0
  398. package/node_modules/dunder-proto/set.d.ts +5 -0
  399. package/node_modules/dunder-proto/set.js +35 -0
  400. package/node_modules/dunder-proto/test/get.js +34 -0
  401. package/node_modules/dunder-proto/test/index.js +4 -0
  402. package/node_modules/dunder-proto/test/set.js +50 -0
  403. package/node_modules/dunder-proto/tsconfig.json +9 -0
  404. package/node_modules/es-define-property/.eslintrc +13 -0
  405. package/node_modules/es-define-property/.github/FUNDING.yml +12 -0
  406. package/node_modules/es-define-property/.nycrc +9 -0
  407. package/node_modules/es-define-property/CHANGELOG.md +29 -0
  408. package/node_modules/es-define-property/LICENSE +21 -0
  409. package/node_modules/es-define-property/README.md +49 -0
  410. package/node_modules/es-define-property/index.d.ts +3 -0
  411. package/node_modules/es-define-property/index.js +14 -0
  412. package/node_modules/es-define-property/package.json +81 -0
  413. package/node_modules/es-define-property/test/index.js +56 -0
  414. package/node_modules/es-define-property/tsconfig.json +10 -0
  415. package/node_modules/es-errors/.eslintrc +5 -0
  416. package/node_modules/es-errors/.github/FUNDING.yml +12 -0
  417. package/node_modules/es-errors/CHANGELOG.md +40 -0
  418. package/node_modules/es-errors/LICENSE +21 -0
  419. package/node_modules/es-errors/README.md +55 -0
  420. package/node_modules/es-errors/eval.d.ts +3 -0
  421. package/node_modules/es-errors/eval.js +4 -0
  422. package/node_modules/es-errors/index.d.ts +3 -0
  423. package/node_modules/es-errors/index.js +4 -0
  424. package/node_modules/es-errors/package.json +80 -0
  425. package/node_modules/es-errors/range.d.ts +3 -0
  426. package/node_modules/es-errors/range.js +4 -0
  427. package/node_modules/es-errors/ref.d.ts +3 -0
  428. package/node_modules/es-errors/ref.js +4 -0
  429. package/node_modules/es-errors/syntax.d.ts +3 -0
  430. package/node_modules/es-errors/syntax.js +4 -0
  431. package/node_modules/es-errors/test/index.js +19 -0
  432. package/node_modules/es-errors/tsconfig.json +49 -0
  433. package/node_modules/es-errors/type.d.ts +3 -0
  434. package/node_modules/es-errors/type.js +4 -0
  435. package/node_modules/es-errors/uri.d.ts +3 -0
  436. package/node_modules/es-errors/uri.js +4 -0
  437. package/node_modules/es-object-atoms/.eslintrc +16 -0
  438. package/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
  439. package/node_modules/es-object-atoms/CHANGELOG.md +37 -0
  440. package/node_modules/es-object-atoms/LICENSE +21 -0
  441. package/node_modules/es-object-atoms/README.md +63 -0
  442. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
  443. package/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
  444. package/node_modules/es-object-atoms/ToObject.d.ts +7 -0
  445. package/node_modules/es-object-atoms/ToObject.js +10 -0
  446. package/node_modules/es-object-atoms/index.d.ts +3 -0
  447. package/node_modules/es-object-atoms/index.js +4 -0
  448. package/node_modules/es-object-atoms/isObject.d.ts +3 -0
  449. package/node_modules/es-object-atoms/isObject.js +6 -0
  450. package/node_modules/es-object-atoms/package.json +80 -0
  451. package/node_modules/es-object-atoms/test/index.js +38 -0
  452. package/node_modules/es-object-atoms/tsconfig.json +6 -0
  453. package/node_modules/events/.airtap.yml +15 -0
  454. package/node_modules/events/.github/FUNDING.yml +12 -0
  455. package/node_modules/events/.travis.yml +18 -0
  456. package/node_modules/events/History.md +118 -0
  457. package/node_modules/events/LICENSE +22 -0
  458. package/node_modules/events/Readme.md +50 -0
  459. package/node_modules/events/events.js +497 -0
  460. package/node_modules/events/package.json +37 -0
  461. package/node_modules/events/security.md +10 -0
  462. package/node_modules/events/tests/add-listeners.js +111 -0
  463. package/node_modules/events/tests/check-listener-leaks.js +101 -0
  464. package/node_modules/events/tests/common.js +104 -0
  465. package/node_modules/events/tests/errors.js +13 -0
  466. package/node_modules/events/tests/events-list.js +28 -0
  467. package/node_modules/events/tests/events-once.js +234 -0
  468. package/node_modules/events/tests/index.js +64 -0
  469. package/node_modules/events/tests/legacy-compat.js +16 -0
  470. package/node_modules/events/tests/listener-count.js +37 -0
  471. package/node_modules/events/tests/listeners-side-effects.js +56 -0
  472. package/node_modules/events/tests/listeners.js +168 -0
  473. package/node_modules/events/tests/max-listeners.js +47 -0
  474. package/node_modules/events/tests/method-names.js +35 -0
  475. package/node_modules/events/tests/modify-in-emit.js +90 -0
  476. package/node_modules/events/tests/num-args.js +60 -0
  477. package/node_modules/events/tests/once.js +83 -0
  478. package/node_modules/events/tests/prepend.js +31 -0
  479. package/node_modules/events/tests/remove-all-listeners.js +133 -0
  480. package/node_modules/events/tests/remove-listeners.js +212 -0
  481. package/node_modules/events/tests/set-max-listeners-side-effects.js +31 -0
  482. package/node_modules/events/tests/special-event-names.js +45 -0
  483. package/node_modules/events/tests/subclass.js +66 -0
  484. package/node_modules/events/tests/symbols.js +25 -0
  485. package/node_modules/evp_bytestokey/LICENSE +21 -0
  486. package/node_modules/evp_bytestokey/README.md +51 -0
  487. package/node_modules/evp_bytestokey/index.js +45 -0
  488. package/node_modules/evp_bytestokey/package.json +45 -0
  489. package/node_modules/for-each/.editorconfig +20 -0
  490. package/node_modules/for-each/.eslintrc +30 -0
  491. package/node_modules/for-each/.github/FUNDING.yml +12 -0
  492. package/node_modules/for-each/.github/SECURITY.md +3 -0
  493. package/node_modules/for-each/.nycrc +8 -0
  494. package/node_modules/for-each/CHANGELOG.md +107 -0
  495. package/node_modules/for-each/LICENSE +22 -0
  496. package/node_modules/for-each/README.md +39 -0
  497. package/node_modules/for-each/index.d.ts +35 -0
  498. package/node_modules/for-each/index.js +69 -0
  499. package/node_modules/for-each/package.json +76 -0
  500. package/node_modules/for-each/test/test.js +224 -0
  501. package/node_modules/for-each/tsconfig.json +8 -0
  502. package/node_modules/function-bind/.eslintrc +21 -0
  503. package/node_modules/function-bind/.github/FUNDING.yml +12 -0
  504. package/node_modules/function-bind/.github/SECURITY.md +3 -0
  505. package/node_modules/function-bind/.nycrc +13 -0
  506. package/node_modules/function-bind/CHANGELOG.md +136 -0
  507. package/node_modules/function-bind/LICENSE +20 -0
  508. package/node_modules/function-bind/README.md +46 -0
  509. package/node_modules/function-bind/implementation.js +84 -0
  510. package/node_modules/function-bind/index.js +5 -0
  511. package/node_modules/function-bind/package.json +87 -0
  512. package/node_modules/function-bind/test/.eslintrc +9 -0
  513. package/node_modules/function-bind/test/index.js +252 -0
  514. package/node_modules/get-intrinsic/.eslintrc +42 -0
  515. package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  516. package/node_modules/get-intrinsic/.nycrc +9 -0
  517. package/node_modules/get-intrinsic/CHANGELOG.md +186 -0
  518. package/node_modules/get-intrinsic/LICENSE +21 -0
  519. package/node_modules/get-intrinsic/README.md +71 -0
  520. package/node_modules/get-intrinsic/index.js +378 -0
  521. package/node_modules/get-intrinsic/package.json +97 -0
  522. package/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  523. package/node_modules/get-proto/.eslintrc +10 -0
  524. package/node_modules/get-proto/.github/FUNDING.yml +12 -0
  525. package/node_modules/get-proto/.nycrc +9 -0
  526. package/node_modules/get-proto/CHANGELOG.md +21 -0
  527. package/node_modules/get-proto/LICENSE +21 -0
  528. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
  529. package/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
  530. package/node_modules/get-proto/README.md +50 -0
  531. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
  532. package/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
  533. package/node_modules/get-proto/index.d.ts +5 -0
  534. package/node_modules/get-proto/index.js +27 -0
  535. package/node_modules/get-proto/package.json +81 -0
  536. package/node_modules/get-proto/test/index.js +68 -0
  537. package/node_modules/get-proto/tsconfig.json +9 -0
  538. package/node_modules/gopd/.eslintrc +16 -0
  539. package/node_modules/gopd/.github/FUNDING.yml +12 -0
  540. package/node_modules/gopd/CHANGELOG.md +45 -0
  541. package/node_modules/gopd/LICENSE +21 -0
  542. package/node_modules/gopd/README.md +40 -0
  543. package/node_modules/gopd/gOPD.d.ts +1 -0
  544. package/node_modules/gopd/gOPD.js +4 -0
  545. package/node_modules/gopd/index.d.ts +5 -0
  546. package/node_modules/gopd/index.js +15 -0
  547. package/node_modules/gopd/package.json +77 -0
  548. package/node_modules/gopd/test/index.js +36 -0
  549. package/node_modules/gopd/tsconfig.json +9 -0
  550. package/node_modules/has-property-descriptors/.eslintrc +13 -0
  551. package/node_modules/has-property-descriptors/.github/FUNDING.yml +12 -0
  552. package/node_modules/has-property-descriptors/.nycrc +9 -0
  553. package/node_modules/has-property-descriptors/CHANGELOG.md +35 -0
  554. package/node_modules/has-property-descriptors/LICENSE +21 -0
  555. package/node_modules/has-property-descriptors/README.md +43 -0
  556. package/node_modules/has-property-descriptors/index.js +22 -0
  557. package/node_modules/has-property-descriptors/package.json +77 -0
  558. package/node_modules/has-property-descriptors/test/index.js +57 -0
  559. package/node_modules/has-symbols/.eslintrc +11 -0
  560. package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  561. package/node_modules/has-symbols/.nycrc +9 -0
  562. package/node_modules/has-symbols/CHANGELOG.md +91 -0
  563. package/node_modules/has-symbols/LICENSE +21 -0
  564. package/node_modules/has-symbols/README.md +46 -0
  565. package/node_modules/has-symbols/index.d.ts +3 -0
  566. package/node_modules/has-symbols/index.js +14 -0
  567. package/node_modules/has-symbols/package.json +111 -0
  568. package/node_modules/has-symbols/shams.d.ts +3 -0
  569. package/node_modules/has-symbols/shams.js +45 -0
  570. package/node_modules/has-symbols/test/index.js +22 -0
  571. package/node_modules/has-symbols/test/shams/core-js.js +29 -0
  572. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
  573. package/node_modules/has-symbols/test/tests.js +58 -0
  574. package/node_modules/has-symbols/tsconfig.json +10 -0
  575. package/node_modules/has-tostringtag/.eslintrc +5 -0
  576. package/node_modules/has-tostringtag/.github/FUNDING.yml +12 -0
  577. package/node_modules/has-tostringtag/.nycrc +13 -0
  578. package/node_modules/has-tostringtag/CHANGELOG.md +42 -0
  579. package/node_modules/has-tostringtag/LICENSE +21 -0
  580. package/node_modules/has-tostringtag/README.md +46 -0
  581. package/node_modules/has-tostringtag/index.d.ts +3 -0
  582. package/node_modules/has-tostringtag/index.js +8 -0
  583. package/node_modules/has-tostringtag/package.json +108 -0
  584. package/node_modules/has-tostringtag/shams.d.ts +3 -0
  585. package/node_modules/has-tostringtag/shams.js +8 -0
  586. package/node_modules/has-tostringtag/test/index.js +21 -0
  587. package/node_modules/has-tostringtag/test/shams/core-js.js +31 -0
  588. package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +30 -0
  589. package/node_modules/has-tostringtag/test/tests.js +15 -0
  590. package/node_modules/has-tostringtag/tsconfig.json +49 -0
  591. package/node_modules/hash-base/LICENSE +21 -0
  592. package/node_modules/hash-base/README.md +48 -0
  593. package/node_modules/hash-base/index.js +138 -0
  594. package/node_modules/hash-base/package.json +42 -0
  595. package/node_modules/hash.js/.eslintrc.js +41 -0
  596. package/node_modules/hash.js/.travis.yml +10 -0
  597. package/node_modules/hash.js/README.md +48 -0
  598. package/node_modules/hash.js/lib/hash/common.js +92 -0
  599. package/node_modules/hash.js/lib/hash/hmac.js +47 -0
  600. package/node_modules/hash.js/lib/hash/ripemd.js +146 -0
  601. package/node_modules/hash.js/lib/hash/sha/1.js +74 -0
  602. package/node_modules/hash.js/lib/hash/sha/224.js +30 -0
  603. package/node_modules/hash.js/lib/hash/sha/256.js +105 -0
  604. package/node_modules/hash.js/lib/hash/sha/384.js +35 -0
  605. package/node_modules/hash.js/lib/hash/sha/512.js +330 -0
  606. package/node_modules/hash.js/lib/hash/sha/common.js +49 -0
  607. package/node_modules/hash.js/lib/hash/sha.js +7 -0
  608. package/node_modules/hash.js/lib/hash/utils.js +278 -0
  609. package/node_modules/hash.js/lib/hash.d.ts +106 -0
  610. package/node_modules/hash.js/lib/hash.js +15 -0
  611. package/node_modules/hash.js/package.json +35 -0
  612. package/node_modules/hash.js/test/hash-test.js +140 -0
  613. package/node_modules/hash.js/test/hmac-test.js +62 -0
  614. package/node_modules/hasown/.eslintrc +5 -0
  615. package/node_modules/hasown/.github/FUNDING.yml +12 -0
  616. package/node_modules/hasown/.nycrc +13 -0
  617. package/node_modules/hasown/CHANGELOG.md +40 -0
  618. package/node_modules/hasown/LICENSE +21 -0
  619. package/node_modules/hasown/README.md +40 -0
  620. package/node_modules/hasown/index.d.ts +3 -0
  621. package/node_modules/hasown/index.js +8 -0
  622. package/node_modules/hasown/package.json +92 -0
  623. package/node_modules/hasown/tsconfig.json +6 -0
  624. package/node_modules/hmac-drbg/.npmignore +2 -0
  625. package/node_modules/hmac-drbg/.travis.yml +11 -0
  626. package/node_modules/hmac-drbg/README.md +48 -0
  627. package/node_modules/hmac-drbg/lib/hmac-drbg.js +113 -0
  628. package/node_modules/hmac-drbg/package.json +32 -0
  629. package/node_modules/hmac-drbg/test/drbg-test.js +91 -0
  630. package/node_modules/hmac-drbg/test/fixtures/hmac-drbg-nist.json +332 -0
  631. package/node_modules/https-browserify/LICENSE +20 -0
  632. package/node_modules/https-browserify/index.js +31 -0
  633. package/node_modules/https-browserify/package.json +28 -0
  634. package/node_modules/https-browserify/readme.markdown +22 -0
  635. package/node_modules/ieee754/LICENSE +11 -0
  636. package/node_modules/ieee754/README.md +51 -0
  637. package/node_modules/ieee754/index.d.ts +10 -0
  638. package/node_modules/ieee754/index.js +85 -0
  639. package/node_modules/ieee754/package.json +52 -0
  640. package/node_modules/inherits/LICENSE +16 -0
  641. package/node_modules/inherits/README.md +42 -0
  642. package/node_modules/inherits/inherits.js +9 -0
  643. package/node_modules/inherits/inherits_browser.js +27 -0
  644. package/node_modules/inherits/package.json +29 -0
  645. package/node_modules/is-arguments/.editorconfig +20 -0
  646. package/node_modules/is-arguments/.eslintrc +9 -0
  647. package/node_modules/is-arguments/.github/FUNDING.yml +12 -0
  648. package/node_modules/is-arguments/.nycrc +9 -0
  649. package/node_modules/is-arguments/CHANGELOG.md +201 -0
  650. package/node_modules/is-arguments/LICENSE +20 -0
  651. package/node_modules/is-arguments/README.md +47 -0
  652. package/node_modules/is-arguments/index.d.ts +6 -0
  653. package/node_modules/is-arguments/index.js +44 -0
  654. package/node_modules/is-arguments/package.json +105 -0
  655. package/node_modules/is-arguments/test/index.js +47 -0
  656. package/node_modules/is-arguments/tsconfig.json +9 -0
  657. package/node_modules/is-callable/.editorconfig +31 -0
  658. package/node_modules/is-callable/.eslintrc +10 -0
  659. package/node_modules/is-callable/.github/FUNDING.yml +12 -0
  660. package/node_modules/is-callable/.nycrc +9 -0
  661. package/node_modules/is-callable/CHANGELOG.md +158 -0
  662. package/node_modules/is-callable/LICENSE +22 -0
  663. package/node_modules/is-callable/README.md +83 -0
  664. package/node_modules/is-callable/index.js +101 -0
  665. package/node_modules/is-callable/package.json +106 -0
  666. package/node_modules/is-callable/test/index.js +244 -0
  667. package/node_modules/is-generator-function/.eslintrc +9 -0
  668. package/node_modules/is-generator-function/.nvmrc +1 -0
  669. package/node_modules/is-generator-function/.nycrc +9 -0
  670. package/node_modules/is-generator-function/CHANGELOG.md +237 -0
  671. package/node_modules/is-generator-function/LICENSE +20 -0
  672. package/node_modules/is-generator-function/README.md +40 -0
  673. package/node_modules/is-generator-function/index.d.ts +3 -0
  674. package/node_modules/is-generator-function/index.js +47 -0
  675. package/node_modules/is-generator-function/package.json +106 -0
  676. package/node_modules/is-generator-function/test/corejs.js +6 -0
  677. package/node_modules/is-generator-function/test/index.js +80 -0
  678. package/node_modules/is-generator-function/test/uglified.js +9 -0
  679. package/node_modules/is-generator-function/tsconfig.json +9 -0
  680. package/node_modules/is-nan/.eslintignore +1 -0
  681. package/node_modules/is-nan/.eslintrc +5 -0
  682. package/node_modules/is-nan/.github/FUNDING.yml +12 -0
  683. package/node_modules/is-nan/.nycrc +13 -0
  684. package/node_modules/is-nan/CHANGELOG.md +56 -0
  685. package/node_modules/is-nan/LICENSE +20 -0
  686. package/node_modules/is-nan/README.md +49 -0
  687. package/node_modules/is-nan/auto.js +3 -0
  688. package/node_modules/is-nan/implementation.js +7 -0
  689. package/node_modules/is-nan/index.js +20 -0
  690. package/node_modules/is-nan/package.json +77 -0
  691. package/node_modules/is-nan/polyfill.js +10 -0
  692. package/node_modules/is-nan/shim.js +16 -0
  693. package/node_modules/is-nan/test/index.js +11 -0
  694. package/node_modules/is-nan/test/shimmed.js +30 -0
  695. package/node_modules/is-nan/test/tests.js +40 -0
  696. package/node_modules/is-regex/.editorconfig +23 -0
  697. package/node_modules/is-regex/.eslintrc +10 -0
  698. package/node_modules/is-regex/.nycrc +10 -0
  699. package/node_modules/is-regex/CHANGELOG.md +233 -0
  700. package/node_modules/is-regex/LICENSE +20 -0
  701. package/node_modules/is-regex/README.md +52 -0
  702. package/node_modules/is-regex/index.d.ts +3 -0
  703. package/node_modules/is-regex/index.js +69 -0
  704. package/node_modules/is-regex/package.json +104 -0
  705. package/node_modules/is-regex/test/index.js +121 -0
  706. package/node_modules/is-regex/tsconfig.json +9 -0
  707. package/node_modules/is-typed-array/.editorconfig +20 -0
  708. package/node_modules/is-typed-array/.eslintrc +13 -0
  709. package/node_modules/is-typed-array/.github/FUNDING.yml +12 -0
  710. package/node_modules/is-typed-array/.nycrc +9 -0
  711. package/node_modules/is-typed-array/CHANGELOG.md +166 -0
  712. package/node_modules/is-typed-array/LICENSE +22 -0
  713. package/node_modules/is-typed-array/README.md +70 -0
  714. package/node_modules/is-typed-array/index.d.ts +9 -0
  715. package/node_modules/is-typed-array/index.js +8 -0
  716. package/node_modules/is-typed-array/package.json +129 -0
  717. package/node_modules/is-typed-array/test/index.js +111 -0
  718. package/node_modules/is-typed-array/tsconfig.json +6 -0
  719. package/node_modules/isarray/.npmignore +1 -0
  720. package/node_modules/isarray/.travis.yml +4 -0
  721. package/node_modules/isarray/Makefile +6 -0
  722. package/node_modules/isarray/README.md +60 -0
  723. package/node_modules/isarray/component.json +19 -0
  724. package/node_modules/isarray/index.js +5 -0
  725. package/node_modules/isarray/package.json +45 -0
  726. package/node_modules/isarray/test.js +20 -0
  727. package/node_modules/math-intrinsics/.eslintrc +16 -0
  728. package/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
  729. package/node_modules/math-intrinsics/CHANGELOG.md +24 -0
  730. package/node_modules/math-intrinsics/LICENSE +21 -0
  731. package/node_modules/math-intrinsics/README.md +50 -0
  732. package/node_modules/math-intrinsics/abs.d.ts +1 -0
  733. package/node_modules/math-intrinsics/abs.js +4 -0
  734. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
  735. package/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
  736. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
  737. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
  738. package/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
  739. package/node_modules/math-intrinsics/constants/maxValue.js +5 -0
  740. package/node_modules/math-intrinsics/floor.d.ts +1 -0
  741. package/node_modules/math-intrinsics/floor.js +4 -0
  742. package/node_modules/math-intrinsics/isFinite.d.ts +3 -0
  743. package/node_modules/math-intrinsics/isFinite.js +12 -0
  744. package/node_modules/math-intrinsics/isInteger.d.ts +3 -0
  745. package/node_modules/math-intrinsics/isInteger.js +16 -0
  746. package/node_modules/math-intrinsics/isNaN.d.ts +1 -0
  747. package/node_modules/math-intrinsics/isNaN.js +6 -0
  748. package/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
  749. package/node_modules/math-intrinsics/isNegativeZero.js +6 -0
  750. package/node_modules/math-intrinsics/max.d.ts +1 -0
  751. package/node_modules/math-intrinsics/max.js +4 -0
  752. package/node_modules/math-intrinsics/min.d.ts +1 -0
  753. package/node_modules/math-intrinsics/min.js +4 -0
  754. package/node_modules/math-intrinsics/mod.d.ts +3 -0
  755. package/node_modules/math-intrinsics/mod.js +9 -0
  756. package/node_modules/math-intrinsics/package.json +86 -0
  757. package/node_modules/math-intrinsics/pow.d.ts +1 -0
  758. package/node_modules/math-intrinsics/pow.js +4 -0
  759. package/node_modules/math-intrinsics/round.d.ts +1 -0
  760. package/node_modules/math-intrinsics/round.js +4 -0
  761. package/node_modules/math-intrinsics/sign.d.ts +3 -0
  762. package/node_modules/math-intrinsics/sign.js +11 -0
  763. package/node_modules/math-intrinsics/test/index.js +192 -0
  764. package/node_modules/math-intrinsics/tsconfig.json +3 -0
  765. package/node_modules/md5.js/LICENSE +21 -0
  766. package/node_modules/md5.js/README.md +29 -0
  767. package/node_modules/md5.js/index.js +146 -0
  768. package/node_modules/md5.js/package.json +38 -0
  769. package/node_modules/miller-rabin/.npmignore +2 -0
  770. package/node_modules/miller-rabin/1.js +7 -0
  771. package/node_modules/miller-rabin/README.md +26 -0
  772. package/node_modules/miller-rabin/bin/miller-rabin +29 -0
  773. package/node_modules/miller-rabin/lib/mr.js +115 -0
  774. package/node_modules/miller-rabin/node_modules/bn.js/LICENSE +19 -0
  775. package/node_modules/miller-rabin/node_modules/bn.js/README.md +200 -0
  776. package/node_modules/miller-rabin/node_modules/bn.js/lib/bn.js +3447 -0
  777. package/node_modules/miller-rabin/node_modules/bn.js/package.json +36 -0
  778. package/node_modules/miller-rabin/node_modules/bn.js/util/genCombMulTo.js +65 -0
  779. package/node_modules/miller-rabin/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  780. package/node_modules/miller-rabin/package.json +32 -0
  781. package/node_modules/miller-rabin/test/api-test.js +18 -0
  782. package/node_modules/miller-rabin/test.js +25 -0
  783. package/node_modules/minimalistic-assert/LICENSE +13 -0
  784. package/node_modules/minimalistic-assert/index.js +11 -0
  785. package/node_modules/minimalistic-assert/package.json +19 -0
  786. package/node_modules/minimalistic-assert/readme.md +4 -0
  787. package/node_modules/minimalistic-crypto-utils/.npmignore +2 -0
  788. package/node_modules/minimalistic-crypto-utils/.travis.yml +11 -0
  789. package/node_modules/minimalistic-crypto-utils/README.md +47 -0
  790. package/node_modules/minimalistic-crypto-utils/lib/utils.js +58 -0
  791. package/node_modules/minimalistic-crypto-utils/package.json +27 -0
  792. package/node_modules/minimalistic-crypto-utils/test/utils-test.js +28 -0
  793. package/node_modules/object-inspect/.eslintrc +53 -0
  794. package/node_modules/object-inspect/.github/FUNDING.yml +12 -0
  795. package/node_modules/object-inspect/.nycrc +13 -0
  796. package/node_modules/object-inspect/CHANGELOG.md +424 -0
  797. package/node_modules/object-inspect/LICENSE +21 -0
  798. package/node_modules/object-inspect/example/all.js +23 -0
  799. package/node_modules/object-inspect/example/circular.js +6 -0
  800. package/node_modules/object-inspect/example/fn.js +5 -0
  801. package/node_modules/object-inspect/example/inspect.js +10 -0
  802. package/node_modules/object-inspect/index.js +544 -0
  803. package/node_modules/object-inspect/package-support.json +20 -0
  804. package/node_modules/object-inspect/package.json +105 -0
  805. package/node_modules/object-inspect/readme.markdown +84 -0
  806. package/node_modules/object-inspect/test/bigint.js +58 -0
  807. package/node_modules/object-inspect/test/browser/dom.js +15 -0
  808. package/node_modules/object-inspect/test/circular.js +16 -0
  809. package/node_modules/object-inspect/test/deep.js +12 -0
  810. package/node_modules/object-inspect/test/element.js +53 -0
  811. package/node_modules/object-inspect/test/err.js +48 -0
  812. package/node_modules/object-inspect/test/fakes.js +29 -0
  813. package/node_modules/object-inspect/test/fn.js +76 -0
  814. package/node_modules/object-inspect/test/global.js +17 -0
  815. package/node_modules/object-inspect/test/has.js +15 -0
  816. package/node_modules/object-inspect/test/holes.js +15 -0
  817. package/node_modules/object-inspect/test/indent-option.js +271 -0
  818. package/node_modules/object-inspect/test/inspect.js +139 -0
  819. package/node_modules/object-inspect/test/lowbyte.js +12 -0
  820. package/node_modules/object-inspect/test/number.js +58 -0
  821. package/node_modules/object-inspect/test/quoteStyle.js +26 -0
  822. package/node_modules/object-inspect/test/toStringTag.js +40 -0
  823. package/node_modules/object-inspect/test/undef.js +12 -0
  824. package/node_modules/object-inspect/test/values.js +261 -0
  825. package/node_modules/object-inspect/test-core-js.js +26 -0
  826. package/node_modules/object-inspect/util.inspect.js +1 -0
  827. package/node_modules/object-is/.eslintrc +5 -0
  828. package/node_modules/object-is/.nycrc +9 -0
  829. package/node_modules/object-is/CHANGELOG.md +175 -0
  830. package/node_modules/object-is/LICENSE +20 -0
  831. package/node_modules/object-is/README.md +60 -0
  832. package/node_modules/object-is/auto.js +3 -0
  833. package/node_modules/object-is/implementation.js +19 -0
  834. package/node_modules/object-is/index.js +18 -0
  835. package/node_modules/object-is/package.json +96 -0
  836. package/node_modules/object-is/polyfill.js +7 -0
  837. package/node_modules/object-is/shim.js +14 -0
  838. package/node_modules/object-is/test/implementation.js +12 -0
  839. package/node_modules/object-is/test/index.js +12 -0
  840. package/node_modules/object-is/test/shimmed.js +28 -0
  841. package/node_modules/object-is/test/tests.js +57 -0
  842. package/node_modules/object-keys/.editorconfig +13 -0
  843. package/node_modules/object-keys/.eslintrc +17 -0
  844. package/node_modules/object-keys/.travis.yml +277 -0
  845. package/node_modules/object-keys/CHANGELOG.md +232 -0
  846. package/node_modules/object-keys/LICENSE +21 -0
  847. package/node_modules/object-keys/README.md +76 -0
  848. package/node_modules/object-keys/implementation.js +122 -0
  849. package/node_modules/object-keys/index.js +32 -0
  850. package/node_modules/object-keys/isArguments.js +17 -0
  851. package/node_modules/object-keys/package.json +88 -0
  852. package/node_modules/object-keys/test/index.js +5 -0
  853. package/node_modules/object.assign/.editorconfig +20 -0
  854. package/node_modules/object.assign/.eslintrc +28 -0
  855. package/node_modules/object.assign/.github/FUNDING.yml +12 -0
  856. package/node_modules/object.assign/.nycrc +9 -0
  857. package/node_modules/object.assign/CHANGELOG.md +246 -0
  858. package/node_modules/object.assign/LICENSE +21 -0
  859. package/node_modules/object.assign/README.md +136 -0
  860. package/node_modules/object.assign/auto.js +3 -0
  861. package/node_modules/object.assign/dist/browser.js +1304 -0
  862. package/node_modules/object.assign/hasSymbols.js +43 -0
  863. package/node_modules/object.assign/implementation.js +46 -0
  864. package/node_modules/object.assign/index.js +22 -0
  865. package/node_modules/object.assign/package.json +96 -0
  866. package/node_modules/object.assign/polyfill.js +55 -0
  867. package/node_modules/object.assign/shim.js +14 -0
  868. package/node_modules/object.assign/test/implementation.js +19 -0
  869. package/node_modules/object.assign/test/index.js +17 -0
  870. package/node_modules/object.assign/test/native.js +49 -0
  871. package/node_modules/object.assign/test/ses-compat.js +12 -0
  872. package/node_modules/object.assign/test/shimmed.js +52 -0
  873. package/node_modules/object.assign/test/tests.js +232 -0
  874. package/node_modules/os-browserify/.npmignore +14 -0
  875. package/node_modules/os-browserify/LICENSE +21 -0
  876. package/node_modules/os-browserify/README.md +5 -0
  877. package/node_modules/os-browserify/browser.js +49 -0
  878. package/node_modules/os-browserify/main.js +1 -0
  879. package/node_modules/os-browserify/package.json +20 -0
  880. package/node_modules/pako/CHANGELOG.md +164 -0
  881. package/node_modules/pako/LICENSE +21 -0
  882. package/node_modules/pako/README.md +191 -0
  883. package/node_modules/pako/dist/pako.js +6818 -0
  884. package/node_modules/pako/dist/pako.min.js +1 -0
  885. package/node_modules/pako/dist/pako_deflate.js +3997 -0
  886. package/node_modules/pako/dist/pako_deflate.min.js +1 -0
  887. package/node_modules/pako/dist/pako_inflate.js +3300 -0
  888. package/node_modules/pako/dist/pako_inflate.min.js +1 -0
  889. package/node_modules/pako/index.js +14 -0
  890. package/node_modules/pako/lib/deflate.js +400 -0
  891. package/node_modules/pako/lib/inflate.js +423 -0
  892. package/node_modules/pako/lib/utils/common.js +105 -0
  893. package/node_modules/pako/lib/utils/strings.js +187 -0
  894. package/node_modules/pako/lib/zlib/README +59 -0
  895. package/node_modules/pako/lib/zlib/adler32.js +51 -0
  896. package/node_modules/pako/lib/zlib/constants.js +68 -0
  897. package/node_modules/pako/lib/zlib/crc32.js +59 -0
  898. package/node_modules/pako/lib/zlib/deflate.js +1874 -0
  899. package/node_modules/pako/lib/zlib/gzheader.js +58 -0
  900. package/node_modules/pako/lib/zlib/inffast.js +345 -0
  901. package/node_modules/pako/lib/zlib/inflate.js +1556 -0
  902. package/node_modules/pako/lib/zlib/inftrees.js +343 -0
  903. package/node_modules/pako/lib/zlib/messages.js +32 -0
  904. package/node_modules/pako/lib/zlib/trees.js +1222 -0
  905. package/node_modules/pako/lib/zlib/zstream.js +47 -0
  906. package/node_modules/pako/package.json +44 -0
  907. package/node_modules/parse-asn1/.eslintrc +34 -0
  908. package/node_modules/parse-asn1/.github/FUNDING.yml +12 -0
  909. package/node_modules/parse-asn1/CHANGELOG.md +188 -0
  910. package/node_modules/parse-asn1/LICENSE +13 -0
  911. package/node_modules/parse-asn1/README.md +8 -0
  912. package/node_modules/parse-asn1/aesid.json +13 -0
  913. package/node_modules/parse-asn1/asn1.js +123 -0
  914. package/node_modules/parse-asn1/certificate.js +89 -0
  915. package/node_modules/parse-asn1/fixProc.js +33 -0
  916. package/node_modules/parse-asn1/index.js +111 -0
  917. package/node_modules/parse-asn1/package.json +59 -0
  918. package/node_modules/path-browserify/.github/FUNDING.yml +12 -0
  919. package/node_modules/path-browserify/.travis.yml +16 -0
  920. package/node_modules/path-browserify/CHANGELOG.md +20 -0
  921. package/node_modules/path-browserify/LICENSE +20 -0
  922. package/node_modules/path-browserify/README.md +45 -0
  923. package/node_modules/path-browserify/index.js +529 -0
  924. package/node_modules/path-browserify/package.json +30 -0
  925. package/node_modules/path-browserify/security.md +10 -0
  926. package/node_modules/path-browserify/test/index.js +9 -0
  927. package/node_modules/path-browserify/test/test-path-basename.js +79 -0
  928. package/node_modules/path-browserify/test/test-path-dirname.js +58 -0
  929. package/node_modules/path-browserify/test/test-path-extname.js +96 -0
  930. package/node_modules/path-browserify/test/test-path-isabsolute.js +33 -0
  931. package/node_modules/path-browserify/test/test-path-join.js +126 -0
  932. package/node_modules/path-browserify/test/test-path-parse-format.js +235 -0
  933. package/node_modules/path-browserify/test/test-path-relative.js +66 -0
  934. package/node_modules/path-browserify/test/test-path-resolve.js +45 -0
  935. package/node_modules/path-browserify/test/test-path-zero-length-strings.js +53 -0
  936. package/node_modules/path-browserify/test/test-path.js +107 -0
  937. package/node_modules/pbkdf2/LICENSE +21 -0
  938. package/node_modules/pbkdf2/README.md +30 -0
  939. package/node_modules/pbkdf2/browser.js +2 -0
  940. package/node_modules/pbkdf2/index.js +38 -0
  941. package/node_modules/pbkdf2/lib/async.js +118 -0
  942. package/node_modules/pbkdf2/lib/default-encoding.js +12 -0
  943. package/node_modules/pbkdf2/lib/precondition.js +19 -0
  944. package/node_modules/pbkdf2/lib/sync-browser.js +105 -0
  945. package/node_modules/pbkdf2/lib/sync.js +52 -0
  946. package/node_modules/pbkdf2/lib/to-buffer.js +13 -0
  947. package/node_modules/pbkdf2/package.json +70 -0
  948. package/node_modules/possible-typed-array-names/.eslintrc +5 -0
  949. package/node_modules/possible-typed-array-names/.github/FUNDING.yml +12 -0
  950. package/node_modules/possible-typed-array-names/CHANGELOG.md +29 -0
  951. package/node_modules/possible-typed-array-names/LICENSE +21 -0
  952. package/node_modules/possible-typed-array-names/README.md +50 -0
  953. package/node_modules/possible-typed-array-names/index.d.ts +16 -0
  954. package/node_modules/possible-typed-array-names/index.js +17 -0
  955. package/node_modules/possible-typed-array-names/package.json +84 -0
  956. package/node_modules/possible-typed-array-names/test/index.js +19 -0
  957. package/node_modules/possible-typed-array-names/tsconfig.json +9 -0
  958. package/node_modules/process/.eslintrc +21 -0
  959. package/node_modules/process/LICENSE +22 -0
  960. package/node_modules/process/README.md +26 -0
  961. package/node_modules/process/browser.js +184 -0
  962. package/node_modules/process/index.js +2 -0
  963. package/node_modules/process/package.json +27 -0
  964. package/node_modules/process/test.js +199 -0
  965. package/node_modules/process-nextick-args/index.js +45 -0
  966. package/node_modules/process-nextick-args/license.md +19 -0
  967. package/node_modules/process-nextick-args/package.json +25 -0
  968. package/node_modules/process-nextick-args/readme.md +18 -0
  969. package/node_modules/public-encrypt/.travis.yml +6 -0
  970. package/node_modules/public-encrypt/LICENSE +19 -0
  971. package/node_modules/public-encrypt/browser.js +10 -0
  972. package/node_modules/public-encrypt/index.js +18 -0
  973. package/node_modules/public-encrypt/mgf.js +19 -0
  974. package/node_modules/public-encrypt/node_modules/bn.js/LICENSE +19 -0
  975. package/node_modules/public-encrypt/node_modules/bn.js/README.md +200 -0
  976. package/node_modules/public-encrypt/node_modules/bn.js/lib/bn.js +3447 -0
  977. package/node_modules/public-encrypt/node_modules/bn.js/package.json +36 -0
  978. package/node_modules/public-encrypt/node_modules/bn.js/util/genCombMulTo.js +65 -0
  979. package/node_modules/public-encrypt/node_modules/bn.js/util/genCombMulTo10.js +65 -0
  980. package/node_modules/public-encrypt/package.json +37 -0
  981. package/node_modules/public-encrypt/privateDecrypt.js +105 -0
  982. package/node_modules/public-encrypt/publicEncrypt.js +88 -0
  983. package/node_modules/public-encrypt/readme.md +8 -0
  984. package/node_modules/public-encrypt/test/1024.priv +16 -0
  985. package/node_modules/public-encrypt/test/1024.pub +6 -0
  986. package/node_modules/public-encrypt/test/ec.pass.priv +7 -0
  987. package/node_modules/public-encrypt/test/ec.priv +5 -0
  988. package/node_modules/public-encrypt/test/ec.pub +4 -0
  989. package/node_modules/public-encrypt/test/index.js +113 -0
  990. package/node_modules/public-encrypt/test/nodeTests.js +51 -0
  991. package/node_modules/public-encrypt/test/pass.1024.priv +18 -0
  992. package/node_modules/public-encrypt/test/pass.1024.pub +6 -0
  993. package/node_modules/public-encrypt/test/rsa.1024.priv +15 -0
  994. package/node_modules/public-encrypt/test/rsa.1024.pub +5 -0
  995. package/node_modules/public-encrypt/test/rsa.2028.priv +27 -0
  996. package/node_modules/public-encrypt/test/rsa.2028.pub +8 -0
  997. package/node_modules/public-encrypt/test/rsa.pass.priv +30 -0
  998. package/node_modules/public-encrypt/test/rsa.pass.pub +9 -0
  999. package/node_modules/public-encrypt/test/test_cert.pem +20 -0
  1000. package/node_modules/public-encrypt/test/test_key.pem +15 -0
  1001. package/node_modules/public-encrypt/test/test_rsa_privkey.pem +15 -0
  1002. package/node_modules/public-encrypt/test/test_rsa_privkey_encrypted.pem +18 -0
  1003. package/node_modules/public-encrypt/test/test_rsa_pubkey.pem +6 -0
  1004. package/node_modules/public-encrypt/withPublic.js +12 -0
  1005. package/node_modules/public-encrypt/xor.js +8 -0
  1006. package/node_modules/punycode/LICENSE-MIT.txt +20 -0
  1007. package/node_modules/punycode/README.md +176 -0
  1008. package/node_modules/punycode/package.json +60 -0
  1009. package/node_modules/punycode/punycode.js +533 -0
  1010. package/node_modules/qs/.editorconfig +46 -0
  1011. package/node_modules/qs/.eslintrc +39 -0
  1012. package/node_modules/qs/.github/FUNDING.yml +12 -0
  1013. package/node_modules/qs/.nycrc +13 -0
  1014. package/node_modules/qs/CHANGELOG.md +622 -0
  1015. package/node_modules/qs/LICENSE.md +29 -0
  1016. package/node_modules/qs/README.md +733 -0
  1017. package/node_modules/qs/dist/qs.js +141 -0
  1018. package/node_modules/qs/lib/formats.js +23 -0
  1019. package/node_modules/qs/lib/index.js +11 -0
  1020. package/node_modules/qs/lib/parse.js +328 -0
  1021. package/node_modules/qs/lib/stringify.js +356 -0
  1022. package/node_modules/qs/lib/utils.js +268 -0
  1023. package/node_modules/qs/package.json +93 -0
  1024. package/node_modules/qs/test/empty-keys-cases.js +267 -0
  1025. package/node_modules/qs/test/parse.js +1276 -0
  1026. package/node_modules/qs/test/stringify.js +1306 -0
  1027. package/node_modules/qs/test/utils.js +262 -0
  1028. package/node_modules/querystring-es3/.travis.yml +4 -0
  1029. package/node_modules/querystring-es3/History.md +20 -0
  1030. package/node_modules/querystring-es3/License.md +19 -0
  1031. package/node_modules/querystring-es3/Readme.md +15 -0
  1032. package/node_modules/querystring-es3/decode.js +84 -0
  1033. package/node_modules/querystring-es3/encode.js +85 -0
  1034. package/node_modules/querystring-es3/index.js +4 -0
  1035. package/node_modules/querystring-es3/package.json +65 -0
  1036. package/node_modules/querystring-es3/test/common-index.js +3 -0
  1037. package/node_modules/querystring-es3/test/index.js +210 -0
  1038. package/node_modules/querystring-es3/test/tap-index.js +3 -0
  1039. package/node_modules/randombytes/.travis.yml +15 -0
  1040. package/node_modules/randombytes/.zuul.yml +1 -0
  1041. package/node_modules/randombytes/LICENSE +21 -0
  1042. package/node_modules/randombytes/README.md +14 -0
  1043. package/node_modules/randombytes/browser.js +50 -0
  1044. package/node_modules/randombytes/index.js +1 -0
  1045. package/node_modules/randombytes/package.json +36 -0
  1046. package/node_modules/randombytes/test.js +81 -0
  1047. package/node_modules/randomfill/.travis.yml +15 -0
  1048. package/node_modules/randomfill/.zuul.yml +1 -0
  1049. package/node_modules/randomfill/LICENSE +21 -0
  1050. package/node_modules/randomfill/README.md +15 -0
  1051. package/node_modules/randomfill/browser.js +108 -0
  1052. package/node_modules/randomfill/index.js +7 -0
  1053. package/node_modules/randomfill/package.json +37 -0
  1054. package/node_modules/randomfill/test.js +28 -0
  1055. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  1056. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  1057. package/node_modules/readable-stream/LICENSE +47 -0
  1058. package/node_modules/readable-stream/README.md +106 -0
  1059. package/node_modules/readable-stream/errors-browser.js +127 -0
  1060. package/node_modules/readable-stream/errors.js +116 -0
  1061. package/node_modules/readable-stream/experimentalWarning.js +17 -0
  1062. package/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
  1063. package/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
  1064. package/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
  1065. package/node_modules/readable-stream/lib/_stream_transform.js +190 -0
  1066. package/node_modules/readable-stream/lib/_stream_writable.js +641 -0
  1067. package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
  1068. package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
  1069. package/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
  1070. package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
  1071. package/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  1072. package/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
  1073. package/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
  1074. package/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
  1075. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  1076. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  1077. package/node_modules/readable-stream/package.json +68 -0
  1078. package/node_modules/readable-stream/readable-browser.js +9 -0
  1079. package/node_modules/readable-stream/readable.js +16 -0
  1080. package/node_modules/ripemd160/CHANGELOG.md +72 -0
  1081. package/node_modules/ripemd160/LICENSE +21 -0
  1082. package/node_modules/ripemd160/README.md +27 -0
  1083. package/node_modules/ripemd160/index.js +163 -0
  1084. package/node_modules/ripemd160/package.json +37 -0
  1085. package/node_modules/safe-buffer/LICENSE +21 -0
  1086. package/node_modules/safe-buffer/README.md +584 -0
  1087. package/node_modules/safe-buffer/index.d.ts +187 -0
  1088. package/node_modules/safe-buffer/index.js +65 -0
  1089. package/node_modules/safe-buffer/package.json +51 -0
  1090. package/node_modules/safe-regex-test/.eslintrc +9 -0
  1091. package/node_modules/safe-regex-test/.github/FUNDING.yml +12 -0
  1092. package/node_modules/safe-regex-test/.nycrc +13 -0
  1093. package/node_modules/safe-regex-test/CHANGELOG.md +55 -0
  1094. package/node_modules/safe-regex-test/LICENSE +21 -0
  1095. package/node_modules/safe-regex-test/README.md +46 -0
  1096. package/node_modules/safe-regex-test/index.d.ts +3 -0
  1097. package/node_modules/safe-regex-test/index.js +17 -0
  1098. package/node_modules/safe-regex-test/package.json +87 -0
  1099. package/node_modules/safe-regex-test/test/index.js +41 -0
  1100. package/node_modules/safe-regex-test/tsconfig.json +9 -0
  1101. package/node_modules/set-function-length/.eslintrc +27 -0
  1102. package/node_modules/set-function-length/.github/FUNDING.yml +12 -0
  1103. package/node_modules/set-function-length/.nycrc +13 -0
  1104. package/node_modules/set-function-length/CHANGELOG.md +70 -0
  1105. package/node_modules/set-function-length/LICENSE +21 -0
  1106. package/node_modules/set-function-length/README.md +56 -0
  1107. package/node_modules/set-function-length/env.d.ts +9 -0
  1108. package/node_modules/set-function-length/env.js +25 -0
  1109. package/node_modules/set-function-length/index.d.ts +7 -0
  1110. package/node_modules/set-function-length/index.js +42 -0
  1111. package/node_modules/set-function-length/package.json +102 -0
  1112. package/node_modules/set-function-length/tsconfig.json +9 -0
  1113. package/node_modules/setimmediate/LICENSE.txt +20 -0
  1114. package/node_modules/setimmediate/package.json +30 -0
  1115. package/node_modules/setimmediate/setImmediate.js +186 -0
  1116. package/node_modules/sha.js/.travis.yml +17 -0
  1117. package/node_modules/sha.js/LICENSE +49 -0
  1118. package/node_modules/sha.js/README.md +44 -0
  1119. package/node_modules/sha.js/bin.js +41 -0
  1120. package/node_modules/sha.js/hash.js +81 -0
  1121. package/node_modules/sha.js/index.js +15 -0
  1122. package/node_modules/sha.js/package.json +30 -0
  1123. package/node_modules/sha.js/sha.js +94 -0
  1124. package/node_modules/sha.js/sha1.js +99 -0
  1125. package/node_modules/sha.js/sha224.js +53 -0
  1126. package/node_modules/sha.js/sha256.js +135 -0
  1127. package/node_modules/sha.js/sha384.js +57 -0
  1128. package/node_modules/sha.js/sha512.js +260 -0
  1129. package/node_modules/sha.js/test/hash.js +75 -0
  1130. package/node_modules/sha.js/test/test.js +100 -0
  1131. package/node_modules/sha.js/test/vectors.js +72 -0
  1132. package/node_modules/side-channel/.editorconfig +9 -0
  1133. package/node_modules/side-channel/.eslintrc +12 -0
  1134. package/node_modules/side-channel/.github/FUNDING.yml +12 -0
  1135. package/node_modules/side-channel/.nycrc +13 -0
  1136. package/node_modules/side-channel/CHANGELOG.md +110 -0
  1137. package/node_modules/side-channel/LICENSE +21 -0
  1138. package/node_modules/side-channel/README.md +61 -0
  1139. package/node_modules/side-channel/index.d.ts +14 -0
  1140. package/node_modules/side-channel/index.js +43 -0
  1141. package/node_modules/side-channel/package.json +85 -0
  1142. package/node_modules/side-channel/test/index.js +104 -0
  1143. package/node_modules/side-channel/tsconfig.json +9 -0
  1144. package/node_modules/side-channel-list/.editorconfig +9 -0
  1145. package/node_modules/side-channel-list/.eslintrc +11 -0
  1146. package/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
  1147. package/node_modules/side-channel-list/.nycrc +13 -0
  1148. package/node_modules/side-channel-list/CHANGELOG.md +15 -0
  1149. package/node_modules/side-channel-list/LICENSE +21 -0
  1150. package/node_modules/side-channel-list/README.md +62 -0
  1151. package/node_modules/side-channel-list/index.d.ts +13 -0
  1152. package/node_modules/side-channel-list/index.js +113 -0
  1153. package/node_modules/side-channel-list/list.d.ts +14 -0
  1154. package/node_modules/side-channel-list/package.json +77 -0
  1155. package/node_modules/side-channel-list/test/index.js +104 -0
  1156. package/node_modules/side-channel-list/tsconfig.json +9 -0
  1157. package/node_modules/side-channel-map/.editorconfig +9 -0
  1158. package/node_modules/side-channel-map/.eslintrc +11 -0
  1159. package/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
  1160. package/node_modules/side-channel-map/.nycrc +13 -0
  1161. package/node_modules/side-channel-map/CHANGELOG.md +22 -0
  1162. package/node_modules/side-channel-map/LICENSE +21 -0
  1163. package/node_modules/side-channel-map/README.md +62 -0
  1164. package/node_modules/side-channel-map/index.d.ts +15 -0
  1165. package/node_modules/side-channel-map/index.js +68 -0
  1166. package/node_modules/side-channel-map/package.json +80 -0
  1167. package/node_modules/side-channel-map/test/index.js +114 -0
  1168. package/node_modules/side-channel-map/tsconfig.json +9 -0
  1169. package/node_modules/side-channel-weakmap/.editorconfig +9 -0
  1170. package/node_modules/side-channel-weakmap/.eslintrc +12 -0
  1171. package/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
  1172. package/node_modules/side-channel-weakmap/.nycrc +13 -0
  1173. package/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
  1174. package/node_modules/side-channel-weakmap/LICENSE +21 -0
  1175. package/node_modules/side-channel-weakmap/README.md +62 -0
  1176. package/node_modules/side-channel-weakmap/index.d.ts +15 -0
  1177. package/node_modules/side-channel-weakmap/index.js +84 -0
  1178. package/node_modules/side-channel-weakmap/package.json +87 -0
  1179. package/node_modules/side-channel-weakmap/test/index.js +114 -0
  1180. package/node_modules/side-channel-weakmap/tsconfig.json +9 -0
  1181. package/node_modules/stream-browserify/.airtap.yml +20 -0
  1182. package/node_modules/stream-browserify/.github/FUNDING.yml +12 -0
  1183. package/node_modules/stream-browserify/.travis.yml +24 -0
  1184. package/node_modules/stream-browserify/CHANGELOG.md +8 -0
  1185. package/node_modules/stream-browserify/LICENSE +20 -0
  1186. package/node_modules/stream-browserify/index.js +129 -0
  1187. package/node_modules/stream-browserify/package.json +54 -0
  1188. package/node_modules/stream-browserify/readme.markdown +32 -0
  1189. package/node_modules/stream-browserify/security.md +10 -0
  1190. package/node_modules/stream-browserify/test/buf.js +33 -0
  1191. package/node_modules/stream-browserify/test/index.js +2 -0
  1192. package/node_modules/stream-browserify/test/pipeline.js +38 -0
  1193. package/node_modules/stream-browserify/test/use-stream.js +4 -0
  1194. package/node_modules/stream-http/LICENSE +24 -0
  1195. package/node_modules/stream-http/README.md +134 -0
  1196. package/node_modules/stream-http/index.js +85 -0
  1197. package/node_modules/stream-http/lib/capability.js +59 -0
  1198. package/node_modules/stream-http/lib/request.js +352 -0
  1199. package/node_modules/stream-http/lib/response.js +211 -0
  1200. package/node_modules/stream-http/package.json +47 -0
  1201. package/node_modules/string_decoder/LICENSE +48 -0
  1202. package/node_modules/string_decoder/README.md +47 -0
  1203. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  1204. package/node_modules/string_decoder/package.json +34 -0
  1205. package/node_modules/timers-browserify/CHANGELOG.md +153 -0
  1206. package/node_modules/timers-browserify/LICENSE.md +46 -0
  1207. package/node_modules/timers-browserify/README.md +40 -0
  1208. package/node_modules/timers-browserify/main.js +63 -0
  1209. package/node_modules/timers-browserify/package.json +53 -0
  1210. package/node_modules/tty-browserify/LICENSE +18 -0
  1211. package/node_modules/tty-browserify/index.js +11 -0
  1212. package/node_modules/tty-browserify/package.json +29 -0
  1213. package/node_modules/tty-browserify/readme.markdown +1 -0
  1214. package/node_modules/url/.eslintignore +1 -0
  1215. package/node_modules/url/.eslintrc +38 -0
  1216. package/node_modules/url/.nycrc +9 -0
  1217. package/node_modules/url/LICENSE +21 -0
  1218. package/node_modules/url/README.md +108 -0
  1219. package/node_modules/url/package.json +42 -0
  1220. package/node_modules/url/test/index.js +2080 -0
  1221. package/node_modules/url/test/mocha.opts +2 -0
  1222. package/node_modules/url/url.js +776 -0
  1223. package/node_modules/util/LICENSE +18 -0
  1224. package/node_modules/util/README.md +48 -0
  1225. package/node_modules/util/package.json +50 -0
  1226. package/node_modules/util/support/isBuffer.js +3 -0
  1227. package/node_modules/util/support/isBufferBrowser.js +6 -0
  1228. package/node_modules/util/support/types.js +334 -0
  1229. package/node_modules/util/util.js +715 -0
  1230. package/node_modules/util-deprecate/History.md +16 -0
  1231. package/node_modules/util-deprecate/LICENSE +24 -0
  1232. package/node_modules/util-deprecate/README.md +53 -0
  1233. package/node_modules/util-deprecate/browser.js +67 -0
  1234. package/node_modules/util-deprecate/node.js +6 -0
  1235. package/node_modules/util-deprecate/package.json +27 -0
  1236. package/node_modules/vm-browserify/.github/FUNDING.yml +12 -0
  1237. package/node_modules/vm-browserify/.travis.yml +8 -0
  1238. package/node_modules/vm-browserify/CHANGELOG.md +23 -0
  1239. package/node_modules/vm-browserify/LICENSE +18 -0
  1240. package/node_modules/vm-browserify/example/run/bundle.js +160 -0
  1241. package/node_modules/vm-browserify/example/run/entry.js +6 -0
  1242. package/node_modules/vm-browserify/example/run/index.html +8 -0
  1243. package/node_modules/vm-browserify/example/run/server.js +6 -0
  1244. package/node_modules/vm-browserify/index.js +149 -0
  1245. package/node_modules/vm-browserify/package.json +30 -0
  1246. package/node_modules/vm-browserify/readme.markdown +66 -0
  1247. package/node_modules/vm-browserify/security.md +10 -0
  1248. package/node_modules/vm-browserify/test/vm.js +35 -0
  1249. package/node_modules/which-typed-array/.editorconfig +20 -0
  1250. package/node_modules/which-typed-array/.eslintrc +10 -0
  1251. package/node_modules/which-typed-array/.github/FUNDING.yml +12 -0
  1252. package/node_modules/which-typed-array/.nycrc +13 -0
  1253. package/node_modules/which-typed-array/CHANGELOG.md +261 -0
  1254. package/node_modules/which-typed-array/LICENSE +22 -0
  1255. package/node_modules/which-typed-array/README.md +70 -0
  1256. package/node_modules/which-typed-array/index.d.ts +62 -0
  1257. package/node_modules/which-typed-array/index.js +117 -0
  1258. package/node_modules/which-typed-array/package.json +130 -0
  1259. package/node_modules/which-typed-array/test/index.js +105 -0
  1260. package/node_modules/which-typed-array/tsconfig.json +9 -0
  1261. package/node_modules/xtend/.jshintrc +30 -0
  1262. package/node_modules/xtend/LICENSE +20 -0
  1263. package/node_modules/xtend/README.md +32 -0
  1264. package/node_modules/xtend/immutable.js +19 -0
  1265. package/node_modules/xtend/mutable.js +17 -0
  1266. package/node_modules/xtend/package.json +55 -0
  1267. package/node_modules/xtend/test.js +103 -0
  1268. package/package.json +3 -4
@@ -0,0 +1,3548 @@
1
+ (function (module, exports) {
2
+ 'use strict';
3
+
4
+ // Utils
5
+ function assert (val, msg) {
6
+ if (!val) throw new Error(msg || 'Assertion failed');
7
+ }
8
+
9
+ // Could use `inherits` module, but don't want to move from single file
10
+ // architecture yet.
11
+ function inherits (ctor, superCtor) {
12
+ ctor.super_ = superCtor;
13
+ var TempCtor = function () {};
14
+ TempCtor.prototype = superCtor.prototype;
15
+ ctor.prototype = new TempCtor();
16
+ ctor.prototype.constructor = ctor;
17
+ }
18
+
19
+ // BN
20
+
21
+ function BN (number, base, endian) {
22
+ if (BN.isBN(number)) {
23
+ return number;
24
+ }
25
+
26
+ this.negative = 0;
27
+ this.words = null;
28
+ this.length = 0;
29
+
30
+ // Reduction context
31
+ this.red = null;
32
+
33
+ if (number !== null) {
34
+ if (base === 'le' || base === 'be') {
35
+ endian = base;
36
+ base = 10;
37
+ }
38
+
39
+ this._init(number || 0, base || 10, endian || 'be');
40
+ }
41
+ }
42
+ if (typeof module === 'object') {
43
+ module.exports = BN;
44
+ } else {
45
+ exports.BN = BN;
46
+ }
47
+
48
+ BN.BN = BN;
49
+ BN.wordSize = 26;
50
+
51
+ var Buffer;
52
+ try {
53
+ if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
54
+ Buffer = window.Buffer;
55
+ } else {
56
+ Buffer = require('buffer').Buffer;
57
+ }
58
+ } catch (e) {
59
+ }
60
+
61
+ BN.isBN = function isBN (num) {
62
+ if (num instanceof BN) {
63
+ return true;
64
+ }
65
+
66
+ return num !== null && typeof num === 'object' &&
67
+ num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
68
+ };
69
+
70
+ BN.max = function max (left, right) {
71
+ if (left.cmp(right) > 0) return left;
72
+ return right;
73
+ };
74
+
75
+ BN.min = function min (left, right) {
76
+ if (left.cmp(right) < 0) return left;
77
+ return right;
78
+ };
79
+
80
+ BN.prototype._init = function init (number, base, endian) {
81
+ if (typeof number === 'number') {
82
+ return this._initNumber(number, base, endian);
83
+ }
84
+
85
+ if (typeof number === 'object') {
86
+ return this._initArray(number, base, endian);
87
+ }
88
+
89
+ if (base === 'hex') {
90
+ base = 16;
91
+ }
92
+ assert(base === (base | 0) && base >= 2 && base <= 36);
93
+
94
+ number = number.toString().replace(/\s+/g, '');
95
+ var start = 0;
96
+ if (number[0] === '-') {
97
+ start++;
98
+ this.negative = 1;
99
+ }
100
+
101
+ if (start < number.length) {
102
+ if (base === 16) {
103
+ this._parseHex(number, start, endian);
104
+ } else {
105
+ this._parseBase(number, base, start);
106
+ if (endian === 'le') {
107
+ this._initArray(this.toArray(), base, endian);
108
+ }
109
+ }
110
+ }
111
+ };
112
+
113
+ BN.prototype._initNumber = function _initNumber (number, base, endian) {
114
+ if (number < 0) {
115
+ this.negative = 1;
116
+ number = -number;
117
+ }
118
+ if (number < 0x4000000) {
119
+ this.words = [number & 0x3ffffff];
120
+ this.length = 1;
121
+ } else if (number < 0x10000000000000) {
122
+ this.words = [
123
+ number & 0x3ffffff,
124
+ (number / 0x4000000) & 0x3ffffff
125
+ ];
126
+ this.length = 2;
127
+ } else {
128
+ assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
129
+ this.words = [
130
+ number & 0x3ffffff,
131
+ (number / 0x4000000) & 0x3ffffff,
132
+ 1
133
+ ];
134
+ this.length = 3;
135
+ }
136
+
137
+ if (endian !== 'le') return;
138
+
139
+ // Reverse the bytes
140
+ this._initArray(this.toArray(), base, endian);
141
+ };
142
+
143
+ BN.prototype._initArray = function _initArray (number, base, endian) {
144
+ // Perhaps a Uint8Array
145
+ assert(typeof number.length === 'number');
146
+ if (number.length <= 0) {
147
+ this.words = [0];
148
+ this.length = 1;
149
+ return this;
150
+ }
151
+
152
+ this.length = Math.ceil(number.length / 3);
153
+ this.words = new Array(this.length);
154
+ for (var i = 0; i < this.length; i++) {
155
+ this.words[i] = 0;
156
+ }
157
+
158
+ var j, w;
159
+ var off = 0;
160
+ if (endian === 'be') {
161
+ for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
162
+ w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
163
+ this.words[j] |= (w << off) & 0x3ffffff;
164
+ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
165
+ off += 24;
166
+ if (off >= 26) {
167
+ off -= 26;
168
+ j++;
169
+ }
170
+ }
171
+ } else if (endian === 'le') {
172
+ for (i = 0, j = 0; i < number.length; i += 3) {
173
+ w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
174
+ this.words[j] |= (w << off) & 0x3ffffff;
175
+ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
176
+ off += 24;
177
+ if (off >= 26) {
178
+ off -= 26;
179
+ j++;
180
+ }
181
+ }
182
+ }
183
+ return this._strip();
184
+ };
185
+
186
+ function parseHex4Bits (string, index) {
187
+ var c = string.charCodeAt(index);
188
+ // '0' - '9'
189
+ if (c >= 48 && c <= 57) {
190
+ return c - 48;
191
+ // 'A' - 'F'
192
+ } else if (c >= 65 && c <= 70) {
193
+ return c - 55;
194
+ // 'a' - 'f'
195
+ } else if (c >= 97 && c <= 102) {
196
+ return c - 87;
197
+ } else {
198
+ assert(false, 'Invalid character in ' + string);
199
+ }
200
+ }
201
+
202
+ function parseHexByte (string, lowerBound, index) {
203
+ var r = parseHex4Bits(string, index);
204
+ if (index - 1 >= lowerBound) {
205
+ r |= parseHex4Bits(string, index - 1) << 4;
206
+ }
207
+ return r;
208
+ }
209
+
210
+ BN.prototype._parseHex = function _parseHex (number, start, endian) {
211
+ // Create possibly bigger array to ensure that it fits the number
212
+ this.length = Math.ceil((number.length - start) / 6);
213
+ this.words = new Array(this.length);
214
+ for (var i = 0; i < this.length; i++) {
215
+ this.words[i] = 0;
216
+ }
217
+
218
+ // 24-bits chunks
219
+ var off = 0;
220
+ var j = 0;
221
+
222
+ var w;
223
+ if (endian === 'be') {
224
+ for (i = number.length - 1; i >= start; i -= 2) {
225
+ w = parseHexByte(number, start, i) << off;
226
+ this.words[j] |= w & 0x3ffffff;
227
+ if (off >= 18) {
228
+ off -= 18;
229
+ j += 1;
230
+ this.words[j] |= w >>> 26;
231
+ } else {
232
+ off += 8;
233
+ }
234
+ }
235
+ } else {
236
+ var parseLength = number.length - start;
237
+ for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
238
+ w = parseHexByte(number, start, i) << off;
239
+ this.words[j] |= w & 0x3ffffff;
240
+ if (off >= 18) {
241
+ off -= 18;
242
+ j += 1;
243
+ this.words[j] |= w >>> 26;
244
+ } else {
245
+ off += 8;
246
+ }
247
+ }
248
+ }
249
+
250
+ this._strip();
251
+ };
252
+
253
+ function parseBase (str, start, end, mul) {
254
+ var r = 0;
255
+ var b = 0;
256
+ var len = Math.min(str.length, end);
257
+ for (var i = start; i < len; i++) {
258
+ var c = str.charCodeAt(i) - 48;
259
+
260
+ r *= mul;
261
+
262
+ // 'a'
263
+ if (c >= 49) {
264
+ b = c - 49 + 0xa;
265
+
266
+ // 'A'
267
+ } else if (c >= 17) {
268
+ b = c - 17 + 0xa;
269
+
270
+ // '0' - '9'
271
+ } else {
272
+ b = c;
273
+ }
274
+ assert(c >= 0 && b < mul, 'Invalid character');
275
+ r += b;
276
+ }
277
+ return r;
278
+ }
279
+
280
+ BN.prototype._parseBase = function _parseBase (number, base, start) {
281
+ // Initialize as zero
282
+ this.words = [0];
283
+ this.length = 1;
284
+
285
+ // Find length of limb in base
286
+ for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
287
+ limbLen++;
288
+ }
289
+ limbLen--;
290
+ limbPow = (limbPow / base) | 0;
291
+
292
+ var total = number.length - start;
293
+ var mod = total % limbLen;
294
+ var end = Math.min(total, total - mod) + start;
295
+
296
+ var word = 0;
297
+ for (var i = start; i < end; i += limbLen) {
298
+ word = parseBase(number, i, i + limbLen, base);
299
+
300
+ this.imuln(limbPow);
301
+ if (this.words[0] + word < 0x4000000) {
302
+ this.words[0] += word;
303
+ } else {
304
+ this._iaddn(word);
305
+ }
306
+ }
307
+
308
+ if (mod !== 0) {
309
+ var pow = 1;
310
+ word = parseBase(number, i, number.length, base);
311
+
312
+ for (i = 0; i < mod; i++) {
313
+ pow *= base;
314
+ }
315
+
316
+ this.imuln(pow);
317
+ if (this.words[0] + word < 0x4000000) {
318
+ this.words[0] += word;
319
+ } else {
320
+ this._iaddn(word);
321
+ }
322
+ }
323
+
324
+ this._strip();
325
+ };
326
+
327
+ BN.prototype.copy = function copy (dest) {
328
+ dest.words = new Array(this.length);
329
+ for (var i = 0; i < this.length; i++) {
330
+ dest.words[i] = this.words[i];
331
+ }
332
+ dest.length = this.length;
333
+ dest.negative = this.negative;
334
+ dest.red = this.red;
335
+ };
336
+
337
+ function move (dest, src) {
338
+ dest.words = src.words;
339
+ dest.length = src.length;
340
+ dest.negative = src.negative;
341
+ dest.red = src.red;
342
+ }
343
+
344
+ BN.prototype._move = function _move (dest) {
345
+ move(dest, this);
346
+ };
347
+
348
+ BN.prototype.clone = function clone () {
349
+ var r = new BN(null);
350
+ this.copy(r);
351
+ return r;
352
+ };
353
+
354
+ BN.prototype._expand = function _expand (size) {
355
+ while (this.length < size) {
356
+ this.words[this.length++] = 0;
357
+ }
358
+ return this;
359
+ };
360
+
361
+ // Remove leading `0` from `this`
362
+ BN.prototype._strip = function strip () {
363
+ while (this.length > 1 && this.words[this.length - 1] === 0) {
364
+ this.length--;
365
+ }
366
+ return this._normSign();
367
+ };
368
+
369
+ BN.prototype._normSign = function _normSign () {
370
+ // -0 = 0
371
+ if (this.length === 1 && this.words[0] === 0) {
372
+ this.negative = 0;
373
+ }
374
+ return this;
375
+ };
376
+
377
+ // Check Symbol.for because not everywhere where Symbol defined
378
+ // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility
379
+ if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {
380
+ try {
381
+ BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;
382
+ } catch (e) {
383
+ BN.prototype.inspect = inspect;
384
+ }
385
+ } else {
386
+ BN.prototype.inspect = inspect;
387
+ }
388
+
389
+ function inspect () {
390
+ return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
391
+ }
392
+
393
+ /*
394
+
395
+ var zeros = [];
396
+ var groupSizes = [];
397
+ var groupBases = [];
398
+
399
+ var s = '';
400
+ var i = -1;
401
+ while (++i < BN.wordSize) {
402
+ zeros[i] = s;
403
+ s += '0';
404
+ }
405
+ groupSizes[0] = 0;
406
+ groupSizes[1] = 0;
407
+ groupBases[0] = 0;
408
+ groupBases[1] = 0;
409
+ var base = 2 - 1;
410
+ while (++base < 36 + 1) {
411
+ var groupSize = 0;
412
+ var groupBase = 1;
413
+ while (groupBase < (1 << BN.wordSize) / base) {
414
+ groupBase *= base;
415
+ groupSize += 1;
416
+ }
417
+ groupSizes[base] = groupSize;
418
+ groupBases[base] = groupBase;
419
+ }
420
+
421
+ */
422
+
423
+ var zeros = [
424
+ '',
425
+ '0',
426
+ '00',
427
+ '000',
428
+ '0000',
429
+ '00000',
430
+ '000000',
431
+ '0000000',
432
+ '00000000',
433
+ '000000000',
434
+ '0000000000',
435
+ '00000000000',
436
+ '000000000000',
437
+ '0000000000000',
438
+ '00000000000000',
439
+ '000000000000000',
440
+ '0000000000000000',
441
+ '00000000000000000',
442
+ '000000000000000000',
443
+ '0000000000000000000',
444
+ '00000000000000000000',
445
+ '000000000000000000000',
446
+ '0000000000000000000000',
447
+ '00000000000000000000000',
448
+ '000000000000000000000000',
449
+ '0000000000000000000000000'
450
+ ];
451
+
452
+ var groupSizes = [
453
+ 0, 0,
454
+ 25, 16, 12, 11, 10, 9, 8,
455
+ 8, 7, 7, 7, 7, 6, 6,
456
+ 6, 6, 6, 6, 6, 5, 5,
457
+ 5, 5, 5, 5, 5, 5, 5,
458
+ 5, 5, 5, 5, 5, 5, 5
459
+ ];
460
+
461
+ var groupBases = [
462
+ 0, 0,
463
+ 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
464
+ 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
465
+ 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
466
+ 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
467
+ 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
468
+ ];
469
+
470
+ BN.prototype.toString = function toString (base, padding) {
471
+ base = base || 10;
472
+ padding = padding | 0 || 1;
473
+
474
+ var out;
475
+ if (base === 16 || base === 'hex') {
476
+ out = '';
477
+ var off = 0;
478
+ var carry = 0;
479
+ for (var i = 0; i < this.length; i++) {
480
+ var w = this.words[i];
481
+ var word = (((w << off) | carry) & 0xffffff).toString(16);
482
+ carry = (w >>> (24 - off)) & 0xffffff;
483
+ off += 2;
484
+ if (off >= 26) {
485
+ off -= 26;
486
+ i--;
487
+ }
488
+ if (carry !== 0 || i !== this.length - 1) {
489
+ out = zeros[6 - word.length] + word + out;
490
+ } else {
491
+ out = word + out;
492
+ }
493
+ }
494
+ if (carry !== 0) {
495
+ out = carry.toString(16) + out;
496
+ }
497
+ while (out.length % padding !== 0) {
498
+ out = '0' + out;
499
+ }
500
+ if (this.negative !== 0) {
501
+ out = '-' + out;
502
+ }
503
+ return out;
504
+ }
505
+
506
+ if (base === (base | 0) && base >= 2 && base <= 36) {
507
+ // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
508
+ var groupSize = groupSizes[base];
509
+ // var groupBase = Math.pow(base, groupSize);
510
+ var groupBase = groupBases[base];
511
+ out = '';
512
+ var c = this.clone();
513
+ c.negative = 0;
514
+ while (!c.isZero()) {
515
+ var r = c.modrn(groupBase).toString(base);
516
+ c = c.idivn(groupBase);
517
+
518
+ if (!c.isZero()) {
519
+ out = zeros[groupSize - r.length] + r + out;
520
+ } else {
521
+ out = r + out;
522
+ }
523
+ }
524
+ if (this.isZero()) {
525
+ out = '0' + out;
526
+ }
527
+ while (out.length % padding !== 0) {
528
+ out = '0' + out;
529
+ }
530
+ if (this.negative !== 0) {
531
+ out = '-' + out;
532
+ }
533
+ return out;
534
+ }
535
+
536
+ assert(false, 'Base should be between 2 and 36');
537
+ };
538
+
539
+ BN.prototype.toNumber = function toNumber () {
540
+ var ret = this.words[0];
541
+ if (this.length === 2) {
542
+ ret += this.words[1] * 0x4000000;
543
+ } else if (this.length === 3 && this.words[2] === 0x01) {
544
+ // NOTE: at this stage it is known that the top bit is set
545
+ ret += 0x10000000000000 + (this.words[1] * 0x4000000);
546
+ } else if (this.length > 2) {
547
+ assert(false, 'Number can only safely store up to 53 bits');
548
+ }
549
+ return (this.negative !== 0) ? -ret : ret;
550
+ };
551
+
552
+ BN.prototype.toJSON = function toJSON () {
553
+ return this.toString(16, 2);
554
+ };
555
+
556
+ if (Buffer) {
557
+ BN.prototype.toBuffer = function toBuffer (endian, length) {
558
+ return this.toArrayLike(Buffer, endian, length);
559
+ };
560
+ }
561
+
562
+ BN.prototype.toArray = function toArray (endian, length) {
563
+ return this.toArrayLike(Array, endian, length);
564
+ };
565
+
566
+ var allocate = function allocate (ArrayType, size) {
567
+ if (ArrayType.allocUnsafe) {
568
+ return ArrayType.allocUnsafe(size);
569
+ }
570
+ return new ArrayType(size);
571
+ };
572
+
573
+ BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
574
+ this._strip();
575
+
576
+ var byteLength = this.byteLength();
577
+ var reqLength = length || Math.max(1, byteLength);
578
+ assert(byteLength <= reqLength, 'byte array longer than desired length');
579
+ assert(reqLength > 0, 'Requested array length <= 0');
580
+
581
+ var res = allocate(ArrayType, reqLength);
582
+ var postfix = endian === 'le' ? 'LE' : 'BE';
583
+ this['_toArrayLike' + postfix](res, byteLength);
584
+ return res;
585
+ };
586
+
587
+ BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {
588
+ var position = 0;
589
+ var carry = 0;
590
+
591
+ for (var i = 0, shift = 0; i < this.length; i++) {
592
+ var word = (this.words[i] << shift) | carry;
593
+
594
+ res[position++] = word & 0xff;
595
+ if (position < res.length) {
596
+ res[position++] = (word >> 8) & 0xff;
597
+ }
598
+ if (position < res.length) {
599
+ res[position++] = (word >> 16) & 0xff;
600
+ }
601
+
602
+ if (shift === 6) {
603
+ if (position < res.length) {
604
+ res[position++] = (word >> 24) & 0xff;
605
+ }
606
+ carry = 0;
607
+ shift = 0;
608
+ } else {
609
+ carry = word >>> 24;
610
+ shift += 2;
611
+ }
612
+ }
613
+
614
+ if (position < res.length) {
615
+ res[position++] = carry;
616
+
617
+ while (position < res.length) {
618
+ res[position++] = 0;
619
+ }
620
+ }
621
+ };
622
+
623
+ BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {
624
+ var position = res.length - 1;
625
+ var carry = 0;
626
+
627
+ for (var i = 0, shift = 0; i < this.length; i++) {
628
+ var word = (this.words[i] << shift) | carry;
629
+
630
+ res[position--] = word & 0xff;
631
+ if (position >= 0) {
632
+ res[position--] = (word >> 8) & 0xff;
633
+ }
634
+ if (position >= 0) {
635
+ res[position--] = (word >> 16) & 0xff;
636
+ }
637
+
638
+ if (shift === 6) {
639
+ if (position >= 0) {
640
+ res[position--] = (word >> 24) & 0xff;
641
+ }
642
+ carry = 0;
643
+ shift = 0;
644
+ } else {
645
+ carry = word >>> 24;
646
+ shift += 2;
647
+ }
648
+ }
649
+
650
+ if (position >= 0) {
651
+ res[position--] = carry;
652
+
653
+ while (position >= 0) {
654
+ res[position--] = 0;
655
+ }
656
+ }
657
+ };
658
+
659
+ if (Math.clz32) {
660
+ BN.prototype._countBits = function _countBits (w) {
661
+ return 32 - Math.clz32(w);
662
+ };
663
+ } else {
664
+ BN.prototype._countBits = function _countBits (w) {
665
+ var t = w;
666
+ var r = 0;
667
+ if (t >= 0x1000) {
668
+ r += 13;
669
+ t >>>= 13;
670
+ }
671
+ if (t >= 0x40) {
672
+ r += 7;
673
+ t >>>= 7;
674
+ }
675
+ if (t >= 0x8) {
676
+ r += 4;
677
+ t >>>= 4;
678
+ }
679
+ if (t >= 0x02) {
680
+ r += 2;
681
+ t >>>= 2;
682
+ }
683
+ return r + t;
684
+ };
685
+ }
686
+
687
+ BN.prototype._zeroBits = function _zeroBits (w) {
688
+ // Short-cut
689
+ if (w === 0) return 26;
690
+
691
+ var t = w;
692
+ var r = 0;
693
+ if ((t & 0x1fff) === 0) {
694
+ r += 13;
695
+ t >>>= 13;
696
+ }
697
+ if ((t & 0x7f) === 0) {
698
+ r += 7;
699
+ t >>>= 7;
700
+ }
701
+ if ((t & 0xf) === 0) {
702
+ r += 4;
703
+ t >>>= 4;
704
+ }
705
+ if ((t & 0x3) === 0) {
706
+ r += 2;
707
+ t >>>= 2;
708
+ }
709
+ if ((t & 0x1) === 0) {
710
+ r++;
711
+ }
712
+ return r;
713
+ };
714
+
715
+ // Return number of used bits in a BN
716
+ BN.prototype.bitLength = function bitLength () {
717
+ var w = this.words[this.length - 1];
718
+ var hi = this._countBits(w);
719
+ return (this.length - 1) * 26 + hi;
720
+ };
721
+
722
+ function toBitArray (num) {
723
+ var w = new Array(num.bitLength());
724
+
725
+ for (var bit = 0; bit < w.length; bit++) {
726
+ var off = (bit / 26) | 0;
727
+ var wbit = bit % 26;
728
+
729
+ w[bit] = (num.words[off] >>> wbit) & 0x01;
730
+ }
731
+
732
+ return w;
733
+ }
734
+
735
+ // Number of trailing zero bits
736
+ BN.prototype.zeroBits = function zeroBits () {
737
+ if (this.isZero()) return 0;
738
+
739
+ var r = 0;
740
+ for (var i = 0; i < this.length; i++) {
741
+ var b = this._zeroBits(this.words[i]);
742
+ r += b;
743
+ if (b !== 26) break;
744
+ }
745
+ return r;
746
+ };
747
+
748
+ BN.prototype.byteLength = function byteLength () {
749
+ return Math.ceil(this.bitLength() / 8);
750
+ };
751
+
752
+ BN.prototype.toTwos = function toTwos (width) {
753
+ if (this.negative !== 0) {
754
+ return this.abs().inotn(width).iaddn(1);
755
+ }
756
+ return this.clone();
757
+ };
758
+
759
+ BN.prototype.fromTwos = function fromTwos (width) {
760
+ if (this.testn(width - 1)) {
761
+ return this.notn(width).iaddn(1).ineg();
762
+ }
763
+ return this.clone();
764
+ };
765
+
766
+ BN.prototype.isNeg = function isNeg () {
767
+ return this.negative !== 0;
768
+ };
769
+
770
+ // Return negative clone of `this`
771
+ BN.prototype.neg = function neg () {
772
+ return this.clone().ineg();
773
+ };
774
+
775
+ BN.prototype.ineg = function ineg () {
776
+ if (!this.isZero()) {
777
+ this.negative ^= 1;
778
+ }
779
+
780
+ return this;
781
+ };
782
+
783
+ // Or `num` with `this` in-place
784
+ BN.prototype.iuor = function iuor (num) {
785
+ while (this.length < num.length) {
786
+ this.words[this.length++] = 0;
787
+ }
788
+
789
+ for (var i = 0; i < num.length; i++) {
790
+ this.words[i] = this.words[i] | num.words[i];
791
+ }
792
+
793
+ return this._strip();
794
+ };
795
+
796
+ BN.prototype.ior = function ior (num) {
797
+ assert((this.negative | num.negative) === 0);
798
+ return this.iuor(num);
799
+ };
800
+
801
+ // Or `num` with `this`
802
+ BN.prototype.or = function or (num) {
803
+ if (this.length > num.length) return this.clone().ior(num);
804
+ return num.clone().ior(this);
805
+ };
806
+
807
+ BN.prototype.uor = function uor (num) {
808
+ if (this.length > num.length) return this.clone().iuor(num);
809
+ return num.clone().iuor(this);
810
+ };
811
+
812
+ // And `num` with `this` in-place
813
+ BN.prototype.iuand = function iuand (num) {
814
+ // b = min-length(num, this)
815
+ var b;
816
+ if (this.length > num.length) {
817
+ b = num;
818
+ } else {
819
+ b = this;
820
+ }
821
+
822
+ for (var i = 0; i < b.length; i++) {
823
+ this.words[i] = this.words[i] & num.words[i];
824
+ }
825
+
826
+ this.length = b.length;
827
+
828
+ return this._strip();
829
+ };
830
+
831
+ BN.prototype.iand = function iand (num) {
832
+ assert((this.negative | num.negative) === 0);
833
+ return this.iuand(num);
834
+ };
835
+
836
+ // And `num` with `this`
837
+ BN.prototype.and = function and (num) {
838
+ if (this.length > num.length) return this.clone().iand(num);
839
+ return num.clone().iand(this);
840
+ };
841
+
842
+ BN.prototype.uand = function uand (num) {
843
+ if (this.length > num.length) return this.clone().iuand(num);
844
+ return num.clone().iuand(this);
845
+ };
846
+
847
+ // Xor `num` with `this` in-place
848
+ BN.prototype.iuxor = function iuxor (num) {
849
+ // a.length > b.length
850
+ var a;
851
+ var b;
852
+ if (this.length > num.length) {
853
+ a = this;
854
+ b = num;
855
+ } else {
856
+ a = num;
857
+ b = this;
858
+ }
859
+
860
+ for (var i = 0; i < b.length; i++) {
861
+ this.words[i] = a.words[i] ^ b.words[i];
862
+ }
863
+
864
+ if (this !== a) {
865
+ for (; i < a.length; i++) {
866
+ this.words[i] = a.words[i];
867
+ }
868
+ }
869
+
870
+ this.length = a.length;
871
+
872
+ return this._strip();
873
+ };
874
+
875
+ BN.prototype.ixor = function ixor (num) {
876
+ assert((this.negative | num.negative) === 0);
877
+ return this.iuxor(num);
878
+ };
879
+
880
+ // Xor `num` with `this`
881
+ BN.prototype.xor = function xor (num) {
882
+ if (this.length > num.length) return this.clone().ixor(num);
883
+ return num.clone().ixor(this);
884
+ };
885
+
886
+ BN.prototype.uxor = function uxor (num) {
887
+ if (this.length > num.length) return this.clone().iuxor(num);
888
+ return num.clone().iuxor(this);
889
+ };
890
+
891
+ // Not ``this`` with ``width`` bitwidth
892
+ BN.prototype.inotn = function inotn (width) {
893
+ assert(typeof width === 'number' && width >= 0);
894
+
895
+ var bytesNeeded = Math.ceil(width / 26) | 0;
896
+ var bitsLeft = width % 26;
897
+
898
+ // Extend the buffer with leading zeroes
899
+ this._expand(bytesNeeded);
900
+
901
+ if (bitsLeft > 0) {
902
+ bytesNeeded--;
903
+ }
904
+
905
+ // Handle complete words
906
+ for (var i = 0; i < bytesNeeded; i++) {
907
+ this.words[i] = ~this.words[i] & 0x3ffffff;
908
+ }
909
+
910
+ // Handle the residue
911
+ if (bitsLeft > 0) {
912
+ this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
913
+ }
914
+
915
+ // And remove leading zeroes
916
+ return this._strip();
917
+ };
918
+
919
+ BN.prototype.notn = function notn (width) {
920
+ return this.clone().inotn(width);
921
+ };
922
+
923
+ // Set `bit` of `this`
924
+ BN.prototype.setn = function setn (bit, val) {
925
+ assert(typeof bit === 'number' && bit >= 0);
926
+
927
+ var off = (bit / 26) | 0;
928
+ var wbit = bit % 26;
929
+
930
+ this._expand(off + 1);
931
+
932
+ if (val) {
933
+ this.words[off] = this.words[off] | (1 << wbit);
934
+ } else {
935
+ this.words[off] = this.words[off] & ~(1 << wbit);
936
+ }
937
+
938
+ return this._strip();
939
+ };
940
+
941
+ // Add `num` to `this` in-place
942
+ BN.prototype.iadd = function iadd (num) {
943
+ var r;
944
+
945
+ // negative + positive
946
+ if (this.negative !== 0 && num.negative === 0) {
947
+ this.negative = 0;
948
+ r = this.isub(num);
949
+ this.negative ^= 1;
950
+ return this._normSign();
951
+
952
+ // positive + negative
953
+ } else if (this.negative === 0 && num.negative !== 0) {
954
+ num.negative = 0;
955
+ r = this.isub(num);
956
+ num.negative = 1;
957
+ return r._normSign();
958
+ }
959
+
960
+ // a.length > b.length
961
+ var a, b;
962
+ if (this.length > num.length) {
963
+ a = this;
964
+ b = num;
965
+ } else {
966
+ a = num;
967
+ b = this;
968
+ }
969
+
970
+ var carry = 0;
971
+ for (var i = 0; i < b.length; i++) {
972
+ r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
973
+ this.words[i] = r & 0x3ffffff;
974
+ carry = r >>> 26;
975
+ }
976
+ for (; carry !== 0 && i < a.length; i++) {
977
+ r = (a.words[i] | 0) + carry;
978
+ this.words[i] = r & 0x3ffffff;
979
+ carry = r >>> 26;
980
+ }
981
+
982
+ this.length = a.length;
983
+ if (carry !== 0) {
984
+ this.words[this.length] = carry;
985
+ this.length++;
986
+ // Copy the rest of the words
987
+ } else if (a !== this) {
988
+ for (; i < a.length; i++) {
989
+ this.words[i] = a.words[i];
990
+ }
991
+ }
992
+
993
+ return this;
994
+ };
995
+
996
+ // Add `num` to `this`
997
+ BN.prototype.add = function add (num) {
998
+ var res;
999
+ if (num.negative !== 0 && this.negative === 0) {
1000
+ num.negative = 0;
1001
+ res = this.sub(num);
1002
+ num.negative ^= 1;
1003
+ return res;
1004
+ } else if (num.negative === 0 && this.negative !== 0) {
1005
+ this.negative = 0;
1006
+ res = num.sub(this);
1007
+ this.negative = 1;
1008
+ return res;
1009
+ }
1010
+
1011
+ if (this.length > num.length) return this.clone().iadd(num);
1012
+
1013
+ return num.clone().iadd(this);
1014
+ };
1015
+
1016
+ // Subtract `num` from `this` in-place
1017
+ BN.prototype.isub = function isub (num) {
1018
+ // this - (-num) = this + num
1019
+ if (num.negative !== 0) {
1020
+ num.negative = 0;
1021
+ var r = this.iadd(num);
1022
+ num.negative = 1;
1023
+ return r._normSign();
1024
+
1025
+ // -this - num = -(this + num)
1026
+ } else if (this.negative !== 0) {
1027
+ this.negative = 0;
1028
+ this.iadd(num);
1029
+ this.negative = 1;
1030
+ return this._normSign();
1031
+ }
1032
+
1033
+ // At this point both numbers are positive
1034
+ var cmp = this.cmp(num);
1035
+
1036
+ // Optimization - zeroify
1037
+ if (cmp === 0) {
1038
+ this.negative = 0;
1039
+ this.length = 1;
1040
+ this.words[0] = 0;
1041
+ return this;
1042
+ }
1043
+
1044
+ // a > b
1045
+ var a, b;
1046
+ if (cmp > 0) {
1047
+ a = this;
1048
+ b = num;
1049
+ } else {
1050
+ a = num;
1051
+ b = this;
1052
+ }
1053
+
1054
+ var carry = 0;
1055
+ for (var i = 0; i < b.length; i++) {
1056
+ r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
1057
+ carry = r >> 26;
1058
+ this.words[i] = r & 0x3ffffff;
1059
+ }
1060
+ for (; carry !== 0 && i < a.length; i++) {
1061
+ r = (a.words[i] | 0) + carry;
1062
+ carry = r >> 26;
1063
+ this.words[i] = r & 0x3ffffff;
1064
+ }
1065
+
1066
+ // Copy rest of the words
1067
+ if (carry === 0 && i < a.length && a !== this) {
1068
+ for (; i < a.length; i++) {
1069
+ this.words[i] = a.words[i];
1070
+ }
1071
+ }
1072
+
1073
+ this.length = Math.max(this.length, i);
1074
+
1075
+ if (a !== this) {
1076
+ this.negative = 1;
1077
+ }
1078
+
1079
+ return this._strip();
1080
+ };
1081
+
1082
+ // Subtract `num` from `this`
1083
+ BN.prototype.sub = function sub (num) {
1084
+ return this.clone().isub(num);
1085
+ };
1086
+
1087
+ function smallMulTo (self, num, out) {
1088
+ out.negative = num.negative ^ self.negative;
1089
+ var len = (self.length + num.length) | 0;
1090
+ out.length = len;
1091
+ len = (len - 1) | 0;
1092
+
1093
+ // Peel one iteration (compiler can't do it, because of code complexity)
1094
+ var a = self.words[0] | 0;
1095
+ var b = num.words[0] | 0;
1096
+ var r = a * b;
1097
+
1098
+ var lo = r & 0x3ffffff;
1099
+ var carry = (r / 0x4000000) | 0;
1100
+ out.words[0] = lo;
1101
+
1102
+ for (var k = 1; k < len; k++) {
1103
+ // Sum all words with the same `i + j = k` and accumulate `ncarry`,
1104
+ // note that ncarry could be >= 0x3ffffff
1105
+ var ncarry = carry >>> 26;
1106
+ var rword = carry & 0x3ffffff;
1107
+ var maxJ = Math.min(k, num.length - 1);
1108
+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
1109
+ var i = (k - j) | 0;
1110
+ a = self.words[i] | 0;
1111
+ b = num.words[j] | 0;
1112
+ r = a * b + rword;
1113
+ ncarry += (r / 0x4000000) | 0;
1114
+ rword = r & 0x3ffffff;
1115
+ }
1116
+ out.words[k] = rword | 0;
1117
+ carry = ncarry | 0;
1118
+ }
1119
+ if (carry !== 0) {
1120
+ out.words[k] = carry | 0;
1121
+ } else {
1122
+ out.length--;
1123
+ }
1124
+
1125
+ return out._strip();
1126
+ }
1127
+
1128
+ // TODO(indutny): it may be reasonable to omit it for users who don't need
1129
+ // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
1130
+ // multiplication (like elliptic secp256k1).
1131
+ var comb10MulTo = function comb10MulTo (self, num, out) {
1132
+ var a = self.words;
1133
+ var b = num.words;
1134
+ var o = out.words;
1135
+ var c = 0;
1136
+ var lo;
1137
+ var mid;
1138
+ var hi;
1139
+ var a0 = a[0] | 0;
1140
+ var al0 = a0 & 0x1fff;
1141
+ var ah0 = a0 >>> 13;
1142
+ var a1 = a[1] | 0;
1143
+ var al1 = a1 & 0x1fff;
1144
+ var ah1 = a1 >>> 13;
1145
+ var a2 = a[2] | 0;
1146
+ var al2 = a2 & 0x1fff;
1147
+ var ah2 = a2 >>> 13;
1148
+ var a3 = a[3] | 0;
1149
+ var al3 = a3 & 0x1fff;
1150
+ var ah3 = a3 >>> 13;
1151
+ var a4 = a[4] | 0;
1152
+ var al4 = a4 & 0x1fff;
1153
+ var ah4 = a4 >>> 13;
1154
+ var a5 = a[5] | 0;
1155
+ var al5 = a5 & 0x1fff;
1156
+ var ah5 = a5 >>> 13;
1157
+ var a6 = a[6] | 0;
1158
+ var al6 = a6 & 0x1fff;
1159
+ var ah6 = a6 >>> 13;
1160
+ var a7 = a[7] | 0;
1161
+ var al7 = a7 & 0x1fff;
1162
+ var ah7 = a7 >>> 13;
1163
+ var a8 = a[8] | 0;
1164
+ var al8 = a8 & 0x1fff;
1165
+ var ah8 = a8 >>> 13;
1166
+ var a9 = a[9] | 0;
1167
+ var al9 = a9 & 0x1fff;
1168
+ var ah9 = a9 >>> 13;
1169
+ var b0 = b[0] | 0;
1170
+ var bl0 = b0 & 0x1fff;
1171
+ var bh0 = b0 >>> 13;
1172
+ var b1 = b[1] | 0;
1173
+ var bl1 = b1 & 0x1fff;
1174
+ var bh1 = b1 >>> 13;
1175
+ var b2 = b[2] | 0;
1176
+ var bl2 = b2 & 0x1fff;
1177
+ var bh2 = b2 >>> 13;
1178
+ var b3 = b[3] | 0;
1179
+ var bl3 = b3 & 0x1fff;
1180
+ var bh3 = b3 >>> 13;
1181
+ var b4 = b[4] | 0;
1182
+ var bl4 = b4 & 0x1fff;
1183
+ var bh4 = b4 >>> 13;
1184
+ var b5 = b[5] | 0;
1185
+ var bl5 = b5 & 0x1fff;
1186
+ var bh5 = b5 >>> 13;
1187
+ var b6 = b[6] | 0;
1188
+ var bl6 = b6 & 0x1fff;
1189
+ var bh6 = b6 >>> 13;
1190
+ var b7 = b[7] | 0;
1191
+ var bl7 = b7 & 0x1fff;
1192
+ var bh7 = b7 >>> 13;
1193
+ var b8 = b[8] | 0;
1194
+ var bl8 = b8 & 0x1fff;
1195
+ var bh8 = b8 >>> 13;
1196
+ var b9 = b[9] | 0;
1197
+ var bl9 = b9 & 0x1fff;
1198
+ var bh9 = b9 >>> 13;
1199
+
1200
+ out.negative = self.negative ^ num.negative;
1201
+ out.length = 19;
1202
+ /* k = 0 */
1203
+ lo = Math.imul(al0, bl0);
1204
+ mid = Math.imul(al0, bh0);
1205
+ mid = (mid + Math.imul(ah0, bl0)) | 0;
1206
+ hi = Math.imul(ah0, bh0);
1207
+ var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1208
+ c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
1209
+ w0 &= 0x3ffffff;
1210
+ /* k = 1 */
1211
+ lo = Math.imul(al1, bl0);
1212
+ mid = Math.imul(al1, bh0);
1213
+ mid = (mid + Math.imul(ah1, bl0)) | 0;
1214
+ hi = Math.imul(ah1, bh0);
1215
+ lo = (lo + Math.imul(al0, bl1)) | 0;
1216
+ mid = (mid + Math.imul(al0, bh1)) | 0;
1217
+ mid = (mid + Math.imul(ah0, bl1)) | 0;
1218
+ hi = (hi + Math.imul(ah0, bh1)) | 0;
1219
+ var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1220
+ c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
1221
+ w1 &= 0x3ffffff;
1222
+ /* k = 2 */
1223
+ lo = Math.imul(al2, bl0);
1224
+ mid = Math.imul(al2, bh0);
1225
+ mid = (mid + Math.imul(ah2, bl0)) | 0;
1226
+ hi = Math.imul(ah2, bh0);
1227
+ lo = (lo + Math.imul(al1, bl1)) | 0;
1228
+ mid = (mid + Math.imul(al1, bh1)) | 0;
1229
+ mid = (mid + Math.imul(ah1, bl1)) | 0;
1230
+ hi = (hi + Math.imul(ah1, bh1)) | 0;
1231
+ lo = (lo + Math.imul(al0, bl2)) | 0;
1232
+ mid = (mid + Math.imul(al0, bh2)) | 0;
1233
+ mid = (mid + Math.imul(ah0, bl2)) | 0;
1234
+ hi = (hi + Math.imul(ah0, bh2)) | 0;
1235
+ var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1236
+ c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
1237
+ w2 &= 0x3ffffff;
1238
+ /* k = 3 */
1239
+ lo = Math.imul(al3, bl0);
1240
+ mid = Math.imul(al3, bh0);
1241
+ mid = (mid + Math.imul(ah3, bl0)) | 0;
1242
+ hi = Math.imul(ah3, bh0);
1243
+ lo = (lo + Math.imul(al2, bl1)) | 0;
1244
+ mid = (mid + Math.imul(al2, bh1)) | 0;
1245
+ mid = (mid + Math.imul(ah2, bl1)) | 0;
1246
+ hi = (hi + Math.imul(ah2, bh1)) | 0;
1247
+ lo = (lo + Math.imul(al1, bl2)) | 0;
1248
+ mid = (mid + Math.imul(al1, bh2)) | 0;
1249
+ mid = (mid + Math.imul(ah1, bl2)) | 0;
1250
+ hi = (hi + Math.imul(ah1, bh2)) | 0;
1251
+ lo = (lo + Math.imul(al0, bl3)) | 0;
1252
+ mid = (mid + Math.imul(al0, bh3)) | 0;
1253
+ mid = (mid + Math.imul(ah0, bl3)) | 0;
1254
+ hi = (hi + Math.imul(ah0, bh3)) | 0;
1255
+ var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1256
+ c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
1257
+ w3 &= 0x3ffffff;
1258
+ /* k = 4 */
1259
+ lo = Math.imul(al4, bl0);
1260
+ mid = Math.imul(al4, bh0);
1261
+ mid = (mid + Math.imul(ah4, bl0)) | 0;
1262
+ hi = Math.imul(ah4, bh0);
1263
+ lo = (lo + Math.imul(al3, bl1)) | 0;
1264
+ mid = (mid + Math.imul(al3, bh1)) | 0;
1265
+ mid = (mid + Math.imul(ah3, bl1)) | 0;
1266
+ hi = (hi + Math.imul(ah3, bh1)) | 0;
1267
+ lo = (lo + Math.imul(al2, bl2)) | 0;
1268
+ mid = (mid + Math.imul(al2, bh2)) | 0;
1269
+ mid = (mid + Math.imul(ah2, bl2)) | 0;
1270
+ hi = (hi + Math.imul(ah2, bh2)) | 0;
1271
+ lo = (lo + Math.imul(al1, bl3)) | 0;
1272
+ mid = (mid + Math.imul(al1, bh3)) | 0;
1273
+ mid = (mid + Math.imul(ah1, bl3)) | 0;
1274
+ hi = (hi + Math.imul(ah1, bh3)) | 0;
1275
+ lo = (lo + Math.imul(al0, bl4)) | 0;
1276
+ mid = (mid + Math.imul(al0, bh4)) | 0;
1277
+ mid = (mid + Math.imul(ah0, bl4)) | 0;
1278
+ hi = (hi + Math.imul(ah0, bh4)) | 0;
1279
+ var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1280
+ c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
1281
+ w4 &= 0x3ffffff;
1282
+ /* k = 5 */
1283
+ lo = Math.imul(al5, bl0);
1284
+ mid = Math.imul(al5, bh0);
1285
+ mid = (mid + Math.imul(ah5, bl0)) | 0;
1286
+ hi = Math.imul(ah5, bh0);
1287
+ lo = (lo + Math.imul(al4, bl1)) | 0;
1288
+ mid = (mid + Math.imul(al4, bh1)) | 0;
1289
+ mid = (mid + Math.imul(ah4, bl1)) | 0;
1290
+ hi = (hi + Math.imul(ah4, bh1)) | 0;
1291
+ lo = (lo + Math.imul(al3, bl2)) | 0;
1292
+ mid = (mid + Math.imul(al3, bh2)) | 0;
1293
+ mid = (mid + Math.imul(ah3, bl2)) | 0;
1294
+ hi = (hi + Math.imul(ah3, bh2)) | 0;
1295
+ lo = (lo + Math.imul(al2, bl3)) | 0;
1296
+ mid = (mid + Math.imul(al2, bh3)) | 0;
1297
+ mid = (mid + Math.imul(ah2, bl3)) | 0;
1298
+ hi = (hi + Math.imul(ah2, bh3)) | 0;
1299
+ lo = (lo + Math.imul(al1, bl4)) | 0;
1300
+ mid = (mid + Math.imul(al1, bh4)) | 0;
1301
+ mid = (mid + Math.imul(ah1, bl4)) | 0;
1302
+ hi = (hi + Math.imul(ah1, bh4)) | 0;
1303
+ lo = (lo + Math.imul(al0, bl5)) | 0;
1304
+ mid = (mid + Math.imul(al0, bh5)) | 0;
1305
+ mid = (mid + Math.imul(ah0, bl5)) | 0;
1306
+ hi = (hi + Math.imul(ah0, bh5)) | 0;
1307
+ var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1308
+ c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
1309
+ w5 &= 0x3ffffff;
1310
+ /* k = 6 */
1311
+ lo = Math.imul(al6, bl0);
1312
+ mid = Math.imul(al6, bh0);
1313
+ mid = (mid + Math.imul(ah6, bl0)) | 0;
1314
+ hi = Math.imul(ah6, bh0);
1315
+ lo = (lo + Math.imul(al5, bl1)) | 0;
1316
+ mid = (mid + Math.imul(al5, bh1)) | 0;
1317
+ mid = (mid + Math.imul(ah5, bl1)) | 0;
1318
+ hi = (hi + Math.imul(ah5, bh1)) | 0;
1319
+ lo = (lo + Math.imul(al4, bl2)) | 0;
1320
+ mid = (mid + Math.imul(al4, bh2)) | 0;
1321
+ mid = (mid + Math.imul(ah4, bl2)) | 0;
1322
+ hi = (hi + Math.imul(ah4, bh2)) | 0;
1323
+ lo = (lo + Math.imul(al3, bl3)) | 0;
1324
+ mid = (mid + Math.imul(al3, bh3)) | 0;
1325
+ mid = (mid + Math.imul(ah3, bl3)) | 0;
1326
+ hi = (hi + Math.imul(ah3, bh3)) | 0;
1327
+ lo = (lo + Math.imul(al2, bl4)) | 0;
1328
+ mid = (mid + Math.imul(al2, bh4)) | 0;
1329
+ mid = (mid + Math.imul(ah2, bl4)) | 0;
1330
+ hi = (hi + Math.imul(ah2, bh4)) | 0;
1331
+ lo = (lo + Math.imul(al1, bl5)) | 0;
1332
+ mid = (mid + Math.imul(al1, bh5)) | 0;
1333
+ mid = (mid + Math.imul(ah1, bl5)) | 0;
1334
+ hi = (hi + Math.imul(ah1, bh5)) | 0;
1335
+ lo = (lo + Math.imul(al0, bl6)) | 0;
1336
+ mid = (mid + Math.imul(al0, bh6)) | 0;
1337
+ mid = (mid + Math.imul(ah0, bl6)) | 0;
1338
+ hi = (hi + Math.imul(ah0, bh6)) | 0;
1339
+ var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1340
+ c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
1341
+ w6 &= 0x3ffffff;
1342
+ /* k = 7 */
1343
+ lo = Math.imul(al7, bl0);
1344
+ mid = Math.imul(al7, bh0);
1345
+ mid = (mid + Math.imul(ah7, bl0)) | 0;
1346
+ hi = Math.imul(ah7, bh0);
1347
+ lo = (lo + Math.imul(al6, bl1)) | 0;
1348
+ mid = (mid + Math.imul(al6, bh1)) | 0;
1349
+ mid = (mid + Math.imul(ah6, bl1)) | 0;
1350
+ hi = (hi + Math.imul(ah6, bh1)) | 0;
1351
+ lo = (lo + Math.imul(al5, bl2)) | 0;
1352
+ mid = (mid + Math.imul(al5, bh2)) | 0;
1353
+ mid = (mid + Math.imul(ah5, bl2)) | 0;
1354
+ hi = (hi + Math.imul(ah5, bh2)) | 0;
1355
+ lo = (lo + Math.imul(al4, bl3)) | 0;
1356
+ mid = (mid + Math.imul(al4, bh3)) | 0;
1357
+ mid = (mid + Math.imul(ah4, bl3)) | 0;
1358
+ hi = (hi + Math.imul(ah4, bh3)) | 0;
1359
+ lo = (lo + Math.imul(al3, bl4)) | 0;
1360
+ mid = (mid + Math.imul(al3, bh4)) | 0;
1361
+ mid = (mid + Math.imul(ah3, bl4)) | 0;
1362
+ hi = (hi + Math.imul(ah3, bh4)) | 0;
1363
+ lo = (lo + Math.imul(al2, bl5)) | 0;
1364
+ mid = (mid + Math.imul(al2, bh5)) | 0;
1365
+ mid = (mid + Math.imul(ah2, bl5)) | 0;
1366
+ hi = (hi + Math.imul(ah2, bh5)) | 0;
1367
+ lo = (lo + Math.imul(al1, bl6)) | 0;
1368
+ mid = (mid + Math.imul(al1, bh6)) | 0;
1369
+ mid = (mid + Math.imul(ah1, bl6)) | 0;
1370
+ hi = (hi + Math.imul(ah1, bh6)) | 0;
1371
+ lo = (lo + Math.imul(al0, bl7)) | 0;
1372
+ mid = (mid + Math.imul(al0, bh7)) | 0;
1373
+ mid = (mid + Math.imul(ah0, bl7)) | 0;
1374
+ hi = (hi + Math.imul(ah0, bh7)) | 0;
1375
+ var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1376
+ c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
1377
+ w7 &= 0x3ffffff;
1378
+ /* k = 8 */
1379
+ lo = Math.imul(al8, bl0);
1380
+ mid = Math.imul(al8, bh0);
1381
+ mid = (mid + Math.imul(ah8, bl0)) | 0;
1382
+ hi = Math.imul(ah8, bh0);
1383
+ lo = (lo + Math.imul(al7, bl1)) | 0;
1384
+ mid = (mid + Math.imul(al7, bh1)) | 0;
1385
+ mid = (mid + Math.imul(ah7, bl1)) | 0;
1386
+ hi = (hi + Math.imul(ah7, bh1)) | 0;
1387
+ lo = (lo + Math.imul(al6, bl2)) | 0;
1388
+ mid = (mid + Math.imul(al6, bh2)) | 0;
1389
+ mid = (mid + Math.imul(ah6, bl2)) | 0;
1390
+ hi = (hi + Math.imul(ah6, bh2)) | 0;
1391
+ lo = (lo + Math.imul(al5, bl3)) | 0;
1392
+ mid = (mid + Math.imul(al5, bh3)) | 0;
1393
+ mid = (mid + Math.imul(ah5, bl3)) | 0;
1394
+ hi = (hi + Math.imul(ah5, bh3)) | 0;
1395
+ lo = (lo + Math.imul(al4, bl4)) | 0;
1396
+ mid = (mid + Math.imul(al4, bh4)) | 0;
1397
+ mid = (mid + Math.imul(ah4, bl4)) | 0;
1398
+ hi = (hi + Math.imul(ah4, bh4)) | 0;
1399
+ lo = (lo + Math.imul(al3, bl5)) | 0;
1400
+ mid = (mid + Math.imul(al3, bh5)) | 0;
1401
+ mid = (mid + Math.imul(ah3, bl5)) | 0;
1402
+ hi = (hi + Math.imul(ah3, bh5)) | 0;
1403
+ lo = (lo + Math.imul(al2, bl6)) | 0;
1404
+ mid = (mid + Math.imul(al2, bh6)) | 0;
1405
+ mid = (mid + Math.imul(ah2, bl6)) | 0;
1406
+ hi = (hi + Math.imul(ah2, bh6)) | 0;
1407
+ lo = (lo + Math.imul(al1, bl7)) | 0;
1408
+ mid = (mid + Math.imul(al1, bh7)) | 0;
1409
+ mid = (mid + Math.imul(ah1, bl7)) | 0;
1410
+ hi = (hi + Math.imul(ah1, bh7)) | 0;
1411
+ lo = (lo + Math.imul(al0, bl8)) | 0;
1412
+ mid = (mid + Math.imul(al0, bh8)) | 0;
1413
+ mid = (mid + Math.imul(ah0, bl8)) | 0;
1414
+ hi = (hi + Math.imul(ah0, bh8)) | 0;
1415
+ var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1416
+ c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
1417
+ w8 &= 0x3ffffff;
1418
+ /* k = 9 */
1419
+ lo = Math.imul(al9, bl0);
1420
+ mid = Math.imul(al9, bh0);
1421
+ mid = (mid + Math.imul(ah9, bl0)) | 0;
1422
+ hi = Math.imul(ah9, bh0);
1423
+ lo = (lo + Math.imul(al8, bl1)) | 0;
1424
+ mid = (mid + Math.imul(al8, bh1)) | 0;
1425
+ mid = (mid + Math.imul(ah8, bl1)) | 0;
1426
+ hi = (hi + Math.imul(ah8, bh1)) | 0;
1427
+ lo = (lo + Math.imul(al7, bl2)) | 0;
1428
+ mid = (mid + Math.imul(al7, bh2)) | 0;
1429
+ mid = (mid + Math.imul(ah7, bl2)) | 0;
1430
+ hi = (hi + Math.imul(ah7, bh2)) | 0;
1431
+ lo = (lo + Math.imul(al6, bl3)) | 0;
1432
+ mid = (mid + Math.imul(al6, bh3)) | 0;
1433
+ mid = (mid + Math.imul(ah6, bl3)) | 0;
1434
+ hi = (hi + Math.imul(ah6, bh3)) | 0;
1435
+ lo = (lo + Math.imul(al5, bl4)) | 0;
1436
+ mid = (mid + Math.imul(al5, bh4)) | 0;
1437
+ mid = (mid + Math.imul(ah5, bl4)) | 0;
1438
+ hi = (hi + Math.imul(ah5, bh4)) | 0;
1439
+ lo = (lo + Math.imul(al4, bl5)) | 0;
1440
+ mid = (mid + Math.imul(al4, bh5)) | 0;
1441
+ mid = (mid + Math.imul(ah4, bl5)) | 0;
1442
+ hi = (hi + Math.imul(ah4, bh5)) | 0;
1443
+ lo = (lo + Math.imul(al3, bl6)) | 0;
1444
+ mid = (mid + Math.imul(al3, bh6)) | 0;
1445
+ mid = (mid + Math.imul(ah3, bl6)) | 0;
1446
+ hi = (hi + Math.imul(ah3, bh6)) | 0;
1447
+ lo = (lo + Math.imul(al2, bl7)) | 0;
1448
+ mid = (mid + Math.imul(al2, bh7)) | 0;
1449
+ mid = (mid + Math.imul(ah2, bl7)) | 0;
1450
+ hi = (hi + Math.imul(ah2, bh7)) | 0;
1451
+ lo = (lo + Math.imul(al1, bl8)) | 0;
1452
+ mid = (mid + Math.imul(al1, bh8)) | 0;
1453
+ mid = (mid + Math.imul(ah1, bl8)) | 0;
1454
+ hi = (hi + Math.imul(ah1, bh8)) | 0;
1455
+ lo = (lo + Math.imul(al0, bl9)) | 0;
1456
+ mid = (mid + Math.imul(al0, bh9)) | 0;
1457
+ mid = (mid + Math.imul(ah0, bl9)) | 0;
1458
+ hi = (hi + Math.imul(ah0, bh9)) | 0;
1459
+ var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1460
+ c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
1461
+ w9 &= 0x3ffffff;
1462
+ /* k = 10 */
1463
+ lo = Math.imul(al9, bl1);
1464
+ mid = Math.imul(al9, bh1);
1465
+ mid = (mid + Math.imul(ah9, bl1)) | 0;
1466
+ hi = Math.imul(ah9, bh1);
1467
+ lo = (lo + Math.imul(al8, bl2)) | 0;
1468
+ mid = (mid + Math.imul(al8, bh2)) | 0;
1469
+ mid = (mid + Math.imul(ah8, bl2)) | 0;
1470
+ hi = (hi + Math.imul(ah8, bh2)) | 0;
1471
+ lo = (lo + Math.imul(al7, bl3)) | 0;
1472
+ mid = (mid + Math.imul(al7, bh3)) | 0;
1473
+ mid = (mid + Math.imul(ah7, bl3)) | 0;
1474
+ hi = (hi + Math.imul(ah7, bh3)) | 0;
1475
+ lo = (lo + Math.imul(al6, bl4)) | 0;
1476
+ mid = (mid + Math.imul(al6, bh4)) | 0;
1477
+ mid = (mid + Math.imul(ah6, bl4)) | 0;
1478
+ hi = (hi + Math.imul(ah6, bh4)) | 0;
1479
+ lo = (lo + Math.imul(al5, bl5)) | 0;
1480
+ mid = (mid + Math.imul(al5, bh5)) | 0;
1481
+ mid = (mid + Math.imul(ah5, bl5)) | 0;
1482
+ hi = (hi + Math.imul(ah5, bh5)) | 0;
1483
+ lo = (lo + Math.imul(al4, bl6)) | 0;
1484
+ mid = (mid + Math.imul(al4, bh6)) | 0;
1485
+ mid = (mid + Math.imul(ah4, bl6)) | 0;
1486
+ hi = (hi + Math.imul(ah4, bh6)) | 0;
1487
+ lo = (lo + Math.imul(al3, bl7)) | 0;
1488
+ mid = (mid + Math.imul(al3, bh7)) | 0;
1489
+ mid = (mid + Math.imul(ah3, bl7)) | 0;
1490
+ hi = (hi + Math.imul(ah3, bh7)) | 0;
1491
+ lo = (lo + Math.imul(al2, bl8)) | 0;
1492
+ mid = (mid + Math.imul(al2, bh8)) | 0;
1493
+ mid = (mid + Math.imul(ah2, bl8)) | 0;
1494
+ hi = (hi + Math.imul(ah2, bh8)) | 0;
1495
+ lo = (lo + Math.imul(al1, bl9)) | 0;
1496
+ mid = (mid + Math.imul(al1, bh9)) | 0;
1497
+ mid = (mid + Math.imul(ah1, bl9)) | 0;
1498
+ hi = (hi + Math.imul(ah1, bh9)) | 0;
1499
+ var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1500
+ c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
1501
+ w10 &= 0x3ffffff;
1502
+ /* k = 11 */
1503
+ lo = Math.imul(al9, bl2);
1504
+ mid = Math.imul(al9, bh2);
1505
+ mid = (mid + Math.imul(ah9, bl2)) | 0;
1506
+ hi = Math.imul(ah9, bh2);
1507
+ lo = (lo + Math.imul(al8, bl3)) | 0;
1508
+ mid = (mid + Math.imul(al8, bh3)) | 0;
1509
+ mid = (mid + Math.imul(ah8, bl3)) | 0;
1510
+ hi = (hi + Math.imul(ah8, bh3)) | 0;
1511
+ lo = (lo + Math.imul(al7, bl4)) | 0;
1512
+ mid = (mid + Math.imul(al7, bh4)) | 0;
1513
+ mid = (mid + Math.imul(ah7, bl4)) | 0;
1514
+ hi = (hi + Math.imul(ah7, bh4)) | 0;
1515
+ lo = (lo + Math.imul(al6, bl5)) | 0;
1516
+ mid = (mid + Math.imul(al6, bh5)) | 0;
1517
+ mid = (mid + Math.imul(ah6, bl5)) | 0;
1518
+ hi = (hi + Math.imul(ah6, bh5)) | 0;
1519
+ lo = (lo + Math.imul(al5, bl6)) | 0;
1520
+ mid = (mid + Math.imul(al5, bh6)) | 0;
1521
+ mid = (mid + Math.imul(ah5, bl6)) | 0;
1522
+ hi = (hi + Math.imul(ah5, bh6)) | 0;
1523
+ lo = (lo + Math.imul(al4, bl7)) | 0;
1524
+ mid = (mid + Math.imul(al4, bh7)) | 0;
1525
+ mid = (mid + Math.imul(ah4, bl7)) | 0;
1526
+ hi = (hi + Math.imul(ah4, bh7)) | 0;
1527
+ lo = (lo + Math.imul(al3, bl8)) | 0;
1528
+ mid = (mid + Math.imul(al3, bh8)) | 0;
1529
+ mid = (mid + Math.imul(ah3, bl8)) | 0;
1530
+ hi = (hi + Math.imul(ah3, bh8)) | 0;
1531
+ lo = (lo + Math.imul(al2, bl9)) | 0;
1532
+ mid = (mid + Math.imul(al2, bh9)) | 0;
1533
+ mid = (mid + Math.imul(ah2, bl9)) | 0;
1534
+ hi = (hi + Math.imul(ah2, bh9)) | 0;
1535
+ var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1536
+ c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
1537
+ w11 &= 0x3ffffff;
1538
+ /* k = 12 */
1539
+ lo = Math.imul(al9, bl3);
1540
+ mid = Math.imul(al9, bh3);
1541
+ mid = (mid + Math.imul(ah9, bl3)) | 0;
1542
+ hi = Math.imul(ah9, bh3);
1543
+ lo = (lo + Math.imul(al8, bl4)) | 0;
1544
+ mid = (mid + Math.imul(al8, bh4)) | 0;
1545
+ mid = (mid + Math.imul(ah8, bl4)) | 0;
1546
+ hi = (hi + Math.imul(ah8, bh4)) | 0;
1547
+ lo = (lo + Math.imul(al7, bl5)) | 0;
1548
+ mid = (mid + Math.imul(al7, bh5)) | 0;
1549
+ mid = (mid + Math.imul(ah7, bl5)) | 0;
1550
+ hi = (hi + Math.imul(ah7, bh5)) | 0;
1551
+ lo = (lo + Math.imul(al6, bl6)) | 0;
1552
+ mid = (mid + Math.imul(al6, bh6)) | 0;
1553
+ mid = (mid + Math.imul(ah6, bl6)) | 0;
1554
+ hi = (hi + Math.imul(ah6, bh6)) | 0;
1555
+ lo = (lo + Math.imul(al5, bl7)) | 0;
1556
+ mid = (mid + Math.imul(al5, bh7)) | 0;
1557
+ mid = (mid + Math.imul(ah5, bl7)) | 0;
1558
+ hi = (hi + Math.imul(ah5, bh7)) | 0;
1559
+ lo = (lo + Math.imul(al4, bl8)) | 0;
1560
+ mid = (mid + Math.imul(al4, bh8)) | 0;
1561
+ mid = (mid + Math.imul(ah4, bl8)) | 0;
1562
+ hi = (hi + Math.imul(ah4, bh8)) | 0;
1563
+ lo = (lo + Math.imul(al3, bl9)) | 0;
1564
+ mid = (mid + Math.imul(al3, bh9)) | 0;
1565
+ mid = (mid + Math.imul(ah3, bl9)) | 0;
1566
+ hi = (hi + Math.imul(ah3, bh9)) | 0;
1567
+ var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1568
+ c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
1569
+ w12 &= 0x3ffffff;
1570
+ /* k = 13 */
1571
+ lo = Math.imul(al9, bl4);
1572
+ mid = Math.imul(al9, bh4);
1573
+ mid = (mid + Math.imul(ah9, bl4)) | 0;
1574
+ hi = Math.imul(ah9, bh4);
1575
+ lo = (lo + Math.imul(al8, bl5)) | 0;
1576
+ mid = (mid + Math.imul(al8, bh5)) | 0;
1577
+ mid = (mid + Math.imul(ah8, bl5)) | 0;
1578
+ hi = (hi + Math.imul(ah8, bh5)) | 0;
1579
+ lo = (lo + Math.imul(al7, bl6)) | 0;
1580
+ mid = (mid + Math.imul(al7, bh6)) | 0;
1581
+ mid = (mid + Math.imul(ah7, bl6)) | 0;
1582
+ hi = (hi + Math.imul(ah7, bh6)) | 0;
1583
+ lo = (lo + Math.imul(al6, bl7)) | 0;
1584
+ mid = (mid + Math.imul(al6, bh7)) | 0;
1585
+ mid = (mid + Math.imul(ah6, bl7)) | 0;
1586
+ hi = (hi + Math.imul(ah6, bh7)) | 0;
1587
+ lo = (lo + Math.imul(al5, bl8)) | 0;
1588
+ mid = (mid + Math.imul(al5, bh8)) | 0;
1589
+ mid = (mid + Math.imul(ah5, bl8)) | 0;
1590
+ hi = (hi + Math.imul(ah5, bh8)) | 0;
1591
+ lo = (lo + Math.imul(al4, bl9)) | 0;
1592
+ mid = (mid + Math.imul(al4, bh9)) | 0;
1593
+ mid = (mid + Math.imul(ah4, bl9)) | 0;
1594
+ hi = (hi + Math.imul(ah4, bh9)) | 0;
1595
+ var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1596
+ c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
1597
+ w13 &= 0x3ffffff;
1598
+ /* k = 14 */
1599
+ lo = Math.imul(al9, bl5);
1600
+ mid = Math.imul(al9, bh5);
1601
+ mid = (mid + Math.imul(ah9, bl5)) | 0;
1602
+ hi = Math.imul(ah9, bh5);
1603
+ lo = (lo + Math.imul(al8, bl6)) | 0;
1604
+ mid = (mid + Math.imul(al8, bh6)) | 0;
1605
+ mid = (mid + Math.imul(ah8, bl6)) | 0;
1606
+ hi = (hi + Math.imul(ah8, bh6)) | 0;
1607
+ lo = (lo + Math.imul(al7, bl7)) | 0;
1608
+ mid = (mid + Math.imul(al7, bh7)) | 0;
1609
+ mid = (mid + Math.imul(ah7, bl7)) | 0;
1610
+ hi = (hi + Math.imul(ah7, bh7)) | 0;
1611
+ lo = (lo + Math.imul(al6, bl8)) | 0;
1612
+ mid = (mid + Math.imul(al6, bh8)) | 0;
1613
+ mid = (mid + Math.imul(ah6, bl8)) | 0;
1614
+ hi = (hi + Math.imul(ah6, bh8)) | 0;
1615
+ lo = (lo + Math.imul(al5, bl9)) | 0;
1616
+ mid = (mid + Math.imul(al5, bh9)) | 0;
1617
+ mid = (mid + Math.imul(ah5, bl9)) | 0;
1618
+ hi = (hi + Math.imul(ah5, bh9)) | 0;
1619
+ var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1620
+ c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
1621
+ w14 &= 0x3ffffff;
1622
+ /* k = 15 */
1623
+ lo = Math.imul(al9, bl6);
1624
+ mid = Math.imul(al9, bh6);
1625
+ mid = (mid + Math.imul(ah9, bl6)) | 0;
1626
+ hi = Math.imul(ah9, bh6);
1627
+ lo = (lo + Math.imul(al8, bl7)) | 0;
1628
+ mid = (mid + Math.imul(al8, bh7)) | 0;
1629
+ mid = (mid + Math.imul(ah8, bl7)) | 0;
1630
+ hi = (hi + Math.imul(ah8, bh7)) | 0;
1631
+ lo = (lo + Math.imul(al7, bl8)) | 0;
1632
+ mid = (mid + Math.imul(al7, bh8)) | 0;
1633
+ mid = (mid + Math.imul(ah7, bl8)) | 0;
1634
+ hi = (hi + Math.imul(ah7, bh8)) | 0;
1635
+ lo = (lo + Math.imul(al6, bl9)) | 0;
1636
+ mid = (mid + Math.imul(al6, bh9)) | 0;
1637
+ mid = (mid + Math.imul(ah6, bl9)) | 0;
1638
+ hi = (hi + Math.imul(ah6, bh9)) | 0;
1639
+ var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1640
+ c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
1641
+ w15 &= 0x3ffffff;
1642
+ /* k = 16 */
1643
+ lo = Math.imul(al9, bl7);
1644
+ mid = Math.imul(al9, bh7);
1645
+ mid = (mid + Math.imul(ah9, bl7)) | 0;
1646
+ hi = Math.imul(ah9, bh7);
1647
+ lo = (lo + Math.imul(al8, bl8)) | 0;
1648
+ mid = (mid + Math.imul(al8, bh8)) | 0;
1649
+ mid = (mid + Math.imul(ah8, bl8)) | 0;
1650
+ hi = (hi + Math.imul(ah8, bh8)) | 0;
1651
+ lo = (lo + Math.imul(al7, bl9)) | 0;
1652
+ mid = (mid + Math.imul(al7, bh9)) | 0;
1653
+ mid = (mid + Math.imul(ah7, bl9)) | 0;
1654
+ hi = (hi + Math.imul(ah7, bh9)) | 0;
1655
+ var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1656
+ c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
1657
+ w16 &= 0x3ffffff;
1658
+ /* k = 17 */
1659
+ lo = Math.imul(al9, bl8);
1660
+ mid = Math.imul(al9, bh8);
1661
+ mid = (mid + Math.imul(ah9, bl8)) | 0;
1662
+ hi = Math.imul(ah9, bh8);
1663
+ lo = (lo + Math.imul(al8, bl9)) | 0;
1664
+ mid = (mid + Math.imul(al8, bh9)) | 0;
1665
+ mid = (mid + Math.imul(ah8, bl9)) | 0;
1666
+ hi = (hi + Math.imul(ah8, bh9)) | 0;
1667
+ var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1668
+ c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
1669
+ w17 &= 0x3ffffff;
1670
+ /* k = 18 */
1671
+ lo = Math.imul(al9, bl9);
1672
+ mid = Math.imul(al9, bh9);
1673
+ mid = (mid + Math.imul(ah9, bl9)) | 0;
1674
+ hi = Math.imul(ah9, bh9);
1675
+ var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
1676
+ c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
1677
+ w18 &= 0x3ffffff;
1678
+ o[0] = w0;
1679
+ o[1] = w1;
1680
+ o[2] = w2;
1681
+ o[3] = w3;
1682
+ o[4] = w4;
1683
+ o[5] = w5;
1684
+ o[6] = w6;
1685
+ o[7] = w7;
1686
+ o[8] = w8;
1687
+ o[9] = w9;
1688
+ o[10] = w10;
1689
+ o[11] = w11;
1690
+ o[12] = w12;
1691
+ o[13] = w13;
1692
+ o[14] = w14;
1693
+ o[15] = w15;
1694
+ o[16] = w16;
1695
+ o[17] = w17;
1696
+ o[18] = w18;
1697
+ if (c !== 0) {
1698
+ o[19] = c;
1699
+ out.length++;
1700
+ }
1701
+ return out;
1702
+ };
1703
+
1704
+ // Polyfill comb
1705
+ if (!Math.imul) {
1706
+ comb10MulTo = smallMulTo;
1707
+ }
1708
+
1709
+ function bigMulTo (self, num, out) {
1710
+ out.negative = num.negative ^ self.negative;
1711
+ out.length = self.length + num.length;
1712
+
1713
+ var carry = 0;
1714
+ var hncarry = 0;
1715
+ for (var k = 0; k < out.length - 1; k++) {
1716
+ // Sum all words with the same `i + j = k` and accumulate `ncarry`,
1717
+ // note that ncarry could be >= 0x3ffffff
1718
+ var ncarry = hncarry;
1719
+ hncarry = 0;
1720
+ var rword = carry & 0x3ffffff;
1721
+ var maxJ = Math.min(k, num.length - 1);
1722
+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
1723
+ var i = k - j;
1724
+ var a = self.words[i] | 0;
1725
+ var b = num.words[j] | 0;
1726
+ var r = a * b;
1727
+
1728
+ var lo = r & 0x3ffffff;
1729
+ ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
1730
+ lo = (lo + rword) | 0;
1731
+ rword = lo & 0x3ffffff;
1732
+ ncarry = (ncarry + (lo >>> 26)) | 0;
1733
+
1734
+ hncarry += ncarry >>> 26;
1735
+ ncarry &= 0x3ffffff;
1736
+ }
1737
+ out.words[k] = rword;
1738
+ carry = ncarry;
1739
+ ncarry = hncarry;
1740
+ }
1741
+ if (carry !== 0) {
1742
+ out.words[k] = carry;
1743
+ } else {
1744
+ out.length--;
1745
+ }
1746
+
1747
+ return out._strip();
1748
+ }
1749
+
1750
+ function jumboMulTo (self, num, out) {
1751
+ // Temporary disable, see https://github.com/indutny/bn.js/issues/211
1752
+ // var fftm = new FFTM();
1753
+ // return fftm.mulp(self, num, out);
1754
+ return bigMulTo(self, num, out);
1755
+ }
1756
+
1757
+ BN.prototype.mulTo = function mulTo (num, out) {
1758
+ var res;
1759
+ var len = this.length + num.length;
1760
+ if (this.length === 10 && num.length === 10) {
1761
+ res = comb10MulTo(this, num, out);
1762
+ } else if (len < 63) {
1763
+ res = smallMulTo(this, num, out);
1764
+ } else if (len < 1024) {
1765
+ res = bigMulTo(this, num, out);
1766
+ } else {
1767
+ res = jumboMulTo(this, num, out);
1768
+ }
1769
+
1770
+ return res;
1771
+ };
1772
+
1773
+ // Cooley-Tukey algorithm for FFT
1774
+ // slightly revisited to rely on looping instead of recursion
1775
+
1776
+ function FFTM (x, y) {
1777
+ this.x = x;
1778
+ this.y = y;
1779
+ }
1780
+
1781
+ FFTM.prototype.makeRBT = function makeRBT (N) {
1782
+ var t = new Array(N);
1783
+ var l = BN.prototype._countBits(N) - 1;
1784
+ for (var i = 0; i < N; i++) {
1785
+ t[i] = this.revBin(i, l, N);
1786
+ }
1787
+
1788
+ return t;
1789
+ };
1790
+
1791
+ // Returns binary-reversed representation of `x`
1792
+ FFTM.prototype.revBin = function revBin (x, l, N) {
1793
+ if (x === 0 || x === N - 1) return x;
1794
+
1795
+ var rb = 0;
1796
+ for (var i = 0; i < l; i++) {
1797
+ rb |= (x & 1) << (l - i - 1);
1798
+ x >>= 1;
1799
+ }
1800
+
1801
+ return rb;
1802
+ };
1803
+
1804
+ // Performs "tweedling" phase, therefore 'emulating'
1805
+ // behaviour of the recursive algorithm
1806
+ FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
1807
+ for (var i = 0; i < N; i++) {
1808
+ rtws[i] = rws[rbt[i]];
1809
+ itws[i] = iws[rbt[i]];
1810
+ }
1811
+ };
1812
+
1813
+ FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
1814
+ this.permute(rbt, rws, iws, rtws, itws, N);
1815
+
1816
+ for (var s = 1; s < N; s <<= 1) {
1817
+ var l = s << 1;
1818
+
1819
+ var rtwdf = Math.cos(2 * Math.PI / l);
1820
+ var itwdf = Math.sin(2 * Math.PI / l);
1821
+
1822
+ for (var p = 0; p < N; p += l) {
1823
+ var rtwdf_ = rtwdf;
1824
+ var itwdf_ = itwdf;
1825
+
1826
+ for (var j = 0; j < s; j++) {
1827
+ var re = rtws[p + j];
1828
+ var ie = itws[p + j];
1829
+
1830
+ var ro = rtws[p + j + s];
1831
+ var io = itws[p + j + s];
1832
+
1833
+ var rx = rtwdf_ * ro - itwdf_ * io;
1834
+
1835
+ io = rtwdf_ * io + itwdf_ * ro;
1836
+ ro = rx;
1837
+
1838
+ rtws[p + j] = re + ro;
1839
+ itws[p + j] = ie + io;
1840
+
1841
+ rtws[p + j + s] = re - ro;
1842
+ itws[p + j + s] = ie - io;
1843
+
1844
+ /* jshint maxdepth : false */
1845
+ if (j !== l) {
1846
+ rx = rtwdf * rtwdf_ - itwdf * itwdf_;
1847
+
1848
+ itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
1849
+ rtwdf_ = rx;
1850
+ }
1851
+ }
1852
+ }
1853
+ }
1854
+ };
1855
+
1856
+ FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
1857
+ var N = Math.max(m, n) | 1;
1858
+ var odd = N & 1;
1859
+ var i = 0;
1860
+ for (N = N / 2 | 0; N; N = N >>> 1) {
1861
+ i++;
1862
+ }
1863
+
1864
+ return 1 << i + 1 + odd;
1865
+ };
1866
+
1867
+ FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
1868
+ if (N <= 1) return;
1869
+
1870
+ for (var i = 0; i < N / 2; i++) {
1871
+ var t = rws[i];
1872
+
1873
+ rws[i] = rws[N - i - 1];
1874
+ rws[N - i - 1] = t;
1875
+
1876
+ t = iws[i];
1877
+
1878
+ iws[i] = -iws[N - i - 1];
1879
+ iws[N - i - 1] = -t;
1880
+ }
1881
+ };
1882
+
1883
+ FFTM.prototype.normalize13b = function normalize13b (ws, N) {
1884
+ var carry = 0;
1885
+ for (var i = 0; i < N / 2; i++) {
1886
+ var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
1887
+ Math.round(ws[2 * i] / N) +
1888
+ carry;
1889
+
1890
+ ws[i] = w & 0x3ffffff;
1891
+
1892
+ if (w < 0x4000000) {
1893
+ carry = 0;
1894
+ } else {
1895
+ carry = w / 0x4000000 | 0;
1896
+ }
1897
+ }
1898
+
1899
+ return ws;
1900
+ };
1901
+
1902
+ FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
1903
+ var carry = 0;
1904
+ for (var i = 0; i < len; i++) {
1905
+ carry = carry + (ws[i] | 0);
1906
+
1907
+ rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
1908
+ rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
1909
+ }
1910
+
1911
+ // Pad with zeroes
1912
+ for (i = 2 * len; i < N; ++i) {
1913
+ rws[i] = 0;
1914
+ }
1915
+
1916
+ assert(carry === 0);
1917
+ assert((carry & ~0x1fff) === 0);
1918
+ };
1919
+
1920
+ FFTM.prototype.stub = function stub (N) {
1921
+ var ph = new Array(N);
1922
+ for (var i = 0; i < N; i++) {
1923
+ ph[i] = 0;
1924
+ }
1925
+
1926
+ return ph;
1927
+ };
1928
+
1929
+ FFTM.prototype.mulp = function mulp (x, y, out) {
1930
+ var N = 2 * this.guessLen13b(x.length, y.length);
1931
+
1932
+ var rbt = this.makeRBT(N);
1933
+
1934
+ var _ = this.stub(N);
1935
+
1936
+ var rws = new Array(N);
1937
+ var rwst = new Array(N);
1938
+ var iwst = new Array(N);
1939
+
1940
+ var nrws = new Array(N);
1941
+ var nrwst = new Array(N);
1942
+ var niwst = new Array(N);
1943
+
1944
+ var rmws = out.words;
1945
+ rmws.length = N;
1946
+
1947
+ this.convert13b(x.words, x.length, rws, N);
1948
+ this.convert13b(y.words, y.length, nrws, N);
1949
+
1950
+ this.transform(rws, _, rwst, iwst, N, rbt);
1951
+ this.transform(nrws, _, nrwst, niwst, N, rbt);
1952
+
1953
+ for (var i = 0; i < N; i++) {
1954
+ var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
1955
+ iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
1956
+ rwst[i] = rx;
1957
+ }
1958
+
1959
+ this.conjugate(rwst, iwst, N);
1960
+ this.transform(rwst, iwst, rmws, _, N, rbt);
1961
+ this.conjugate(rmws, _, N);
1962
+ this.normalize13b(rmws, N);
1963
+
1964
+ out.negative = x.negative ^ y.negative;
1965
+ out.length = x.length + y.length;
1966
+ return out._strip();
1967
+ };
1968
+
1969
+ // Multiply `this` by `num`
1970
+ BN.prototype.mul = function mul (num) {
1971
+ var out = new BN(null);
1972
+ out.words = new Array(this.length + num.length);
1973
+ return this.mulTo(num, out);
1974
+ };
1975
+
1976
+ // Multiply employing FFT
1977
+ BN.prototype.mulf = function mulf (num) {
1978
+ var out = new BN(null);
1979
+ out.words = new Array(this.length + num.length);
1980
+ return jumboMulTo(this, num, out);
1981
+ };
1982
+
1983
+ // In-place Multiplication
1984
+ BN.prototype.imul = function imul (num) {
1985
+ return this.clone().mulTo(num, this);
1986
+ };
1987
+
1988
+ BN.prototype.imuln = function imuln (num) {
1989
+ var isNegNum = num < 0;
1990
+ if (isNegNum) num = -num;
1991
+
1992
+ assert(typeof num === 'number');
1993
+ assert(num < 0x4000000);
1994
+
1995
+ // Carry
1996
+ var carry = 0;
1997
+ for (var i = 0; i < this.length; i++) {
1998
+ var w = (this.words[i] | 0) * num;
1999
+ var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
2000
+ carry >>= 26;
2001
+ carry += (w / 0x4000000) | 0;
2002
+ // NOTE: lo is 27bit maximum
2003
+ carry += lo >>> 26;
2004
+ this.words[i] = lo & 0x3ffffff;
2005
+ }
2006
+
2007
+ if (carry !== 0) {
2008
+ this.words[i] = carry;
2009
+ this.length++;
2010
+ }
2011
+ this.length = num === 0 ? 1 : this.length;
2012
+
2013
+ return isNegNum ? this.ineg() : this;
2014
+ };
2015
+
2016
+ BN.prototype.muln = function muln (num) {
2017
+ return this.clone().imuln(num);
2018
+ };
2019
+
2020
+ // `this` * `this`
2021
+ BN.prototype.sqr = function sqr () {
2022
+ return this.mul(this);
2023
+ };
2024
+
2025
+ // `this` * `this` in-place
2026
+ BN.prototype.isqr = function isqr () {
2027
+ return this.imul(this.clone());
2028
+ };
2029
+
2030
+ // Math.pow(`this`, `num`)
2031
+ BN.prototype.pow = function pow (num) {
2032
+ var w = toBitArray(num);
2033
+ if (w.length === 0) return new BN(1);
2034
+
2035
+ // Skip leading zeroes
2036
+ var res = this;
2037
+ for (var i = 0; i < w.length; i++, res = res.sqr()) {
2038
+ if (w[i] !== 0) break;
2039
+ }
2040
+
2041
+ if (++i < w.length) {
2042
+ for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
2043
+ if (w[i] === 0) continue;
2044
+
2045
+ res = res.mul(q);
2046
+ }
2047
+ }
2048
+
2049
+ return res;
2050
+ };
2051
+
2052
+ // Shift-left in-place
2053
+ BN.prototype.iushln = function iushln (bits) {
2054
+ assert(typeof bits === 'number' && bits >= 0);
2055
+ var r = bits % 26;
2056
+ var s = (bits - r) / 26;
2057
+ var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
2058
+ var i;
2059
+
2060
+ if (r !== 0) {
2061
+ var carry = 0;
2062
+
2063
+ for (i = 0; i < this.length; i++) {
2064
+ var newCarry = this.words[i] & carryMask;
2065
+ var c = ((this.words[i] | 0) - newCarry) << r;
2066
+ this.words[i] = c | carry;
2067
+ carry = newCarry >>> (26 - r);
2068
+ }
2069
+
2070
+ if (carry) {
2071
+ this.words[i] = carry;
2072
+ this.length++;
2073
+ }
2074
+ }
2075
+
2076
+ if (s !== 0) {
2077
+ for (i = this.length - 1; i >= 0; i--) {
2078
+ this.words[i + s] = this.words[i];
2079
+ }
2080
+
2081
+ for (i = 0; i < s; i++) {
2082
+ this.words[i] = 0;
2083
+ }
2084
+
2085
+ this.length += s;
2086
+ }
2087
+
2088
+ return this._strip();
2089
+ };
2090
+
2091
+ BN.prototype.ishln = function ishln (bits) {
2092
+ // TODO(indutny): implement me
2093
+ assert(this.negative === 0);
2094
+ return this.iushln(bits);
2095
+ };
2096
+
2097
+ // Shift-right in-place
2098
+ // NOTE: `hint` is a lowest bit before trailing zeroes
2099
+ // NOTE: if `extended` is present - it will be filled with destroyed bits
2100
+ BN.prototype.iushrn = function iushrn (bits, hint, extended) {
2101
+ assert(typeof bits === 'number' && bits >= 0);
2102
+ var h;
2103
+ if (hint) {
2104
+ h = (hint - (hint % 26)) / 26;
2105
+ } else {
2106
+ h = 0;
2107
+ }
2108
+
2109
+ var r = bits % 26;
2110
+ var s = Math.min((bits - r) / 26, this.length);
2111
+ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
2112
+ var maskedWords = extended;
2113
+
2114
+ h -= s;
2115
+ h = Math.max(0, h);
2116
+
2117
+ // Extended mode, copy masked part
2118
+ if (maskedWords) {
2119
+ for (var i = 0; i < s; i++) {
2120
+ maskedWords.words[i] = this.words[i];
2121
+ }
2122
+ maskedWords.length = s;
2123
+ }
2124
+
2125
+ if (s === 0) {
2126
+ // No-op, we should not move anything at all
2127
+ } else if (this.length > s) {
2128
+ this.length -= s;
2129
+ for (i = 0; i < this.length; i++) {
2130
+ this.words[i] = this.words[i + s];
2131
+ }
2132
+ } else {
2133
+ this.words[0] = 0;
2134
+ this.length = 1;
2135
+ }
2136
+
2137
+ var carry = 0;
2138
+ for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
2139
+ var word = this.words[i] | 0;
2140
+ this.words[i] = (carry << (26 - r)) | (word >>> r);
2141
+ carry = word & mask;
2142
+ }
2143
+
2144
+ // Push carried bits as a mask
2145
+ if (maskedWords && carry !== 0) {
2146
+ maskedWords.words[maskedWords.length++] = carry;
2147
+ }
2148
+
2149
+ if (this.length === 0) {
2150
+ this.words[0] = 0;
2151
+ this.length = 1;
2152
+ }
2153
+
2154
+ return this._strip();
2155
+ };
2156
+
2157
+ BN.prototype.ishrn = function ishrn (bits, hint, extended) {
2158
+ // TODO(indutny): implement me
2159
+ assert(this.negative === 0);
2160
+ return this.iushrn(bits, hint, extended);
2161
+ };
2162
+
2163
+ // Shift-left
2164
+ BN.prototype.shln = function shln (bits) {
2165
+ return this.clone().ishln(bits);
2166
+ };
2167
+
2168
+ BN.prototype.ushln = function ushln (bits) {
2169
+ return this.clone().iushln(bits);
2170
+ };
2171
+
2172
+ // Shift-right
2173
+ BN.prototype.shrn = function shrn (bits) {
2174
+ return this.clone().ishrn(bits);
2175
+ };
2176
+
2177
+ BN.prototype.ushrn = function ushrn (bits) {
2178
+ return this.clone().iushrn(bits);
2179
+ };
2180
+
2181
+ // Test if n bit is set
2182
+ BN.prototype.testn = function testn (bit) {
2183
+ assert(typeof bit === 'number' && bit >= 0);
2184
+ var r = bit % 26;
2185
+ var s = (bit - r) / 26;
2186
+ var q = 1 << r;
2187
+
2188
+ // Fast case: bit is much higher than all existing words
2189
+ if (this.length <= s) return false;
2190
+
2191
+ // Check bit and return
2192
+ var w = this.words[s];
2193
+
2194
+ return !!(w & q);
2195
+ };
2196
+
2197
+ // Return only lowers bits of number (in-place)
2198
+ BN.prototype.imaskn = function imaskn (bits) {
2199
+ assert(typeof bits === 'number' && bits >= 0);
2200
+ var r = bits % 26;
2201
+ var s = (bits - r) / 26;
2202
+
2203
+ assert(this.negative === 0, 'imaskn works only with positive numbers');
2204
+
2205
+ if (this.length <= s) {
2206
+ return this;
2207
+ }
2208
+
2209
+ if (r !== 0) {
2210
+ s++;
2211
+ }
2212
+ this.length = Math.min(s, this.length);
2213
+
2214
+ if (r !== 0) {
2215
+ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
2216
+ this.words[this.length - 1] &= mask;
2217
+ }
2218
+
2219
+ return this._strip();
2220
+ };
2221
+
2222
+ // Return only lowers bits of number
2223
+ BN.prototype.maskn = function maskn (bits) {
2224
+ return this.clone().imaskn(bits);
2225
+ };
2226
+
2227
+ // Add plain number `num` to `this`
2228
+ BN.prototype.iaddn = function iaddn (num) {
2229
+ assert(typeof num === 'number');
2230
+ assert(num < 0x4000000);
2231
+ if (num < 0) return this.isubn(-num);
2232
+
2233
+ // Possible sign change
2234
+ if (this.negative !== 0) {
2235
+ if (this.length === 1 && (this.words[0] | 0) <= num) {
2236
+ this.words[0] = num - (this.words[0] | 0);
2237
+ this.negative = 0;
2238
+ return this;
2239
+ }
2240
+
2241
+ this.negative = 0;
2242
+ this.isubn(num);
2243
+ this.negative = 1;
2244
+ return this;
2245
+ }
2246
+
2247
+ // Add without checks
2248
+ return this._iaddn(num);
2249
+ };
2250
+
2251
+ BN.prototype._iaddn = function _iaddn (num) {
2252
+ this.words[0] += num;
2253
+
2254
+ // Carry
2255
+ for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
2256
+ this.words[i] -= 0x4000000;
2257
+ if (i === this.length - 1) {
2258
+ this.words[i + 1] = 1;
2259
+ } else {
2260
+ this.words[i + 1]++;
2261
+ }
2262
+ }
2263
+ this.length = Math.max(this.length, i + 1);
2264
+
2265
+ return this;
2266
+ };
2267
+
2268
+ // Subtract plain number `num` from `this`
2269
+ BN.prototype.isubn = function isubn (num) {
2270
+ assert(typeof num === 'number');
2271
+ assert(num < 0x4000000);
2272
+ if (num < 0) return this.iaddn(-num);
2273
+
2274
+ if (this.negative !== 0) {
2275
+ this.negative = 0;
2276
+ this.iaddn(num);
2277
+ this.negative = 1;
2278
+ return this;
2279
+ }
2280
+
2281
+ this.words[0] -= num;
2282
+
2283
+ if (this.length === 1 && this.words[0] < 0) {
2284
+ this.words[0] = -this.words[0];
2285
+ this.negative = 1;
2286
+ } else {
2287
+ // Carry
2288
+ for (var i = 0; i < this.length && this.words[i] < 0; i++) {
2289
+ this.words[i] += 0x4000000;
2290
+ this.words[i + 1] -= 1;
2291
+ }
2292
+ }
2293
+
2294
+ return this._strip();
2295
+ };
2296
+
2297
+ BN.prototype.addn = function addn (num) {
2298
+ return this.clone().iaddn(num);
2299
+ };
2300
+
2301
+ BN.prototype.subn = function subn (num) {
2302
+ return this.clone().isubn(num);
2303
+ };
2304
+
2305
+ BN.prototype.iabs = function iabs () {
2306
+ this.negative = 0;
2307
+
2308
+ return this;
2309
+ };
2310
+
2311
+ BN.prototype.abs = function abs () {
2312
+ return this.clone().iabs();
2313
+ };
2314
+
2315
+ BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
2316
+ var len = num.length + shift;
2317
+ var i;
2318
+
2319
+ this._expand(len);
2320
+
2321
+ var w;
2322
+ var carry = 0;
2323
+ for (i = 0; i < num.length; i++) {
2324
+ w = (this.words[i + shift] | 0) + carry;
2325
+ var right = (num.words[i] | 0) * mul;
2326
+ w -= right & 0x3ffffff;
2327
+ carry = (w >> 26) - ((right / 0x4000000) | 0);
2328
+ this.words[i + shift] = w & 0x3ffffff;
2329
+ }
2330
+ for (; i < this.length - shift; i++) {
2331
+ w = (this.words[i + shift] | 0) + carry;
2332
+ carry = w >> 26;
2333
+ this.words[i + shift] = w & 0x3ffffff;
2334
+ }
2335
+
2336
+ if (carry === 0) return this._strip();
2337
+
2338
+ // Subtraction overflow
2339
+ assert(carry === -1);
2340
+ carry = 0;
2341
+ for (i = 0; i < this.length; i++) {
2342
+ w = -(this.words[i] | 0) + carry;
2343
+ carry = w >> 26;
2344
+ this.words[i] = w & 0x3ffffff;
2345
+ }
2346
+ this.negative = 1;
2347
+
2348
+ return this._strip();
2349
+ };
2350
+
2351
+ BN.prototype._wordDiv = function _wordDiv (num, mode) {
2352
+ var shift = this.length - num.length;
2353
+
2354
+ var a = this.clone();
2355
+ var b = num;
2356
+
2357
+ // Normalize
2358
+ var bhi = b.words[b.length - 1] | 0;
2359
+ var bhiBits = this._countBits(bhi);
2360
+ shift = 26 - bhiBits;
2361
+ if (shift !== 0) {
2362
+ b = b.ushln(shift);
2363
+ a.iushln(shift);
2364
+ bhi = b.words[b.length - 1] | 0;
2365
+ }
2366
+
2367
+ // Initialize quotient
2368
+ var m = a.length - b.length;
2369
+ var q;
2370
+
2371
+ if (mode !== 'mod') {
2372
+ q = new BN(null);
2373
+ q.length = m + 1;
2374
+ q.words = new Array(q.length);
2375
+ for (var i = 0; i < q.length; i++) {
2376
+ q.words[i] = 0;
2377
+ }
2378
+ }
2379
+
2380
+ var diff = a.clone()._ishlnsubmul(b, 1, m);
2381
+ if (diff.negative === 0) {
2382
+ a = diff;
2383
+ if (q) {
2384
+ q.words[m] = 1;
2385
+ }
2386
+ }
2387
+
2388
+ for (var j = m - 1; j >= 0; j--) {
2389
+ var qj = (a.words[b.length + j] | 0) * 0x4000000 +
2390
+ (a.words[b.length + j - 1] | 0);
2391
+
2392
+ // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
2393
+ // (0x7ffffff)
2394
+ qj = Math.min((qj / bhi) | 0, 0x3ffffff);
2395
+
2396
+ a._ishlnsubmul(b, qj, j);
2397
+ while (a.negative !== 0) {
2398
+ qj--;
2399
+ a.negative = 0;
2400
+ a._ishlnsubmul(b, 1, j);
2401
+ if (!a.isZero()) {
2402
+ a.negative ^= 1;
2403
+ }
2404
+ }
2405
+ if (q) {
2406
+ q.words[j] = qj;
2407
+ }
2408
+ }
2409
+ if (q) {
2410
+ q._strip();
2411
+ }
2412
+ a._strip();
2413
+
2414
+ // Denormalize
2415
+ if (mode !== 'div' && shift !== 0) {
2416
+ a.iushrn(shift);
2417
+ }
2418
+
2419
+ return {
2420
+ div: q || null,
2421
+ mod: a
2422
+ };
2423
+ };
2424
+
2425
+ // NOTE: 1) `mode` can be set to `mod` to request mod only,
2426
+ // to `div` to request div only, or be absent to
2427
+ // request both div & mod
2428
+ // 2) `positive` is true if unsigned mod is requested
2429
+ BN.prototype.divmod = function divmod (num, mode, positive) {
2430
+ assert(!num.isZero());
2431
+
2432
+ if (this.isZero()) {
2433
+ return {
2434
+ div: new BN(0),
2435
+ mod: new BN(0)
2436
+ };
2437
+ }
2438
+
2439
+ var div, mod, res;
2440
+ if (this.negative !== 0 && num.negative === 0) {
2441
+ res = this.neg().divmod(num, mode);
2442
+
2443
+ if (mode !== 'mod') {
2444
+ div = res.div.neg();
2445
+ }
2446
+
2447
+ if (mode !== 'div') {
2448
+ mod = res.mod.neg();
2449
+ if (positive && mod.negative !== 0) {
2450
+ mod.iadd(num);
2451
+ }
2452
+ }
2453
+
2454
+ return {
2455
+ div: div,
2456
+ mod: mod
2457
+ };
2458
+ }
2459
+
2460
+ if (this.negative === 0 && num.negative !== 0) {
2461
+ res = this.divmod(num.neg(), mode);
2462
+
2463
+ if (mode !== 'mod') {
2464
+ div = res.div.neg();
2465
+ }
2466
+
2467
+ return {
2468
+ div: div,
2469
+ mod: res.mod
2470
+ };
2471
+ }
2472
+
2473
+ if ((this.negative & num.negative) !== 0) {
2474
+ res = this.neg().divmod(num.neg(), mode);
2475
+
2476
+ if (mode !== 'div') {
2477
+ mod = res.mod.neg();
2478
+ if (positive && mod.negative !== 0) {
2479
+ mod.isub(num);
2480
+ }
2481
+ }
2482
+
2483
+ return {
2484
+ div: res.div,
2485
+ mod: mod
2486
+ };
2487
+ }
2488
+
2489
+ // Both numbers are positive at this point
2490
+
2491
+ // Strip both numbers to approximate shift value
2492
+ if (num.length > this.length || this.cmp(num) < 0) {
2493
+ return {
2494
+ div: new BN(0),
2495
+ mod: this
2496
+ };
2497
+ }
2498
+
2499
+ // Very short reduction
2500
+ if (num.length === 1) {
2501
+ if (mode === 'div') {
2502
+ return {
2503
+ div: this.divn(num.words[0]),
2504
+ mod: null
2505
+ };
2506
+ }
2507
+
2508
+ if (mode === 'mod') {
2509
+ return {
2510
+ div: null,
2511
+ mod: new BN(this.modrn(num.words[0]))
2512
+ };
2513
+ }
2514
+
2515
+ return {
2516
+ div: this.divn(num.words[0]),
2517
+ mod: new BN(this.modrn(num.words[0]))
2518
+ };
2519
+ }
2520
+
2521
+ return this._wordDiv(num, mode);
2522
+ };
2523
+
2524
+ // Find `this` / `num`
2525
+ BN.prototype.div = function div (num) {
2526
+ return this.divmod(num, 'div', false).div;
2527
+ };
2528
+
2529
+ // Find `this` % `num`
2530
+ BN.prototype.mod = function mod (num) {
2531
+ return this.divmod(num, 'mod', false).mod;
2532
+ };
2533
+
2534
+ BN.prototype.umod = function umod (num) {
2535
+ return this.divmod(num, 'mod', true).mod;
2536
+ };
2537
+
2538
+ // Find Round(`this` / `num`)
2539
+ BN.prototype.divRound = function divRound (num) {
2540
+ var dm = this.divmod(num);
2541
+
2542
+ // Fast case - exact division
2543
+ if (dm.mod.isZero()) return dm.div;
2544
+
2545
+ var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
2546
+
2547
+ var half = num.ushrn(1);
2548
+ var r2 = num.andln(1);
2549
+ var cmp = mod.cmp(half);
2550
+
2551
+ // Round down
2552
+ if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;
2553
+
2554
+ // Round up
2555
+ return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
2556
+ };
2557
+
2558
+ BN.prototype.modrn = function modrn (num) {
2559
+ var isNegNum = num < 0;
2560
+ if (isNegNum) num = -num;
2561
+
2562
+ assert(num <= 0x3ffffff);
2563
+ var p = (1 << 26) % num;
2564
+
2565
+ var acc = 0;
2566
+ for (var i = this.length - 1; i >= 0; i--) {
2567
+ acc = (p * acc + (this.words[i] | 0)) % num;
2568
+ }
2569
+
2570
+ return isNegNum ? -acc : acc;
2571
+ };
2572
+
2573
+ // WARNING: DEPRECATED
2574
+ BN.prototype.modn = function modn (num) {
2575
+ return this.modrn(num);
2576
+ };
2577
+
2578
+ // In-place division by number
2579
+ BN.prototype.idivn = function idivn (num) {
2580
+ var isNegNum = num < 0;
2581
+ if (isNegNum) num = -num;
2582
+
2583
+ assert(num <= 0x3ffffff);
2584
+
2585
+ var carry = 0;
2586
+ for (var i = this.length - 1; i >= 0; i--) {
2587
+ var w = (this.words[i] | 0) + carry * 0x4000000;
2588
+ this.words[i] = (w / num) | 0;
2589
+ carry = w % num;
2590
+ }
2591
+
2592
+ this._strip();
2593
+ return isNegNum ? this.ineg() : this;
2594
+ };
2595
+
2596
+ BN.prototype.divn = function divn (num) {
2597
+ return this.clone().idivn(num);
2598
+ };
2599
+
2600
+ BN.prototype.egcd = function egcd (p) {
2601
+ assert(p.negative === 0);
2602
+ assert(!p.isZero());
2603
+
2604
+ var x = this;
2605
+ var y = p.clone();
2606
+
2607
+ if (x.negative !== 0) {
2608
+ x = x.umod(p);
2609
+ } else {
2610
+ x = x.clone();
2611
+ }
2612
+
2613
+ // A * x + B * y = x
2614
+ var A = new BN(1);
2615
+ var B = new BN(0);
2616
+
2617
+ // C * x + D * y = y
2618
+ var C = new BN(0);
2619
+ var D = new BN(1);
2620
+
2621
+ var g = 0;
2622
+
2623
+ while (x.isEven() && y.isEven()) {
2624
+ x.iushrn(1);
2625
+ y.iushrn(1);
2626
+ ++g;
2627
+ }
2628
+
2629
+ var yp = y.clone();
2630
+ var xp = x.clone();
2631
+
2632
+ while (!x.isZero()) {
2633
+ for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
2634
+ if (i > 0) {
2635
+ x.iushrn(i);
2636
+ while (i-- > 0) {
2637
+ if (A.isOdd() || B.isOdd()) {
2638
+ A.iadd(yp);
2639
+ B.isub(xp);
2640
+ }
2641
+
2642
+ A.iushrn(1);
2643
+ B.iushrn(1);
2644
+ }
2645
+ }
2646
+
2647
+ for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
2648
+ if (j > 0) {
2649
+ y.iushrn(j);
2650
+ while (j-- > 0) {
2651
+ if (C.isOdd() || D.isOdd()) {
2652
+ C.iadd(yp);
2653
+ D.isub(xp);
2654
+ }
2655
+
2656
+ C.iushrn(1);
2657
+ D.iushrn(1);
2658
+ }
2659
+ }
2660
+
2661
+ if (x.cmp(y) >= 0) {
2662
+ x.isub(y);
2663
+ A.isub(C);
2664
+ B.isub(D);
2665
+ } else {
2666
+ y.isub(x);
2667
+ C.isub(A);
2668
+ D.isub(B);
2669
+ }
2670
+ }
2671
+
2672
+ return {
2673
+ a: C,
2674
+ b: D,
2675
+ gcd: y.iushln(g)
2676
+ };
2677
+ };
2678
+
2679
+ // This is reduced incarnation of the binary EEA
2680
+ // above, designated to invert members of the
2681
+ // _prime_ fields F(p) at a maximal speed
2682
+ BN.prototype._invmp = function _invmp (p) {
2683
+ assert(p.negative === 0);
2684
+ assert(!p.isZero());
2685
+
2686
+ var a = this;
2687
+ var b = p.clone();
2688
+
2689
+ if (a.negative !== 0) {
2690
+ a = a.umod(p);
2691
+ } else {
2692
+ a = a.clone();
2693
+ }
2694
+
2695
+ var x1 = new BN(1);
2696
+ var x2 = new BN(0);
2697
+
2698
+ var delta = b.clone();
2699
+
2700
+ while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
2701
+ for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
2702
+ if (i > 0) {
2703
+ a.iushrn(i);
2704
+ while (i-- > 0) {
2705
+ if (x1.isOdd()) {
2706
+ x1.iadd(delta);
2707
+ }
2708
+
2709
+ x1.iushrn(1);
2710
+ }
2711
+ }
2712
+
2713
+ for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
2714
+ if (j > 0) {
2715
+ b.iushrn(j);
2716
+ while (j-- > 0) {
2717
+ if (x2.isOdd()) {
2718
+ x2.iadd(delta);
2719
+ }
2720
+
2721
+ x2.iushrn(1);
2722
+ }
2723
+ }
2724
+
2725
+ if (a.cmp(b) >= 0) {
2726
+ a.isub(b);
2727
+ x1.isub(x2);
2728
+ } else {
2729
+ b.isub(a);
2730
+ x2.isub(x1);
2731
+ }
2732
+ }
2733
+
2734
+ var res;
2735
+ if (a.cmpn(1) === 0) {
2736
+ res = x1;
2737
+ } else {
2738
+ res = x2;
2739
+ }
2740
+
2741
+ if (res.cmpn(0) < 0) {
2742
+ res.iadd(p);
2743
+ }
2744
+
2745
+ return res;
2746
+ };
2747
+
2748
+ BN.prototype.gcd = function gcd (num) {
2749
+ if (this.isZero()) return num.abs();
2750
+ if (num.isZero()) return this.abs();
2751
+
2752
+ var a = this.clone();
2753
+ var b = num.clone();
2754
+ a.negative = 0;
2755
+ b.negative = 0;
2756
+
2757
+ // Remove common factor of two
2758
+ for (var shift = 0; a.isEven() && b.isEven(); shift++) {
2759
+ a.iushrn(1);
2760
+ b.iushrn(1);
2761
+ }
2762
+
2763
+ do {
2764
+ while (a.isEven()) {
2765
+ a.iushrn(1);
2766
+ }
2767
+ while (b.isEven()) {
2768
+ b.iushrn(1);
2769
+ }
2770
+
2771
+ var r = a.cmp(b);
2772
+ if (r < 0) {
2773
+ // Swap `a` and `b` to make `a` always bigger than `b`
2774
+ var t = a;
2775
+ a = b;
2776
+ b = t;
2777
+ } else if (r === 0 || b.cmpn(1) === 0) {
2778
+ break;
2779
+ }
2780
+
2781
+ a.isub(b);
2782
+ } while (true);
2783
+
2784
+ return b.iushln(shift);
2785
+ };
2786
+
2787
+ // Invert number in the field F(num)
2788
+ BN.prototype.invm = function invm (num) {
2789
+ return this.egcd(num).a.umod(num);
2790
+ };
2791
+
2792
+ BN.prototype.isEven = function isEven () {
2793
+ return (this.words[0] & 1) === 0;
2794
+ };
2795
+
2796
+ BN.prototype.isOdd = function isOdd () {
2797
+ return (this.words[0] & 1) === 1;
2798
+ };
2799
+
2800
+ // And first word and num
2801
+ BN.prototype.andln = function andln (num) {
2802
+ return this.words[0] & num;
2803
+ };
2804
+
2805
+ // Increment at the bit position in-line
2806
+ BN.prototype.bincn = function bincn (bit) {
2807
+ assert(typeof bit === 'number');
2808
+ var r = bit % 26;
2809
+ var s = (bit - r) / 26;
2810
+ var q = 1 << r;
2811
+
2812
+ // Fast case: bit is much higher than all existing words
2813
+ if (this.length <= s) {
2814
+ this._expand(s + 1);
2815
+ this.words[s] |= q;
2816
+ return this;
2817
+ }
2818
+
2819
+ // Add bit and propagate, if needed
2820
+ var carry = q;
2821
+ for (var i = s; carry !== 0 && i < this.length; i++) {
2822
+ var w = this.words[i] | 0;
2823
+ w += carry;
2824
+ carry = w >>> 26;
2825
+ w &= 0x3ffffff;
2826
+ this.words[i] = w;
2827
+ }
2828
+ if (carry !== 0) {
2829
+ this.words[i] = carry;
2830
+ this.length++;
2831
+ }
2832
+ return this;
2833
+ };
2834
+
2835
+ BN.prototype.isZero = function isZero () {
2836
+ return this.length === 1 && this.words[0] === 0;
2837
+ };
2838
+
2839
+ BN.prototype.cmpn = function cmpn (num) {
2840
+ var negative = num < 0;
2841
+
2842
+ if (this.negative !== 0 && !negative) return -1;
2843
+ if (this.negative === 0 && negative) return 1;
2844
+
2845
+ this._strip();
2846
+
2847
+ var res;
2848
+ if (this.length > 1) {
2849
+ res = 1;
2850
+ } else {
2851
+ if (negative) {
2852
+ num = -num;
2853
+ }
2854
+
2855
+ assert(num <= 0x3ffffff, 'Number is too big');
2856
+
2857
+ var w = this.words[0] | 0;
2858
+ res = w === num ? 0 : w < num ? -1 : 1;
2859
+ }
2860
+ if (this.negative !== 0) return -res | 0;
2861
+ return res;
2862
+ };
2863
+
2864
+ // Compare two numbers and return:
2865
+ // 1 - if `this` > `num`
2866
+ // 0 - if `this` == `num`
2867
+ // -1 - if `this` < `num`
2868
+ BN.prototype.cmp = function cmp (num) {
2869
+ if (this.negative !== 0 && num.negative === 0) return -1;
2870
+ if (this.negative === 0 && num.negative !== 0) return 1;
2871
+
2872
+ var res = this.ucmp(num);
2873
+ if (this.negative !== 0) return -res | 0;
2874
+ return res;
2875
+ };
2876
+
2877
+ // Unsigned comparison
2878
+ BN.prototype.ucmp = function ucmp (num) {
2879
+ // At this point both numbers have the same sign
2880
+ if (this.length > num.length) return 1;
2881
+ if (this.length < num.length) return -1;
2882
+
2883
+ var res = 0;
2884
+ for (var i = this.length - 1; i >= 0; i--) {
2885
+ var a = this.words[i] | 0;
2886
+ var b = num.words[i] | 0;
2887
+
2888
+ if (a === b) continue;
2889
+ if (a < b) {
2890
+ res = -1;
2891
+ } else if (a > b) {
2892
+ res = 1;
2893
+ }
2894
+ break;
2895
+ }
2896
+ return res;
2897
+ };
2898
+
2899
+ BN.prototype.gtn = function gtn (num) {
2900
+ return this.cmpn(num) === 1;
2901
+ };
2902
+
2903
+ BN.prototype.gt = function gt (num) {
2904
+ return this.cmp(num) === 1;
2905
+ };
2906
+
2907
+ BN.prototype.gten = function gten (num) {
2908
+ return this.cmpn(num) >= 0;
2909
+ };
2910
+
2911
+ BN.prototype.gte = function gte (num) {
2912
+ return this.cmp(num) >= 0;
2913
+ };
2914
+
2915
+ BN.prototype.ltn = function ltn (num) {
2916
+ return this.cmpn(num) === -1;
2917
+ };
2918
+
2919
+ BN.prototype.lt = function lt (num) {
2920
+ return this.cmp(num) === -1;
2921
+ };
2922
+
2923
+ BN.prototype.lten = function lten (num) {
2924
+ return this.cmpn(num) <= 0;
2925
+ };
2926
+
2927
+ BN.prototype.lte = function lte (num) {
2928
+ return this.cmp(num) <= 0;
2929
+ };
2930
+
2931
+ BN.prototype.eqn = function eqn (num) {
2932
+ return this.cmpn(num) === 0;
2933
+ };
2934
+
2935
+ BN.prototype.eq = function eq (num) {
2936
+ return this.cmp(num) === 0;
2937
+ };
2938
+
2939
+ //
2940
+ // A reduce context, could be using montgomery or something better, depending
2941
+ // on the `m` itself.
2942
+ //
2943
+ BN.red = function red (num) {
2944
+ return new Red(num);
2945
+ };
2946
+
2947
+ BN.prototype.toRed = function toRed (ctx) {
2948
+ assert(!this.red, 'Already a number in reduction context');
2949
+ assert(this.negative === 0, 'red works only with positives');
2950
+ return ctx.convertTo(this)._forceRed(ctx);
2951
+ };
2952
+
2953
+ BN.prototype.fromRed = function fromRed () {
2954
+ assert(this.red, 'fromRed works only with numbers in reduction context');
2955
+ return this.red.convertFrom(this);
2956
+ };
2957
+
2958
+ BN.prototype._forceRed = function _forceRed (ctx) {
2959
+ this.red = ctx;
2960
+ return this;
2961
+ };
2962
+
2963
+ BN.prototype.forceRed = function forceRed (ctx) {
2964
+ assert(!this.red, 'Already a number in reduction context');
2965
+ return this._forceRed(ctx);
2966
+ };
2967
+
2968
+ BN.prototype.redAdd = function redAdd (num) {
2969
+ assert(this.red, 'redAdd works only with red numbers');
2970
+ return this.red.add(this, num);
2971
+ };
2972
+
2973
+ BN.prototype.redIAdd = function redIAdd (num) {
2974
+ assert(this.red, 'redIAdd works only with red numbers');
2975
+ return this.red.iadd(this, num);
2976
+ };
2977
+
2978
+ BN.prototype.redSub = function redSub (num) {
2979
+ assert(this.red, 'redSub works only with red numbers');
2980
+ return this.red.sub(this, num);
2981
+ };
2982
+
2983
+ BN.prototype.redISub = function redISub (num) {
2984
+ assert(this.red, 'redISub works only with red numbers');
2985
+ return this.red.isub(this, num);
2986
+ };
2987
+
2988
+ BN.prototype.redShl = function redShl (num) {
2989
+ assert(this.red, 'redShl works only with red numbers');
2990
+ return this.red.shl(this, num);
2991
+ };
2992
+
2993
+ BN.prototype.redMul = function redMul (num) {
2994
+ assert(this.red, 'redMul works only with red numbers');
2995
+ this.red._verify2(this, num);
2996
+ return this.red.mul(this, num);
2997
+ };
2998
+
2999
+ BN.prototype.redIMul = function redIMul (num) {
3000
+ assert(this.red, 'redMul works only with red numbers');
3001
+ this.red._verify2(this, num);
3002
+ return this.red.imul(this, num);
3003
+ };
3004
+
3005
+ BN.prototype.redSqr = function redSqr () {
3006
+ assert(this.red, 'redSqr works only with red numbers');
3007
+ this.red._verify1(this);
3008
+ return this.red.sqr(this);
3009
+ };
3010
+
3011
+ BN.prototype.redISqr = function redISqr () {
3012
+ assert(this.red, 'redISqr works only with red numbers');
3013
+ this.red._verify1(this);
3014
+ return this.red.isqr(this);
3015
+ };
3016
+
3017
+ // Square root over p
3018
+ BN.prototype.redSqrt = function redSqrt () {
3019
+ assert(this.red, 'redSqrt works only with red numbers');
3020
+ this.red._verify1(this);
3021
+ return this.red.sqrt(this);
3022
+ };
3023
+
3024
+ BN.prototype.redInvm = function redInvm () {
3025
+ assert(this.red, 'redInvm works only with red numbers');
3026
+ this.red._verify1(this);
3027
+ return this.red.invm(this);
3028
+ };
3029
+
3030
+ // Return negative clone of `this` % `red modulo`
3031
+ BN.prototype.redNeg = function redNeg () {
3032
+ assert(this.red, 'redNeg works only with red numbers');
3033
+ this.red._verify1(this);
3034
+ return this.red.neg(this);
3035
+ };
3036
+
3037
+ BN.prototype.redPow = function redPow (num) {
3038
+ assert(this.red && !num.red, 'redPow(normalNum)');
3039
+ this.red._verify1(this);
3040
+ return this.red.pow(this, num);
3041
+ };
3042
+
3043
+ // Prime numbers with efficient reduction
3044
+ var primes = {
3045
+ k256: null,
3046
+ p224: null,
3047
+ p192: null,
3048
+ p25519: null
3049
+ };
3050
+
3051
+ // Pseudo-Mersenne prime
3052
+ function MPrime (name, p) {
3053
+ // P = 2 ^ N - K
3054
+ this.name = name;
3055
+ this.p = new BN(p, 16);
3056
+ this.n = this.p.bitLength();
3057
+ this.k = new BN(1).iushln(this.n).isub(this.p);
3058
+
3059
+ this.tmp = this._tmp();
3060
+ }
3061
+
3062
+ MPrime.prototype._tmp = function _tmp () {
3063
+ var tmp = new BN(null);
3064
+ tmp.words = new Array(Math.ceil(this.n / 13));
3065
+ return tmp;
3066
+ };
3067
+
3068
+ MPrime.prototype.ireduce = function ireduce (num) {
3069
+ // Assumes that `num` is less than `P^2`
3070
+ // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
3071
+ var r = num;
3072
+ var rlen;
3073
+
3074
+ do {
3075
+ this.split(r, this.tmp);
3076
+ r = this.imulK(r);
3077
+ r = r.iadd(this.tmp);
3078
+ rlen = r.bitLength();
3079
+ } while (rlen > this.n);
3080
+
3081
+ var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
3082
+ if (cmp === 0) {
3083
+ r.words[0] = 0;
3084
+ r.length = 1;
3085
+ } else if (cmp > 0) {
3086
+ r.isub(this.p);
3087
+ } else {
3088
+ if (r.strip !== undefined) {
3089
+ // r is a BN v4 instance
3090
+ r.strip();
3091
+ } else {
3092
+ // r is a BN v5 instance
3093
+ r._strip();
3094
+ }
3095
+ }
3096
+
3097
+ return r;
3098
+ };
3099
+
3100
+ MPrime.prototype.split = function split (input, out) {
3101
+ input.iushrn(this.n, 0, out);
3102
+ };
3103
+
3104
+ MPrime.prototype.imulK = function imulK (num) {
3105
+ return num.imul(this.k);
3106
+ };
3107
+
3108
+ function K256 () {
3109
+ MPrime.call(
3110
+ this,
3111
+ 'k256',
3112
+ 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
3113
+ }
3114
+ inherits(K256, MPrime);
3115
+
3116
+ K256.prototype.split = function split (input, output) {
3117
+ // 256 = 9 * 26 + 22
3118
+ var mask = 0x3fffff;
3119
+
3120
+ var outLen = Math.min(input.length, 9);
3121
+ for (var i = 0; i < outLen; i++) {
3122
+ output.words[i] = input.words[i];
3123
+ }
3124
+ output.length = outLen;
3125
+
3126
+ if (input.length <= 9) {
3127
+ input.words[0] = 0;
3128
+ input.length = 1;
3129
+ return;
3130
+ }
3131
+
3132
+ // Shift by 9 limbs
3133
+ var prev = input.words[9];
3134
+ output.words[output.length++] = prev & mask;
3135
+
3136
+ for (i = 10; i < input.length; i++) {
3137
+ var next = input.words[i] | 0;
3138
+ input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
3139
+ prev = next;
3140
+ }
3141
+ prev >>>= 22;
3142
+ input.words[i - 10] = prev;
3143
+ if (prev === 0 && input.length > 10) {
3144
+ input.length -= 10;
3145
+ } else {
3146
+ input.length -= 9;
3147
+ }
3148
+ };
3149
+
3150
+ K256.prototype.imulK = function imulK (num) {
3151
+ // K = 0x1000003d1 = [ 0x40, 0x3d1 ]
3152
+ num.words[num.length] = 0;
3153
+ num.words[num.length + 1] = 0;
3154
+ num.length += 2;
3155
+
3156
+ // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
3157
+ var lo = 0;
3158
+ for (var i = 0; i < num.length; i++) {
3159
+ var w = num.words[i] | 0;
3160
+ lo += w * 0x3d1;
3161
+ num.words[i] = lo & 0x3ffffff;
3162
+ lo = w * 0x40 + ((lo / 0x4000000) | 0);
3163
+ }
3164
+
3165
+ // Fast length reduction
3166
+ if (num.words[num.length - 1] === 0) {
3167
+ num.length--;
3168
+ if (num.words[num.length - 1] === 0) {
3169
+ num.length--;
3170
+ }
3171
+ }
3172
+ return num;
3173
+ };
3174
+
3175
+ function P224 () {
3176
+ MPrime.call(
3177
+ this,
3178
+ 'p224',
3179
+ 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
3180
+ }
3181
+ inherits(P224, MPrime);
3182
+
3183
+ function P192 () {
3184
+ MPrime.call(
3185
+ this,
3186
+ 'p192',
3187
+ 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
3188
+ }
3189
+ inherits(P192, MPrime);
3190
+
3191
+ function P25519 () {
3192
+ // 2 ^ 255 - 19
3193
+ MPrime.call(
3194
+ this,
3195
+ '25519',
3196
+ '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
3197
+ }
3198
+ inherits(P25519, MPrime);
3199
+
3200
+ P25519.prototype.imulK = function imulK (num) {
3201
+ // K = 0x13
3202
+ var carry = 0;
3203
+ for (var i = 0; i < num.length; i++) {
3204
+ var hi = (num.words[i] | 0) * 0x13 + carry;
3205
+ var lo = hi & 0x3ffffff;
3206
+ hi >>>= 26;
3207
+
3208
+ num.words[i] = lo;
3209
+ carry = hi;
3210
+ }
3211
+ if (carry !== 0) {
3212
+ num.words[num.length++] = carry;
3213
+ }
3214
+ return num;
3215
+ };
3216
+
3217
+ // Exported mostly for testing purposes, use plain name instead
3218
+ BN._prime = function prime (name) {
3219
+ // Cached version of prime
3220
+ if (primes[name]) return primes[name];
3221
+
3222
+ var prime;
3223
+ if (name === 'k256') {
3224
+ prime = new K256();
3225
+ } else if (name === 'p224') {
3226
+ prime = new P224();
3227
+ } else if (name === 'p192') {
3228
+ prime = new P192();
3229
+ } else if (name === 'p25519') {
3230
+ prime = new P25519();
3231
+ } else {
3232
+ throw new Error('Unknown prime ' + name);
3233
+ }
3234
+ primes[name] = prime;
3235
+
3236
+ return prime;
3237
+ };
3238
+
3239
+ //
3240
+ // Base reduction engine
3241
+ //
3242
+ function Red (m) {
3243
+ if (typeof m === 'string') {
3244
+ var prime = BN._prime(m);
3245
+ this.m = prime.p;
3246
+ this.prime = prime;
3247
+ } else {
3248
+ assert(m.gtn(1), 'modulus must be greater than 1');
3249
+ this.m = m;
3250
+ this.prime = null;
3251
+ }
3252
+ }
3253
+
3254
+ Red.prototype._verify1 = function _verify1 (a) {
3255
+ assert(a.negative === 0, 'red works only with positives');
3256
+ assert(a.red, 'red works only with red numbers');
3257
+ };
3258
+
3259
+ Red.prototype._verify2 = function _verify2 (a, b) {
3260
+ assert((a.negative | b.negative) === 0, 'red works only with positives');
3261
+ assert(a.red && a.red === b.red,
3262
+ 'red works only with red numbers');
3263
+ };
3264
+
3265
+ Red.prototype.imod = function imod (a) {
3266
+ if (this.prime) return this.prime.ireduce(a)._forceRed(this);
3267
+
3268
+ move(a, a.umod(this.m)._forceRed(this));
3269
+ return a;
3270
+ };
3271
+
3272
+ Red.prototype.neg = function neg (a) {
3273
+ if (a.isZero()) {
3274
+ return a.clone();
3275
+ }
3276
+
3277
+ return this.m.sub(a)._forceRed(this);
3278
+ };
3279
+
3280
+ Red.prototype.add = function add (a, b) {
3281
+ this._verify2(a, b);
3282
+
3283
+ var res = a.add(b);
3284
+ if (res.cmp(this.m) >= 0) {
3285
+ res.isub(this.m);
3286
+ }
3287
+ return res._forceRed(this);
3288
+ };
3289
+
3290
+ Red.prototype.iadd = function iadd (a, b) {
3291
+ this._verify2(a, b);
3292
+
3293
+ var res = a.iadd(b);
3294
+ if (res.cmp(this.m) >= 0) {
3295
+ res.isub(this.m);
3296
+ }
3297
+ return res;
3298
+ };
3299
+
3300
+ Red.prototype.sub = function sub (a, b) {
3301
+ this._verify2(a, b);
3302
+
3303
+ var res = a.sub(b);
3304
+ if (res.cmpn(0) < 0) {
3305
+ res.iadd(this.m);
3306
+ }
3307
+ return res._forceRed(this);
3308
+ };
3309
+
3310
+ Red.prototype.isub = function isub (a, b) {
3311
+ this._verify2(a, b);
3312
+
3313
+ var res = a.isub(b);
3314
+ if (res.cmpn(0) < 0) {
3315
+ res.iadd(this.m);
3316
+ }
3317
+ return res;
3318
+ };
3319
+
3320
+ Red.prototype.shl = function shl (a, num) {
3321
+ this._verify1(a);
3322
+ return this.imod(a.ushln(num));
3323
+ };
3324
+
3325
+ Red.prototype.imul = function imul (a, b) {
3326
+ this._verify2(a, b);
3327
+ return this.imod(a.imul(b));
3328
+ };
3329
+
3330
+ Red.prototype.mul = function mul (a, b) {
3331
+ this._verify2(a, b);
3332
+ return this.imod(a.mul(b));
3333
+ };
3334
+
3335
+ Red.prototype.isqr = function isqr (a) {
3336
+ return this.imul(a, a.clone());
3337
+ };
3338
+
3339
+ Red.prototype.sqr = function sqr (a) {
3340
+ return this.mul(a, a);
3341
+ };
3342
+
3343
+ Red.prototype.sqrt = function sqrt (a) {
3344
+ if (a.isZero()) return a.clone();
3345
+
3346
+ var mod3 = this.m.andln(3);
3347
+ assert(mod3 % 2 === 1);
3348
+
3349
+ // Fast case
3350
+ if (mod3 === 3) {
3351
+ var pow = this.m.add(new BN(1)).iushrn(2);
3352
+ return this.pow(a, pow);
3353
+ }
3354
+
3355
+ // Tonelli-Shanks algorithm (Totally unoptimized and slow)
3356
+ //
3357
+ // Find Q and S, that Q * 2 ^ S = (P - 1)
3358
+ var q = this.m.subn(1);
3359
+ var s = 0;
3360
+ while (!q.isZero() && q.andln(1) === 0) {
3361
+ s++;
3362
+ q.iushrn(1);
3363
+ }
3364
+ assert(!q.isZero());
3365
+
3366
+ var one = new BN(1).toRed(this);
3367
+ var nOne = one.redNeg();
3368
+
3369
+ // Find quadratic non-residue
3370
+ // NOTE: Max is such because of generalized Riemann hypothesis.
3371
+ var lpow = this.m.subn(1).iushrn(1);
3372
+ var z = this.m.bitLength();
3373
+ z = new BN(2 * z * z).toRed(this);
3374
+
3375
+ while (this.pow(z, lpow).cmp(nOne) !== 0) {
3376
+ z.redIAdd(nOne);
3377
+ }
3378
+
3379
+ var c = this.pow(z, q);
3380
+ var r = this.pow(a, q.addn(1).iushrn(1));
3381
+ var t = this.pow(a, q);
3382
+ var m = s;
3383
+ while (t.cmp(one) !== 0) {
3384
+ var tmp = t;
3385
+ for (var i = 0; tmp.cmp(one) !== 0; i++) {
3386
+ tmp = tmp.redSqr();
3387
+ }
3388
+ assert(i < m);
3389
+ var b = this.pow(c, new BN(1).iushln(m - i - 1));
3390
+
3391
+ r = r.redMul(b);
3392
+ c = b.redSqr();
3393
+ t = t.redMul(c);
3394
+ m = i;
3395
+ }
3396
+
3397
+ return r;
3398
+ };
3399
+
3400
+ Red.prototype.invm = function invm (a) {
3401
+ var inv = a._invmp(this.m);
3402
+ if (inv.negative !== 0) {
3403
+ inv.negative = 0;
3404
+ return this.imod(inv).redNeg();
3405
+ } else {
3406
+ return this.imod(inv);
3407
+ }
3408
+ };
3409
+
3410
+ Red.prototype.pow = function pow (a, num) {
3411
+ if (num.isZero()) return new BN(1).toRed(this);
3412
+ if (num.cmpn(1) === 0) return a.clone();
3413
+
3414
+ var windowSize = 4;
3415
+ var wnd = new Array(1 << windowSize);
3416
+ wnd[0] = new BN(1).toRed(this);
3417
+ wnd[1] = a;
3418
+ for (var i = 2; i < wnd.length; i++) {
3419
+ wnd[i] = this.mul(wnd[i - 1], a);
3420
+ }
3421
+
3422
+ var res = wnd[0];
3423
+ var current = 0;
3424
+ var currentLen = 0;
3425
+ var start = num.bitLength() % 26;
3426
+ if (start === 0) {
3427
+ start = 26;
3428
+ }
3429
+
3430
+ for (i = num.length - 1; i >= 0; i--) {
3431
+ var word = num.words[i];
3432
+ for (var j = start - 1; j >= 0; j--) {
3433
+ var bit = (word >> j) & 1;
3434
+ if (res !== wnd[0]) {
3435
+ res = this.sqr(res);
3436
+ }
3437
+
3438
+ if (bit === 0 && current === 0) {
3439
+ currentLen = 0;
3440
+ continue;
3441
+ }
3442
+
3443
+ current <<= 1;
3444
+ current |= bit;
3445
+ currentLen++;
3446
+ if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
3447
+
3448
+ res = this.mul(res, wnd[current]);
3449
+ currentLen = 0;
3450
+ current = 0;
3451
+ }
3452
+ start = 26;
3453
+ }
3454
+
3455
+ return res;
3456
+ };
3457
+
3458
+ Red.prototype.convertTo = function convertTo (num) {
3459
+ var r = num.umod(this.m);
3460
+
3461
+ return r === num ? r.clone() : r;
3462
+ };
3463
+
3464
+ Red.prototype.convertFrom = function convertFrom (num) {
3465
+ var res = num.clone();
3466
+ res.red = null;
3467
+ return res;
3468
+ };
3469
+
3470
+ //
3471
+ // Montgomery method engine
3472
+ //
3473
+
3474
+ BN.mont = function mont (num) {
3475
+ return new Mont(num);
3476
+ };
3477
+
3478
+ function Mont (m) {
3479
+ Red.call(this, m);
3480
+
3481
+ this.shift = this.m.bitLength();
3482
+ if (this.shift % 26 !== 0) {
3483
+ this.shift += 26 - (this.shift % 26);
3484
+ }
3485
+
3486
+ this.r = new BN(1).iushln(this.shift);
3487
+ this.r2 = this.imod(this.r.sqr());
3488
+ this.rinv = this.r._invmp(this.m);
3489
+
3490
+ this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
3491
+ this.minv = this.minv.umod(this.r);
3492
+ this.minv = this.r.sub(this.minv);
3493
+ }
3494
+ inherits(Mont, Red);
3495
+
3496
+ Mont.prototype.convertTo = function convertTo (num) {
3497
+ return this.imod(num.ushln(this.shift));
3498
+ };
3499
+
3500
+ Mont.prototype.convertFrom = function convertFrom (num) {
3501
+ var r = this.imod(num.mul(this.rinv));
3502
+ r.red = null;
3503
+ return r;
3504
+ };
3505
+
3506
+ Mont.prototype.imul = function imul (a, b) {
3507
+ if (a.isZero() || b.isZero()) {
3508
+ a.words[0] = 0;
3509
+ a.length = 1;
3510
+ return a;
3511
+ }
3512
+
3513
+ var t = a.imul(b);
3514
+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
3515
+ var u = t.isub(c).iushrn(this.shift);
3516
+ var res = u;
3517
+
3518
+ if (u.cmp(this.m) >= 0) {
3519
+ res = u.isub(this.m);
3520
+ } else if (u.cmpn(0) < 0) {
3521
+ res = u.iadd(this.m);
3522
+ }
3523
+
3524
+ return res._forceRed(this);
3525
+ };
3526
+
3527
+ Mont.prototype.mul = function mul (a, b) {
3528
+ if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
3529
+
3530
+ var t = a.mul(b);
3531
+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
3532
+ var u = t.isub(c).iushrn(this.shift);
3533
+ var res = u;
3534
+ if (u.cmp(this.m) >= 0) {
3535
+ res = u.isub(this.m);
3536
+ } else if (u.cmpn(0) < 0) {
3537
+ res = u.iadd(this.m);
3538
+ }
3539
+
3540
+ return res._forceRed(this);
3541
+ };
3542
+
3543
+ Mont.prototype.invm = function invm (a) {
3544
+ // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
3545
+ var res = this.imod(a._invmp(this.m).mul(this.r2));
3546
+ return res._forceRed(this);
3547
+ };
3548
+ })(typeof module === 'undefined' || module, this);