bcrypt-ts 2.2.0 → 2.2.1

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.
package/LICENSE ADDED
@@ -0,0 +1,78 @@
1
+ bcrypt-ts
2
+
3
+ Copyright (c) 2022 Mister Hope <mister-hope@outlook.com>
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions
7
+ are met:
8
+
9
+ 1. Redistributions of source code must retain the above copyright
10
+ notice, this list of conditions and the following disclaimer.
11
+ 2. Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+ 3. The name of the author may not be used to endorse or promote products
15
+ derived from this software without specific prior written permission.
16
+
17
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ bcrypt.js
29
+
30
+ Copyright (c) 2012 Nevins Bartolomeo <nevins.bartolomeo@gmail.com>
31
+ Copyright (c) 2012 Shane Girish <shaneGirish@gmail.com>
32
+ Copyright (c) 2014 Daniel Wirtz <dcode@dcode.io>
33
+
34
+ Redistribution and use in source and binary forms, with or without
35
+ modification, are permitted provided that the following conditions
36
+ are met:
37
+
38
+ 1. Redistributions of source code must retain the above copyright
39
+ notice, this list of conditions and the following disclaimer.
40
+ 2. Redistributions in binary form must reproduce the above copyright
41
+ notice, this list of conditions and the following disclaimer in the
42
+ documentation and/or other materials provided with the distribution.
43
+ 3. The name of the author may not be used to endorse or promote products
44
+ derived from this software without specific prior written permission.
45
+
46
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
47
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
48
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
49
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
50
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
51
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
52
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
53
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
54
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
55
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
56
+
57
+ isaac.js
58
+
59
+ Copyright (c) 2012 Yves-Marie K. Rinquin
60
+
61
+ Permission is hereby granted, free of charge, to any person obtaining
62
+ a copy of this software and associated documentation files (the
63
+ "Software"), to deal in the Software without restriction, including
64
+ without limitation the rights to use, copy, modify, merge, publish,
65
+ distribute, sublicense, and/or sell copies of the Software, and to
66
+ permit persons to whom the Software is furnished to do so, subject to
67
+ the following conditions:
68
+
69
+ The above copyright notice and this permission notice shall be
70
+ included in all copies or substantial portions of the Software.
71
+
72
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
73
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
74
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
75
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
76
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
77
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
78
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,5 +1,208 @@
1
- # bycrypt-ts
1
+ # bcrypt-ts
2
2
 
3
- A typescript version of [bcrypt.js](https://github.com/dcodeIO/bcrypt.js).
3
+ Optimized bcrypt written in typescript. Working in both Node.js and browser.
4
4
 
5
- Provides ES modules and declaration files.
5
+ > Heavily inspired by [bcrypt.js](https://github.com/dcodeIO/bcrypt.js).
6
+
7
+ ## Security considerations
8
+
9
+ Besides incorporating a salt to protect against rainbow table attacks, bcrypt is an adaptive function: over time, the
10
+ iteration count can be increased to make it slower, so it remains resistant to brute-force search attacks even with
11
+ increasing computation power. ([see](http://en.wikipedia.org/wiki/Bcrypt))
12
+
13
+ While bcrypt-ts is compatible to the C++ bcrypt binding, it is providing pure JavaScript and thus slower about 30%, effectively reducing the number of iterations that can be processed in an equal time span.
14
+
15
+ The maximum input length is 72 bytes (note that UTF8 encoded characters use up to 4 bytes) and the length of generated
16
+ hashes is 60 characters.
17
+
18
+ ## Highlights
19
+
20
+ - 0 dependencies, with ONLY 8KB Gzip size
21
+ - Written in typescript
22
+ - Provide tree-shakable ES module
23
+
24
+ ## Usage
25
+
26
+ ### Node.js
27
+
28
+ On Node.js, the inbuilt [crypto module](http://nodejs.org/api/crypto.html)'s randomBytes interface is used to obtain secure random numbers.
29
+
30
+ ### Browser
31
+
32
+ In the browser, bcrypt.js relies on [Web Crypto API](http://www.w3.org/TR/WebCryptoAPI)'s getRandomValues interface to obtain secure random numbers. If no cryptographically secure source of randomness is available, the package will **throw an error**.
33
+
34
+ ## Usage - Sync
35
+
36
+ To hash a password:
37
+
38
+ ```js
39
+ import { genSaltSync, hashSync } from "bcrypt-ts";
40
+
41
+ const salt = genSaltSync(10);
42
+ const hash = hashSync("B4c0//", salt);
43
+ // Store hash in your password DB.
44
+ ```
45
+
46
+ To check a password:
47
+
48
+ ```js
49
+ import { compareSync } from "bcrypt-ts";
50
+
51
+ // Load hash from your password DB.
52
+ compareSync("B4c0//", hash); // true
53
+ compareSync("not_bacon", hash); // false
54
+ ```
55
+
56
+ Auto-gen a salt and hash at the same time:
57
+
58
+ ```js
59
+ import { hashSync } from "bcrypt-ts";
60
+
61
+ const hash = hashSync("bacon", 8);
62
+ ```
63
+
64
+ ## Usage - Async
65
+
66
+ To hash a password:
67
+
68
+ ```js
69
+ import { genSalt, hash } from "bcrypt-ts";
70
+
71
+ genSalt(10)
72
+ .then((salt) => hash("B4c0//", salt))
73
+ .then((hash) => {
74
+ // Store hash in your password DB.
75
+ });
76
+ ```
77
+
78
+ To check a password:
79
+
80
+ ```js
81
+ import { compare } from "bcrypt-ts";
82
+
83
+ // Load hash from your password DB.
84
+ const hash = "xxxxxx";
85
+
86
+ compare("B4c0//", hash).then((result) => {
87
+ // result is `true`
88
+ });
89
+ compare("not_bacon", hash).then((result) => {
90
+ // result is `false`
91
+ });
92
+ ```
93
+
94
+ Auto-gen a salt and hash:
95
+
96
+ ```js
97
+ import { hash } from "bcrypt-ts";
98
+
99
+ hash("bacon").then((hash) => {
100
+ // do something with hash
101
+ });
102
+ ```
103
+
104
+ **Note:** Under the hood, asynchronisation splits a crypto operation into small chunks. After the completion of a chunk, the execution of the next chunk is placed on the back of [JS event loop queue](https://developer.mozilla.org/en/docs/Web/JavaScript/EventLoop), thus efficiently sharing the computational resources with the other operations in the queue.
105
+
106
+ ## API
107
+
108
+ ```ts
109
+ /**
110
+ * Encodes a byte array to base64 with up to len bytes of input, using the custom bcrypt alphabet.
111
+ *
112
+ * @param byteArray Byte array
113
+ * @param length Maximum input length
114
+ */
115
+ export const encodeBase64: (
116
+ byteArray: number[] | Buffer,
117
+ length: number
118
+ ) => string;
119
+ /**
120
+ * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.
121
+ *
122
+ * @param contentString String to decode
123
+ * @param length Maximum output length
124
+ */
125
+ export const decodeBase64: (contentString: string, length: number) => number[];
126
+
127
+ /**
128
+ * Synchronously tests a string against a hash.
129
+ *
130
+ * @param content String to compare
131
+ * @param hash Hash to test against
132
+ */
133
+ export const compareSync: (content: string, hash: string) => boolean;
134
+ /**
135
+ * Asynchronously compares the given data against the given hash.
136
+ *
137
+ * @param content Data to compare
138
+ * @param hash Data to be compared to
139
+ * @param progressCallback Callback successively called with the percentage of rounds completed
140
+ * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
141
+ */
142
+ export const compare: (
143
+ content: string,
144
+ hash: string,
145
+ progressCallback?: ((percent: number) => void) | undefined
146
+ ) => Promise<boolean>;
147
+
148
+ /**
149
+ * Synchronously generates a hash for the given string.
150
+ *
151
+ * @param contentString String to hash
152
+ * @param salt Salt length to generate or salt to use, default to 10
153
+ * @returns Resulting hash
154
+ */
155
+ export const hashSync: (
156
+ contentString: string,
157
+ salt?: string | number
158
+ ) => string;
159
+ /**
160
+ * Asynchronously generates a hash for the given string.
161
+ *
162
+ * @param contentString String to hash
163
+ * @param salt Salt length to generate or salt to use
164
+ * @param progressCallback Callback successively called with the percentage of rounds completed
165
+ * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
166
+ */
167
+ export const hash: (
168
+ contentString: string,
169
+ salt: number | string,
170
+ progressCallback?: ((progress: number) => void) | undefined
171
+ ) => Promise<string>;
172
+
173
+ /**
174
+ * Gets the number of rounds used to encrypt the specified hash.
175
+ *
176
+ * @param hash Hash to extract the used number of rounds from
177
+ * @returns Number of rounds used
178
+ * @throws {Error} If `hash` is not a string
179
+ */
180
+ export const getRounds: (hash: string) => number;
181
+ /**
182
+ * Gets the salt portion from a hash. Does not validate the hash.
183
+ *
184
+ * @param hash Hash to extract the salt from
185
+ * @returns Extracted salt part
186
+ * @throws {Error} If `hash` is not a string or otherwise invalid
187
+ */
188
+ export const getSalt: (hash: string) => string;
189
+
190
+ /**
191
+ * Synchronously generates a salt.
192
+ *
193
+ * @param rounds Number of rounds to use, defaults to 10 if omitted
194
+ * @returns Resulting salt
195
+ * @throws {Error} If a random fallback is required but not set
196
+ */
197
+ export const genSaltSync: (rounds?: number) => string;
198
+ /**
199
+ * Asynchronously generates a salt.
200
+ *
201
+ * @param rounds Number of rounds to use, defaults to 10 if omitted
202
+ */
203
+ export const genSalt: (rounds?: number) => Promise<string>;
204
+ ```
205
+
206
+ ## License
207
+
208
+ New-BSD / MIT ([see](https://github.com/Mister-Hope/bcrypt-ts/blob/main/LICENSE))
package/dist/browser.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),r=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],t=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],n=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],o=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892],s=(r,t)=>{if(t<=0||t>r.length)throw Error(`Illegal len: ${t}`);let n,o,s=0;const l=[];for(;s<t;){if(n=255&r[s++],l.push(e[n>>2&63]),n=(3&n)<<4,s>=t){l.push(e[63&n]);break}if(o=255&r[s++],n|=o>>4&15,l.push(e[63&n]),n=(15&o)<<2,s>=t){l.push(e[63&n]);break}o=255&r[s++],n|=o>>6&3,l.push(e[63&n]),l.push(e[63&o])}return l.join("")},l=(e,t)=>{if(t<=0)throw Error(`Illegal len: ${t}`);const n=e.length;let o,s,l,f,i,u,h=0,p=0;const a=[];for(;h<n-1&&p<t&&(u=e.charCodeAt(h++),o=u<r.length?r[u]:-1,u=e.charCodeAt(h++),s=u<r.length?r[u]:-1,-1!=o&&-1!=s)&&(i=o<<2>>>0,i|=(48&s)>>4,a.push(String.fromCharCode(i)),!(++p>=t||h>=n))&&(u=e.charCodeAt(h++),l=u<r.length?r[u]:-1,-1!=l)&&(i=(15&s)<<4>>>0,i|=(60&l)>>2,a.push(String.fromCharCode(i)),!(++p>=t||h>=n));)u=e.charCodeAt(h++),f=u<r.length?r[u]:-1,i=(3&l)<<6>>>0,i|=f,a.push(String.fromCharCode(i)),++p;return a.map((e=>e.charCodeAt(0)))},f="undefined"!=typeof process&&process&&"function"==typeof process.nextTick?"function"==typeof setImmediate?setImmediate:process.nextTick:setTimeout,i=(e,r,t,n)=>{let o,s=e[r],l=e[r+1];return s^=t[0],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^t[1],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^t[2],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^t[3],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^t[4],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^t[5],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^t[6],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^t[7],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^t[8],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^t[9],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^t[10],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^t[11],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^t[12],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^t[13],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^t[14],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^t[15],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^t[16],e[r]=l^t[17],e[r+1]=s,e},u=(e,r)=>{let t=0;for(let n=0;n<4;++n)t=t<<8|255&e[r],r=(r+1)%e.length;return{key:t,offp:r}},h=(e,r,t)=>{const n=r.length,o=t.length;let s,l=0,f=[0,0];for(let t=0;t<n;t++)s=u(e,l),l=s.offp,r[t]=r[t]^s.key;for(let e=0;e<n;e+=2)f=i(f,0,r,t),r[e]=f[0],r[e+1]=f[1];for(let e=0;e<o;e+=2)f=i(f,0,r,t),t[e]=f[0],t[e+1]=f[1]},p=(e,r,s,l,p)=>{const a=o.slice(),g=a.length;if(s<4||s>31){const e=new Error(`Illegal number of rounds (4-31): ${s}`);if(!1===l)return Promise.reject(e);throw e}if(16!==r.length){const e=new Error(`Illegal salt length: ${r.length} != 16`);if(!1===l)return Promise.reject(e);throw e}let c,y;s=1<<s>>>0;let m,w=0;Int32Array?(c=new Int32Array(t),y=new Int32Array(n)):(c=t.slice(),y=n.slice()),((e,r,t,n)=>{const o=t.length,s=n.length;let l,f=0,h=[0,0];for(let e=0;e<o;e++)l=u(r,f),f=l.offp,t[e]=t[e]^l.key;f=0;for(let r=0;r<o;r+=2)l=u(e,f),f=l.offp,h[0]^=l.key,l=u(e,f),f=l.offp,h[1]^=l.key,h=i(h,0,t,n),t[r]=h[0],t[r+1]=h[1];for(let r=0;r<s;r+=2)l=u(e,f),f=l.offp,h[0]^=l.key,l=u(e,f),f=l.offp,h[1]^=l.key,h=i(h,0,t,n),n[r]=h[0],n[r+1]=h[1]})(r,e,c,y);const d=()=>{if(p&&p(w/s),!(w<s)){for(w=0;w<64;w++)for(m=0;m<g>>1;m++)i(a,m<<1,c,y);const e=[];for(w=0;w<g;w++)e.push((a[w]>>24&255)>>>0),e.push((a[w]>>16&255)>>>0),e.push((a[w]>>8&255)>>>0),e.push((255&a[w])>>>0);return!1===l?Promise.resolve(e):e}{const t=Date.now();for(;w<s&&(w+=1,h(e,c,y),h(r,c,y),!(Date.now()-t>100)););}if(!1===l)return new Promise((e=>f((()=>{d().then(e)}))))};if(!1===l)return d();{let e;for(;;)if(void 0!==(e=d()))return e||[]}},a=(e=10)=>{if("number"!=typeof e)throw Error("Illegal arguments: "+typeof e);e<4?e=4:e>31&&(e=31);const r=[];return r.push("$2a$"),e<10&&r.push("0"),r.push(e.toString()),r.push("$"),r.push(s((e=>{try{let r;return(self.crypto||self.msCrypto).getRandomValues(r=new Uint32Array(e)),Array.prototype.slice.call(r)}catch(e){throw Error("WebCryptoAPI is not available")}})(16),16)),r.join("")},g=(e=10)=>{if("number"!=typeof e)throw Error("illegal arguments: "+typeof e);return new Promise(((r,t)=>f((()=>{try{r(a(e))}catch(e){t(e)}}))))};function c(e,r,t,n){if("string"!=typeof e||"string"!=typeof r){const e=new Error("Invalid string / salt: Not a string");if(!1===t)return Promise.reject(e);throw e}let f,i;if("$"!==r.charAt(0)||"2"!==r.charAt(1)){const e=new Error("Invalid salt version: "+r.substring(0,2));if(!1===t)return Promise.reject(e);throw e}if("$"===r.charAt(2))f=String.fromCharCode(0),i=3;else{if(f=r.charAt(2),"a"!==f&&"b"!==f&&"y"!==f||"$"!==r.charAt(3)){const e=Error("Invalid salt revision: "+r.substring(2,4));if(!1===t)return Promise.reject(e);throw e}i=4}if(r.charAt(i+2)>"$"){const e=new Error("Missing salt rounds");if(!1===t)return Promise.reject(e);throw e}const u=10*parseInt(r.substring(i,i+1),10)+parseInt(r.substring(i+1,i+2),10),h=r.substring(i+3,i+25),a=(e=>{const r=[];let t=0;var n;return n=e=>{r.push(e)},((e,r)=>{let t,n=null;for(;null!==(t=null!==n?n:e());)t>=55296&&t<=57343&&null!==(n=e())&&n>=56320&&n<=57343?(r(1024*(t-55296)+n-56320+65536),n=null):r(t);null!==n&&r(n)})((()=>t>=e.length?null:e.charCodeAt(t++)),(function(e){((e,r)=>{let t=null;for("number"==typeof e&&(t=e,e=()=>null);null!==t||null!==(t=e());)t<128?r(127&t):t<2048?(r(t>>6&31|192),r(63&t|128)):t<65536?(r(t>>12&15|224),r(t>>6&63|128),r(63&t|128)):(r(t>>18&7|240),r(t>>12&63|128),r(t>>6&63|128),r(63&t|128)),t=null})(e,n)})),r})(e+=f>="a"?"\0":""),g=l(h,16),c=e=>{const r=[];return r.push("$2"),f>="a"&&r.push(f),r.push("$"),u<10&&r.push("0"),r.push(u.toString()),r.push("$"),r.push(s(g,g.length)),r.push(s(e,4*o.length-1)),r.join("")};return!1===t?p(a,g,u,!1,n).then((e=>c(e))):c(p(a,g,u,!0,n))}const y=(e,r=10)=>{if("number"==typeof r&&(r=a(r)),"string"!=typeof e||"string"!=typeof r)throw Error("Illegal arguments: "+typeof e+", "+typeof r);return c(e,r,!0)},m=function(e,r,t){return"string"==typeof e&&"number"==typeof r?g(r).then((r=>c(e,r,!1,t))):"string"==typeof e&&"string"==typeof r?c(e,r,!1,t):Promise.reject(new Error(`Illegal arguments: ${typeof e}, ${typeof r}`))};exports.compare=(e,r,t)=>new Promise(((n,o)=>{"string"==typeof e&&"string"==typeof r?60===r.length?m(e,r.substring(0,29),t).then((e=>n(e===r))).catch((e=>o(e))):f((()=>o(!1))):f((()=>o(new Error(`Illegal arguments: ${typeof e}, ${typeof r}`))))})),exports.compareSync=(e,r)=>{if("string"!=typeof e||"string"!=typeof r)throw Error("Illegal arguments: "+typeof e+", "+typeof r);return 60===r.length&&y(e,r.substring(0,r.length-31))===r},exports.decodeBase64=l,exports.encodeBase64=s,exports.genSalt=g,exports.genSaltSync=a,exports.getRounds=e=>{if("string"!=typeof e)throw new Error("Illegal arguments: "+typeof e);return parseInt(e.split("$")[2],10)},exports.getSalt=e=>{if("string"!=typeof e)throw new Error("Illegal arguments: "+typeof e);if(60!==e.length)throw new Error(`Illegal hash length: ${e.length} != 60`);return e.substring(0,29)},exports.hash=m,exports.hashSync=y;
1
+ "use strict";const r="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),t=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],e=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],n=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],o=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892],s=(t,e)=>{if(e<=0||e>t.length)throw Error(`Illegal len: ${e}`);let n,o,s=0;const l=[];for(;s<e;){if(n=255&t[s++],l.push(r[n>>2&63]),n=(3&n)<<4,s>=e){l.push(r[63&n]);break}if(o=255&t[s++],n|=o>>4&15,l.push(r[63&n]),n=(15&o)<<2,s>=e){l.push(r[63&n]);break}o=255&t[s++],n|=o>>6&3,l.push(r[63&n]),l.push(r[63&o])}return l.join("")},l=(r,e)=>{if(e<=0)throw Error(`Illegal len: ${e}`);const n=r.length;let o,s,l,f,i,u,h=0,p=0;const a=[];for(;h<n-1&&p<e&&(u=r.charCodeAt(h++),o=u<t.length?t[u]:-1,u=r.charCodeAt(h++),s=u<t.length?t[u]:-1,-1!=o&&-1!=s)&&(i=o<<2>>>0,i|=(48&s)>>4,a.push(String.fromCharCode(i)),!(++p>=e||h>=n))&&(u=r.charCodeAt(h++),l=u<t.length?t[u]:-1,-1!=l)&&(i=(15&s)<<4>>>0,i|=(60&l)>>2,a.push(String.fromCharCode(i)),!(++p>=e||h>=n));)u=r.charCodeAt(h++),f=u<t.length?t[u]:-1,i=(3&l)<<6>>>0,i|=f,a.push(String.fromCharCode(i)),++p;return a.map((r=>r.charCodeAt(0)))},f="undefined"!=typeof process&&process&&"function"==typeof process.nextTick?"function"==typeof setImmediate?setImmediate:process.nextTick:setTimeout,i=(r,t,e,n)=>{let o,s=r[t],l=r[t+1];return s^=e[0],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^e[1],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^e[2],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^e[3],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^e[4],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^e[5],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^e[6],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^e[7],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^e[8],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^e[9],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^e[10],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^e[11],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^e[12],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^e[13],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^e[14],o=n[s>>>24],o+=n[256|s>>16&255],o^=n[512|s>>8&255],o+=n[768|255&s],l^=o^e[15],o=n[l>>>24],o+=n[256|l>>16&255],o^=n[512|l>>8&255],o+=n[768|255&l],s^=o^e[16],r[t]=l^e[17],r[t+1]=s,r},u=(r,t)=>{let e=0;for(let n=0;n<4;++n)e=e<<8|255&r[t],t=(t+1)%r.length;return{key:e,offp:t}},h=(r,t,e)=>{const n=t.length,o=e.length;let s,l=0,f=[0,0];for(let e=0;e<n;e++)s=u(r,l),l=s.offp,t[e]=t[e]^s.key;for(let r=0;r<n;r+=2)f=i(f,0,t,e),t[r]=f[0],t[r+1]=f[1];for(let r=0;r<o;r+=2)f=i(f,0,t,e),e[r]=f[0],e[r+1]=f[1]},p=(r,t,s,l,p)=>{const a=o.slice(),g=a.length;if(s<4||s>31){const r=new Error(`Illegal number of rounds (4-31): ${s}`);if(!1===l)return Promise.reject(r);throw r}if(16!==t.length){const r=new Error(`Illegal salt length: ${t.length} != 16`);if(!1===l)return Promise.reject(r);throw r}let c,y;s=1<<s>>>0;let m,w=0;Int32Array?(c=new Int32Array(e),y=new Int32Array(n)):(c=e.slice(),y=n.slice()),((r,t,e,n)=>{const o=e.length,s=n.length;let l,f=0,h=[0,0];for(let r=0;r<o;r++)l=u(t,f),f=l.offp,e[r]=e[r]^l.key;f=0;for(let t=0;t<o;t+=2)l=u(r,f),f=l.offp,h[0]^=l.key,l=u(r,f),f=l.offp,h[1]^=l.key,h=i(h,0,e,n),e[t]=h[0],e[t+1]=h[1];for(let t=0;t<s;t+=2)l=u(r,f),f=l.offp,h[0]^=l.key,l=u(r,f),f=l.offp,h[1]^=l.key,h=i(h,0,e,n),n[t]=h[0],n[t+1]=h[1]})(t,r,c,y);const d=()=>{if(p&&p(w/s),!(w<s)){for(w=0;w<64;w++)for(m=0;m<g>>1;m++)i(a,m<<1,c,y);const r=[];for(w=0;w<g;w++)r.push((a[w]>>24&255)>>>0),r.push((a[w]>>16&255)>>>0),r.push((a[w]>>8&255)>>>0),r.push((255&a[w])>>>0);return!1===l?Promise.resolve(r):r}{const e=Date.now();for(;w<s&&(w+=1,h(r,c,y),h(t,c,y),!(Date.now()-e>100)););}if(!1===l)return new Promise((r=>f((()=>{d().then(r)}))))};if(!1===l)return d();{let r;for(;;)if(void 0!==(r=d()))return r||[]}},a=(r=10)=>{if("number"!=typeof r)throw Error("Illegal arguments: "+typeof r);r<4?r=4:r>31&&(r=31);const t=[];return t.push("$2a$"),r<10&&t.push("0"),t.push(r.toString()),t.push("$"),t.push(s((r=>{try{let t;return(self.crypto||self.msCrypto).getRandomValues(t=new Uint32Array(r)),Array.prototype.slice.call(t)}catch(r){throw Error("WebCryptoAPI is not available")}})(16),16)),t.join("")},g=(r=10)=>{if("number"!=typeof r)throw Error("illegal arguments: "+typeof r);return new Promise(((t,e)=>f((()=>{try{t(a(r))}catch(r){e(r)}}))))};function c(r,t,e,n){if("string"!=typeof r||"string"!=typeof t){const r=new Error("Invalid string / salt: Not a string");if(!1===e)return Promise.reject(r);throw r}let f,i;if("$"!==t.charAt(0)||"2"!==t.charAt(1)){const r=new Error("Invalid salt version: "+t.substring(0,2));if(!1===e)return Promise.reject(r);throw r}if("$"===t.charAt(2))f=String.fromCharCode(0),i=3;else{if(f=t.charAt(2),"a"!==f&&"b"!==f&&"y"!==f||"$"!==t.charAt(3)){const r=Error("Invalid salt revision: "+t.substring(2,4));if(!1===e)return Promise.reject(r);throw r}i=4}if(t.charAt(i+2)>"$"){const r=new Error("Missing salt rounds");if(!1===e)return Promise.reject(r);throw r}const u=10*parseInt(t.substring(i,i+1),10)+parseInt(t.substring(i+1,i+2),10),h=t.substring(i+3,i+25),a=(r=>{const t=[];let e=0;var n;return n=r=>{t.push(r)},((r,t)=>{let e,n=null;for(;null!==(e=null!==n?n:r());)e>=55296&&e<=57343&&null!==(n=r())&&n>=56320&&n<=57343?(t(1024*(e-55296)+n-56320+65536),n=null):t(e);null!==n&&t(n)})((()=>e>=r.length?null:r.charCodeAt(e++)),(function(r){((r,t)=>{let e=null;for("number"==typeof r&&(e=r,r=()=>null);null!==e||null!==(e=r());)e<128?t(127&e):e<2048?(t(e>>6&31|192),t(63&e|128)):e<65536?(t(e>>12&15|224),t(e>>6&63|128),t(63&e|128)):(t(e>>18&7|240),t(e>>12&63|128),t(e>>6&63|128),t(63&e|128)),e=null})(r,n)})),t})(r+=f>="a"?"\0":""),g=l(h,16),c=r=>{const t=[];return t.push("$2"),f>="a"&&t.push(f),t.push("$"),u<10&&t.push("0"),t.push(u.toString()),t.push("$"),t.push(s(g,g.length)),t.push(s(r,4*o.length-1)),t.join("")};return!1===e?p(a,g,u,!1,n).then((r=>c(r))):c(p(a,g,u,!0,n))}const y=(r,t=10)=>{if("number"==typeof t&&(t=a(t)),"string"!=typeof r||"string"!=typeof t)throw Error("Illegal arguments: "+typeof r+", "+typeof t);return c(r,t,!0)},m=function(r,t,e){return"string"==typeof r&&"number"==typeof t?g(t).then((t=>c(r,t,!1,e))):"string"==typeof r&&"string"==typeof t?c(r,t,!1,e):Promise.reject(new Error(`Illegal arguments: ${typeof r}, ${typeof t}`))};exports.compare=(r,t,e)=>new Promise(((n,o)=>{"string"==typeof r&&"string"==typeof t?60===t.length?m(r,t.substring(0,29),e).then((r=>n(r===t))).catch((r=>o(r))):f((()=>o(!1))):f((()=>o(new Error(`Illegal arguments: ${typeof r}, ${typeof t}`))))})),exports.compareSync=(r,t)=>{if("string"!=typeof r||"string"!=typeof t)throw Error("Illegal arguments: "+typeof r+", "+typeof t);return 60===t.length&&y(r,t.substring(0,t.length-31))===t},exports.decodeBase64=l,exports.encodeBase64=s,exports.genSalt=g,exports.genSaltSync=a,exports.getRounds=r=>{if("string"!=typeof r)throw new Error("Illegal arguments: "+typeof r);return parseInt(r.split("$")[2],10)},exports.getSalt=r=>{if("string"!=typeof r)throw new Error("Illegal arguments: "+typeof r);if(60!==r.length)throw new Error(`Illegal hash length: ${r.length} != 60`);return r.substring(0,29)},exports.hash=m,exports.hashSync=y;
2
2
  //# sourceMappingURL=browser.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.cjs","sources":["../src/constant.ts","../src/base64.ts","../src/utils.ts","../src/crypt.ts","../src/salt.ts","../src/random/browser.ts","../src/hash.ts","../src/utfx.ts","../src/compare.ts","../src/helpers.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null],"names":["BASE64_CODE","split","BASE64_INDEX","P_ORIG","S_ORIG","C_ORIG","encodeBase64","byteArray","length","Error","c1","c2","off","rs","push","join","decodeBase64","contentString","stringLength","c3","c4","o","code","olen","charCodeAt","String","fromCharCode","map","item","nextTick","process","setImmediate","setTimeout","encipher","lr","P","S","n","l","r","BLOWFISH_NUM_ROUNDS","streamtoword","data","offp","word","i","key","pLength","sLength","sw","crypt","bytes","salt","rounds","sync","progressCallback","cdata","slice","cLength","err","Promise","reject","j","Int32Array","ekskey","next","ret","resolve","start","Date","now","then","res","genSaltSync","toString","array","self","Uint32Array","Array","prototype","call","random","genSalt","_hash","minor","offset","charAt","substring","parseInt","realSalt","passwordBytes","str","out","dst","b","src","UTF16toUTF8","cp","encodeUTF8","stringToBytes","saltBytes","finish","hashSync","hash","content","hashAsync","comp","catch"],"mappings":"oEAAO,MAQMA,EACX,mEAAmEC,MAAM,IAE9DC,EAAe,EACzB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACzE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAG9BC,EAAS,CACpB,UAAY,WAAY,UAAY,SAAY,WAAY,UAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,YAGjDC,EAAS,CACpB,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,QAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,SAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,UAAY,UAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,SAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,SAAY,WAAY,SAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,UAAY,SAC5D,WAAY,WAAY,WAAY,UAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,QAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,SAAY,WAAY,SAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,SAAY,SAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,SAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,SAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,SAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,UAAY,UAAY,W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"}
1
+ {"version":3,"file":"browser.cjs","sources":["../src/constant.ts","../src/base64.ts","../src/utils.ts","../src/crypt.ts","../src/salt.ts","../src/random/browser.ts","../src/hash.ts","../src/utfx.ts","../src/compare.ts","../src/helpers.ts"],"sourcesContent":["export const BCRYPT_SALT_LEN = 16;\n\nexport const GENSALT_DEFAULT_LOG2_ROUNDS = 10;\n\nexport const BLOWFISH_NUM_ROUNDS = 16;\n\nexport const MAX_EXECUTION_TIME = 100;\n\nexport const BASE64_CODE =\n \"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".split(\"\");\n\nexport const BASE64_INDEX = [\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n -1, -1, -1, -1, -1, -1, -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28,\n 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1,\n];\n\nexport const P_ORIG = [\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,\n 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b,\n];\n\nexport const S_ORIG = [\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,\n 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,\n 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\n 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,\n 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,\n 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,\n 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,\n 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\n 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,\n 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,\n 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,\n 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,\n 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\n 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,\n 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,\n 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,\n 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,\n 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\n 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,\n 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,\n 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,\n 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, 0x4b7a70e9, 0xb5b32944,\n 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,\n 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,\n 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,\n 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, 0x4cdd2086, 0x8470eb26,\n 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,\n 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c,\n 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9, 0x7ca92ff6,\n 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,\n 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f,\n 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,\n 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,\n 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,\n 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa,\n 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,\n 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55,\n 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1,\n 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,\n 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, 0xc6150eba, 0x94e2ea78,\n 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,\n 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,\n 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,\n 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, 0x1521b628, 0x29076170,\n 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,\n 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7,\n 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19, 0x875fa099,\n 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,\n 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263,\n 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,\n 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,\n 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,\n 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7,\n 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,\n 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d,\n 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460,\n 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,\n 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, 0x9e447a2e, 0xc3453484,\n 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,\n 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,\n 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,\n 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a,\n 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,\n 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785,\n 0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900,\n 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,\n 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9,\n 0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,\n 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,\n 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,\n 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9,\n 0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,\n 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f,\n 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e,\n 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,\n 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd,\n 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,\n 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,\n 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,\n 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c,\n 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,\n 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b,\n 0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386,\n 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,\n 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0,\n 0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,\n 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,\n 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,\n 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770,\n 0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,\n 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c,\n 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa,\n 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,\n 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63,\n 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,\n 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,\n 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,\n 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4,\n 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,\n 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,\n 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,\n 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,\n 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\n 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,\n 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,\n 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,\n 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,\n 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\n 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,\n 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,\n 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,\n 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,\n 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\n 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,\n 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,\n 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,\n 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,\n 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\n 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,\n 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,\n 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,\n];\n\nexport const C_ORIG = [\n 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944, 0x6f756274,\n];\n","import { BASE64_CODE, BASE64_INDEX } from \"./constant\";\n\n/**\n * Encodes a byte array to base64 with up to len bytes of input, using the custom bcrypt alphabet.\n *\n * @param byteArray Byte array\n * @param length Maximum input length\n */\nexport const encodeBase64 = (\n byteArray: number[] | Buffer,\n length: number\n): string => {\n if (length <= 0 || length > byteArray.length)\n throw Error(`Illegal len: ${length}`);\n\n let off = 0;\n let c1: number;\n let c2: number;\n const rs: string[] = [];\n\n while (off < length) {\n c1 = byteArray[off++] & 0xff;\n rs.push(BASE64_CODE[(c1 >> 2) & 0x3f]);\n c1 = (c1 & 0x03) << 4;\n if (off >= length) {\n rs.push(BASE64_CODE[c1 & 0x3f]);\n break;\n }\n c2 = byteArray[off++] & 0xff;\n c1 |= (c2 >> 4) & 0x0f;\n rs.push(BASE64_CODE[c1 & 0x3f]);\n c1 = (c2 & 0x0f) << 2;\n if (off >= length) {\n rs.push(BASE64_CODE[c1 & 0x3f]);\n break;\n }\n c2 = byteArray[off++] & 0xff;\n c1 |= (c2 >> 6) & 0x03;\n rs.push(BASE64_CODE[c1 & 0x3f]);\n rs.push(BASE64_CODE[c2 & 0x3f]);\n }\n\n return rs.join(\"\");\n};\n\n/**\n * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.\n *\n * @param contentString String to decode\n * @param length Maximum output length\n */\nexport const decodeBase64 = (\n contentString: string,\n length: number\n): number[] => {\n if (length <= 0) throw Error(`Illegal len: ${length}`);\n\n const stringLength = contentString.length;\n let off = 0;\n let olen = 0;\n let c1: number;\n let c2: number;\n let c3: number;\n let c4: number;\n let o: number;\n let code: number;\n const rs: string[] = [];\n\n while (off < stringLength - 1 && olen < length) {\n code = contentString.charCodeAt(off++);\n c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n code = contentString.charCodeAt(off++);\n c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n\n if (c1 == -1 || c2 == -1) break;\n\n o = (c1 << 2) >>> 0;\n o |= (c2 & 0x30) >> 4;\n rs.push(String.fromCharCode(o));\n\n if (++olen >= length || off >= stringLength) break;\n\n code = contentString.charCodeAt(off++);\n c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n if (c3 == -1) break;\n o = ((c2 & 0x0f) << 4) >>> 0;\n o |= (c3 & 0x3c) >> 2;\n rs.push(String.fromCharCode(o));\n\n if (++olen >= length || off >= stringLength) break;\n\n code = contentString.charCodeAt(off++);\n c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n o = ((c3 & 0x03) << 6) >>> 0;\n o |= c4;\n rs.push(String.fromCharCode(o));\n\n ++olen;\n }\n\n return rs.map((item) => item.charCodeAt(0));\n};\n","import { encodeUTF16toUTF8 } from \"./utfx\";\n\n/**\n * Continues with the callback on the next tick.\n */\nexport const nextTick =\n typeof process !== \"undefined\" &&\n process &&\n typeof process.nextTick === \"function\"\n ? typeof setImmediate === \"function\"\n ? setImmediate\n : // eslint-disable-next-line @typescript-eslint/unbound-method\n process.nextTick\n : setTimeout;\n\n/**\n * Converts a JavaScript string to UTF8 bytes.\n * @param {string} str String\n * @returns {!Array.<number>} UTF8 bytes\n * @inner\n */\n\nexport const stringToBytes = (str: string): number[] => {\n const out: number[] = [];\n let i = 0;\n\n encodeUTF16toUTF8(\n () => (i >= str.length ? null : str.charCodeAt(i++)),\n (b: number) => {\n out.push(b);\n }\n );\n\n return out;\n};\n","import {\n BCRYPT_SALT_LEN,\n BLOWFISH_NUM_ROUNDS,\n MAX_EXECUTION_TIME,\n C_ORIG,\n P_ORIG,\n S_ORIG,\n} from \"./constant\";\nimport { nextTick } from \"./utils\";\n\n// A base64 implementation for the bcrypt algorithm. This is partly non-standard.\n\nconst encipher = (\n lr: number[],\n off: number,\n P: Int32Array | number[],\n S: Int32Array | number[]\n): number[] => {\n // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt\n let n: number;\n let l = lr[off];\n let r = lr[off + 1];\n\n l ^= P[0];\n\n //The following is an unrolled version of the above loop.\n //Iteration 0\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[1];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[2];\n //Iteration 1\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[3];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[4];\n //Iteration 2\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[5];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[6];\n //Iteration 3\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[7];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[8];\n //Iteration 4\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[9];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[10];\n //Iteration 5\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[11];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[12];\n //Iteration 6\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[13];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[14];\n //Iteration 7\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[15];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[16];\n\n lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];\n lr[off + 1] = l;\n\n return lr;\n};\n\nconst streamtoword = (\n data: number[],\n offp: number\n): { key: number; offp: number } => {\n let word = 0;\n\n for (let i = 0; i < 4; ++i)\n (word = (word << 8) | (data[offp] & 0xff)),\n (offp = (offp + 1) % data.length);\n\n return { key: word, offp: offp };\n};\n\nconst key = (\n key: number[],\n P: Int32Array | number[],\n S: Int32Array | number[]\n): void => {\n const pLength = P.length;\n const sLength = S.length;\n let offp = 0;\n let lr = [0, 0];\n let sw: {\n key: number;\n offp: number;\n };\n\n for (let i = 0; i < pLength; i++)\n (sw = streamtoword(key, offp)), (offp = sw.offp), (P[i] = P[i] ^ sw.key);\n\n for (let i = 0; i < pLength; i += 2)\n (lr = encipher(lr, 0, P, S)), (P[i] = lr[0]), (P[i + 1] = lr[1]);\n\n for (let i = 0; i < sLength; i += 2)\n (lr = encipher(lr, 0, P, S)), (S[i] = lr[0]), (S[i + 1] = lr[1]);\n};\n\n/**\n * Expensive key schedule Blowfish.\n */\nconst ekskey = (\n data: number[],\n key: number[],\n P: Int32Array | number[],\n S: Int32Array | number[]\n): void => {\n const pLength = P.length;\n const sLength = S.length;\n let offp = 0;\n let lr = [0, 0];\n let sw: {\n key: number;\n offp: number;\n };\n\n for (let i = 0; i < pLength; i++)\n (sw = streamtoword(key, offp)), (offp = sw.offp), (P[i] = P[i] ^ sw.key);\n\n offp = 0;\n\n for (let i = 0; i < pLength; i += 2)\n (sw = streamtoword(data, offp)),\n (offp = sw.offp),\n (lr[0] ^= sw.key),\n (sw = streamtoword(data, offp)),\n (offp = sw.offp),\n (lr[1] ^= sw.key),\n (lr = encipher(lr, 0, P, S)),\n (P[i] = lr[0]),\n (P[i + 1] = lr[1]);\n\n for (let i = 0; i < sLength; i += 2)\n (sw = streamtoword(data, offp)),\n (offp = sw.offp),\n (lr[0] ^= sw.key),\n (sw = streamtoword(data, offp)),\n (offp = sw.offp),\n (lr[1] ^= sw.key),\n (lr = encipher(lr, 0, P, S)),\n (S[i] = lr[0]),\n (S[i + 1] = lr[1]);\n};\n\n/**\n * Internaly crypts a string.\n *\n * @param bytes Bytes to crypt\n * @param salt Salt bytes to use\n * @param rounds Number of rounds\n * @param progressCallback Callback called with the current progress\n */\nexport const crypt = (\n bytes: number[],\n salt: number[],\n rounds: number,\n sync: boolean,\n progressCallback?: (progress: number) => void\n): Promise<number[]> | number[] => {\n const cdata = C_ORIG.slice();\n const cLength = cdata.length;\n\n // Validate\n if (rounds < 4 || rounds > 31) {\n const err = new Error(`Illegal number of rounds (4-31): ${rounds}`);\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n\n if (salt.length !== BCRYPT_SALT_LEN) {\n const err = new Error(\n `Illegal salt length: ${salt.length} != ${BCRYPT_SALT_LEN}`\n );\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n\n rounds = (1 << rounds) >>> 0;\n\n let P: Int32Array | number[];\n let S: Int32Array | number[];\n let i = 0;\n let j: number;\n\n //Use typed arrays when available - huge speedup!\n if (Int32Array) {\n P = new Int32Array(P_ORIG);\n S = new Int32Array(S_ORIG);\n } else {\n P = P_ORIG.slice();\n S = S_ORIG.slice();\n }\n\n ekskey(salt, bytes, P, S);\n\n /**\n * Calcualtes the next round.\n */\n const next = (): Promise<number[] | undefined> | number[] | void => {\n if (progressCallback) progressCallback(i / rounds);\n\n if (i < rounds) {\n const start = Date.now();\n\n for (; i < rounds; ) {\n i = i + 1;\n key(bytes, P, S);\n key(salt, P, S);\n if (Date.now() - start > MAX_EXECUTION_TIME) break;\n }\n } else {\n for (i = 0; i < 64; i++)\n for (j = 0; j < cLength >> 1; j++) encipher(cdata, j << 1, P, S);\n const ret: number[] = [];\n\n for (i = 0; i < cLength; i++)\n ret.push(((cdata[i] >> 24) & 0xff) >>> 0),\n ret.push(((cdata[i] >> 16) & 0xff) >>> 0),\n ret.push(((cdata[i] >> 8) & 0xff) >>> 0),\n ret.push((cdata[i] & 0xff) >>> 0);\n\n if (sync === false) return Promise.resolve(ret);\n\n return ret;\n }\n\n if (sync === false)\n return new Promise((resolve) =>\n nextTick(() => {\n void (next() as Promise<number[] | undefined>).then(resolve);\n })\n );\n };\n\n if (sync === false) return next() as Promise<number[]>;\n else {\n let res;\n\n // eslint-disable-next-line no-constant-condition\n while (true)\n if (typeof (res = next()) !== \"undefined\") return (res as number[]) || [];\n }\n};\n","import { BCRYPT_SALT_LEN, GENSALT_DEFAULT_LOG2_ROUNDS } from \"./constant\";\nimport { encodeBase64 } from \"./base64\";\nimport { nextTick } from \"./utils\";\nimport { random } from \"@random\";\n\n/**\n * Synchronously generates a salt.\n *\n * @param rounds Number of rounds to use, defaults to 10 if omitted\n * @returns Resulting salt\n * @throws {Error} If a random fallback is required but not set\n */\nexport const genSaltSync = (rounds = GENSALT_DEFAULT_LOG2_ROUNDS): string => {\n if (typeof rounds !== \"number\")\n throw Error(\"Illegal arguments: \" + typeof rounds);\n if (rounds < 4) rounds = 4;\n else if (rounds > 31) rounds = 31;\n\n const salt = [];\n\n salt.push(\"$2a$\");\n if (rounds < 10) salt.push(\"0\");\n salt.push(rounds.toString());\n salt.push(\"$\");\n salt.push(encodeBase64(random(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw\n\n return salt.join(\"\");\n};\n\n/**\n * Asynchronously generates a salt.\n *\n * @param rounds Number of rounds to use, defaults to 10 if omitted\n */\nexport const genSalt = (\n rounds = GENSALT_DEFAULT_LOG2_ROUNDS\n): Promise<string> => {\n if (typeof rounds !== \"number\")\n throw Error(\"illegal arguments: \" + typeof rounds);\n\n return new Promise((resolve, reject) =>\n nextTick(() => {\n // Pretty thin, but salting is fast enough\n try {\n resolve(genSaltSync(rounds));\n } catch (err) {\n reject(err);\n }\n })\n );\n};\n","/**\n * Generates cryptographically secure random bytes.\n *\n * @param length Bytes length\n * @returns Random bytes\n * @throws {Error} If no random implementation is available\n */\nexport const random = (length: number): number[] => {\n try {\n let array: Uint32Array;\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (self[\"crypto\"] || self[\"msCrypto\"])[\"getRandomValues\"](\n (array = new Uint32Array(length))\n );\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return Array.prototype.slice.call(array);\n } catch (err) {\n throw Error(\"WebCryptoAPI is not available\");\n }\n};\n","import { encodeBase64, decodeBase64 } from \"./base64\";\nimport {\n BCRYPT_SALT_LEN,\n C_ORIG,\n GENSALT_DEFAULT_LOG2_ROUNDS,\n} from \"./constant\";\nimport { crypt } from \"./crypt\";\nimport { genSalt, genSaltSync } from \"./salt\";\nimport { stringToBytes } from \"./utils\";\n\n/**\n * Internally hashes a string.\n *\n * @param contentString String to hash\n * @param salt Salt to use, actually never null\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash. If omitted,\n * hashing is performed synchronously.\n * @param {function(number)=} progressCallback Callback called with the current progress\n * @returns {string|undefined} Resulting hash if callback has been omitted, otherwise `undefined`\n * @inner\n */\nfunction _hash(\n contentString: string,\n salt: string,\n sync: boolean,\n progressCallback?: (progress: number) => void\n): Promise<string> | string {\n if (typeof contentString !== \"string\" || typeof salt !== \"string\") {\n const err = new Error(\"Invalid string / salt: Not a string\");\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n\n // Validate the salt\n let minor: string;\n let offset: number;\n\n if (salt.charAt(0) !== \"$\" || salt.charAt(1) !== \"2\") {\n const err = new Error(\"Invalid salt version: \" + salt.substring(0, 2));\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n if (salt.charAt(2) === \"$\") (minor = String.fromCharCode(0)), (offset = 3);\n else {\n minor = salt.charAt(2);\n if (\n (minor !== \"a\" && minor !== \"b\" && minor !== \"y\") ||\n salt.charAt(3) !== \"$\"\n ) {\n const err = Error(\"Invalid salt revision: \" + salt.substring(2, 4));\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n offset = 4;\n }\n\n // Extract number of rounds\n if (salt.charAt(offset + 2) > \"$\") {\n const err = new Error(\"Missing salt rounds\");\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n\n const r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,\n r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),\n rounds = r1 + r2,\n realSalt = salt.substring(offset + 3, offset + 25);\n\n contentString += minor >= \"a\" ? \"\\x00\" : \"\";\n\n const passwordBytes = stringToBytes(contentString),\n saltBytes = decodeBase64(realSalt, BCRYPT_SALT_LEN);\n\n /**\n * Finishes hashing.\n * @param bytes Byte array\n */\n const finish = (bytes: number[]): string => {\n const res = [];\n\n res.push(\"$2\");\n if (minor >= \"a\") res.push(minor);\n res.push(\"$\");\n if (rounds < 10) res.push(\"0\");\n res.push(rounds.toString());\n res.push(\"$\");\n res.push(encodeBase64(saltBytes, saltBytes.length));\n res.push(encodeBase64(bytes, C_ORIG.length * 4 - 1));\n\n return res.join(\"\");\n };\n\n // Sync\n if (sync === false)\n return (\n crypt(\n passwordBytes,\n saltBytes,\n rounds,\n false,\n progressCallback\n ) as Promise<number[]>\n ).then((bytes) => finish(bytes));\n\n return finish(\n crypt(passwordBytes, saltBytes, rounds, true, progressCallback) as number[]\n );\n}\n\n/**\n * Synchronously generates a hash for the given string.\n *\n * @param contentString String to hash\n * @param salt Salt length to generate or salt to use, default to 10\n * @returns Resulting hash\n */\nexport const hashSync = (\n contentString: string,\n salt: string | number = GENSALT_DEFAULT_LOG2_ROUNDS\n): string => {\n if (typeof salt === \"number\") salt = genSaltSync(salt);\n if (typeof contentString !== \"string\" || typeof salt !== \"string\")\n throw Error(\n \"Illegal arguments: \" + typeof contentString + \", \" + typeof salt\n );\n\n return _hash(contentString, salt, true) as string;\n};\n\n/**\n * Asynchronously generates a hash for the given string.\n *\n * @param contentString String to hash\n * @param salt Salt length to generate or salt to use\n * @param progressCallback Callback successively called with the percentage of rounds completed\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n */\nexport const hash = function (\n contentString: string,\n salt: number | string,\n progressCallback?: (progress: number) => void\n): Promise<string> {\n if (typeof contentString === \"string\" && typeof salt === \"number\")\n return genSalt(salt).then(\n (salt) =>\n _hash(contentString, salt, false, progressCallback) as Promise<string>\n );\n\n if (typeof contentString === \"string\" && typeof salt === \"string\")\n return _hash(\n contentString,\n salt,\n false,\n progressCallback\n ) as Promise<string>;\n\n return Promise.reject(\n new Error(`Illegal arguments: ${typeof contentString}, ${typeof salt}`)\n );\n};\n","/**\n * utfx-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\n * Released under the Apache License, Version 2.0\n * see: https://github.com/dcodeIO/utfx for details\n */\n\nexport const MAX_CODEPOINT = 0x10ffff;\n\n/**\n * Encodes UTF8 code points to UTF8 bytes.\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\n * respectively `null` if there are no more code points left or a single numeric code point.\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\n */\nexport const encodeUTF8 = (\n src: number | (() => number | null),\n dst: (byte: number) => void\n): void => {\n let cp = null;\n\n if (typeof src === \"number\") (cp = src), (src = (): null => null);\n\n while (cp !== null || (cp = src()) !== null) {\n if (cp < 0x80) dst(cp & 0x7f);\n else if (cp < 0x800)\n dst(((cp >> 6) & 0x1f) | 0xc0), dst((cp & 0x3f) | 0x80);\n else if (cp < 0x10000)\n dst(((cp >> 12) & 0x0f) | 0xe0),\n dst(((cp >> 6) & 0x3f) | 0x80),\n dst((cp & 0x3f) | 0x80);\n else\n dst(((cp >> 18) & 0x07) | 0xf0),\n dst(((cp >> 12) & 0x3f) | 0x80),\n dst(((cp >> 6) & 0x3f) | 0x80),\n dst((cp & 0x3f) | 0x80);\n cp = null;\n }\n};\n\n/**\n * Decodes UTF8 bytes to UTF8 code points.\n *\n * @param src Bytes source as a function returning the next byte respectively `null` if there\n * are no more bytes left.\n * @param dst Code points destination as a function successively called with each decoded code point.\n * @throws {RangeError} If a starting byte is invalid in UTF8\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\n * remaining bytes.\n */\nexport const decodeUTF8 = (\n src: () => number | null,\n dst: (byte: number) => void\n): void => {\n let a: number | null;\n let b: number | null;\n let c: number | null;\n let d: number | null;\n\n const fail = (b: (number | null)[]): void => {\n b = b.slice(0, b.indexOf(null));\n\n const err = Error(b.toString());\n\n err.name = \"TruncatedError\";\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n err[\"bytes\"] = b;\n\n throw err;\n };\n\n while ((a = src()) !== null) {\n if ((a & 0x80) === 0) dst(a);\n else if ((a & 0xe0) === 0xc0)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (b = src()) === null && fail([a, b]), dst(((a & 0x1f) << 6) | (b & 0x3f));\n else if ((a & 0xf0) === 0xe0)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ((b = src()) === null || (c = src()) === null) && fail([a, b, c]),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dst(((a & 0x0f) << 12) | ((b & 0x3f) << 6) | (c & 0x3f));\n else if ((a & 0xf8) === 0xf0)\n ((b = src()) === null || (c = src()) === null || (d = src()) === null) &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n fail([a, b, c, d]),\n dst(\n ((a & 0x07) << 18) |\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ((b & 0x3f) << 12) |\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ((c & 0x3f) << 6) |\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (d & 0x3f)\n );\n else throw RangeError(`Illegal starting byte: ${a}`);\n }\n};\n\n/**\n * Converts UTF16 characters to UTF8 code points.\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\n * `null` if there are no more characters left.\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\n * point.\n */\nexport const UTF16toUTF8 = (\n src: () => number | null,\n dst: (byte: number) => void\n): void => {\n let c1: number | null;\n let c2 = null;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if ((c1 = c2 !== null ? c2 : src()) === null) break;\n if (c1 >= 0xd800 && c1 <= 0xdfff) {\n if ((c2 = src()) !== null) {\n if (c2 >= 0xdc00 && c2 <= 0xdfff) {\n dst((c1 - 0xd800) * 0x400 + c2 - 0xdc00 + 0x10000);\n c2 = null;\n continue;\n }\n }\n }\n dst(c1);\n }\n if (c2 !== null) dst(c2);\n};\n\n/**\n * Converts UTF8 code points to UTF16 characters.\n *\n * @param src Code points source, either as a function returning the next code point\n * respectively `null` if there are no more code points left or a single numeric code point.\n * @param dst Characters destination as a function successively called with each converted char code.\n * @throws {RangeError} If a code point is out of range\n */\nexport const UTF8toUTF16 = (\n src: (() => number | null) | number,\n dst: (byte: number) => void\n): void => {\n let cp = null;\n\n if (typeof src === \"number\") (cp = src), (src = (): null => null);\n\n while (cp !== null || (cp = src()) !== null) {\n if (cp <= 0xffff) dst(cp);\n else (cp -= 0x10000), dst((cp >> 10) + 0xd800), dst((cp % 0x400) + 0xdc00);\n cp = null;\n }\n};\n\n/**\n * Converts and encodes UTF16 characters to UTF8 bytes.\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\n * if there are no more characters left.\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\n */\nexport const encodeUTF16toUTF8 = (\n src: () => number | null,\n dst: (byte: number) => void\n): void => {\n UTF16toUTF8(src, function (cp) {\n encodeUTF8(cp, dst);\n });\n};\n\n/**\n * Decodes and converts UTF8 bytes to UTF16 characters.\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\n * are no more bytes left.\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\n * @throws {RangeError} If a starting byte is invalid in UTF8\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\n */\nexport const decodeUTF8toUTF16 = (\n src: () => number | null,\n dst: (byte: number) => void\n): void => {\n decodeUTF8(src, (cp) => {\n UTF8toUTF16(cp, dst);\n });\n};\n\n/**\n * Calculates the byte length of an UTF8 code point.\n *\n * @param codePoint UTF8 code point\n * @returns Byte length\n */\nexport const calculateCodePoint = (codePoint: number): number =>\n codePoint < 0x80 ? 1 : codePoint < 0x800 ? 2 : codePoint < 0x10000 ? 3 : 4;\n\n/**\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\n * @param src Code points source as a function returning the next code point respectively\n * `null` if there are no more code points left.\n * @returns The number of UTF8 bytes required\n */\nexport const calculateUTF8 = (src: () => number | null): number => {\n let cp: number | null;\n let l = 0;\n\n while ((cp = src()) !== null) l += calculateCodePoint(cp);\n\n return l;\n};\n\n/**\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\n * @param src Characters source as a function returning the next char code respectively\n * `null` if there are no more characters left.\n * @returns The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\n */\nexport const calculateUTF16asUTF8 = (src: () => number | null): number[] => {\n let n = 0,\n l = 0;\n\n UTF16toUTF8(src, function (cp) {\n ++n;\n l += calculateCodePoint(cp);\n });\n\n return [n, l];\n};\n","import { hash as hashAsync, hashSync } from \"./hash\";\nimport { nextTick } from \"./utils\";\n\n/**\n * Synchronously tests a string against a hash.\n *\n * @param content String to compare\n * @param hash Hash to test against\n */\nexport const compareSync = (content: string, hash: string): boolean => {\n if (typeof content !== \"string\" || typeof hash !== \"string\")\n throw Error(\"Illegal arguments: \" + typeof content + \", \" + typeof hash);\n if (hash.length !== 60) return false;\n\n return hashSync(content, hash.substring(0, hash.length - 31)) === hash;\n};\n\n/**\n * Asynchronously compares the given data against the given hash.\n *\n * @param content Data to compare\n * @param hash Data to be compared to\n * @param progressCallback Callback successively called with the percentage of rounds completed\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n */\nexport const compare = (\n content: string,\n hash: string,\n progressCallback?: (percent: number) => void\n): Promise<boolean> =>\n new Promise((resolve, reject) => {\n if (typeof content !== \"string\" || typeof hash !== \"string\") {\n nextTick(() =>\n reject(\n new Error(`Illegal arguments: ${typeof content}, ${typeof hash}`)\n )\n );\n\n return;\n }\n\n if (hash.length !== 60) {\n nextTick(() => reject(false));\n\n return;\n }\n\n hashAsync(content, hash.substring(0, 29), progressCallback)\n .then((comp) => resolve(comp === hash))\n .catch((err) => reject(err));\n });\n","/**\n * Gets the number of rounds used to encrypt the specified hash.\n *\n * @param hash Hash to extract the used number of rounds from\n * @returns Number of rounds used\n * @throws {Error} If `hash` is not a string\n */\nexport const getRounds = (hash: string): number => {\n if (typeof hash !== \"string\")\n throw new Error(`Illegal arguments: ${typeof hash}`);\n\n return parseInt(hash.split(\"$\")[2], 10);\n};\n\n/**\n * Gets the salt portion from a hash. Does not validate the hash.\n *\n * @param hash Hash to extract the salt from\n * @returns Extracted salt part\n * @throws {Error} If `hash` is not a string or otherwise invalid\n */\nexport const getSalt = (hash: string): string => {\n if (typeof hash !== \"string\")\n throw new Error(`Illegal arguments: ${typeof hash}`);\n\n if (hash.length !== 60)\n throw new Error(`Illegal hash length: ${hash.length} != 60`);\n\n return hash.substring(0, 29);\n};\n"],"names":["BASE64_CODE","split","BASE64_INDEX","P_ORIG","S_ORIG","C_ORIG","encodeBase64","byteArray","length","Error","c1","c2","off","rs","push","join","decodeBase64","contentString","stringLength","c3","c4","o","code","olen","charCodeAt","String","fromCharCode","map","item","nextTick","process","setImmediate","setTimeout","encipher","lr","P","S","n","l","r","BLOWFISH_NUM_ROUNDS","streamtoword","data","offp","word","i","key","pLength","sLength","sw","crypt","bytes","salt","rounds","sync","progressCallback","cdata","slice","cLength","err","Promise","reject","j","Int32Array","ekskey","next","ret","resolve","start","Date","now","then","res","genSaltSync","toString","array","self","Uint32Array","Array","prototype","call","random","genSalt","_hash","minor","offset","charAt","substring","parseInt","realSalt","passwordBytes","str","out","dst","b","src","UTF16toUTF8","cp","encodeUTF8","stringToBytes","saltBytes","finish","hashSync","hash","content","hashAsync","comp","catch"],"mappings":"aAAO,MAQMA,EACX,mEAAmEC,MAAM,IAE9DC,EAAe,EACzB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IACzE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAG9BC,EAAS,CACpB,UAAY,WAAY,UAAY,SAAY,WAAY,UAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,YAGjDC,EAAS,CACpB,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,QAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,SAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,UAAY,UAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,SAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,SAAY,WAAY,SAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,UAAY,SAC5D,WAAY,WAAY,WAAY,UAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,QAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,SAAY,WAAY,SAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,SAAY,SAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,SAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,SAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,SAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,UAAY,UAAY,WA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"}