Completed
Push — develop ( a912a9...fdc9d2 )
by Zack
47:45 queued 27:44
created
vendor/paragonie/sodium_compat/src/Core32/X25519.php 1 patch
Indentation   +334 added lines, -334 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_X25519', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,337 +9,337 @@  discard block
 block discarded – undo
9 9
  */
10 10
 abstract class ParagonIE_Sodium_Core32_X25519 extends ParagonIE_Sodium_Core32_Curve25519
11 11
 {
12
-    /**
13
-     * Alters the objects passed to this method in place.
14
-     *
15
-     * @internal You should not use this directly from another application
16
-     *
17
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
18
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
19
-     * @param int $b
20
-     * @return void
21
-     * @throws SodiumException
22
-     * @throws TypeError
23
-     * @psalm-suppress MixedMethodCall
24
-     */
25
-    public static function fe_cswap(
26
-        ParagonIE_Sodium_Core32_Curve25519_Fe $f,
27
-        ParagonIE_Sodium_Core32_Curve25519_Fe $g,
28
-        $b = 0
29
-    ) {
30
-        $f0 = (int) $f[0]->toInt();
31
-        $f1 = (int) $f[1]->toInt();
32
-        $f2 = (int) $f[2]->toInt();
33
-        $f3 = (int) $f[3]->toInt();
34
-        $f4 = (int) $f[4]->toInt();
35
-        $f5 = (int) $f[5]->toInt();
36
-        $f6 = (int) $f[6]->toInt();
37
-        $f7 = (int) $f[7]->toInt();
38
-        $f8 = (int) $f[8]->toInt();
39
-        $f9 = (int) $f[9]->toInt();
40
-        $g0 = (int) $g[0]->toInt();
41
-        $g1 = (int) $g[1]->toInt();
42
-        $g2 = (int) $g[2]->toInt();
43
-        $g3 = (int) $g[3]->toInt();
44
-        $g4 = (int) $g[4]->toInt();
45
-        $g5 = (int) $g[5]->toInt();
46
-        $g6 = (int) $g[6]->toInt();
47
-        $g7 = (int) $g[7]->toInt();
48
-        $g8 = (int) $g[8]->toInt();
49
-        $g9 = (int) $g[9]->toInt();
50
-        $b = -$b;
51
-        /** @var int $x0 */
52
-        $x0 = ($f0 ^ $g0) & $b;
53
-        /** @var int $x1 */
54
-        $x1 = ($f1 ^ $g1) & $b;
55
-        /** @var int $x2 */
56
-        $x2 = ($f2 ^ $g2) & $b;
57
-        /** @var int $x3 */
58
-        $x3 = ($f3 ^ $g3) & $b;
59
-        /** @var int $x4 */
60
-        $x4 = ($f4 ^ $g4) & $b;
61
-        /** @var int $x5 */
62
-        $x5 = ($f5 ^ $g5) & $b;
63
-        /** @var int $x6 */
64
-        $x6 = ($f6 ^ $g6) & $b;
65
-        /** @var int $x7 */
66
-        $x7 = ($f7 ^ $g7) & $b;
67
-        /** @var int $x8 */
68
-        $x8 = ($f8 ^ $g8) & $b;
69
-        /** @var int $x9 */
70
-        $x9 = ($f9 ^ $g9) & $b;
71
-        $f[0] = ParagonIE_Sodium_Core32_Int32::fromInt($f0 ^ $x0);
72
-        $f[1] = ParagonIE_Sodium_Core32_Int32::fromInt($f1 ^ $x1);
73
-        $f[2] = ParagonIE_Sodium_Core32_Int32::fromInt($f2 ^ $x2);
74
-        $f[3] = ParagonIE_Sodium_Core32_Int32::fromInt($f3 ^ $x3);
75
-        $f[4] = ParagonIE_Sodium_Core32_Int32::fromInt($f4 ^ $x4);
76
-        $f[5] = ParagonIE_Sodium_Core32_Int32::fromInt($f5 ^ $x5);
77
-        $f[6] = ParagonIE_Sodium_Core32_Int32::fromInt($f6 ^ $x6);
78
-        $f[7] = ParagonIE_Sodium_Core32_Int32::fromInt($f7 ^ $x7);
79
-        $f[8] = ParagonIE_Sodium_Core32_Int32::fromInt($f8 ^ $x8);
80
-        $f[9] = ParagonIE_Sodium_Core32_Int32::fromInt($f9 ^ $x9);
81
-        $g[0] = ParagonIE_Sodium_Core32_Int32::fromInt($g0 ^ $x0);
82
-        $g[1] = ParagonIE_Sodium_Core32_Int32::fromInt($g1 ^ $x1);
83
-        $g[2] = ParagonIE_Sodium_Core32_Int32::fromInt($g2 ^ $x2);
84
-        $g[3] = ParagonIE_Sodium_Core32_Int32::fromInt($g3 ^ $x3);
85
-        $g[4] = ParagonIE_Sodium_Core32_Int32::fromInt($g4 ^ $x4);
86
-        $g[5] = ParagonIE_Sodium_Core32_Int32::fromInt($g5 ^ $x5);
87
-        $g[6] = ParagonIE_Sodium_Core32_Int32::fromInt($g6 ^ $x6);
88
-        $g[7] = ParagonIE_Sodium_Core32_Int32::fromInt($g7 ^ $x7);
89
-        $g[8] = ParagonIE_Sodium_Core32_Int32::fromInt($g8 ^ $x8);
90
-        $g[9] = ParagonIE_Sodium_Core32_Int32::fromInt($g9 ^ $x9);
91
-    }
92
-
93
-    /**
94
-     * @internal You should not use this directly from another application
95
-     *
96
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
97
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
98
-     * @throws SodiumException
99
-     * @throws TypeError
100
-     * @psalm-suppress MixedAssignment
101
-     * @psalm-suppress MixedMethodCall
102
-     */
103
-    public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
104
-    {
105
-        /** @var array<int, ParagonIE_Sodium_Core32_Int64> $h */
106
-        $h = array();
107
-        for ($i = 0; $i < 10; ++$i) {
108
-            $h[$i] = $f[$i]->toInt64()->mulInt(121666, 17);
109
-        }
110
-
111
-        $carry9 = $h[9]->addInt(1 << 24)->shiftRight(25);
112
-        $h[0] = $h[0]->addInt64($carry9->mulInt(19, 5));
113
-        $h[9] = $h[9]->subInt64($carry9->shiftLeft(25));
114
-
115
-        $carry1 = $h[1]->addInt(1 << 24)->shiftRight(25);
116
-        $h[2] = $h[2]->addInt64($carry1);
117
-        $h[1] = $h[1]->subInt64($carry1->shiftLeft(25));
118
-
119
-        $carry3 = $h[3]->addInt(1 << 24)->shiftRight(25);
120
-        $h[4] = $h[4]->addInt64($carry3);
121
-        $h[3] = $h[3]->subInt64($carry3->shiftLeft(25));
122
-
123
-        $carry5 = $h[5]->addInt(1 << 24)->shiftRight(25);
124
-        $h[6] = $h[6]->addInt64($carry5);
125
-        $h[5] = $h[5]->subInt64($carry5->shiftLeft(25));
126
-
127
-        $carry7 = $h[7]->addInt(1 << 24)->shiftRight(25);
128
-        $h[8] = $h[8]->addInt64($carry7);
129
-        $h[7] = $h[7]->subInt64($carry7->shiftLeft(25));
130
-
131
-        $carry0 = $h[0]->addInt(1 << 25)->shiftRight(26);
132
-        $h[1] = $h[1]->addInt64($carry0);
133
-        $h[0] = $h[0]->subInt64($carry0->shiftLeft(26));
134
-
135
-        $carry2 = $h[2]->addInt(1 << 25)->shiftRight(26);
136
-        $h[3] = $h[3]->addInt64($carry2);
137
-        $h[2] = $h[2]->subInt64($carry2->shiftLeft(26));
138
-
139
-        $carry4 = $h[4]->addInt(1 << 25)->shiftRight(26);
140
-        $h[5] = $h[5]->addInt64($carry4);
141
-        $h[4] = $h[4]->subInt64($carry4->shiftLeft(26));
142
-
143
-        $carry6 = $h[6]->addInt(1 << 25)->shiftRight(26);
144
-        $h[7] = $h[7]->addInt64($carry6);
145
-        $h[6] = $h[6]->subInt64($carry6->shiftLeft(26));
146
-
147
-        $carry8 = $h[8]->addInt(1 << 25)->shiftRight(26);
148
-        $h[9] = $h[9]->addInt64($carry8);
149
-        $h[8] = $h[8]->subInt64($carry8->shiftLeft(26));
150
-
151
-        for ($i = 0; $i < 10; ++$i) {
152
-            $h[$i] = $h[$i]->toInt32();
153
-        }
154
-        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h2 */
155
-        $h2 = $h;
156
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h2);
157
-    }
158
-
159
-    /**
160
-     * @internal You should not use this directly from another application
161
-     *
162
-     * Inline comments preceded by # are from libsodium's ref10 code.
163
-     *
164
-     * @param string $n
165
-     * @param string $p
166
-     * @return string
167
-     * @throws SodiumException
168
-     * @throws TypeError
169
-     */
170
-    public static function crypto_scalarmult_curve25519_ref10($n, $p)
171
-    {
172
-        # for (i = 0;i < 32;++i) e[i] = n[i];
173
-        $e = '' . $n;
174
-        # e[0] &= 248;
175
-        $e[0] = self::intToChr(
176
-            self::chrToInt($e[0]) & 248
177
-        );
178
-        # e[31] &= 127;
179
-        # e[31] |= 64;
180
-        $e[31] = self::intToChr(
181
-            (self::chrToInt($e[31]) & 127) | 64
182
-        );
183
-        # fe_frombytes(x1,p);
184
-        $x1 = self::fe_frombytes($p);
185
-        # fe_1(x2);
186
-        $x2 = self::fe_1();
187
-        # fe_0(z2);
188
-        $z2 = self::fe_0();
189
-        # fe_copy(x3,x1);
190
-        $x3 = self::fe_copy($x1);
191
-        # fe_1(z3);
192
-        $z3 = self::fe_1();
193
-
194
-        # swap = 0;
195
-        /** @var int $swap */
196
-        $swap = 0;
197
-
198
-        # for (pos = 254;pos >= 0;--pos) {
199
-        for ($pos = 254; $pos >= 0; --$pos) {
200
-            # b = e[pos / 8] >> (pos & 7);
201
-            /** @var int $b */
202
-            $b = self::chrToInt(
203
-                    $e[(int) floor($pos / 8)]
204
-                ) >> ($pos & 7);
205
-            # b &= 1;
206
-            $b &= 1;
207
-
208
-            # swap ^= b;
209
-            $swap ^= $b;
210
-
211
-            # fe_cswap(x2,x3,swap);
212
-            self::fe_cswap($x2, $x3, $swap);
213
-
214
-            # fe_cswap(z2,z3,swap);
215
-            self::fe_cswap($z2, $z3, $swap);
216
-
217
-            # swap = b;
218
-            /** @var int $swap */
219
-            $swap = $b;
220
-
221
-            # fe_sub(tmp0,x3,z3);
222
-            $tmp0 = self::fe_sub($x3, $z3);
223
-
224
-            # fe_sub(tmp1,x2,z2);
225
-            $tmp1 = self::fe_sub($x2, $z2);
226
-
227
-            # fe_add(x2,x2,z2);
228
-            $x2 = self::fe_add($x2, $z2);
229
-
230
-            # fe_add(z2,x3,z3);
231
-            $z2 = self::fe_add($x3, $z3);
232
-
233
-            # fe_mul(z3,tmp0,x2);
234
-            $z3 = self::fe_mul($tmp0, $x2);
235
-
236
-            # fe_mul(z2,z2,tmp1);
237
-            $z2 = self::fe_mul($z2, $tmp1);
238
-
239
-            # fe_sq(tmp0,tmp1);
240
-            $tmp0 = self::fe_sq($tmp1);
241
-
242
-            # fe_sq(tmp1,x2);
243
-            $tmp1 = self::fe_sq($x2);
244
-
245
-            # fe_add(x3,z3,z2);
246
-            $x3 = self::fe_add($z3, $z2);
247
-
248
-            # fe_sub(z2,z3,z2);
249
-            $z2 = self::fe_sub($z3, $z2);
250
-
251
-            # fe_mul(x2,tmp1,tmp0);
252
-            $x2 = self::fe_mul($tmp1, $tmp0);
253
-
254
-            # fe_sub(tmp1,tmp1,tmp0);
255
-            $tmp1 = self::fe_sub($tmp1, $tmp0);
256
-
257
-            # fe_sq(z2,z2);
258
-            $z2 = self::fe_sq($z2);
259
-
260
-            # fe_mul121666(z3,tmp1);
261
-            $z3 = self::fe_mul121666($tmp1);
262
-
263
-            # fe_sq(x3,x3);
264
-            $x3 = self::fe_sq($x3);
265
-
266
-            # fe_add(tmp0,tmp0,z3);
267
-            $tmp0 = self::fe_add($tmp0, $z3);
268
-
269
-            # fe_mul(z3,x1,z2);
270
-            $z3 = self::fe_mul($x1, $z2);
271
-
272
-            # fe_mul(z2,tmp1,tmp0);
273
-            $z2 = self::fe_mul($tmp1, $tmp0);
274
-        }
275
-
276
-        # fe_cswap(x2,x3,swap);
277
-        self::fe_cswap($x2, $x3, $swap);
278
-
279
-        # fe_cswap(z2,z3,swap);
280
-        self::fe_cswap($z2, $z3, $swap);
281
-
282
-        # fe_invert(z2,z2);
283
-        $z2 = self::fe_invert($z2);
284
-
285
-        # fe_mul(x2,x2,z2);
286
-        $x2 = self::fe_mul($x2, $z2);
287
-        # fe_tobytes(q,x2);
288
-        return (string) self::fe_tobytes($x2);
289
-    }
290
-
291
-    /**
292
-     * @internal You should not use this directly from another application
293
-     *
294
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY
295
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
296
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
297
-     * @throws SodiumException
298
-     * @throws TypeError
299
-     */
300
-    public static function edwards_to_montgomery(
301
-        ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY,
302
-        ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
303
-    ) {
304
-        $tempX = self::fe_add($edwardsZ, $edwardsY);
305
-        $tempZ = self::fe_sub($edwardsZ, $edwardsY);
306
-        $tempZ = self::fe_invert($tempZ);
307
-        return self::fe_mul($tempX, $tempZ);
308
-    }
309
-
310
-    /**
311
-     * @internal You should not use this directly from another application
312
-     *
313
-     * @param string $n
314
-     * @return string
315
-     * @throws SodiumException
316
-     * @throws TypeError
317
-     */
318
-    public static function crypto_scalarmult_curve25519_ref10_base($n)
319
-    {
320
-        # for (i = 0;i < 32;++i) e[i] = n[i];
321
-        $e = '' . $n;
322
-
323
-        # e[0] &= 248;
324
-        $e[0] = self::intToChr(
325
-            self::chrToInt($e[0]) & 248
326
-        );
327
-
328
-        # e[31] &= 127;
329
-        # e[31] |= 64;
330
-        $e[31] = self::intToChr(
331
-            (self::chrToInt($e[31]) & 127) | 64
332
-        );
333
-
334
-        $A = self::ge_scalarmult_base($e);
335
-        if (
336
-            !($A->Y instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
337
-                ||
338
-            !($A->Z instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
339
-        ) {
340
-            throw new TypeError('Null points encountered');
341
-        }
342
-        $pk = self::edwards_to_montgomery($A->Y, $A->Z);
343
-        return self::fe_tobytes($pk);
344
-    }
12
+	/**
13
+	 * Alters the objects passed to this method in place.
14
+	 *
15
+	 * @internal You should not use this directly from another application
16
+	 *
17
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
18
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
19
+	 * @param int $b
20
+	 * @return void
21
+	 * @throws SodiumException
22
+	 * @throws TypeError
23
+	 * @psalm-suppress MixedMethodCall
24
+	 */
25
+	public static function fe_cswap(
26
+		ParagonIE_Sodium_Core32_Curve25519_Fe $f,
27
+		ParagonIE_Sodium_Core32_Curve25519_Fe $g,
28
+		$b = 0
29
+	) {
30
+		$f0 = (int) $f[0]->toInt();
31
+		$f1 = (int) $f[1]->toInt();
32
+		$f2 = (int) $f[2]->toInt();
33
+		$f3 = (int) $f[3]->toInt();
34
+		$f4 = (int) $f[4]->toInt();
35
+		$f5 = (int) $f[5]->toInt();
36
+		$f6 = (int) $f[6]->toInt();
37
+		$f7 = (int) $f[7]->toInt();
38
+		$f8 = (int) $f[8]->toInt();
39
+		$f9 = (int) $f[9]->toInt();
40
+		$g0 = (int) $g[0]->toInt();
41
+		$g1 = (int) $g[1]->toInt();
42
+		$g2 = (int) $g[2]->toInt();
43
+		$g3 = (int) $g[3]->toInt();
44
+		$g4 = (int) $g[4]->toInt();
45
+		$g5 = (int) $g[5]->toInt();
46
+		$g6 = (int) $g[6]->toInt();
47
+		$g7 = (int) $g[7]->toInt();
48
+		$g8 = (int) $g[8]->toInt();
49
+		$g9 = (int) $g[9]->toInt();
50
+		$b = -$b;
51
+		/** @var int $x0 */
52
+		$x0 = ($f0 ^ $g0) & $b;
53
+		/** @var int $x1 */
54
+		$x1 = ($f1 ^ $g1) & $b;
55
+		/** @var int $x2 */
56
+		$x2 = ($f2 ^ $g2) & $b;
57
+		/** @var int $x3 */
58
+		$x3 = ($f3 ^ $g3) & $b;
59
+		/** @var int $x4 */
60
+		$x4 = ($f4 ^ $g4) & $b;
61
+		/** @var int $x5 */
62
+		$x5 = ($f5 ^ $g5) & $b;
63
+		/** @var int $x6 */
64
+		$x6 = ($f6 ^ $g6) & $b;
65
+		/** @var int $x7 */
66
+		$x7 = ($f7 ^ $g7) & $b;
67
+		/** @var int $x8 */
68
+		$x8 = ($f8 ^ $g8) & $b;
69
+		/** @var int $x9 */
70
+		$x9 = ($f9 ^ $g9) & $b;
71
+		$f[0] = ParagonIE_Sodium_Core32_Int32::fromInt($f0 ^ $x0);
72
+		$f[1] = ParagonIE_Sodium_Core32_Int32::fromInt($f1 ^ $x1);
73
+		$f[2] = ParagonIE_Sodium_Core32_Int32::fromInt($f2 ^ $x2);
74
+		$f[3] = ParagonIE_Sodium_Core32_Int32::fromInt($f3 ^ $x3);
75
+		$f[4] = ParagonIE_Sodium_Core32_Int32::fromInt($f4 ^ $x4);
76
+		$f[5] = ParagonIE_Sodium_Core32_Int32::fromInt($f5 ^ $x5);
77
+		$f[6] = ParagonIE_Sodium_Core32_Int32::fromInt($f6 ^ $x6);
78
+		$f[7] = ParagonIE_Sodium_Core32_Int32::fromInt($f7 ^ $x7);
79
+		$f[8] = ParagonIE_Sodium_Core32_Int32::fromInt($f8 ^ $x8);
80
+		$f[9] = ParagonIE_Sodium_Core32_Int32::fromInt($f9 ^ $x9);
81
+		$g[0] = ParagonIE_Sodium_Core32_Int32::fromInt($g0 ^ $x0);
82
+		$g[1] = ParagonIE_Sodium_Core32_Int32::fromInt($g1 ^ $x1);
83
+		$g[2] = ParagonIE_Sodium_Core32_Int32::fromInt($g2 ^ $x2);
84
+		$g[3] = ParagonIE_Sodium_Core32_Int32::fromInt($g3 ^ $x3);
85
+		$g[4] = ParagonIE_Sodium_Core32_Int32::fromInt($g4 ^ $x4);
86
+		$g[5] = ParagonIE_Sodium_Core32_Int32::fromInt($g5 ^ $x5);
87
+		$g[6] = ParagonIE_Sodium_Core32_Int32::fromInt($g6 ^ $x6);
88
+		$g[7] = ParagonIE_Sodium_Core32_Int32::fromInt($g7 ^ $x7);
89
+		$g[8] = ParagonIE_Sodium_Core32_Int32::fromInt($g8 ^ $x8);
90
+		$g[9] = ParagonIE_Sodium_Core32_Int32::fromInt($g9 ^ $x9);
91
+	}
92
+
93
+	/**
94
+	 * @internal You should not use this directly from another application
95
+	 *
96
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
97
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
98
+	 * @throws SodiumException
99
+	 * @throws TypeError
100
+	 * @psalm-suppress MixedAssignment
101
+	 * @psalm-suppress MixedMethodCall
102
+	 */
103
+	public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
104
+	{
105
+		/** @var array<int, ParagonIE_Sodium_Core32_Int64> $h */
106
+		$h = array();
107
+		for ($i = 0; $i < 10; ++$i) {
108
+			$h[$i] = $f[$i]->toInt64()->mulInt(121666, 17);
109
+		}
110
+
111
+		$carry9 = $h[9]->addInt(1 << 24)->shiftRight(25);
112
+		$h[0] = $h[0]->addInt64($carry9->mulInt(19, 5));
113
+		$h[9] = $h[9]->subInt64($carry9->shiftLeft(25));
114
+
115
+		$carry1 = $h[1]->addInt(1 << 24)->shiftRight(25);
116
+		$h[2] = $h[2]->addInt64($carry1);
117
+		$h[1] = $h[1]->subInt64($carry1->shiftLeft(25));
118
+
119
+		$carry3 = $h[3]->addInt(1 << 24)->shiftRight(25);
120
+		$h[4] = $h[4]->addInt64($carry3);
121
+		$h[3] = $h[3]->subInt64($carry3->shiftLeft(25));
122
+
123
+		$carry5 = $h[5]->addInt(1 << 24)->shiftRight(25);
124
+		$h[6] = $h[6]->addInt64($carry5);
125
+		$h[5] = $h[5]->subInt64($carry5->shiftLeft(25));
126
+
127
+		$carry7 = $h[7]->addInt(1 << 24)->shiftRight(25);
128
+		$h[8] = $h[8]->addInt64($carry7);
129
+		$h[7] = $h[7]->subInt64($carry7->shiftLeft(25));
130
+
131
+		$carry0 = $h[0]->addInt(1 << 25)->shiftRight(26);
132
+		$h[1] = $h[1]->addInt64($carry0);
133
+		$h[0] = $h[0]->subInt64($carry0->shiftLeft(26));
134
+
135
+		$carry2 = $h[2]->addInt(1 << 25)->shiftRight(26);
136
+		$h[3] = $h[3]->addInt64($carry2);
137
+		$h[2] = $h[2]->subInt64($carry2->shiftLeft(26));
138
+
139
+		$carry4 = $h[4]->addInt(1 << 25)->shiftRight(26);
140
+		$h[5] = $h[5]->addInt64($carry4);
141
+		$h[4] = $h[4]->subInt64($carry4->shiftLeft(26));
142
+
143
+		$carry6 = $h[6]->addInt(1 << 25)->shiftRight(26);
144
+		$h[7] = $h[7]->addInt64($carry6);
145
+		$h[6] = $h[6]->subInt64($carry6->shiftLeft(26));
146
+
147
+		$carry8 = $h[8]->addInt(1 << 25)->shiftRight(26);
148
+		$h[9] = $h[9]->addInt64($carry8);
149
+		$h[8] = $h[8]->subInt64($carry8->shiftLeft(26));
150
+
151
+		for ($i = 0; $i < 10; ++$i) {
152
+			$h[$i] = $h[$i]->toInt32();
153
+		}
154
+		/** @var array<int, ParagonIE_Sodium_Core32_Int32> $h2 */
155
+		$h2 = $h;
156
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h2);
157
+	}
158
+
159
+	/**
160
+	 * @internal You should not use this directly from another application
161
+	 *
162
+	 * Inline comments preceded by # are from libsodium's ref10 code.
163
+	 *
164
+	 * @param string $n
165
+	 * @param string $p
166
+	 * @return string
167
+	 * @throws SodiumException
168
+	 * @throws TypeError
169
+	 */
170
+	public static function crypto_scalarmult_curve25519_ref10($n, $p)
171
+	{
172
+		# for (i = 0;i < 32;++i) e[i] = n[i];
173
+		$e = '' . $n;
174
+		# e[0] &= 248;
175
+		$e[0] = self::intToChr(
176
+			self::chrToInt($e[0]) & 248
177
+		);
178
+		# e[31] &= 127;
179
+		# e[31] |= 64;
180
+		$e[31] = self::intToChr(
181
+			(self::chrToInt($e[31]) & 127) | 64
182
+		);
183
+		# fe_frombytes(x1,p);
184
+		$x1 = self::fe_frombytes($p);
185
+		# fe_1(x2);
186
+		$x2 = self::fe_1();
187
+		# fe_0(z2);
188
+		$z2 = self::fe_0();
189
+		# fe_copy(x3,x1);
190
+		$x3 = self::fe_copy($x1);
191
+		# fe_1(z3);
192
+		$z3 = self::fe_1();
193
+
194
+		# swap = 0;
195
+		/** @var int $swap */
196
+		$swap = 0;
197
+
198
+		# for (pos = 254;pos >= 0;--pos) {
199
+		for ($pos = 254; $pos >= 0; --$pos) {
200
+			# b = e[pos / 8] >> (pos & 7);
201
+			/** @var int $b */
202
+			$b = self::chrToInt(
203
+					$e[(int) floor($pos / 8)]
204
+				) >> ($pos & 7);
205
+			# b &= 1;
206
+			$b &= 1;
207
+
208
+			# swap ^= b;
209
+			$swap ^= $b;
210
+
211
+			# fe_cswap(x2,x3,swap);
212
+			self::fe_cswap($x2, $x3, $swap);
213
+
214
+			# fe_cswap(z2,z3,swap);
215
+			self::fe_cswap($z2, $z3, $swap);
216
+
217
+			# swap = b;
218
+			/** @var int $swap */
219
+			$swap = $b;
220
+
221
+			# fe_sub(tmp0,x3,z3);
222
+			$tmp0 = self::fe_sub($x3, $z3);
223
+
224
+			# fe_sub(tmp1,x2,z2);
225
+			$tmp1 = self::fe_sub($x2, $z2);
226
+
227
+			# fe_add(x2,x2,z2);
228
+			$x2 = self::fe_add($x2, $z2);
229
+
230
+			# fe_add(z2,x3,z3);
231
+			$z2 = self::fe_add($x3, $z3);
232
+
233
+			# fe_mul(z3,tmp0,x2);
234
+			$z3 = self::fe_mul($tmp0, $x2);
235
+
236
+			# fe_mul(z2,z2,tmp1);
237
+			$z2 = self::fe_mul($z2, $tmp1);
238
+
239
+			# fe_sq(tmp0,tmp1);
240
+			$tmp0 = self::fe_sq($tmp1);
241
+
242
+			# fe_sq(tmp1,x2);
243
+			$tmp1 = self::fe_sq($x2);
244
+
245
+			# fe_add(x3,z3,z2);
246
+			$x3 = self::fe_add($z3, $z2);
247
+
248
+			# fe_sub(z2,z3,z2);
249
+			$z2 = self::fe_sub($z3, $z2);
250
+
251
+			# fe_mul(x2,tmp1,tmp0);
252
+			$x2 = self::fe_mul($tmp1, $tmp0);
253
+
254
+			# fe_sub(tmp1,tmp1,tmp0);
255
+			$tmp1 = self::fe_sub($tmp1, $tmp0);
256
+
257
+			# fe_sq(z2,z2);
258
+			$z2 = self::fe_sq($z2);
259
+
260
+			# fe_mul121666(z3,tmp1);
261
+			$z3 = self::fe_mul121666($tmp1);
262
+
263
+			# fe_sq(x3,x3);
264
+			$x3 = self::fe_sq($x3);
265
+
266
+			# fe_add(tmp0,tmp0,z3);
267
+			$tmp0 = self::fe_add($tmp0, $z3);
268
+
269
+			# fe_mul(z3,x1,z2);
270
+			$z3 = self::fe_mul($x1, $z2);
271
+
272
+			# fe_mul(z2,tmp1,tmp0);
273
+			$z2 = self::fe_mul($tmp1, $tmp0);
274
+		}
275
+
276
+		# fe_cswap(x2,x3,swap);
277
+		self::fe_cswap($x2, $x3, $swap);
278
+
279
+		# fe_cswap(z2,z3,swap);
280
+		self::fe_cswap($z2, $z3, $swap);
281
+
282
+		# fe_invert(z2,z2);
283
+		$z2 = self::fe_invert($z2);
284
+
285
+		# fe_mul(x2,x2,z2);
286
+		$x2 = self::fe_mul($x2, $z2);
287
+		# fe_tobytes(q,x2);
288
+		return (string) self::fe_tobytes($x2);
289
+	}
290
+
291
+	/**
292
+	 * @internal You should not use this directly from another application
293
+	 *
294
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY
295
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
296
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
297
+	 * @throws SodiumException
298
+	 * @throws TypeError
299
+	 */
300
+	public static function edwards_to_montgomery(
301
+		ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY,
302
+		ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
303
+	) {
304
+		$tempX = self::fe_add($edwardsZ, $edwardsY);
305
+		$tempZ = self::fe_sub($edwardsZ, $edwardsY);
306
+		$tempZ = self::fe_invert($tempZ);
307
+		return self::fe_mul($tempX, $tempZ);
308
+	}
309
+
310
+	/**
311
+	 * @internal You should not use this directly from another application
312
+	 *
313
+	 * @param string $n
314
+	 * @return string
315
+	 * @throws SodiumException
316
+	 * @throws TypeError
317
+	 */
318
+	public static function crypto_scalarmult_curve25519_ref10_base($n)
319
+	{
320
+		# for (i = 0;i < 32;++i) e[i] = n[i];
321
+		$e = '' . $n;
322
+
323
+		# e[0] &= 248;
324
+		$e[0] = self::intToChr(
325
+			self::chrToInt($e[0]) & 248
326
+		);
327
+
328
+		# e[31] &= 127;
329
+		# e[31] |= 64;
330
+		$e[31] = self::intToChr(
331
+			(self::chrToInt($e[31]) & 127) | 64
332
+		);
333
+
334
+		$A = self::ge_scalarmult_base($e);
335
+		if (
336
+			!($A->Y instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
337
+				||
338
+			!($A->Z instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
339
+		) {
340
+			throw new TypeError('Null points encountered');
341
+		}
342
+		$pk = self::edwards_to_montgomery($A->Y, $A->Z);
343
+		return self::fe_tobytes($pk);
344
+	}
345 345
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Poly1305.php 1 patch
Indentation   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_Poly1305', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,55 +9,55 @@  discard block
 block discarded – undo
9 9
  */
10 10
 abstract class ParagonIE_Sodium_Core32_Poly1305 extends ParagonIE_Sodium_Core32_Util
11 11
 {
12
-    const BLOCK_SIZE = 16;
12
+	const BLOCK_SIZE = 16;
13 13
 
14
-    /**
15
-     * @internal You should not use this directly from another application
16
-     *
17
-     * @param string $m
18
-     * @param string $key
19
-     * @return string
20
-     * @throws SodiumException
21
-     * @throws TypeError
22
-     */
23
-    public static function onetimeauth($m, $key)
24
-    {
25
-        if (self::strlen($key) < 32) {
26
-            throw new InvalidArgumentException(
27
-                'Key must be 32 bytes long.'
28
-            );
29
-        }
30
-        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
31
-            self::substr($key, 0, 32)
32
-        );
33
-        return $state
34
-            ->update($m)
35
-            ->finish();
36
-    }
14
+	/**
15
+	 * @internal You should not use this directly from another application
16
+	 *
17
+	 * @param string $m
18
+	 * @param string $key
19
+	 * @return string
20
+	 * @throws SodiumException
21
+	 * @throws TypeError
22
+	 */
23
+	public static function onetimeauth($m, $key)
24
+	{
25
+		if (self::strlen($key) < 32) {
26
+			throw new InvalidArgumentException(
27
+				'Key must be 32 bytes long.'
28
+			);
29
+		}
30
+		$state = new ParagonIE_Sodium_Core32_Poly1305_State(
31
+			self::substr($key, 0, 32)
32
+		);
33
+		return $state
34
+			->update($m)
35
+			->finish();
36
+	}
37 37
 
38
-    /**
39
-     * @internal You should not use this directly from another application
40
-     *
41
-     * @param string $mac
42
-     * @param string $m
43
-     * @param string $key
44
-     * @return bool
45
-     * @throws SodiumException
46
-     * @throws TypeError
47
-     */
48
-    public static function onetimeauth_verify($mac, $m, $key)
49
-    {
50
-        if (self::strlen($key) < 32) {
51
-            throw new InvalidArgumentException(
52
-                'Key must be 32 bytes long.'
53
-            );
54
-        }
55
-        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
56
-            self::substr($key, 0, 32)
57
-        );
58
-        $calc = $state
59
-            ->update($m)
60
-            ->finish();
61
-        return self::verify_16($calc, $mac);
62
-    }
38
+	/**
39
+	 * @internal You should not use this directly from another application
40
+	 *
41
+	 * @param string $mac
42
+	 * @param string $m
43
+	 * @param string $key
44
+	 * @return bool
45
+	 * @throws SodiumException
46
+	 * @throws TypeError
47
+	 */
48
+	public static function onetimeauth_verify($mac, $m, $key)
49
+	{
50
+		if (self::strlen($key) < 32) {
51
+			throw new InvalidArgumentException(
52
+				'Key must be 32 bytes long.'
53
+			);
54
+		}
55
+		$state = new ParagonIE_Sodium_Core32_Poly1305_State(
56
+			self::substr($key, 0, 32)
57
+		);
58
+		$calc = $state
59
+			->update($m)
60
+			->finish();
61
+		return self::verify_16($calc, $mac);
62
+	}
63 63
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/XSalsa20.php 1 patch
Indentation   +45 added lines, -45 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_XSalsa20', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,49 +9,49 @@  discard block
 block discarded – undo
9 9
  */
10 10
 abstract class ParagonIE_Sodium_Core32_XSalsa20 extends ParagonIE_Sodium_Core32_HSalsa20
11 11
 {
12
-    /**
13
-     * Expand a key and nonce into an xsalsa20 keystream.
14
-     *
15
-     * @internal You should not use this directly from another application
16
-     *
17
-     * @param int $len
18
-     * @param string $nonce
19
-     * @param string $key
20
-     * @return string
21
-     * @throws SodiumException
22
-     * @throws TypeError
23
-     */
24
-    public static function xsalsa20($len, $nonce, $key)
25
-    {
26
-        $ret = self::salsa20(
27
-            $len,
28
-            self::substr($nonce, 16, 8),
29
-            self::hsalsa20($nonce, $key)
30
-        );
31
-        return $ret;
32
-    }
12
+	/**
13
+	 * Expand a key and nonce into an xsalsa20 keystream.
14
+	 *
15
+	 * @internal You should not use this directly from another application
16
+	 *
17
+	 * @param int $len
18
+	 * @param string $nonce
19
+	 * @param string $key
20
+	 * @return string
21
+	 * @throws SodiumException
22
+	 * @throws TypeError
23
+	 */
24
+	public static function xsalsa20($len, $nonce, $key)
25
+	{
26
+		$ret = self::salsa20(
27
+			$len,
28
+			self::substr($nonce, 16, 8),
29
+			self::hsalsa20($nonce, $key)
30
+		);
31
+		return $ret;
32
+	}
33 33
 
34
-    /**
35
-     * Encrypt a string with XSalsa20. Doesn't provide integrity.
36
-     *
37
-     * @internal You should not use this directly from another application
38
-     *
39
-     * @param string $message
40
-     * @param string $nonce
41
-     * @param string $key
42
-     * @return string
43
-     * @throws SodiumException
44
-     * @throws TypeError
45
-     */
46
-    public static function xsalsa20_xor($message, $nonce, $key)
47
-    {
48
-        return self::xorStrings(
49
-            $message,
50
-            self::xsalsa20(
51
-                self::strlen($message),
52
-                $nonce,
53
-                $key
54
-            )
55
-        );
56
-    }
34
+	/**
35
+	 * Encrypt a string with XSalsa20. Doesn't provide integrity.
36
+	 *
37
+	 * @internal You should not use this directly from another application
38
+	 *
39
+	 * @param string $message
40
+	 * @param string $nonce
41
+	 * @param string $key
42
+	 * @return string
43
+	 * @throws SodiumException
44
+	 * @throws TypeError
45
+	 */
46
+	public static function xsalsa20_xor($message, $nonce, $key)
47
+	{
48
+		return self::xorStrings(
49
+			$message,
50
+			self::xsalsa20(
51
+				self::strlen($message),
52
+				$nonce,
53
+				$key
54
+			)
55
+		);
56
+	}
57 57
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/ChaCha20.php 1 patch
Indentation   +287 added lines, -287 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_ChaCha20', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,83 +9,83 @@  discard block
 block discarded – undo
9 9
  */
10 10
 class ParagonIE_Sodium_Core32_ChaCha20 extends ParagonIE_Sodium_Core32_Util
11 11
 {
12
-    /**
13
-     * The ChaCha20 quarter round function. Works on four 32-bit integers.
14
-     *
15
-     * @internal You should not use this directly from another application
16
-     *
17
-     * @param ParagonIE_Sodium_Core32_Int32 $a
18
-     * @param ParagonIE_Sodium_Core32_Int32 $b
19
-     * @param ParagonIE_Sodium_Core32_Int32 $c
20
-     * @param ParagonIE_Sodium_Core32_Int32 $d
21
-     * @return array<int, ParagonIE_Sodium_Core32_Int32>
22
-     * @throws SodiumException
23
-     * @throws TypeError
24
-     */
25
-    protected static function quarterRound(
26
-        ParagonIE_Sodium_Core32_Int32 $a,
27
-        ParagonIE_Sodium_Core32_Int32 $b,
28
-        ParagonIE_Sodium_Core32_Int32 $c,
29
-        ParagonIE_Sodium_Core32_Int32 $d
30
-    ) {
31
-        /** @var ParagonIE_Sodium_Core32_Int32 $a */
32
-        /** @var ParagonIE_Sodium_Core32_Int32 $b */
33
-        /** @var ParagonIE_Sodium_Core32_Int32 $c */
34
-        /** @var ParagonIE_Sodium_Core32_Int32 $d */
12
+	/**
13
+	 * The ChaCha20 quarter round function. Works on four 32-bit integers.
14
+	 *
15
+	 * @internal You should not use this directly from another application
16
+	 *
17
+	 * @param ParagonIE_Sodium_Core32_Int32 $a
18
+	 * @param ParagonIE_Sodium_Core32_Int32 $b
19
+	 * @param ParagonIE_Sodium_Core32_Int32 $c
20
+	 * @param ParagonIE_Sodium_Core32_Int32 $d
21
+	 * @return array<int, ParagonIE_Sodium_Core32_Int32>
22
+	 * @throws SodiumException
23
+	 * @throws TypeError
24
+	 */
25
+	protected static function quarterRound(
26
+		ParagonIE_Sodium_Core32_Int32 $a,
27
+		ParagonIE_Sodium_Core32_Int32 $b,
28
+		ParagonIE_Sodium_Core32_Int32 $c,
29
+		ParagonIE_Sodium_Core32_Int32 $d
30
+	) {
31
+		/** @var ParagonIE_Sodium_Core32_Int32 $a */
32
+		/** @var ParagonIE_Sodium_Core32_Int32 $b */
33
+		/** @var ParagonIE_Sodium_Core32_Int32 $c */
34
+		/** @var ParagonIE_Sodium_Core32_Int32 $d */
35 35
 
36
-        # a = PLUS(a,b); d = ROTATE(XOR(d,a),16);
37
-        $a = $a->addInt32($b);
38
-        $d = $d->xorInt32($a)->rotateLeft(16);
36
+		# a = PLUS(a,b); d = ROTATE(XOR(d,a),16);
37
+		$a = $a->addInt32($b);
38
+		$d = $d->xorInt32($a)->rotateLeft(16);
39 39
 
40
-        # c = PLUS(c,d); b = ROTATE(XOR(b,c),12);
41
-        $c = $c->addInt32($d);
42
-        $b = $b->xorInt32($c)->rotateLeft(12);
40
+		# c = PLUS(c,d); b = ROTATE(XOR(b,c),12);
41
+		$c = $c->addInt32($d);
42
+		$b = $b->xorInt32($c)->rotateLeft(12);
43 43
 
44
-        # a = PLUS(a,b); d = ROTATE(XOR(d,a), 8);
45
-        $a = $a->addInt32($b);
46
-        $d = $d->xorInt32($a)->rotateLeft(8);
44
+		# a = PLUS(a,b); d = ROTATE(XOR(d,a), 8);
45
+		$a = $a->addInt32($b);
46
+		$d = $d->xorInt32($a)->rotateLeft(8);
47 47
 
48
-        # c = PLUS(c,d); b = ROTATE(XOR(b,c), 7);
49
-        $c = $c->addInt32($d);
50
-        $b = $b->xorInt32($c)->rotateLeft(7);
48
+		# c = PLUS(c,d); b = ROTATE(XOR(b,c), 7);
49
+		$c = $c->addInt32($d);
50
+		$b = $b->xorInt32($c)->rotateLeft(7);
51 51
 
52
-        return array($a, $b, $c, $d);
53
-    }
52
+		return array($a, $b, $c, $d);
53
+	}
54 54
 
55
-    /**
56
-     * @internal You should not use this directly from another application
57
-     *
58
-     * @param ParagonIE_Sodium_Core32_ChaCha20_Ctx $ctx
59
-     * @param string $message
60
-     *
61
-     * @return string
62
-     * @throws SodiumException
63
-     * @throws TypeError
64
-     */
65
-    public static function encryptBytes(
66
-        ParagonIE_Sodium_Core32_ChaCha20_Ctx $ctx,
67
-        $message = ''
68
-    ) {
69
-        $bytes = self::strlen($message);
55
+	/**
56
+	 * @internal You should not use this directly from another application
57
+	 *
58
+	 * @param ParagonIE_Sodium_Core32_ChaCha20_Ctx $ctx
59
+	 * @param string $message
60
+	 *
61
+	 * @return string
62
+	 * @throws SodiumException
63
+	 * @throws TypeError
64
+	 */
65
+	public static function encryptBytes(
66
+		ParagonIE_Sodium_Core32_ChaCha20_Ctx $ctx,
67
+		$message = ''
68
+	) {
69
+		$bytes = self::strlen($message);
70 70
 
71
-        /** @var ParagonIE_Sodium_Core32_Int32 $x0 */
72
-        /** @var ParagonIE_Sodium_Core32_Int32 $x1 */
73
-        /** @var ParagonIE_Sodium_Core32_Int32 $x2 */
74
-        /** @var ParagonIE_Sodium_Core32_Int32 $x3 */
75
-        /** @var ParagonIE_Sodium_Core32_Int32 $x4 */
76
-        /** @var ParagonIE_Sodium_Core32_Int32 $x5 */
77
-        /** @var ParagonIE_Sodium_Core32_Int32 $x6 */
78
-        /** @var ParagonIE_Sodium_Core32_Int32 $x7 */
79
-        /** @var ParagonIE_Sodium_Core32_Int32 $x8 */
80
-        /** @var ParagonIE_Sodium_Core32_Int32 $x9 */
81
-        /** @var ParagonIE_Sodium_Core32_Int32 $x10 */
82
-        /** @var ParagonIE_Sodium_Core32_Int32 $x11 */
83
-        /** @var ParagonIE_Sodium_Core32_Int32 $x12 */
84
-        /** @var ParagonIE_Sodium_Core32_Int32 $x13 */
85
-        /** @var ParagonIE_Sodium_Core32_Int32 $x14 */
86
-        /** @var ParagonIE_Sodium_Core32_Int32 $x15 */
71
+		/** @var ParagonIE_Sodium_Core32_Int32 $x0 */
72
+		/** @var ParagonIE_Sodium_Core32_Int32 $x1 */
73
+		/** @var ParagonIE_Sodium_Core32_Int32 $x2 */
74
+		/** @var ParagonIE_Sodium_Core32_Int32 $x3 */
75
+		/** @var ParagonIE_Sodium_Core32_Int32 $x4 */
76
+		/** @var ParagonIE_Sodium_Core32_Int32 $x5 */
77
+		/** @var ParagonIE_Sodium_Core32_Int32 $x6 */
78
+		/** @var ParagonIE_Sodium_Core32_Int32 $x7 */
79
+		/** @var ParagonIE_Sodium_Core32_Int32 $x8 */
80
+		/** @var ParagonIE_Sodium_Core32_Int32 $x9 */
81
+		/** @var ParagonIE_Sodium_Core32_Int32 $x10 */
82
+		/** @var ParagonIE_Sodium_Core32_Int32 $x11 */
83
+		/** @var ParagonIE_Sodium_Core32_Int32 $x12 */
84
+		/** @var ParagonIE_Sodium_Core32_Int32 $x13 */
85
+		/** @var ParagonIE_Sodium_Core32_Int32 $x14 */
86
+		/** @var ParagonIE_Sodium_Core32_Int32 $x15 */
87 87
 
88
-        /*
88
+		/*
89 89
         j0 = ctx->input[0];
90 90
         j1 = ctx->input[1];
91 91
         j2 = ctx->input[2];
@@ -103,89 +103,89 @@  discard block
 block discarded – undo
103 103
         j14 = ctx->input[14];
104 104
         j15 = ctx->input[15];
105 105
         */
106
-        /** @var ParagonIE_Sodium_Core32_Int32 $j0 */
107
-        $j0  = $ctx[0];
108
-        /** @var ParagonIE_Sodium_Core32_Int32 $j1 */
109
-        $j1  = $ctx[1];
110
-        /** @var ParagonIE_Sodium_Core32_Int32 $j2 */
111
-        $j2  = $ctx[2];
112
-        /** @var ParagonIE_Sodium_Core32_Int32 $j3 */
113
-        $j3  = $ctx[3];
114
-        /** @var ParagonIE_Sodium_Core32_Int32 $j4 */
115
-        $j4  = $ctx[4];
116
-        /** @var ParagonIE_Sodium_Core32_Int32 $j5 */
117
-        $j5  = $ctx[5];
118
-        /** @var ParagonIE_Sodium_Core32_Int32 $j6 */
119
-        $j6  = $ctx[6];
120
-        /** @var ParagonIE_Sodium_Core32_Int32 $j7 */
121
-        $j7  = $ctx[7];
122
-        /** @var ParagonIE_Sodium_Core32_Int32 $j8 */
123
-        $j8  = $ctx[8];
124
-        /** @var ParagonIE_Sodium_Core32_Int32 $j9 */
125
-        $j9  = $ctx[9];
126
-        /** @var ParagonIE_Sodium_Core32_Int32 $j10 */
127
-        $j10 = $ctx[10];
128
-        /** @var ParagonIE_Sodium_Core32_Int32 $j11 */
129
-        $j11 = $ctx[11];
130
-        /** @var ParagonIE_Sodium_Core32_Int32 $j12 */
131
-        $j12 = $ctx[12];
132
-        /** @var ParagonIE_Sodium_Core32_Int32 $j13 */
133
-        $j13 = $ctx[13];
134
-        /** @var ParagonIE_Sodium_Core32_Int32 $j14 */
135
-        $j14 = $ctx[14];
136
-        /** @var ParagonIE_Sodium_Core32_Int32 $j15 */
137
-        $j15 = $ctx[15];
106
+		/** @var ParagonIE_Sodium_Core32_Int32 $j0 */
107
+		$j0  = $ctx[0];
108
+		/** @var ParagonIE_Sodium_Core32_Int32 $j1 */
109
+		$j1  = $ctx[1];
110
+		/** @var ParagonIE_Sodium_Core32_Int32 $j2 */
111
+		$j2  = $ctx[2];
112
+		/** @var ParagonIE_Sodium_Core32_Int32 $j3 */
113
+		$j3  = $ctx[3];
114
+		/** @var ParagonIE_Sodium_Core32_Int32 $j4 */
115
+		$j4  = $ctx[4];
116
+		/** @var ParagonIE_Sodium_Core32_Int32 $j5 */
117
+		$j5  = $ctx[5];
118
+		/** @var ParagonIE_Sodium_Core32_Int32 $j6 */
119
+		$j6  = $ctx[6];
120
+		/** @var ParagonIE_Sodium_Core32_Int32 $j7 */
121
+		$j7  = $ctx[7];
122
+		/** @var ParagonIE_Sodium_Core32_Int32 $j8 */
123
+		$j8  = $ctx[8];
124
+		/** @var ParagonIE_Sodium_Core32_Int32 $j9 */
125
+		$j9  = $ctx[9];
126
+		/** @var ParagonIE_Sodium_Core32_Int32 $j10 */
127
+		$j10 = $ctx[10];
128
+		/** @var ParagonIE_Sodium_Core32_Int32 $j11 */
129
+		$j11 = $ctx[11];
130
+		/** @var ParagonIE_Sodium_Core32_Int32 $j12 */
131
+		$j12 = $ctx[12];
132
+		/** @var ParagonIE_Sodium_Core32_Int32 $j13 */
133
+		$j13 = $ctx[13];
134
+		/** @var ParagonIE_Sodium_Core32_Int32 $j14 */
135
+		$j14 = $ctx[14];
136
+		/** @var ParagonIE_Sodium_Core32_Int32 $j15 */
137
+		$j15 = $ctx[15];
138 138
 
139
-        $c = '';
140
-        for (;;) {
141
-            if ($bytes < 64) {
142
-                $message .= str_repeat("\x00", 64 - $bytes);
143
-            }
139
+		$c = '';
140
+		for (;;) {
141
+			if ($bytes < 64) {
142
+				$message .= str_repeat("\x00", 64 - $bytes);
143
+			}
144 144
 
145
-            $x0 =  clone $j0;
146
-            $x1 =  clone $j1;
147
-            $x2 =  clone $j2;
148
-            $x3 =  clone $j3;
149
-            $x4 =  clone $j4;
150
-            $x5 =  clone $j5;
151
-            $x6 =  clone $j6;
152
-            $x7 =  clone $j7;
153
-            $x8 =  clone $j8;
154
-            $x9 =  clone $j9;
155
-            $x10 = clone $j10;
156
-            $x11 = clone $j11;
157
-            $x12 = clone $j12;
158
-            $x13 = clone $j13;
159
-            $x14 = clone $j14;
160
-            $x15 = clone $j15;
145
+			$x0 =  clone $j0;
146
+			$x1 =  clone $j1;
147
+			$x2 =  clone $j2;
148
+			$x3 =  clone $j3;
149
+			$x4 =  clone $j4;
150
+			$x5 =  clone $j5;
151
+			$x6 =  clone $j6;
152
+			$x7 =  clone $j7;
153
+			$x8 =  clone $j8;
154
+			$x9 =  clone $j9;
155
+			$x10 = clone $j10;
156
+			$x11 = clone $j11;
157
+			$x12 = clone $j12;
158
+			$x13 = clone $j13;
159
+			$x14 = clone $j14;
160
+			$x15 = clone $j15;
161 161
 
162
-            # for (i = 20; i > 0; i -= 2) {
163
-            for ($i = 20; $i > 0; $i -= 2) {
164
-                # QUARTERROUND( x0,  x4,  x8,  x12)
165
-                list($x0, $x4, $x8, $x12) = self::quarterRound($x0, $x4, $x8, $x12);
162
+			# for (i = 20; i > 0; i -= 2) {
163
+			for ($i = 20; $i > 0; $i -= 2) {
164
+				# QUARTERROUND( x0,  x4,  x8,  x12)
165
+				list($x0, $x4, $x8, $x12) = self::quarterRound($x0, $x4, $x8, $x12);
166 166
 
167
-                # QUARTERROUND( x1,  x5,  x9,  x13)
168
-                list($x1, $x5, $x9, $x13) = self::quarterRound($x1, $x5, $x9, $x13);
167
+				# QUARTERROUND( x1,  x5,  x9,  x13)
168
+				list($x1, $x5, $x9, $x13) = self::quarterRound($x1, $x5, $x9, $x13);
169 169
 
170
-                # QUARTERROUND( x2,  x6,  x10,  x14)
171
-                list($x2, $x6, $x10, $x14) = self::quarterRound($x2, $x6, $x10, $x14);
170
+				# QUARTERROUND( x2,  x6,  x10,  x14)
171
+				list($x2, $x6, $x10, $x14) = self::quarterRound($x2, $x6, $x10, $x14);
172 172
 
173
-                # QUARTERROUND( x3,  x7,  x11,  x15)
174
-                list($x3, $x7, $x11, $x15) = self::quarterRound($x3, $x7, $x11, $x15);
173
+				# QUARTERROUND( x3,  x7,  x11,  x15)
174
+				list($x3, $x7, $x11, $x15) = self::quarterRound($x3, $x7, $x11, $x15);
175 175
 
176
-                # QUARTERROUND( x0,  x5,  x10,  x15)
177
-                list($x0, $x5, $x10, $x15) = self::quarterRound($x0, $x5, $x10, $x15);
176
+				# QUARTERROUND( x0,  x5,  x10,  x15)
177
+				list($x0, $x5, $x10, $x15) = self::quarterRound($x0, $x5, $x10, $x15);
178 178
 
179
-                # QUARTERROUND( x1,  x6,  x11,  x12)
180
-                list($x1, $x6, $x11, $x12) = self::quarterRound($x1, $x6, $x11, $x12);
179
+				# QUARTERROUND( x1,  x6,  x11,  x12)
180
+				list($x1, $x6, $x11, $x12) = self::quarterRound($x1, $x6, $x11, $x12);
181 181
 
182
-                # QUARTERROUND( x2,  x7,  x8,  x13)
183
-                list($x2, $x7, $x8, $x13) = self::quarterRound($x2, $x7, $x8, $x13);
182
+				# QUARTERROUND( x2,  x7,  x8,  x13)
183
+				list($x2, $x7, $x8, $x13) = self::quarterRound($x2, $x7, $x8, $x13);
184 184
 
185
-                # QUARTERROUND( x3,  x4,  x9,  x14)
186
-                list($x3, $x4, $x9, $x14) = self::quarterRound($x3, $x4, $x9, $x14);
187
-            }
188
-            /*
185
+				# QUARTERROUND( x3,  x4,  x9,  x14)
186
+				list($x3, $x4, $x9, $x14) = self::quarterRound($x3, $x4, $x9, $x14);
187
+			}
188
+			/*
189 189
             x0 = PLUS(x0, j0);
190 190
             x1 = PLUS(x1, j1);
191 191
             x2 = PLUS(x2, j2);
@@ -203,24 +203,24 @@  discard block
 block discarded – undo
203 203
             x14 = PLUS(x14, j14);
204 204
             x15 = PLUS(x15, j15);
205 205
             */
206
-            $x0 = $x0->addInt32($j0);
207
-            $x1 = $x1->addInt32($j1);
208
-            $x2 = $x2->addInt32($j2);
209
-            $x3 = $x3->addInt32($j3);
210
-            $x4 = $x4->addInt32($j4);
211
-            $x5 = $x5->addInt32($j5);
212
-            $x6 = $x6->addInt32($j6);
213
-            $x7 = $x7->addInt32($j7);
214
-            $x8 = $x8->addInt32($j8);
215
-            $x9 = $x9->addInt32($j9);
216
-            $x10 = $x10->addInt32($j10);
217
-            $x11 = $x11->addInt32($j11);
218
-            $x12 = $x12->addInt32($j12);
219
-            $x13 = $x13->addInt32($j13);
220
-            $x14 = $x14->addInt32($j14);
221
-            $x15 = $x15->addInt32($j15);
206
+			$x0 = $x0->addInt32($j0);
207
+			$x1 = $x1->addInt32($j1);
208
+			$x2 = $x2->addInt32($j2);
209
+			$x3 = $x3->addInt32($j3);
210
+			$x4 = $x4->addInt32($j4);
211
+			$x5 = $x5->addInt32($j5);
212
+			$x6 = $x6->addInt32($j6);
213
+			$x7 = $x7->addInt32($j7);
214
+			$x8 = $x8->addInt32($j8);
215
+			$x9 = $x9->addInt32($j9);
216
+			$x10 = $x10->addInt32($j10);
217
+			$x11 = $x11->addInt32($j11);
218
+			$x12 = $x12->addInt32($j12);
219
+			$x13 = $x13->addInt32($j13);
220
+			$x14 = $x14->addInt32($j14);
221
+			$x15 = $x15->addInt32($j15);
222 222
 
223
-            /*
223
+			/*
224 224
             x0 = XOR(x0, LOAD32_LE(m + 0));
225 225
             x1 = XOR(x1, LOAD32_LE(m + 4));
226 226
             x2 = XOR(x2, LOAD32_LE(m + 8));
@@ -238,36 +238,36 @@  discard block
 block discarded – undo
238 238
             x14 = XOR(x14, LOAD32_LE(m + 56));
239 239
             x15 = XOR(x15, LOAD32_LE(m + 60));
240 240
             */
241
-            $x0  =  $x0->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message,  0, 4)));
242
-            $x1  =  $x1->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message,  4, 4)));
243
-            $x2  =  $x2->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message,  8, 4)));
244
-            $x3  =  $x3->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 12, 4)));
245
-            $x4  =  $x4->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 16, 4)));
246
-            $x5  =  $x5->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 20, 4)));
247
-            $x6  =  $x6->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 24, 4)));
248
-            $x7  =  $x7->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 28, 4)));
249
-            $x8  =  $x8->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 32, 4)));
250
-            $x9  =  $x9->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 36, 4)));
251
-            $x10 = $x10->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 40, 4)));
252
-            $x11 = $x11->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 44, 4)));
253
-            $x12 = $x12->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 48, 4)));
254
-            $x13 = $x13->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 52, 4)));
255
-            $x14 = $x14->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 56, 4)));
256
-            $x15 = $x15->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 60, 4)));
241
+			$x0  =  $x0->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message,  0, 4)));
242
+			$x1  =  $x1->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message,  4, 4)));
243
+			$x2  =  $x2->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message,  8, 4)));
244
+			$x3  =  $x3->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 12, 4)));
245
+			$x4  =  $x4->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 16, 4)));
246
+			$x5  =  $x5->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 20, 4)));
247
+			$x6  =  $x6->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 24, 4)));
248
+			$x7  =  $x7->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 28, 4)));
249
+			$x8  =  $x8->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 32, 4)));
250
+			$x9  =  $x9->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 36, 4)));
251
+			$x10 = $x10->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 40, 4)));
252
+			$x11 = $x11->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 44, 4)));
253
+			$x12 = $x12->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 48, 4)));
254
+			$x13 = $x13->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 52, 4)));
255
+			$x14 = $x14->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 56, 4)));
256
+			$x15 = $x15->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 60, 4)));
257 257
 
258
-            /*
258
+			/*
259 259
                 j12 = PLUSONE(j12);
260 260
                 if (!j12) {
261 261
                     j13 = PLUSONE(j13);
262 262
                 }
263 263
              */
264
-            /** @var ParagonIE_Sodium_Core32_Int32 $j12 */
265
-            $j12 = $j12->addInt(1);
266
-            if ($j12->limbs[0] === 0 && $j12->limbs[1] === 0) {
267
-                $j13 = $j13->addInt(1);
268
-            }
264
+			/** @var ParagonIE_Sodium_Core32_Int32 $j12 */
265
+			$j12 = $j12->addInt(1);
266
+			if ($j12->limbs[0] === 0 && $j12->limbs[1] === 0) {
267
+				$j13 = $j13->addInt(1);
268
+			}
269 269
 
270
-            /*
270
+			/*
271 271
             STORE32_LE(c + 0, x0);
272 272
             STORE32_LE(c + 4, x1);
273 273
             STORE32_LE(c + 8, x2);
@@ -286,115 +286,115 @@  discard block
 block discarded – undo
286 286
             STORE32_LE(c + 60, x15);
287 287
             */
288 288
 
289
-            $block = $x0->toReverseString() .
290
-                $x1->toReverseString() .
291
-                $x2->toReverseString() .
292
-                $x3->toReverseString() .
293
-                $x4->toReverseString() .
294
-                $x5->toReverseString() .
295
-                $x6->toReverseString() .
296
-                $x7->toReverseString() .
297
-                $x8->toReverseString() .
298
-                $x9->toReverseString() .
299
-                $x10->toReverseString() .
300
-                $x11->toReverseString() .
301
-                $x12->toReverseString() .
302
-                $x13->toReverseString() .
303
-                $x14->toReverseString() .
304
-                $x15->toReverseString();
289
+			$block = $x0->toReverseString() .
290
+				$x1->toReverseString() .
291
+				$x2->toReverseString() .
292
+				$x3->toReverseString() .
293
+				$x4->toReverseString() .
294
+				$x5->toReverseString() .
295
+				$x6->toReverseString() .
296
+				$x7->toReverseString() .
297
+				$x8->toReverseString() .
298
+				$x9->toReverseString() .
299
+				$x10->toReverseString() .
300
+				$x11->toReverseString() .
301
+				$x12->toReverseString() .
302
+				$x13->toReverseString() .
303
+				$x14->toReverseString() .
304
+				$x15->toReverseString();
305 305
 
306
-            /* Partial block */
307
-            if ($bytes < 64) {
308
-                $c .= self::substr($block, 0, $bytes);
309
-                break;
310
-            }
306
+			/* Partial block */
307
+			if ($bytes < 64) {
308
+				$c .= self::substr($block, 0, $bytes);
309
+				break;
310
+			}
311 311
 
312
-            /* Full block */
313
-            $c .= $block;
314
-            $bytes -= 64;
315
-            if ($bytes <= 0) {
316
-                break;
317
-            }
318
-            $message = self::substr($message, 64);
319
-        }
320
-        /* end for(;;) loop */
312
+			/* Full block */
313
+			$c .= $block;
314
+			$bytes -= 64;
315
+			if ($bytes <= 0) {
316
+				break;
317
+			}
318
+			$message = self::substr($message, 64);
319
+		}
320
+		/* end for(;;) loop */
321 321
 
322
-        $ctx[12] = $j12;
323
-        $ctx[13] = $j13;
324
-        return $c;
325
-    }
322
+		$ctx[12] = $j12;
323
+		$ctx[13] = $j13;
324
+		return $c;
325
+	}
326 326
 
327
-    /**
328
-     * @internal You should not use this directly from another application
329
-     *
330
-     * @param int $len
331
-     * @param string $nonce
332
-     * @param string $key
333
-     * @return string
334
-     * @throws SodiumException
335
-     * @throws TypeError
336
-     */
337
-    public static function stream($len = 64, $nonce = '', $key = '')
338
-    {
339
-        return self::encryptBytes(
340
-            new ParagonIE_Sodium_Core32_ChaCha20_Ctx($key, $nonce),
341
-            str_repeat("\x00", $len)
342
-        );
343
-    }
327
+	/**
328
+	 * @internal You should not use this directly from another application
329
+	 *
330
+	 * @param int $len
331
+	 * @param string $nonce
332
+	 * @param string $key
333
+	 * @return string
334
+	 * @throws SodiumException
335
+	 * @throws TypeError
336
+	 */
337
+	public static function stream($len = 64, $nonce = '', $key = '')
338
+	{
339
+		return self::encryptBytes(
340
+			new ParagonIE_Sodium_Core32_ChaCha20_Ctx($key, $nonce),
341
+			str_repeat("\x00", $len)
342
+		);
343
+	}
344 344
 
345
-    /**
346
-     * @internal You should not use this directly from another application
347
-     *
348
-     * @param int $len
349
-     * @param string $nonce
350
-     * @param string $key
351
-     * @return string
352
-     * @throws SodiumException
353
-     * @throws TypeError
354
-     */
355
-    public static function ietfStream($len, $nonce = '', $key = '')
356
-    {
357
-        return self::encryptBytes(
358
-            new ParagonIE_Sodium_Core32_ChaCha20_IetfCtx($key, $nonce),
359
-            str_repeat("\x00", $len)
360
-        );
361
-    }
345
+	/**
346
+	 * @internal You should not use this directly from another application
347
+	 *
348
+	 * @param int $len
349
+	 * @param string $nonce
350
+	 * @param string $key
351
+	 * @return string
352
+	 * @throws SodiumException
353
+	 * @throws TypeError
354
+	 */
355
+	public static function ietfStream($len, $nonce = '', $key = '')
356
+	{
357
+		return self::encryptBytes(
358
+			new ParagonIE_Sodium_Core32_ChaCha20_IetfCtx($key, $nonce),
359
+			str_repeat("\x00", $len)
360
+		);
361
+	}
362 362
 
363
-    /**
364
-     * @internal You should not use this directly from another application
365
-     *
366
-     * @param string $message
367
-     * @param string $nonce
368
-     * @param string $key
369
-     * @param string $ic
370
-     * @return string
371
-     * @throws SodiumException
372
-     * @throws TypeError
373
-     */
374
-    public static function ietfStreamXorIc($message, $nonce = '', $key = '', $ic = '')
375
-    {
376
-        return self::encryptBytes(
377
-            new ParagonIE_Sodium_Core32_ChaCha20_IetfCtx($key, $nonce, $ic),
378
-            $message
379
-        );
380
-    }
363
+	/**
364
+	 * @internal You should not use this directly from another application
365
+	 *
366
+	 * @param string $message
367
+	 * @param string $nonce
368
+	 * @param string $key
369
+	 * @param string $ic
370
+	 * @return string
371
+	 * @throws SodiumException
372
+	 * @throws TypeError
373
+	 */
374
+	public static function ietfStreamXorIc($message, $nonce = '', $key = '', $ic = '')
375
+	{
376
+		return self::encryptBytes(
377
+			new ParagonIE_Sodium_Core32_ChaCha20_IetfCtx($key, $nonce, $ic),
378
+			$message
379
+		);
380
+	}
381 381
 
382
-    /**
383
-     * @internal You should not use this directly from another application
384
-     *
385
-     * @param string $message
386
-     * @param string $nonce
387
-     * @param string $key
388
-     * @param string $ic
389
-     * @return string
390
-     * @throws SodiumException
391
-     * @throws TypeError
392
-     */
393
-    public static function streamXorIc($message, $nonce = '', $key = '', $ic = '')
394
-    {
395
-        return self::encryptBytes(
396
-            new ParagonIE_Sodium_Core32_ChaCha20_Ctx($key, $nonce, $ic),
397
-            $message
398
-        );
399
-    }
382
+	/**
383
+	 * @internal You should not use this directly from another application
384
+	 *
385
+	 * @param string $message
386
+	 * @param string $nonce
387
+	 * @param string $key
388
+	 * @param string $ic
389
+	 * @return string
390
+	 * @throws SodiumException
391
+	 * @throws TypeError
392
+	 */
393
+	public static function streamXorIc($message, $nonce = '', $key = '', $ic = '')
394
+	{
395
+		return self::encryptBytes(
396
+			new ParagonIE_Sodium_Core32_ChaCha20_Ctx($key, $nonce, $ic),
397
+			$message
398
+		);
399
+	}
400 400
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/HChaCha20.php 1 patch
Indentation   +104 added lines, -104 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_HChaCha20', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,119 +9,119 @@  discard block
 block discarded – undo
9 9
  */
10 10
 class ParagonIE_Sodium_Core32_HChaCha20 extends ParagonIE_Sodium_Core32_ChaCha20
11 11
 {
12
-    /**
13
-     * @param string $in
14
-     * @param string $key
15
-     * @param string|null $c
16
-     * @return string
17
-     * @throws SodiumException
18
-     * @throws TypeError
19
-     */
20
-    public static function hChaCha20($in = '', $key = '', $c = null)
21
-    {
22
-        $ctx = array();
12
+	/**
13
+	 * @param string $in
14
+	 * @param string $key
15
+	 * @param string|null $c
16
+	 * @return string
17
+	 * @throws SodiumException
18
+	 * @throws TypeError
19
+	 */
20
+	public static function hChaCha20($in = '', $key = '', $c = null)
21
+	{
22
+		$ctx = array();
23 23
 
24
-        if ($c === null) {
25
-            $ctx[0] = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
26
-            $ctx[1] = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
27
-            $ctx[2] = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
28
-            $ctx[3] = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
29
-        } else {
30
-            $ctx[0] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 0, 4));
31
-            $ctx[1] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 4, 4));
32
-            $ctx[2] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 8, 4));
33
-            $ctx[3] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 12, 4));
34
-        }
35
-        $ctx[4]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 0, 4));
36
-        $ctx[5]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 4, 4));
37
-        $ctx[6]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 8, 4));
38
-        $ctx[7]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 12, 4));
39
-        $ctx[8]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 16, 4));
40
-        $ctx[9]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 20, 4));
41
-        $ctx[10] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 24, 4));
42
-        $ctx[11] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 28, 4));
43
-        $ctx[12] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 0, 4));
44
-        $ctx[13] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 4, 4));
45
-        $ctx[14] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 8, 4));
46
-        $ctx[15] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 12, 4));
24
+		if ($c === null) {
25
+			$ctx[0] = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
26
+			$ctx[1] = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
27
+			$ctx[2] = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
28
+			$ctx[3] = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
29
+		} else {
30
+			$ctx[0] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 0, 4));
31
+			$ctx[1] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 4, 4));
32
+			$ctx[2] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 8, 4));
33
+			$ctx[3] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 12, 4));
34
+		}
35
+		$ctx[4]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 0, 4));
36
+		$ctx[5]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 4, 4));
37
+		$ctx[6]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 8, 4));
38
+		$ctx[7]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 12, 4));
39
+		$ctx[8]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 16, 4));
40
+		$ctx[9]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 20, 4));
41
+		$ctx[10] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 24, 4));
42
+		$ctx[11] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 28, 4));
43
+		$ctx[12] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 0, 4));
44
+		$ctx[13] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 4, 4));
45
+		$ctx[14] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 8, 4));
46
+		$ctx[15] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 12, 4));
47 47
 
48
-        return self::hChaCha20Bytes($ctx);
49
-    }
48
+		return self::hChaCha20Bytes($ctx);
49
+	}
50 50
 
51
-    /**
52
-     * @param array $ctx
53
-     * @return string
54
-     * @throws SodiumException
55
-     * @throws TypeError
56
-     */
57
-    protected static function hChaCha20Bytes(array $ctx)
58
-    {
59
-        /** @var ParagonIE_Sodium_Core32_Int32 $x0 */
60
-        $x0  = $ctx[0];
61
-        /** @var ParagonIE_Sodium_Core32_Int32 $x1 */
62
-        $x1  = $ctx[1];
63
-        /** @var ParagonIE_Sodium_Core32_Int32 $x2 */
64
-        $x2  = $ctx[2];
65
-        /** @var ParagonIE_Sodium_Core32_Int32 $x3 */
66
-        $x3  = $ctx[3];
67
-        /** @var ParagonIE_Sodium_Core32_Int32 $x4 */
68
-        $x4  = $ctx[4];
69
-        /** @var ParagonIE_Sodium_Core32_Int32 $x5 */
70
-        $x5  = $ctx[5];
71
-        /** @var ParagonIE_Sodium_Core32_Int32 $x6 */
72
-        $x6  = $ctx[6];
73
-        /** @var ParagonIE_Sodium_Core32_Int32 $x7 */
74
-        $x7  = $ctx[7];
75
-        /** @var ParagonIE_Sodium_Core32_Int32 $x8 */
76
-        $x8  = $ctx[8];
77
-        /** @var ParagonIE_Sodium_Core32_Int32 $x9 */
78
-        $x9  = $ctx[9];
79
-        /** @var ParagonIE_Sodium_Core32_Int32 $x10 */
80
-        $x10 = $ctx[10];
81
-        /** @var ParagonIE_Sodium_Core32_Int32 $x11 */
82
-        $x11 = $ctx[11];
83
-        /** @var ParagonIE_Sodium_Core32_Int32 $x12 */
84
-        $x12 = $ctx[12];
85
-        /** @var ParagonIE_Sodium_Core32_Int32 $x13 */
86
-        $x13 = $ctx[13];
87
-        /** @var ParagonIE_Sodium_Core32_Int32 $x14 */
88
-        $x14 = $ctx[14];
89
-        /** @var ParagonIE_Sodium_Core32_Int32 $x15 */
90
-        $x15 = $ctx[15];
51
+	/**
52
+	 * @param array $ctx
53
+	 * @return string
54
+	 * @throws SodiumException
55
+	 * @throws TypeError
56
+	 */
57
+	protected static function hChaCha20Bytes(array $ctx)
58
+	{
59
+		/** @var ParagonIE_Sodium_Core32_Int32 $x0 */
60
+		$x0  = $ctx[0];
61
+		/** @var ParagonIE_Sodium_Core32_Int32 $x1 */
62
+		$x1  = $ctx[1];
63
+		/** @var ParagonIE_Sodium_Core32_Int32 $x2 */
64
+		$x2  = $ctx[2];
65
+		/** @var ParagonIE_Sodium_Core32_Int32 $x3 */
66
+		$x3  = $ctx[3];
67
+		/** @var ParagonIE_Sodium_Core32_Int32 $x4 */
68
+		$x4  = $ctx[4];
69
+		/** @var ParagonIE_Sodium_Core32_Int32 $x5 */
70
+		$x5  = $ctx[5];
71
+		/** @var ParagonIE_Sodium_Core32_Int32 $x6 */
72
+		$x6  = $ctx[6];
73
+		/** @var ParagonIE_Sodium_Core32_Int32 $x7 */
74
+		$x7  = $ctx[7];
75
+		/** @var ParagonIE_Sodium_Core32_Int32 $x8 */
76
+		$x8  = $ctx[8];
77
+		/** @var ParagonIE_Sodium_Core32_Int32 $x9 */
78
+		$x9  = $ctx[9];
79
+		/** @var ParagonIE_Sodium_Core32_Int32 $x10 */
80
+		$x10 = $ctx[10];
81
+		/** @var ParagonIE_Sodium_Core32_Int32 $x11 */
82
+		$x11 = $ctx[11];
83
+		/** @var ParagonIE_Sodium_Core32_Int32 $x12 */
84
+		$x12 = $ctx[12];
85
+		/** @var ParagonIE_Sodium_Core32_Int32 $x13 */
86
+		$x13 = $ctx[13];
87
+		/** @var ParagonIE_Sodium_Core32_Int32 $x14 */
88
+		$x14 = $ctx[14];
89
+		/** @var ParagonIE_Sodium_Core32_Int32 $x15 */
90
+		$x15 = $ctx[15];
91 91
 
92
-        for ($i = 0; $i < 10; ++$i) {
93
-            # QUARTERROUND( x0,  x4,  x8,  x12)
94
-            list($x0, $x4, $x8, $x12) = self::quarterRound($x0, $x4, $x8, $x12);
92
+		for ($i = 0; $i < 10; ++$i) {
93
+			# QUARTERROUND( x0,  x4,  x8,  x12)
94
+			list($x0, $x4, $x8, $x12) = self::quarterRound($x0, $x4, $x8, $x12);
95 95
 
96
-            # QUARTERROUND( x1,  x5,  x9,  x13)
97
-            list($x1, $x5, $x9, $x13) = self::quarterRound($x1, $x5, $x9, $x13);
96
+			# QUARTERROUND( x1,  x5,  x9,  x13)
97
+			list($x1, $x5, $x9, $x13) = self::quarterRound($x1, $x5, $x9, $x13);
98 98
 
99
-            # QUARTERROUND( x2,  x6,  x10,  x14)
100
-            list($x2, $x6, $x10, $x14) = self::quarterRound($x2, $x6, $x10, $x14);
99
+			# QUARTERROUND( x2,  x6,  x10,  x14)
100
+			list($x2, $x6, $x10, $x14) = self::quarterRound($x2, $x6, $x10, $x14);
101 101
 
102
-            # QUARTERROUND( x3,  x7,  x11,  x15)
103
-            list($x3, $x7, $x11, $x15) = self::quarterRound($x3, $x7, $x11, $x15);
102
+			# QUARTERROUND( x3,  x7,  x11,  x15)
103
+			list($x3, $x7, $x11, $x15) = self::quarterRound($x3, $x7, $x11, $x15);
104 104
 
105
-            # QUARTERROUND( x0,  x5,  x10,  x15)
106
-            list($x0, $x5, $x10, $x15) = self::quarterRound($x0, $x5, $x10, $x15);
105
+			# QUARTERROUND( x0,  x5,  x10,  x15)
106
+			list($x0, $x5, $x10, $x15) = self::quarterRound($x0, $x5, $x10, $x15);
107 107
 
108
-            # QUARTERROUND( x1,  x6,  x11,  x12)
109
-            list($x1, $x6, $x11, $x12) = self::quarterRound($x1, $x6, $x11, $x12);
108
+			# QUARTERROUND( x1,  x6,  x11,  x12)
109
+			list($x1, $x6, $x11, $x12) = self::quarterRound($x1, $x6, $x11, $x12);
110 110
 
111
-            # QUARTERROUND( x2,  x7,  x8,  x13)
112
-            list($x2, $x7, $x8, $x13) = self::quarterRound($x2, $x7, $x8, $x13);
111
+			# QUARTERROUND( x2,  x7,  x8,  x13)
112
+			list($x2, $x7, $x8, $x13) = self::quarterRound($x2, $x7, $x8, $x13);
113 113
 
114
-            # QUARTERROUND( x3,  x4,  x9,  x14)
115
-            list($x3, $x4, $x9, $x14) = self::quarterRound($x3, $x4, $x9, $x14);
116
-        }
114
+			# QUARTERROUND( x3,  x4,  x9,  x14)
115
+			list($x3, $x4, $x9, $x14) = self::quarterRound($x3, $x4, $x9, $x14);
116
+		}
117 117
 
118
-        return $x0->toReverseString() .
119
-            $x1->toReverseString() .
120
-            $x2->toReverseString() .
121
-            $x3->toReverseString() .
122
-            $x12->toReverseString() .
123
-            $x13->toReverseString() .
124
-            $x14->toReverseString() .
125
-            $x15->toReverseString();
126
-    }
118
+		return $x0->toReverseString() .
119
+			$x1->toReverseString() .
120
+			$x2->toReverseString() .
121
+			$x3->toReverseString() .
122
+			$x12->toReverseString() .
123
+			$x13->toReverseString() .
124
+			$x14->toReverseString() .
125
+			$x15->toReverseString();
126
+	}
127 127
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/HSalsa20.php 1 patch
Indentation   +121 added lines, -121 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_HSalsa20', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,133 +9,133 @@  discard block
 block discarded – undo
9 9
  */
10 10
 abstract class ParagonIE_Sodium_Core32_HSalsa20 extends ParagonIE_Sodium_Core32_Salsa20
11 11
 {
12
-    /**
13
-     * Calculate an hsalsa20 hash of a single block
14
-     *
15
-     * HSalsa20 doesn't have a counter and will never be used for more than
16
-     * one block (used to derive a subkey for xsalsa20).
17
-     *
18
-     * @internal You should not use this directly from another application
19
-     *
20
-     * @param string $in
21
-     * @param string $k
22
-     * @param string|null $c
23
-     * @return string
24
-     * @throws SodiumException
25
-     * @throws TypeError
26
-     */
27
-    public static function hsalsa20($in, $k, $c = null)
28
-    {
29
-        /**
30
-         * @var ParagonIE_Sodium_Core32_Int32 $x0
31
-         * @var ParagonIE_Sodium_Core32_Int32 $x1
32
-         * @var ParagonIE_Sodium_Core32_Int32 $x2
33
-         * @var ParagonIE_Sodium_Core32_Int32 $x3
34
-         * @var ParagonIE_Sodium_Core32_Int32 $x4
35
-         * @var ParagonIE_Sodium_Core32_Int32 $x5
36
-         * @var ParagonIE_Sodium_Core32_Int32 $x6
37
-         * @var ParagonIE_Sodium_Core32_Int32 $x7
38
-         * @var ParagonIE_Sodium_Core32_Int32 $x8
39
-         * @var ParagonIE_Sodium_Core32_Int32 $x9
40
-         * @var ParagonIE_Sodium_Core32_Int32 $x10
41
-         * @var ParagonIE_Sodium_Core32_Int32 $x11
42
-         * @var ParagonIE_Sodium_Core32_Int32 $x12
43
-         * @var ParagonIE_Sodium_Core32_Int32 $x13
44
-         * @var ParagonIE_Sodium_Core32_Int32 $x14
45
-         * @var ParagonIE_Sodium_Core32_Int32 $x15
46
-         * @var ParagonIE_Sodium_Core32_Int32 $j0
47
-         * @var ParagonIE_Sodium_Core32_Int32 $j1
48
-         * @var ParagonIE_Sodium_Core32_Int32 $j2
49
-         * @var ParagonIE_Sodium_Core32_Int32 $j3
50
-         * @var ParagonIE_Sodium_Core32_Int32 $j4
51
-         * @var ParagonIE_Sodium_Core32_Int32 $j5
52
-         * @var ParagonIE_Sodium_Core32_Int32 $j6
53
-         * @var ParagonIE_Sodium_Core32_Int32 $j7
54
-         * @var ParagonIE_Sodium_Core32_Int32 $j8
55
-         * @var ParagonIE_Sodium_Core32_Int32 $j9
56
-         * @var ParagonIE_Sodium_Core32_Int32 $j10
57
-         * @var ParagonIE_Sodium_Core32_Int32 $j11
58
-         * @var ParagonIE_Sodium_Core32_Int32 $j12
59
-         * @var ParagonIE_Sodium_Core32_Int32 $j13
60
-         * @var ParagonIE_Sodium_Core32_Int32 $j14
61
-         * @var ParagonIE_Sodium_Core32_Int32 $j15
62
-         */
63
-        if (self::strlen($k) < 32) {
64
-            throw new RangeException('Key must be 32 bytes long');
65
-        }
66
-        if ($c === null) {
67
-            $x0  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
68
-            $x5  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
69
-            $x10 = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
70
-            $x15 = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
71
-        } else {
72
-            $x0  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 0, 4));
73
-            $x5  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 4, 4));
74
-            $x10 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 8, 4));
75
-            $x15 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 12, 4));
76
-        }
77
-        $x1  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 0, 4));
78
-        $x2  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 4, 4));
79
-        $x3  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 8, 4));
80
-        $x4  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 12, 4));
81
-        $x6  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 0, 4));
82
-        $x7  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 4, 4));
83
-        $x8  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 8, 4));
84
-        $x9  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 12, 4));
85
-        $x11 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 16, 4));
86
-        $x12 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 20, 4));
87
-        $x13 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 24, 4));
88
-        $x14 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 28, 4));
12
+	/**
13
+	 * Calculate an hsalsa20 hash of a single block
14
+	 *
15
+	 * HSalsa20 doesn't have a counter and will never be used for more than
16
+	 * one block (used to derive a subkey for xsalsa20).
17
+	 *
18
+	 * @internal You should not use this directly from another application
19
+	 *
20
+	 * @param string $in
21
+	 * @param string $k
22
+	 * @param string|null $c
23
+	 * @return string
24
+	 * @throws SodiumException
25
+	 * @throws TypeError
26
+	 */
27
+	public static function hsalsa20($in, $k, $c = null)
28
+	{
29
+		/**
30
+		 * @var ParagonIE_Sodium_Core32_Int32 $x0
31
+		 * @var ParagonIE_Sodium_Core32_Int32 $x1
32
+		 * @var ParagonIE_Sodium_Core32_Int32 $x2
33
+		 * @var ParagonIE_Sodium_Core32_Int32 $x3
34
+		 * @var ParagonIE_Sodium_Core32_Int32 $x4
35
+		 * @var ParagonIE_Sodium_Core32_Int32 $x5
36
+		 * @var ParagonIE_Sodium_Core32_Int32 $x6
37
+		 * @var ParagonIE_Sodium_Core32_Int32 $x7
38
+		 * @var ParagonIE_Sodium_Core32_Int32 $x8
39
+		 * @var ParagonIE_Sodium_Core32_Int32 $x9
40
+		 * @var ParagonIE_Sodium_Core32_Int32 $x10
41
+		 * @var ParagonIE_Sodium_Core32_Int32 $x11
42
+		 * @var ParagonIE_Sodium_Core32_Int32 $x12
43
+		 * @var ParagonIE_Sodium_Core32_Int32 $x13
44
+		 * @var ParagonIE_Sodium_Core32_Int32 $x14
45
+		 * @var ParagonIE_Sodium_Core32_Int32 $x15
46
+		 * @var ParagonIE_Sodium_Core32_Int32 $j0
47
+		 * @var ParagonIE_Sodium_Core32_Int32 $j1
48
+		 * @var ParagonIE_Sodium_Core32_Int32 $j2
49
+		 * @var ParagonIE_Sodium_Core32_Int32 $j3
50
+		 * @var ParagonIE_Sodium_Core32_Int32 $j4
51
+		 * @var ParagonIE_Sodium_Core32_Int32 $j5
52
+		 * @var ParagonIE_Sodium_Core32_Int32 $j6
53
+		 * @var ParagonIE_Sodium_Core32_Int32 $j7
54
+		 * @var ParagonIE_Sodium_Core32_Int32 $j8
55
+		 * @var ParagonIE_Sodium_Core32_Int32 $j9
56
+		 * @var ParagonIE_Sodium_Core32_Int32 $j10
57
+		 * @var ParagonIE_Sodium_Core32_Int32 $j11
58
+		 * @var ParagonIE_Sodium_Core32_Int32 $j12
59
+		 * @var ParagonIE_Sodium_Core32_Int32 $j13
60
+		 * @var ParagonIE_Sodium_Core32_Int32 $j14
61
+		 * @var ParagonIE_Sodium_Core32_Int32 $j15
62
+		 */
63
+		if (self::strlen($k) < 32) {
64
+			throw new RangeException('Key must be 32 bytes long');
65
+		}
66
+		if ($c === null) {
67
+			$x0  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
68
+			$x5  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
69
+			$x10 = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
70
+			$x15 = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
71
+		} else {
72
+			$x0  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 0, 4));
73
+			$x5  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 4, 4));
74
+			$x10 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 8, 4));
75
+			$x15 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 12, 4));
76
+		}
77
+		$x1  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 0, 4));
78
+		$x2  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 4, 4));
79
+		$x3  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 8, 4));
80
+		$x4  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 12, 4));
81
+		$x6  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 0, 4));
82
+		$x7  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 4, 4));
83
+		$x8  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 8, 4));
84
+		$x9  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 12, 4));
85
+		$x11 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 16, 4));
86
+		$x12 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 20, 4));
87
+		$x13 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 24, 4));
88
+		$x14 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 28, 4));
89 89
 
90
-        for ($i = self::ROUNDS; $i > 0; $i -= 2) {
91
-            $x4  = $x4->xorInt32($x0->addInt32($x12)->rotateLeft(7));
92
-            $x8  = $x8->xorInt32($x4->addInt32($x0)->rotateLeft(9));
93
-            $x12 = $x12->xorInt32($x8->addInt32($x4)->rotateLeft(13));
94
-            $x0  = $x0->xorInt32($x12->addInt32($x8)->rotateLeft(18));
90
+		for ($i = self::ROUNDS; $i > 0; $i -= 2) {
91
+			$x4  = $x4->xorInt32($x0->addInt32($x12)->rotateLeft(7));
92
+			$x8  = $x8->xorInt32($x4->addInt32($x0)->rotateLeft(9));
93
+			$x12 = $x12->xorInt32($x8->addInt32($x4)->rotateLeft(13));
94
+			$x0  = $x0->xorInt32($x12->addInt32($x8)->rotateLeft(18));
95 95
 
96
-            $x9  = $x9->xorInt32($x5->addInt32($x1)->rotateLeft(7));
97
-            $x13 = $x13->xorInt32($x9->addInt32($x5)->rotateLeft(9));
98
-            $x1  = $x1->xorInt32($x13->addInt32($x9)->rotateLeft(13));
99
-            $x5  = $x5->xorInt32($x1->addInt32($x13)->rotateLeft(18));
96
+			$x9  = $x9->xorInt32($x5->addInt32($x1)->rotateLeft(7));
97
+			$x13 = $x13->xorInt32($x9->addInt32($x5)->rotateLeft(9));
98
+			$x1  = $x1->xorInt32($x13->addInt32($x9)->rotateLeft(13));
99
+			$x5  = $x5->xorInt32($x1->addInt32($x13)->rotateLeft(18));
100 100
 
101
-            $x14 = $x14->xorInt32($x10->addInt32($x6)->rotateLeft(7));
102
-            $x2  = $x2->xorInt32($x14->addInt32($x10)->rotateLeft(9));
103
-            $x6  = $x6->xorInt32($x2->addInt32($x14)->rotateLeft(13));
104
-            $x10 = $x10->xorInt32($x6->addInt32($x2)->rotateLeft(18));
101
+			$x14 = $x14->xorInt32($x10->addInt32($x6)->rotateLeft(7));
102
+			$x2  = $x2->xorInt32($x14->addInt32($x10)->rotateLeft(9));
103
+			$x6  = $x6->xorInt32($x2->addInt32($x14)->rotateLeft(13));
104
+			$x10 = $x10->xorInt32($x6->addInt32($x2)->rotateLeft(18));
105 105
 
106
-            $x3  = $x3->xorInt32($x15->addInt32($x11)->rotateLeft(7));
107
-            $x7  = $x7->xorInt32($x3->addInt32($x15)->rotateLeft(9));
108
-            $x11 = $x11->xorInt32($x7->addInt32($x3)->rotateLeft(13));
109
-            $x15 = $x15->xorInt32($x11->addInt32($x7)->rotateLeft(18));
106
+			$x3  = $x3->xorInt32($x15->addInt32($x11)->rotateLeft(7));
107
+			$x7  = $x7->xorInt32($x3->addInt32($x15)->rotateLeft(9));
108
+			$x11 = $x11->xorInt32($x7->addInt32($x3)->rotateLeft(13));
109
+			$x15 = $x15->xorInt32($x11->addInt32($x7)->rotateLeft(18));
110 110
 
111
-            $x1  = $x1->xorInt32($x0->addInt32($x3)->rotateLeft(7));
112
-            $x2  = $x2->xorInt32($x1->addInt32($x0)->rotateLeft(9));
113
-            $x3  = $x3->xorInt32($x2->addInt32($x1)->rotateLeft(13));
114
-            $x0  = $x0->xorInt32($x3->addInt32($x2)->rotateLeft(18));
111
+			$x1  = $x1->xorInt32($x0->addInt32($x3)->rotateLeft(7));
112
+			$x2  = $x2->xorInt32($x1->addInt32($x0)->rotateLeft(9));
113
+			$x3  = $x3->xorInt32($x2->addInt32($x1)->rotateLeft(13));
114
+			$x0  = $x0->xorInt32($x3->addInt32($x2)->rotateLeft(18));
115 115
 
116
-            $x6  = $x6->xorInt32($x5->addInt32($x4)->rotateLeft(7));
117
-            $x7  = $x7->xorInt32($x6->addInt32($x5)->rotateLeft(9));
118
-            $x4  = $x4->xorInt32($x7->addInt32($x6)->rotateLeft(13));
119
-            $x5  = $x5->xorInt32($x4->addInt32($x7)->rotateLeft(18));
116
+			$x6  = $x6->xorInt32($x5->addInt32($x4)->rotateLeft(7));
117
+			$x7  = $x7->xorInt32($x6->addInt32($x5)->rotateLeft(9));
118
+			$x4  = $x4->xorInt32($x7->addInt32($x6)->rotateLeft(13));
119
+			$x5  = $x5->xorInt32($x4->addInt32($x7)->rotateLeft(18));
120 120
 
121
-            $x11 = $x11->xorInt32($x10->addInt32($x9)->rotateLeft(7));
122
-            $x8  = $x8->xorInt32($x11->addInt32($x10)->rotateLeft(9));
123
-            $x9  = $x9->xorInt32($x8->addInt32($x11)->rotateLeft(13));
124
-            $x10 = $x10->xorInt32($x9->addInt32($x8)->rotateLeft(18));
121
+			$x11 = $x11->xorInt32($x10->addInt32($x9)->rotateLeft(7));
122
+			$x8  = $x8->xorInt32($x11->addInt32($x10)->rotateLeft(9));
123
+			$x9  = $x9->xorInt32($x8->addInt32($x11)->rotateLeft(13));
124
+			$x10 = $x10->xorInt32($x9->addInt32($x8)->rotateLeft(18));
125 125
 
126
-            $x12 = $x12->xorInt32($x15->addInt32($x14)->rotateLeft(7));
127
-            $x13 = $x13->xorInt32($x12->addInt32($x15)->rotateLeft(9));
128
-            $x14 = $x14->xorInt32($x13->addInt32($x12)->rotateLeft(13));
129
-            $x15 = $x15->xorInt32($x14->addInt32($x13)->rotateLeft(18));
130
-        }
126
+			$x12 = $x12->xorInt32($x15->addInt32($x14)->rotateLeft(7));
127
+			$x13 = $x13->xorInt32($x12->addInt32($x15)->rotateLeft(9));
128
+			$x14 = $x14->xorInt32($x13->addInt32($x12)->rotateLeft(13));
129
+			$x15 = $x15->xorInt32($x14->addInt32($x13)->rotateLeft(18));
130
+		}
131 131
 
132
-        return $x0->toReverseString() .
133
-            $x5->toReverseString() .
134
-            $x10->toReverseString() .
135
-            $x15->toReverseString() .
136
-            $x6->toReverseString() .
137
-            $x7->toReverseString() .
138
-            $x8->toReverseString() .
139
-            $x9->toReverseString();
140
-    }
132
+		return $x0->toReverseString() .
133
+			$x5->toReverseString() .
134
+			$x10->toReverseString() .
135
+			$x15->toReverseString() .
136
+			$x6->toReverseString() .
137
+			$x7->toReverseString() .
138
+			$x8->toReverseString() .
139
+			$x9->toReverseString();
140
+	}
141 141
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/SecretStream/State.php 1 patch
Indentation   +155 added lines, -155 removed lines patch added patch discarded remove patch
@@ -5,159 +5,159 @@
 block discarded – undo
5 5
  */
6 6
 class ParagonIE_Sodium_Core32_SecretStream_State
7 7
 {
8
-    /** @var string $key */
9
-    protected $key;
10
-
11
-    /** @var int $counter */
12
-    protected $counter;
13
-
14
-    /** @var string $nonce */
15
-    protected $nonce;
16
-
17
-    /** @var string $_pad */
18
-    protected $_pad;
19
-
20
-    /**
21
-     * ParagonIE_Sodium_Core32_SecretStream_State constructor.
22
-     * @param string $key
23
-     * @param string|null $nonce
24
-     */
25
-    public function __construct($key, $nonce = null)
26
-    {
27
-        $this->key = $key;
28
-        $this->counter = 1;
29
-        if (is_null($nonce)) {
30
-            $nonce = str_repeat("\0", 12);
31
-        }
32
-        $this->nonce = str_pad($nonce, 12, "\0", STR_PAD_RIGHT);;
33
-        $this->_pad = str_repeat("\0", 4);
34
-    }
35
-
36
-    /**
37
-     * @return self
38
-     */
39
-    public function counterReset()
40
-    {
41
-        $this->counter = 1;
42
-        $this->_pad = str_repeat("\0", 4);
43
-        return $this;
44
-    }
45
-
46
-    /**
47
-     * @return string
48
-     */
49
-    public function getKey()
50
-    {
51
-        return $this->key;
52
-    }
53
-
54
-    /**
55
-     * @return string
56
-     */
57
-    public function getCounter()
58
-    {
59
-        return ParagonIE_Sodium_Core32_Util::store32_le($this->counter);
60
-    }
61
-
62
-    /**
63
-     * @return string
64
-     */
65
-    public function getNonce()
66
-    {
67
-        if (!is_string($this->nonce)) {
68
-            $this->nonce = str_repeat("\0", 12);
69
-        }
70
-        if (ParagonIE_Sodium_Core32_Util::strlen($this->nonce) !== 12) {
71
-            $this->nonce = str_pad($this->nonce, 12, "\0", STR_PAD_RIGHT);
72
-        }
73
-        return $this->nonce;
74
-    }
75
-
76
-    /**
77
-     * @return string
78
-     */
79
-    public function getCombinedNonce()
80
-    {
81
-        return $this->getCounter() .
82
-            ParagonIE_Sodium_Core32_Util::substr($this->getNonce(), 0, 8);
83
-    }
84
-
85
-    /**
86
-     * @return self
87
-     */
88
-    public function incrementCounter()
89
-    {
90
-        ++$this->counter;
91
-        return $this;
92
-    }
93
-
94
-    /**
95
-     * @return bool
96
-     */
97
-    public function needsRekey()
98
-    {
99
-        return ($this->counter & 0xffff) === 0;
100
-    }
101
-
102
-    /**
103
-     * @param string $newKeyAndNonce
104
-     * @return self
105
-     */
106
-    public function rekey($newKeyAndNonce)
107
-    {
108
-        $this->key = ParagonIE_Sodium_Core32_Util::substr($newKeyAndNonce, 0, 32);
109
-        $this->nonce = str_pad(
110
-            ParagonIE_Sodium_Core32_Util::substr($newKeyAndNonce, 32),
111
-            12,
112
-            "\0",
113
-            STR_PAD_RIGHT
114
-        );
115
-        return $this;
116
-    }
117
-
118
-    /**
119
-     * @param string $str
120
-     * @return self
121
-     */
122
-    public function xorNonce($str)
123
-    {
124
-        $this->nonce = ParagonIE_Sodium_Core32_Util::xorStrings(
125
-            $this->getNonce(),
126
-            str_pad(
127
-                ParagonIE_Sodium_Core32_Util::substr($str, 0, 8),
128
-                12,
129
-                "\0",
130
-                STR_PAD_RIGHT
131
-            )
132
-        );
133
-        return $this;
134
-    }
135
-
136
-    /**
137
-     * @param string $string
138
-     * @return self
139
-     */
140
-    public static function fromString($string)
141
-    {
142
-        $state = new ParagonIE_Sodium_Core32_SecretStream_State(
143
-            ParagonIE_Sodium_Core32_Util::substr($string, 0, 32)
144
-        );
145
-        $state->counter = ParagonIE_Sodium_Core32_Util::load_4(
146
-            ParagonIE_Sodium_Core32_Util::substr($string, 32, 4)
147
-        );
148
-        $state->nonce = ParagonIE_Sodium_Core32_Util::substr($string, 36, 12);
149
-        $state->_pad = ParagonIE_Sodium_Core32_Util::substr($string, 48, 8);
150
-        return $state;
151
-    }
152
-
153
-    /**
154
-     * @return string
155
-     */
156
-    public function toString()
157
-    {
158
-        return $this->key .
159
-            $this->getCounter() .
160
-            $this->nonce .
161
-            $this->_pad;
162
-    }
8
+	/** @var string $key */
9
+	protected $key;
10
+
11
+	/** @var int $counter */
12
+	protected $counter;
13
+
14
+	/** @var string $nonce */
15
+	protected $nonce;
16
+
17
+	/** @var string $_pad */
18
+	protected $_pad;
19
+
20
+	/**
21
+	 * ParagonIE_Sodium_Core32_SecretStream_State constructor.
22
+	 * @param string $key
23
+	 * @param string|null $nonce
24
+	 */
25
+	public function __construct($key, $nonce = null)
26
+	{
27
+		$this->key = $key;
28
+		$this->counter = 1;
29
+		if (is_null($nonce)) {
30
+			$nonce = str_repeat("\0", 12);
31
+		}
32
+		$this->nonce = str_pad($nonce, 12, "\0", STR_PAD_RIGHT);;
33
+		$this->_pad = str_repeat("\0", 4);
34
+	}
35
+
36
+	/**
37
+	 * @return self
38
+	 */
39
+	public function counterReset()
40
+	{
41
+		$this->counter = 1;
42
+		$this->_pad = str_repeat("\0", 4);
43
+		return $this;
44
+	}
45
+
46
+	/**
47
+	 * @return string
48
+	 */
49
+	public function getKey()
50
+	{
51
+		return $this->key;
52
+	}
53
+
54
+	/**
55
+	 * @return string
56
+	 */
57
+	public function getCounter()
58
+	{
59
+		return ParagonIE_Sodium_Core32_Util::store32_le($this->counter);
60
+	}
61
+
62
+	/**
63
+	 * @return string
64
+	 */
65
+	public function getNonce()
66
+	{
67
+		if (!is_string($this->nonce)) {
68
+			$this->nonce = str_repeat("\0", 12);
69
+		}
70
+		if (ParagonIE_Sodium_Core32_Util::strlen($this->nonce) !== 12) {
71
+			$this->nonce = str_pad($this->nonce, 12, "\0", STR_PAD_RIGHT);
72
+		}
73
+		return $this->nonce;
74
+	}
75
+
76
+	/**
77
+	 * @return string
78
+	 */
79
+	public function getCombinedNonce()
80
+	{
81
+		return $this->getCounter() .
82
+			ParagonIE_Sodium_Core32_Util::substr($this->getNonce(), 0, 8);
83
+	}
84
+
85
+	/**
86
+	 * @return self
87
+	 */
88
+	public function incrementCounter()
89
+	{
90
+		++$this->counter;
91
+		return $this;
92
+	}
93
+
94
+	/**
95
+	 * @return bool
96
+	 */
97
+	public function needsRekey()
98
+	{
99
+		return ($this->counter & 0xffff) === 0;
100
+	}
101
+
102
+	/**
103
+	 * @param string $newKeyAndNonce
104
+	 * @return self
105
+	 */
106
+	public function rekey($newKeyAndNonce)
107
+	{
108
+		$this->key = ParagonIE_Sodium_Core32_Util::substr($newKeyAndNonce, 0, 32);
109
+		$this->nonce = str_pad(
110
+			ParagonIE_Sodium_Core32_Util::substr($newKeyAndNonce, 32),
111
+			12,
112
+			"\0",
113
+			STR_PAD_RIGHT
114
+		);
115
+		return $this;
116
+	}
117
+
118
+	/**
119
+	 * @param string $str
120
+	 * @return self
121
+	 */
122
+	public function xorNonce($str)
123
+	{
124
+		$this->nonce = ParagonIE_Sodium_Core32_Util::xorStrings(
125
+			$this->getNonce(),
126
+			str_pad(
127
+				ParagonIE_Sodium_Core32_Util::substr($str, 0, 8),
128
+				12,
129
+				"\0",
130
+				STR_PAD_RIGHT
131
+			)
132
+		);
133
+		return $this;
134
+	}
135
+
136
+	/**
137
+	 * @param string $string
138
+	 * @return self
139
+	 */
140
+	public static function fromString($string)
141
+	{
142
+		$state = new ParagonIE_Sodium_Core32_SecretStream_State(
143
+			ParagonIE_Sodium_Core32_Util::substr($string, 0, 32)
144
+		);
145
+		$state->counter = ParagonIE_Sodium_Core32_Util::load_4(
146
+			ParagonIE_Sodium_Core32_Util::substr($string, 32, 4)
147
+		);
148
+		$state->nonce = ParagonIE_Sodium_Core32_Util::substr($string, 36, 12);
149
+		$state->_pad = ParagonIE_Sodium_Core32_Util::substr($string, 48, 8);
150
+		return $state;
151
+	}
152
+
153
+	/**
154
+	 * @return string
155
+	 */
156
+	public function toString()
157
+	{
158
+		return $this->key .
159
+			$this->getCounter() .
160
+			$this->nonce .
161
+			$this->_pad;
162
+	}
163 163
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Salsa20.php 1 patch
Indentation   +276 added lines, -276 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_Salsa20', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,298 +9,298 @@  discard block
 block discarded – undo
9 9
  */
10 10
 abstract class ParagonIE_Sodium_Core32_Salsa20 extends ParagonIE_Sodium_Core32_Util
11 11
 {
12
-    const ROUNDS = 20;
12
+	const ROUNDS = 20;
13 13
 
14
-    /**
15
-     * Calculate an salsa20 hash of a single block
16
-     *
17
-     * @internal You should not use this directly from another application
18
-     *
19
-     * @param string $in
20
-     * @param string $k
21
-     * @param string|null $c
22
-     * @return string
23
-     * @throws SodiumException
24
-     * @throws TypeError
25
-     */
26
-    public static function core_salsa20($in, $k, $c = null)
27
-    {
28
-        /**
29
-         * @var ParagonIE_Sodium_Core32_Int32 $x0
30
-         * @var ParagonIE_Sodium_Core32_Int32 $x1
31
-         * @var ParagonIE_Sodium_Core32_Int32 $x2
32
-         * @var ParagonIE_Sodium_Core32_Int32 $x3
33
-         * @var ParagonIE_Sodium_Core32_Int32 $x4
34
-         * @var ParagonIE_Sodium_Core32_Int32 $x5
35
-         * @var ParagonIE_Sodium_Core32_Int32 $x6
36
-         * @var ParagonIE_Sodium_Core32_Int32 $x7
37
-         * @var ParagonIE_Sodium_Core32_Int32 $x8
38
-         * @var ParagonIE_Sodium_Core32_Int32 $x9
39
-         * @var ParagonIE_Sodium_Core32_Int32 $x10
40
-         * @var ParagonIE_Sodium_Core32_Int32 $x11
41
-         * @var ParagonIE_Sodium_Core32_Int32 $x12
42
-         * @var ParagonIE_Sodium_Core32_Int32 $x13
43
-         * @var ParagonIE_Sodium_Core32_Int32 $x14
44
-         * @var ParagonIE_Sodium_Core32_Int32 $x15
45
-         * @var ParagonIE_Sodium_Core32_Int32 $j0
46
-         * @var ParagonIE_Sodium_Core32_Int32 $j1
47
-         * @var ParagonIE_Sodium_Core32_Int32 $j2
48
-         * @var ParagonIE_Sodium_Core32_Int32 $j3
49
-         * @var ParagonIE_Sodium_Core32_Int32 $j4
50
-         * @var ParagonIE_Sodium_Core32_Int32 $j5
51
-         * @var ParagonIE_Sodium_Core32_Int32 $j6
52
-         * @var ParagonIE_Sodium_Core32_Int32 $j7
53
-         * @var ParagonIE_Sodium_Core32_Int32 $j8
54
-         * @var ParagonIE_Sodium_Core32_Int32 $j9
55
-         * @var ParagonIE_Sodium_Core32_Int32 $j10
56
-         * @var ParagonIE_Sodium_Core32_Int32 $j11
57
-         * @var ParagonIE_Sodium_Core32_Int32 $j12
58
-         * @var ParagonIE_Sodium_Core32_Int32 $j13
59
-         * @var ParagonIE_Sodium_Core32_Int32 $j14
60
-         * @var ParagonIE_Sodium_Core32_Int32 $j15
61
-         */
62
-        if (self::strlen($k) < 32) {
63
-            throw new RangeException('Key must be 32 bytes long');
64
-        }
65
-        if ($c === null) {
66
-            $x0  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
67
-            $x5  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
68
-            $x10 = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
69
-            $x15 = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
70
-        } else {
71
-            $x0  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 0, 4));
72
-            $x5  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 4, 4));
73
-            $x10 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 8, 4));
74
-            $x15 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 12, 4));
75
-        }
76
-        $x1  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 0, 4));
77
-        $x2  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 4, 4));
78
-        $x3  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 8, 4));
79
-        $x4  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 12, 4));
80
-        $x6  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 0, 4));
81
-        $x7  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 4, 4));
82
-        $x8  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 8, 4));
83
-        $x9  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 12, 4));
84
-        $x11 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 16, 4));
85
-        $x12 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 20, 4));
86
-        $x13 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 24, 4));
87
-        $x14 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 28, 4));
14
+	/**
15
+	 * Calculate an salsa20 hash of a single block
16
+	 *
17
+	 * @internal You should not use this directly from another application
18
+	 *
19
+	 * @param string $in
20
+	 * @param string $k
21
+	 * @param string|null $c
22
+	 * @return string
23
+	 * @throws SodiumException
24
+	 * @throws TypeError
25
+	 */
26
+	public static function core_salsa20($in, $k, $c = null)
27
+	{
28
+		/**
29
+		 * @var ParagonIE_Sodium_Core32_Int32 $x0
30
+		 * @var ParagonIE_Sodium_Core32_Int32 $x1
31
+		 * @var ParagonIE_Sodium_Core32_Int32 $x2
32
+		 * @var ParagonIE_Sodium_Core32_Int32 $x3
33
+		 * @var ParagonIE_Sodium_Core32_Int32 $x4
34
+		 * @var ParagonIE_Sodium_Core32_Int32 $x5
35
+		 * @var ParagonIE_Sodium_Core32_Int32 $x6
36
+		 * @var ParagonIE_Sodium_Core32_Int32 $x7
37
+		 * @var ParagonIE_Sodium_Core32_Int32 $x8
38
+		 * @var ParagonIE_Sodium_Core32_Int32 $x9
39
+		 * @var ParagonIE_Sodium_Core32_Int32 $x10
40
+		 * @var ParagonIE_Sodium_Core32_Int32 $x11
41
+		 * @var ParagonIE_Sodium_Core32_Int32 $x12
42
+		 * @var ParagonIE_Sodium_Core32_Int32 $x13
43
+		 * @var ParagonIE_Sodium_Core32_Int32 $x14
44
+		 * @var ParagonIE_Sodium_Core32_Int32 $x15
45
+		 * @var ParagonIE_Sodium_Core32_Int32 $j0
46
+		 * @var ParagonIE_Sodium_Core32_Int32 $j1
47
+		 * @var ParagonIE_Sodium_Core32_Int32 $j2
48
+		 * @var ParagonIE_Sodium_Core32_Int32 $j3
49
+		 * @var ParagonIE_Sodium_Core32_Int32 $j4
50
+		 * @var ParagonIE_Sodium_Core32_Int32 $j5
51
+		 * @var ParagonIE_Sodium_Core32_Int32 $j6
52
+		 * @var ParagonIE_Sodium_Core32_Int32 $j7
53
+		 * @var ParagonIE_Sodium_Core32_Int32 $j8
54
+		 * @var ParagonIE_Sodium_Core32_Int32 $j9
55
+		 * @var ParagonIE_Sodium_Core32_Int32 $j10
56
+		 * @var ParagonIE_Sodium_Core32_Int32 $j11
57
+		 * @var ParagonIE_Sodium_Core32_Int32 $j12
58
+		 * @var ParagonIE_Sodium_Core32_Int32 $j13
59
+		 * @var ParagonIE_Sodium_Core32_Int32 $j14
60
+		 * @var ParagonIE_Sodium_Core32_Int32 $j15
61
+		 */
62
+		if (self::strlen($k) < 32) {
63
+			throw new RangeException('Key must be 32 bytes long');
64
+		}
65
+		if ($c === null) {
66
+			$x0  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
67
+			$x5  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
68
+			$x10 = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
69
+			$x15 = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
70
+		} else {
71
+			$x0  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 0, 4));
72
+			$x5  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 4, 4));
73
+			$x10 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 8, 4));
74
+			$x15 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 12, 4));
75
+		}
76
+		$x1  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 0, 4));
77
+		$x2  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 4, 4));
78
+		$x3  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 8, 4));
79
+		$x4  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 12, 4));
80
+		$x6  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 0, 4));
81
+		$x7  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 4, 4));
82
+		$x8  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 8, 4));
83
+		$x9  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 12, 4));
84
+		$x11 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 16, 4));
85
+		$x12 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 20, 4));
86
+		$x13 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 24, 4));
87
+		$x14 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 28, 4));
88 88
 
89
-        $j0  = clone $x0;
90
-        $j1  = clone $x1;
91
-        $j2  = clone $x2;
92
-        $j3  = clone $x3;
93
-        $j4  = clone $x4;
94
-        $j5  = clone $x5;
95
-        $j6  = clone $x6;
96
-        $j7  = clone $x7;
97
-        $j8  = clone $x8;
98
-        $j9  = clone $x9;
99
-        $j10  = clone $x10;
100
-        $j11  = clone $x11;
101
-        $j12  = clone $x12;
102
-        $j13  = clone $x13;
103
-        $j14  = clone $x14;
104
-        $j15  = clone $x15;
89
+		$j0  = clone $x0;
90
+		$j1  = clone $x1;
91
+		$j2  = clone $x2;
92
+		$j3  = clone $x3;
93
+		$j4  = clone $x4;
94
+		$j5  = clone $x5;
95
+		$j6  = clone $x6;
96
+		$j7  = clone $x7;
97
+		$j8  = clone $x8;
98
+		$j9  = clone $x9;
99
+		$j10  = clone $x10;
100
+		$j11  = clone $x11;
101
+		$j12  = clone $x12;
102
+		$j13  = clone $x13;
103
+		$j14  = clone $x14;
104
+		$j15  = clone $x15;
105 105
 
106
-        for ($i = self::ROUNDS; $i > 0; $i -= 2) {
107
-            $x4  = $x4->xorInt32($x0->addInt32($x12)->rotateLeft(7));
108
-            $x8  = $x8->xorInt32($x4->addInt32($x0)->rotateLeft(9));
109
-            $x12 = $x12->xorInt32($x8->addInt32($x4)->rotateLeft(13));
110
-            $x0  = $x0->xorInt32($x12->addInt32($x8)->rotateLeft(18));
106
+		for ($i = self::ROUNDS; $i > 0; $i -= 2) {
107
+			$x4  = $x4->xorInt32($x0->addInt32($x12)->rotateLeft(7));
108
+			$x8  = $x8->xorInt32($x4->addInt32($x0)->rotateLeft(9));
109
+			$x12 = $x12->xorInt32($x8->addInt32($x4)->rotateLeft(13));
110
+			$x0  = $x0->xorInt32($x12->addInt32($x8)->rotateLeft(18));
111 111
 
112
-            $x9  = $x9->xorInt32($x5->addInt32($x1)->rotateLeft(7));
113
-            $x13 = $x13->xorInt32($x9->addInt32($x5)->rotateLeft(9));
114
-            $x1  = $x1->xorInt32($x13->addInt32($x9)->rotateLeft(13));
115
-            $x5  = $x5->xorInt32($x1->addInt32($x13)->rotateLeft(18));
112
+			$x9  = $x9->xorInt32($x5->addInt32($x1)->rotateLeft(7));
113
+			$x13 = $x13->xorInt32($x9->addInt32($x5)->rotateLeft(9));
114
+			$x1  = $x1->xorInt32($x13->addInt32($x9)->rotateLeft(13));
115
+			$x5  = $x5->xorInt32($x1->addInt32($x13)->rotateLeft(18));
116 116
 
117
-            $x14 = $x14->xorInt32($x10->addInt32($x6)->rotateLeft(7));
118
-            $x2  = $x2->xorInt32($x14->addInt32($x10)->rotateLeft(9));
119
-            $x6  = $x6->xorInt32($x2->addInt32($x14)->rotateLeft(13));
120
-            $x10 = $x10->xorInt32($x6->addInt32($x2)->rotateLeft(18));
117
+			$x14 = $x14->xorInt32($x10->addInt32($x6)->rotateLeft(7));
118
+			$x2  = $x2->xorInt32($x14->addInt32($x10)->rotateLeft(9));
119
+			$x6  = $x6->xorInt32($x2->addInt32($x14)->rotateLeft(13));
120
+			$x10 = $x10->xorInt32($x6->addInt32($x2)->rotateLeft(18));
121 121
 
122
-            $x3  = $x3->xorInt32($x15->addInt32($x11)->rotateLeft(7));
123
-            $x7  = $x7->xorInt32($x3->addInt32($x15)->rotateLeft(9));
124
-            $x11 = $x11->xorInt32($x7->addInt32($x3)->rotateLeft(13));
125
-            $x15 = $x15->xorInt32($x11->addInt32($x7)->rotateLeft(18));
122
+			$x3  = $x3->xorInt32($x15->addInt32($x11)->rotateLeft(7));
123
+			$x7  = $x7->xorInt32($x3->addInt32($x15)->rotateLeft(9));
124
+			$x11 = $x11->xorInt32($x7->addInt32($x3)->rotateLeft(13));
125
+			$x15 = $x15->xorInt32($x11->addInt32($x7)->rotateLeft(18));
126 126
 
127
-            $x1  = $x1->xorInt32($x0->addInt32($x3)->rotateLeft(7));
128
-            $x2  = $x2->xorInt32($x1->addInt32($x0)->rotateLeft(9));
129
-            $x3  = $x3->xorInt32($x2->addInt32($x1)->rotateLeft(13));
130
-            $x0  = $x0->xorInt32($x3->addInt32($x2)->rotateLeft(18));
127
+			$x1  = $x1->xorInt32($x0->addInt32($x3)->rotateLeft(7));
128
+			$x2  = $x2->xorInt32($x1->addInt32($x0)->rotateLeft(9));
129
+			$x3  = $x3->xorInt32($x2->addInt32($x1)->rotateLeft(13));
130
+			$x0  = $x0->xorInt32($x3->addInt32($x2)->rotateLeft(18));
131 131
 
132
-            $x6  = $x6->xorInt32($x5->addInt32($x4)->rotateLeft(7));
133
-            $x7  = $x7->xorInt32($x6->addInt32($x5)->rotateLeft(9));
134
-            $x4  = $x4->xorInt32($x7->addInt32($x6)->rotateLeft(13));
135
-            $x5  = $x5->xorInt32($x4->addInt32($x7)->rotateLeft(18));
132
+			$x6  = $x6->xorInt32($x5->addInt32($x4)->rotateLeft(7));
133
+			$x7  = $x7->xorInt32($x6->addInt32($x5)->rotateLeft(9));
134
+			$x4  = $x4->xorInt32($x7->addInt32($x6)->rotateLeft(13));
135
+			$x5  = $x5->xorInt32($x4->addInt32($x7)->rotateLeft(18));
136 136
 
137
-            $x11 = $x11->xorInt32($x10->addInt32($x9)->rotateLeft(7));
138
-            $x8  = $x8->xorInt32($x11->addInt32($x10)->rotateLeft(9));
139
-            $x9  = $x9->xorInt32($x8->addInt32($x11)->rotateLeft(13));
140
-            $x10 = $x10->xorInt32($x9->addInt32($x8)->rotateLeft(18));
137
+			$x11 = $x11->xorInt32($x10->addInt32($x9)->rotateLeft(7));
138
+			$x8  = $x8->xorInt32($x11->addInt32($x10)->rotateLeft(9));
139
+			$x9  = $x9->xorInt32($x8->addInt32($x11)->rotateLeft(13));
140
+			$x10 = $x10->xorInt32($x9->addInt32($x8)->rotateLeft(18));
141 141
 
142
-            $x12 = $x12->xorInt32($x15->addInt32($x14)->rotateLeft(7));
143
-            $x13 = $x13->xorInt32($x12->addInt32($x15)->rotateLeft(9));
144
-            $x14 = $x14->xorInt32($x13->addInt32($x12)->rotateLeft(13));
145
-            $x15 = $x15->xorInt32($x14->addInt32($x13)->rotateLeft(18));
146
-        }
142
+			$x12 = $x12->xorInt32($x15->addInt32($x14)->rotateLeft(7));
143
+			$x13 = $x13->xorInt32($x12->addInt32($x15)->rotateLeft(9));
144
+			$x14 = $x14->xorInt32($x13->addInt32($x12)->rotateLeft(13));
145
+			$x15 = $x15->xorInt32($x14->addInt32($x13)->rotateLeft(18));
146
+		}
147 147
 
148
-        $x0  = $x0->addInt32($j0);
149
-        $x1  = $x1->addInt32($j1);
150
-        $x2  = $x2->addInt32($j2);
151
-        $x3  = $x3->addInt32($j3);
152
-        $x4  = $x4->addInt32($j4);
153
-        $x5  = $x5->addInt32($j5);
154
-        $x6  = $x6->addInt32($j6);
155
-        $x7  = $x7->addInt32($j7);
156
-        $x8  = $x8->addInt32($j8);
157
-        $x9  = $x9->addInt32($j9);
158
-        $x10 = $x10->addInt32($j10);
159
-        $x11 = $x11->addInt32($j11);
160
-        $x12 = $x12->addInt32($j12);
161
-        $x13 = $x13->addInt32($j13);
162
-        $x14 = $x14->addInt32($j14);
163
-        $x15 = $x15->addInt32($j15);
148
+		$x0  = $x0->addInt32($j0);
149
+		$x1  = $x1->addInt32($j1);
150
+		$x2  = $x2->addInt32($j2);
151
+		$x3  = $x3->addInt32($j3);
152
+		$x4  = $x4->addInt32($j4);
153
+		$x5  = $x5->addInt32($j5);
154
+		$x6  = $x6->addInt32($j6);
155
+		$x7  = $x7->addInt32($j7);
156
+		$x8  = $x8->addInt32($j8);
157
+		$x9  = $x9->addInt32($j9);
158
+		$x10 = $x10->addInt32($j10);
159
+		$x11 = $x11->addInt32($j11);
160
+		$x12 = $x12->addInt32($j12);
161
+		$x13 = $x13->addInt32($j13);
162
+		$x14 = $x14->addInt32($j14);
163
+		$x15 = $x15->addInt32($j15);
164 164
 
165
-        return $x0->toReverseString() .
166
-            $x1->toReverseString() .
167
-            $x2->toReverseString() .
168
-            $x3->toReverseString() .
169
-            $x4->toReverseString() .
170
-            $x5->toReverseString() .
171
-            $x6->toReverseString() .
172
-            $x7->toReverseString() .
173
-            $x8->toReverseString() .
174
-            $x9->toReverseString() .
175
-            $x10->toReverseString() .
176
-            $x11->toReverseString() .
177
-            $x12->toReverseString() .
178
-            $x13->toReverseString() .
179
-            $x14->toReverseString() .
180
-            $x15->toReverseString();
181
-    }
165
+		return $x0->toReverseString() .
166
+			$x1->toReverseString() .
167
+			$x2->toReverseString() .
168
+			$x3->toReverseString() .
169
+			$x4->toReverseString() .
170
+			$x5->toReverseString() .
171
+			$x6->toReverseString() .
172
+			$x7->toReverseString() .
173
+			$x8->toReverseString() .
174
+			$x9->toReverseString() .
175
+			$x10->toReverseString() .
176
+			$x11->toReverseString() .
177
+			$x12->toReverseString() .
178
+			$x13->toReverseString() .
179
+			$x14->toReverseString() .
180
+			$x15->toReverseString();
181
+	}
182 182
 
183
-    /**
184
-     * @internal You should not use this directly from another application
185
-     *
186
-     * @param int $len
187
-     * @param string $nonce
188
-     * @param string $key
189
-     * @return string
190
-     * @throws SodiumException
191
-     * @throws TypeError
192
-     */
193
-    public static function salsa20($len, $nonce, $key)
194
-    {
195
-        if (self::strlen($key) !== 32) {
196
-            throw new RangeException('Key must be 32 bytes long');
197
-        }
198
-        $kcopy = '' . $key;
199
-        $in = self::substr($nonce, 0, 8) . str_repeat("\0", 8);
200
-        $c = '';
201
-        while ($len >= 64) {
202
-            $c .= self::core_salsa20($in, $kcopy, null);
203
-            $u = 1;
204
-            // Internal counter.
205
-            for ($i = 8; $i < 16; ++$i) {
206
-                $u += self::chrToInt($in[$i]);
207
-                $in[$i] = self::intToChr($u & 0xff);
208
-                $u >>= 8;
209
-            }
210
-            $len -= 64;
211
-        }
212
-        if ($len > 0) {
213
-            $c .= self::substr(
214
-                self::core_salsa20($in, $kcopy, null),
215
-                0,
216
-                $len
217
-            );
218
-        }
219
-        try {
220
-            ParagonIE_Sodium_Compat::memzero($kcopy);
221
-        } catch (SodiumException $ex) {
222
-            $kcopy = null;
223
-        }
224
-        return $c;
225
-    }
183
+	/**
184
+	 * @internal You should not use this directly from another application
185
+	 *
186
+	 * @param int $len
187
+	 * @param string $nonce
188
+	 * @param string $key
189
+	 * @return string
190
+	 * @throws SodiumException
191
+	 * @throws TypeError
192
+	 */
193
+	public static function salsa20($len, $nonce, $key)
194
+	{
195
+		if (self::strlen($key) !== 32) {
196
+			throw new RangeException('Key must be 32 bytes long');
197
+		}
198
+		$kcopy = '' . $key;
199
+		$in = self::substr($nonce, 0, 8) . str_repeat("\0", 8);
200
+		$c = '';
201
+		while ($len >= 64) {
202
+			$c .= self::core_salsa20($in, $kcopy, null);
203
+			$u = 1;
204
+			// Internal counter.
205
+			for ($i = 8; $i < 16; ++$i) {
206
+				$u += self::chrToInt($in[$i]);
207
+				$in[$i] = self::intToChr($u & 0xff);
208
+				$u >>= 8;
209
+			}
210
+			$len -= 64;
211
+		}
212
+		if ($len > 0) {
213
+			$c .= self::substr(
214
+				self::core_salsa20($in, $kcopy, null),
215
+				0,
216
+				$len
217
+			);
218
+		}
219
+		try {
220
+			ParagonIE_Sodium_Compat::memzero($kcopy);
221
+		} catch (SodiumException $ex) {
222
+			$kcopy = null;
223
+		}
224
+		return $c;
225
+	}
226 226
 
227
-    /**
228
-     * @internal You should not use this directly from another application
229
-     *
230
-     * @param string $m
231
-     * @param string $n
232
-     * @param int $ic
233
-     * @param string $k
234
-     * @return string
235
-     * @throws SodiumException
236
-     * @throws TypeError
237
-     */
238
-    public static function salsa20_xor_ic($m, $n, $ic, $k)
239
-    {
240
-        $mlen = self::strlen($m);
241
-        if ($mlen < 1) {
242
-            return '';
243
-        }
244
-        $kcopy = self::substr($k, 0, 32);
245
-        $in = self::substr($n, 0, 8);
246
-        // Initialize the counter
247
-        $in .= ParagonIE_Sodium_Core32_Util::store64_le($ic);
227
+	/**
228
+	 * @internal You should not use this directly from another application
229
+	 *
230
+	 * @param string $m
231
+	 * @param string $n
232
+	 * @param int $ic
233
+	 * @param string $k
234
+	 * @return string
235
+	 * @throws SodiumException
236
+	 * @throws TypeError
237
+	 */
238
+	public static function salsa20_xor_ic($m, $n, $ic, $k)
239
+	{
240
+		$mlen = self::strlen($m);
241
+		if ($mlen < 1) {
242
+			return '';
243
+		}
244
+		$kcopy = self::substr($k, 0, 32);
245
+		$in = self::substr($n, 0, 8);
246
+		// Initialize the counter
247
+		$in .= ParagonIE_Sodium_Core32_Util::store64_le($ic);
248 248
 
249
-        $c = '';
250
-        while ($mlen >= 64) {
251
-            $block = self::core_salsa20($in, $kcopy, null);
252
-            $c .= self::xorStrings(
253
-                self::substr($m, 0, 64),
254
-                self::substr($block, 0, 64)
255
-            );
256
-            $u = 1;
257
-            for ($i = 8; $i < 16; ++$i) {
258
-                $u += self::chrToInt($in[$i]);
259
-                $in[$i] = self::intToChr($u & 0xff);
260
-                $u >>= 8;
261
-            }
249
+		$c = '';
250
+		while ($mlen >= 64) {
251
+			$block = self::core_salsa20($in, $kcopy, null);
252
+			$c .= self::xorStrings(
253
+				self::substr($m, 0, 64),
254
+				self::substr($block, 0, 64)
255
+			);
256
+			$u = 1;
257
+			for ($i = 8; $i < 16; ++$i) {
258
+				$u += self::chrToInt($in[$i]);
259
+				$in[$i] = self::intToChr($u & 0xff);
260
+				$u >>= 8;
261
+			}
262 262
 
263
-            $mlen -= 64;
264
-            $m = self::substr($m, 64);
265
-        }
263
+			$mlen -= 64;
264
+			$m = self::substr($m, 64);
265
+		}
266 266
 
267
-        if ($mlen) {
268
-            $block = self::core_salsa20($in, $kcopy, null);
269
-            $c .= self::xorStrings(
270
-                self::substr($m, 0, $mlen),
271
-                self::substr($block, 0, $mlen)
272
-            );
273
-        }
274
-        try {
275
-            ParagonIE_Sodium_Compat::memzero($block);
276
-            ParagonIE_Sodium_Compat::memzero($kcopy);
277
-        } catch (SodiumException $ex) {
278
-            $block = null;
279
-            $kcopy = null;
280
-        }
267
+		if ($mlen) {
268
+			$block = self::core_salsa20($in, $kcopy, null);
269
+			$c .= self::xorStrings(
270
+				self::substr($m, 0, $mlen),
271
+				self::substr($block, 0, $mlen)
272
+			);
273
+		}
274
+		try {
275
+			ParagonIE_Sodium_Compat::memzero($block);
276
+			ParagonIE_Sodium_Compat::memzero($kcopy);
277
+		} catch (SodiumException $ex) {
278
+			$block = null;
279
+			$kcopy = null;
280
+		}
281 281
 
282
-        return $c;
283
-    }
282
+		return $c;
283
+	}
284 284
 
285
-    /**
286
-     * @internal You should not use this directly from another application
287
-     *
288
-     * @param string $message
289
-     * @param string $nonce
290
-     * @param string $key
291
-     * @return string
292
-     * @throws SodiumException
293
-     * @throws TypeError
294
-     */
295
-    public static function salsa20_xor($message, $nonce, $key)
296
-    {
297
-        return self::xorStrings(
298
-            $message,
299
-            self::salsa20(
300
-                self::strlen($message),
301
-                $nonce,
302
-                $key
303
-            )
304
-        );
305
-    }
285
+	/**
286
+	 * @internal You should not use this directly from another application
287
+	 *
288
+	 * @param string $message
289
+	 * @param string $nonce
290
+	 * @param string $key
291
+	 * @return string
292
+	 * @throws SodiumException
293
+	 * @throws TypeError
294
+	 */
295
+	public static function salsa20_xor($message, $nonce, $key)
296
+	{
297
+		return self::xorStrings(
298
+			$message,
299
+			self::salsa20(
300
+				self::strlen($message),
301
+				$nonce,
302
+				$key
303
+			)
304
+		);
305
+	}
306 306
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Curve25519/H.php 1 patch
Indentation   +1450 added lines, -1450 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_Curve25519_H', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -11,1457 +11,1457 @@  discard block
 block discarded – undo
11 11
  */
12 12
 class ParagonIE_Sodium_Core32_Curve25519_H extends ParagonIE_Sodium_Core32_Util
13 13
 {
14
-    /**
15
-     * See: libsodium's crypto_core/curve25519/ref10/base.h
16
-     *
17
-     * @var array<int, array<int, array<int, array<int, int>>>> Basically, int[32][8][3][10]
18
-     */
19
-    protected static $base = array(
20
-        array(
21
-            array(
22
-                array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
23
-                array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
24
-                array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
25
-            ),
26
-            array(
27
-                array(-12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303),
28
-                array(-21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081),
29
-                array(26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697),
30
-            ),
31
-            array(
32
-                array(15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024),
33
-                array(16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574),
34
-                array(30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357),
35
-            ),
36
-            array(
37
-                array(-17036878, 13921892, 10945806, -6033431, 27105052, -16084379, -28926210, 15006023, 3284568, -6276540),
38
-                array(23599295, -8306047, -11193664, -7687416, 13236774, 10506355, 7464579, 9656445, 13059162, 10374397),
39
-                array(7798556, 16710257, 3033922, 2874086, 28997861, 2835604, 32406664, -3839045, -641708, -101325),
40
-            ),
41
-            array(
42
-                array(10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380),
43
-                array(4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306),
44
-                array(19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942),
45
-            ),
46
-            array(
47
-                array(-15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777),
48
-                array(-8549212, 109983, 15149363, 2178705, 22900618, 4543417, 3044240, -15689887, 1762328, 14866737),
49
-                array(-18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652),
50
-            ),
51
-            array(
52
-                array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
53
-                array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
54
-                array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
55
-            ),
56
-            array(
57
-                array(14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726),
58
-                array(-7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955),
59
-                array(27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425),
60
-            ),
61
-        ),
62
-        array(
63
-            array(
64
-                array(-13657040, -13155431, -31283750, 11777098, 21447386, 6519384, -2378284, -1627556, 10092783, -4764171),
65
-                array(27939166, 14210322, 4677035, 16277044, -22964462, -12398139, -32508754, 12005538, -17810127, 12803510),
66
-                array(17228999, -15661624, -1233527, 300140, -1224870, -11714777, 30364213, -9038194, 18016357, 4397660),
67
-            ),
68
-            array(
69
-                array(-10958843, -7690207, 4776341, -14954238, 27850028, -15602212, -26619106, 14544525, -17477504, 982639),
70
-                array(29253598, 15796703, -2863982, -9908884, 10057023, 3163536, 7332899, -4120128, -21047696, 9934963),
71
-                array(5793303, 16271923, -24131614, -10116404, 29188560, 1206517, -14747930, 4559895, -30123922, -10897950),
72
-            ),
73
-            array(
74
-                array(-27643952, -11493006, 16282657, -11036493, 28414021, -15012264, 24191034, 4541697, -13338309, 5500568),
75
-                array(12650548, -1497113, 9052871, 11355358, -17680037, -8400164, -17430592, 12264343, 10874051, 13524335),
76
-                array(25556948, -3045990, 714651, 2510400, 23394682, -10415330, 33119038, 5080568, -22528059, 5376628),
77
-            ),
78
-            array(
79
-                array(-26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007),
80
-                array(-2255422, 14606630, -21692440, -8039818, 28430649, 8775819, -30494562, 3044290, 31848280, 12543772),
81
-                array(-22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653),
82
-            ),
83
-            array(
84
-                array(2385315, 2454213, -22631320, 46603, -4437935, -15680415, 656965, -7236665, 24316168, -5253567),
85
-                array(13741529, 10911568, -33233417, -8603737, -20177830, -1033297, 33040651, -13424532, -20729456, 8321686),
86
-                array(21060490, -2212744, 15712757, -4336099, 1639040, 10656336, 23845965, -11874838, -9984458, 608372),
87
-            ),
88
-            array(
89
-                array(-13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887),
90
-                array(-23244140, -294205, -11744728, 14712571, -29465699, -2029617, 12797024, -6440308, -1633405, 16678954),
91
-                array(-29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953),
92
-            ),
93
-            array(
94
-                array(24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833),
95
-                array(-16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532),
96
-                array(-22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876),
97
-            ),
98
-            array(
99
-                array(2379352, 11839345, -4110402, -5988665, 11274298, 794957, 212801, -14594663, 23527084, -16458268),
100
-                array(33431127, -11130478, -17838966, -15626900, 8909499, 8376530, -32625340, 4087881, -15188911, -14416214),
101
-                array(1767683, 7197987, -13205226, -2022635, -13091350, 448826, 5799055, 4357868, -4774191, -16323038),
102
-            ),
103
-        ),
104
-        array(
105
-            array(
106
-                array(6721966, 13833823, -23523388, -1551314, 26354293, -11863321, 23365147, -3949732, 7390890, 2759800),
107
-                array(4409041, 2052381, 23373853, 10530217, 7676779, -12885954, 21302353, -4264057, 1244380, -12919645),
108
-                array(-4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664),
109
-            ),
110
-            array(
111
-                array(1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933),
112
-                array(-25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182),
113
-                array(-17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222),
114
-            ),
115
-            array(
116
-                array(-18582163, -3416217, 17824843, -2340966, 22744343, -10442611, 8763061, 3617786, -19600662, 10370991),
117
-                array(20246567, -14369378, 22358229, -543712, 18507283, -10413996, 14554437, -8746092, 32232924, 16763880),
118
-                array(9648505, 10094563, 26416693, 14745928, -30374318, -6472621, 11094161, 15689506, 3140038, -16510092),
119
-            ),
120
-            array(
121
-                array(-16160072, 5472695, 31895588, 4744994, 8823515, 10365685, -27224800, 9448613, -28774454, 366295),
122
-                array(19153450, 11523972, -11096490, -6503142, -24647631, 5420647, 28344573, 8041113, 719605, 11671788),
123
-                array(8678025, 2694440, -6808014, 2517372, 4964326, 11152271, -15432916, -15266516, 27000813, -10195553),
124
-            ),
125
-            array(
126
-                array(-15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026),
127
-                array(11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347),
128
-                array(-18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033),
129
-            ),
130
-            array(
131
-                array(-23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395),
132
-                array(-27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278),
133
-                array(1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890),
134
-            ),
135
-            array(
136
-                array(32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995),
137
-                array(-30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596),
138
-                array(-11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891),
139
-            ),
140
-            array(
141
-                array(31947069, -14366651, -4640583, -15339921, -15125977, -6039709, -14756777, -16411740, 19072640, -9511060),
142
-                array(11685058, 11822410, 3158003, -13952594, 33402194, -4165066, 5977896, -5215017, 473099, 5040608),
143
-                array(-20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606),
144
-            ),
145
-        ),
146
-        array(
147
-            array(
148
-                array(7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389),
149
-                array(-19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016),
150
-                array(-11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341),
151
-            ),
152
-            array(
153
-                array(-22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505),
154
-                array(14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553),
155
-                array(-28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655),
156
-            ),
157
-            array(
158
-                array(15200332, 8368572, 19679101, 15970074, -31872674, 1959451, 24611599, -4543832, -11745876, 12340220),
159
-                array(12876937, -10480056, 33134381, 6590940, -6307776, 14872440, 9613953, 8241152, 15370987, 9608631),
160
-                array(-4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099),
161
-            ),
162
-            array(
163
-                array(26660628, -15677655, 8393734, 358047, -7401291, 992988, -23904233, 858697, 20571223, 8420556),
164
-                array(14620715, 13067227, -15447274, 8264467, 14106269, 15080814, 33531827, 12516406, -21574435, -12476749),
165
-                array(236881, 10476226, 57258, -14677024, 6472998, 2466984, 17258519, 7256740, 8791136, 15069930),
166
-            ),
167
-            array(
168
-                array(1276410, -9371918, 22949635, -16322807, -23493039, -5702186, 14711875, 4874229, -30663140, -2331391),
169
-                array(5855666, 4990204, -13711848, 7294284, -7804282, 1924647, -1423175, -7912378, -33069337, 9234253),
170
-                array(20590503, -9018988, 31529744, -7352666, -2706834, 10650548, 31559055, -11609587, 18979186, 13396066),
171
-            ),
172
-            array(
173
-                array(24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958),
174
-                array(-11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082),
175
-                array(-28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383),
176
-            ),
177
-            array(
178
-                array(-30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521),
179
-                array(-11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807),
180
-                array(23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948),
181
-            ),
182
-            array(
183
-                array(9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134),
184
-                array(-32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455),
185
-                array(27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629),
186
-            ),
187
-        ),
188
-        array(
189
-            array(
190
-                array(-8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069),
191
-                array(-32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746),
192
-                array(24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919),
193
-            ),
194
-            array(
195
-                array(11334899, -9218022, 8025293, 12707519, 17523892, -10476071, 10243738, -14685461, -5066034, 16498837),
196
-                array(8911542, 6887158, -9584260, -6958590, 11145641, -9543680, 17303925, -14124238, 6536641, 10543906),
197
-                array(-28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771),
198
-            ),
199
-            array(
200
-                array(-25742899, -12566864, -15649966, -846607, -33026686, -796288, -33481822, 15824474, -604426, -9039817),
201
-                array(10330056, 70051, 7957388, -9002667, 9764902, 15609756, 27698697, -4890037, 1657394, 3084098),
202
-                array(10477963, -7470260, 12119566, -13250805, 29016247, -5365589, 31280319, 14396151, -30233575, 15272409),
203
-            ),
204
-            array(
205
-                array(-12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504),
206
-                array(-26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727),
207
-                array(28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420),
208
-            ),
209
-            array(
210
-                array(-32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003),
211
-                array(-1580388, -11729417, -25979658, -11445023, -17411874, -10912854, 9291594, -16247779, -12154742, 6048605),
212
-                array(-30305315, 14843444, 1539301, 11864366, 20201677, 1900163, 13934231, 5128323, 11213262, 9168384),
213
-            ),
214
-            array(
215
-                array(-26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701),
216
-                array(-23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683),
217
-                array(29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708),
218
-            ),
219
-            array(
220
-                array(-3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563),
221
-                array(-19464629, 10110288, -17262528, -3503892, -23500387, 1355669, -15523050, 15300988, -20514118, 9168260),
222
-                array(-5353335, 4488613, -23803248, 16314347, 7780487, -15638939, -28948358, 9601605, 33087103, -9011387),
223
-            ),
224
-            array(
225
-                array(-19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870, 15664672),
226
-                array(23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686),
227
-                array(-24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665),
228
-            ),
229
-        ),
230
-        array(
231
-            array(
232
-                array(11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182),
233
-                array(-31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277),
234
-                array(14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628),
235
-            ),
236
-            array(
237
-                array(-4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474),
238
-                array(-26531820, -3695990, -1908898, 2534301, -31870557, -16550355, 18341390, -11419951, 32013174, -10103539),
239
-                array(-25479301, 10876443, -11771086, -14625140, -12369567, 1838104, 21911214, 6354752, 4425632, -837822),
240
-            ),
241
-            array(
242
-                array(-10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970),
243
-                array(19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756),
244
-                array(-24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508),
245
-            ),
246
-            array(
247
-                array(-26205082, 4428547, -8661196, -13194263, 4098402, -14165257, 15522535, 8372215, 5542595, -10702683),
248
-                array(-10562541, 14895633, 26814552, -16673850, -17480754, -2489360, -2781891, 6993761, -18093885, 10114655),
249
-                array(-20107055, -929418, 31422704, 10427861, -7110749, 6150669, -29091755, -11529146, 25953725, -106158),
250
-            ),
251
-            array(
252
-                array(-4234397, -8039292, -9119125, 3046000, 2101609, -12607294, 19390020, 6094296, -3315279, 12831125),
253
-                array(-15998678, 7578152, 5310217, 14408357, -33548620, -224739, 31575954, 6326196, 7381791, -2421839),
254
-                array(-20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664),
255
-            ),
256
-            array(
257
-                array(27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294),
258
-                array(-18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899),
259
-                array(-11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070),
260
-            ),
261
-            array(
262
-                array(3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294),
263
-                array(-15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949),
264
-                array(-21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083),
265
-            ),
266
-            array(
267
-                array(31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420),
268
-                array(-5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940),
269
-                array(29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396),
270
-            ),
271
-        ),
272
-        array(
273
-            array(
274
-                array(-12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567),
275
-                array(20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127),
276
-                array(-16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294),
277
-            ),
278
-            array(
279
-                array(-12889898, 9373458, 31595848, 16374215, 21471720, 13221525, -27283495, -12348559, -3698806, 117887),
280
-                array(22263325, -6560050, 3984570, -11174646, -15114008, -566785, 28311253, 5358056, -23319780, 541964),
281
-                array(16259219, 3261970, 2309254, -15534474, -16885711, -4581916, 24134070, -16705829, -13337066, -13552195),
282
-            ),
283
-            array(
284
-                array(9378160, -13140186, -22845982, -12745264, 28198281, -7244098, -2399684, -717351, 690426, 14876244),
285
-                array(24977353, -314384, -8223969, -13465086, 28432343, -1176353, -13068804, -12297348, -22380984, 6618999),
286
-                array(-1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762),
287
-            ),
288
-            array(
289
-                array(-18603066, 4762990, -926250, 8885304, -28412480, -3187315, 9781647, -10350059, 32779359, 5095274),
290
-                array(-33008130, -5214506, -32264887, -3685216, 9460461, -9327423, -24601656, 14506724, 21639561, -2630236),
291
-                array(-16400943, -13112215, 25239338, 15531969, 3987758, -4499318, -1289502, -6863535, 17874574, 558605),
292
-            ),
293
-            array(
294
-                array(-13600129, 10240081, 9171883, 16131053, -20869254, 9599700, 33499487, 5080151, 2085892, 5119761),
295
-                array(-22205145, -2519528, -16381601, 414691, -25019550, 2170430, 30634760, -8363614, -31999993, -5759884),
296
-                array(-6845704, 15791202, 8550074, -1312654, 29928809, -12092256, 27534430, -7192145, -22351378, 12961482),
297
-            ),
298
-            array(
299
-                array(-24492060, -9570771, 10368194, 11582341, -23397293, -2245287, 16533930, 8206996, -30194652, -5159638),
300
-                array(-11121496, -3382234, 2307366, 6362031, -135455, 8868177, -16835630, 7031275, 7589640, 8945490),
301
-                array(-32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170),
302
-            ),
303
-            array(
304
-                array(5019558, -7907470, 4244127, -14714356, -26933272, 6453165, -19118182, -13289025, -6231896, -10280736),
305
-                array(10853594, 10721687, 26480089, 5861829, -22995819, 1972175, -1866647, -10557898, -3363451, -6441124),
306
-                array(-17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392),
307
-            ),
308
-            array(
309
-                array(8139927, -6546497, 32257646, -5890546, 30375719, 1886181, -21175108, 15441252, 28826358, -4123029),
310
-                array(6267086, 9695052, 7709135, -16603597, -32869068, -1886135, 14795160, -7840124, 13746021, -1742048),
311
-                array(28584902, 7787108, -6732942, -15050729, 22846041, -7571236, -3181936, -363524, 4771362, -8419958),
312
-            ),
313
-        ),
314
-        array(
315
-            array(
316
-                array(24949256, 6376279, -27466481, -8174608, -18646154, -9930606, 33543569, -12141695, 3569627, 11342593),
317
-                array(26514989, 4740088, 27912651, 3697550, 19331575, -11472339, 6809886, 4608608, 7325975, -14801071),
318
-                array(-11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692),
319
-            ),
320
-            array(
321
-                array(11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687),
322
-                array(-160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441),
323
-                array(-20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001),
324
-            ),
325
-            array(
326
-                array(-938825, -3930586, -8714311, 16124718, 24603125, -6225393, -13775352, -11875822, 24345683, 10325460),
327
-                array(-19855277, -1568885, -22202708, 8714034, 14007766, 6928528, 16318175, -1010689, 4766743, 3552007),
328
-                array(-21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762),
329
-            ),
330
-            array(
331
-                array(15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005),
332
-                array(-9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674),
333
-                array(4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035),
334
-            ),
335
-            array(
336
-                array(7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590),
337
-                array(-2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957),
338
-                array(-30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812),
339
-            ),
340
-            array(
341
-                array(33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740),
342
-                array(-18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122),
343
-                array(-27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158),
344
-            ),
345
-            array(
346
-                array(8894125, 7450974, -2664149, -9765752, -28080517, -12389115, 19345746, 14680796, 11632993, 5847885),
347
-                array(26942781, -2315317, 9129564, -4906607, 26024105, 11769399, -11518837, 6367194, -9727230, 4782140),
348
-                array(19916461, -4828410, -22910704, -11414391, 25606324, -5972441, 33253853, 8220911, 6358847, -1873857),
349
-            ),
350
-            array(
351
-                array(801428, -2081702, 16569428, 11065167, 29875704, 96627, 7908388, -4480480, -13538503, 1387155),
352
-                array(19646058, 5720633, -11416706, 12814209, 11607948, 12749789, 14147075, 15156355, -21866831, 11835260),
353
-                array(19299512, 1155910, 28703737, 14890794, 2925026, 7269399, 26121523, 15467869, -26560550, 5052483),
354
-            ),
355
-        ),
356
-        array(
357
-            array(
358
-                array(-3017432, 10058206, 1980837, 3964243, 22160966, 12322533, -6431123, -12618185, 12228557, -7003677),
359
-                array(32944382, 14922211, -22844894, 5188528, 21913450, -8719943, 4001465, 13238564, -6114803, 8653815),
360
-                array(22865569, -4652735, 27603668, -12545395, 14348958, 8234005, 24808405, 5719875, 28483275, 2841751),
361
-            ),
362
-            array(
363
-                array(-16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203),
364
-                array(-11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208),
365
-                array(1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230),
366
-            ),
367
-            array(
368
-                array(16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850),
369
-                array(-21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389),
370
-                array(-9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968),
371
-            ),
372
-            array(
373
-                array(-11307610, 6210372, 13206574, 5806320, -29017692, -13967200, -12331205, -7486601, -25578460, -16240689),
374
-                array(14668462, -12270235, 26039039, 15305210, 25515617, 4542480, 10453892, 6577524, 9145645, -6443880),
375
-                array(5974874, 3053895, -9433049, -10385191, -31865124, 3225009, -7972642, 3936128, -5652273, -3050304),
376
-            ),
377
-            array(
378
-                array(30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632),
379
-                array(-3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412),
380
-                array(20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566),
381
-            ),
382
-            array(
383
-                array(-20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038),
384
-                array(-26819236, -3283715, 29965059, 3039786, -14473765, 2540457, 29457502, 14625692, -24819617, 12570232),
385
-                array(-1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943),
386
-            ),
387
-            array(
388
-                array(17960970, -11775534, -4140968, -9702530, -8876562, -1410617, -12907383, -8659932, -29576300, 1903856),
389
-                array(23134274, -14279132, -10681997, -1611936, 20684485, 15770816, -12989750, 3190296, 26955097, 14109738),
390
-                array(15308788, 5320727, -30113809, -14318877, 22902008, 7767164, 29425325, -11277562, 31960942, 11934971),
391
-            ),
392
-            array(
393
-                array(-27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718),
394
-                array(-13159415, 9197841, 3875503, -8936108, -1383712, -5879801, 33518459, 16176658, 21432314, 12180697),
395
-                array(-11787308, 11500838, 13787581, -13832590, -22430679, 10140205, 1465425, 12689540, -10301319, -13872883),
396
-            ),
397
-        ),
398
-        array(
399
-            array(
400
-                array(5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912),
401
-                array(-26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358),
402
-                array(3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849),
403
-            ),
404
-            array(
405
-                array(29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307),
406
-                array(-14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977),
407
-                array(-6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335),
408
-            ),
409
-            array(
410
-                array(-29265967, -14186805, -13538216, -12117373, -19457059, -10655384, -31462369, -2948985, 24018831, 15026644),
411
-                array(-22592535, -3145277, -2289276, 5953843, -13440189, 9425631, 25310643, 13003497, -2314791, -15145616),
412
-                array(-27419985, -603321, -8043984, -1669117, -26092265, 13987819, -27297622, 187899, -23166419, -2531735),
413
-            ),
414
-            array(
415
-                array(-21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099),
416
-                array(29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341),
417
-                array(-936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336),
418
-            ),
419
-            array(
420
-                array(-23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646),
421
-                array(31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425),
422
-                array(-17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388),
423
-            ),
424
-            array(
425
-                array(-31361739, -11346780, -15007447, -5856218, -22453340, -12152771, 1222336, 4389483, 3293637, -15551743),
426
-                array(-16684801, -14444245, 11038544, 11054958, -13801175, -3338533, -24319580, 7733547, 12796905, -6335822),
427
-                array(-8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462),
428
-            ),
429
-            array(
430
-                array(18606113, 1693100, -25448386, -15170272, 4112353, 10045021, 23603893, -2048234, -7550776, 2484985),
431
-                array(9255317, -3131197, -12156162, -1004256, 13098013, -9214866, 16377220, -2102812, -19802075, -3034702),
432
-                array(-22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797),
433
-            ),
434
-            array(
435
-                array(21878590, -5001297, 4338336, 13643897, -3036865, 13160960, 19708896, 5415497, -7360503, -4109293),
436
-                array(27736861, 10103576, 12500508, 8502413, -3413016, -9633558, 10436918, -1550276, -23659143, -8132100),
437
-                array(19492550, -12104365, -29681976, -852630, -3208171, 12403437, 30066266, 8367329, 13243957, 8709688),
438
-            ),
439
-        ),
440
-        array(
441
-            array(
442
-                array(12015105, 2801261, 28198131, 10151021, 24818120, -4743133, -11194191, -5645734, 5150968, 7274186),
443
-                array(2831366, -12492146, 1478975, 6122054, 23825128, -12733586, 31097299, 6083058, 31021603, -9793610),
444
-                array(-2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707),
445
-            ),
446
-            array(
447
-                array(7840942, 14037873, -33364863, 15934016, -728213, -3642706, 21403988, 1057586, -19379462, -12403220),
448
-                array(915865, -16469274, 15608285, -8789130, -24357026, 6060030, -17371319, 8410997, -7220461, 16527025),
449
-                array(32922597, -556987, 20336074, -16184568, 10903705, -5384487, 16957574, 52992, 23834301, 6588044),
450
-            ),
451
-            array(
452
-                array(32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992),
453
-                array(-4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027),
454
-                array(21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197),
455
-            ),
456
-            array(
457
-                array(8651614, -4477032, -16085636, -4996994, 13002507, 2950805, 29054427, -5106970, 10008136, -4667901),
458
-                array(31486080, 15114593, -14261250, 12951354, 14369431, -7387845, 16347321, -13662089, 8684155, -10532952),
459
-                array(19443825, 11385320, 24468943, -9659068, -23919258, 2187569, -26263207, -6086921, 31316348, 14219878),
460
-            ),
461
-            array(
462
-                array(-28594490, 1193785, 32245219, 11392485, 31092169, 15722801, 27146014, 6992409, 29126555, 9207390),
463
-                array(32382935, 1110093, 18477781, 11028262, -27411763, -7548111, -4980517, 10843782, -7957600, -14435730),
464
-                array(2814918, 7836403, 27519878, -7868156, -20894015, -11553689, -21494559, 8550130, 28346258, 1994730),
465
-            ),
466
-            array(
467
-                array(-19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180),
468
-                array(-30405132, 955511, -11133838, -15078069, -32447087, -13278079, -25651578, 3317160, -9943017, 930272),
469
-                array(-15303681, -6833769, 28856490, 1357446, 23421993, 1057177, 24091212, -1388970, -22765376, -10650715),
470
-            ),
471
-            array(
472
-                array(-22751231, -5303997, -12907607, -12768866, -15811511, -7797053, -14839018, -16554220, -1867018, 8398970),
473
-                array(-31969310, 2106403, -4736360, 1362501, 12813763, 16200670, 22981545, -6291273, 18009408, -15772772),
474
-                array(-17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865),
475
-            ),
476
-            array(
477
-                array(15100157, -15835752, -23923978, -1005098, -26450192, 15509408, 12376730, -3479146, 33166107, -8042750),
478
-                array(20909231, 13023121, -9209752, 16251778, -5778415, -8094914, 12412151, 10018715, 2213263, -13878373),
479
-                array(32529814, -11074689, 30361439, -16689753, -9135940, 1513226, 22922121, 6382134, -5766928, 8371348),
480
-            ),
481
-        ),
482
-        array(
483
-            array(
484
-                array(9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144),
485
-                array(-22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195),
486
-                array(5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086),
487
-            ),
488
-            array(
489
-                array(-13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684),
490
-                array(-8320926, -12049626, 31204563, 5839400, -20627288, -1057277, -19442942, 6922164, 12743482, -9800518),
491
-                array(-2361371, 12678785, 28815050, 4759974, -23893047, 4884717, 23783145, 11038569, 18800704, 255233),
492
-            ),
493
-            array(
494
-                array(-5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793),
495
-                array(-2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794),
496
-                array(580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435),
497
-            ),
498
-            array(
499
-                array(23838809, 1822728, -15738443, 15242727, 8318092, -3733104, -21672180, -3492205, -4821741, 14799921),
500
-                array(13345610, 9759151, 3371034, -16137791, 16353039, 8577942, 31129804, 13496856, -9056018, 7402518),
501
-                array(2286874, -4435931, -20042458, -2008336, -13696227, 5038122, 11006906, -15760352, 8205061, 1607563),
502
-            ),
503
-            array(
504
-                array(14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278),
505
-                array(-27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024),
506
-                array(4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030),
507
-            ),
508
-            array(
509
-                array(10299610, 13746483, 11661824, 16234854, 7630238, 5998374, 9809887, -16694564, 15219798, -14327783),
510
-                array(27425505, -5719081, 3055006, 10660664, 23458024, 595578, -15398605, -1173195, -18342183, 9742717),
511
-                array(6744077, 2427284, 26042789, 2720740, -847906, 1118974, 32324614, 7406442, 12420155, 1994844),
512
-            ),
513
-            array(
514
-                array(14012521, -5024720, -18384453, -9578469, -26485342, -3936439, -13033478, -10909803, 24319929, -6446333),
515
-                array(16412690, -4507367, 10772641, 15929391, -17068788, -4658621, 10555945, -10484049, -30102368, -4739048),
516
-                array(22397382, -7767684, -9293161, -12792868, 17166287, -9755136, -27333065, 6199366, 21880021, -12250760),
517
-            ),
518
-            array(
519
-                array(-4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760),
520
-                array(-15447727, 709327, -6919446, -10870178, -29777922, 6522332, -21720181, 12130072, -14796503, 5005757),
521
-                array(-2114751, -14308128, 23019042, 15765735, -25269683, 6002752, 10183197, -13239326, -16395286, -2176112),
522
-            ),
523
-        ),
524
-        array(
525
-            array(
526
-                array(-19025756, 1632005, 13466291, -7995100, -23640451, 16573537, -32013908, -3057104, 22208662, 2000468),
527
-                array(3065073, -1412761, -25598674, -361432, -17683065, -5703415, -8164212, 11248527, -3691214, -7414184),
528
-                array(10379208, -6045554, 8877319, 1473647, -29291284, -12507580, 16690915, 2553332, -3132688, 16400289),
529
-            ),
530
-            array(
531
-                array(15716668, 1254266, -18472690, 7446274, -8448918, 6344164, -22097271, -7285580, 26894937, 9132066),
532
-                array(24158887, 12938817, 11085297, -8177598, -28063478, -4457083, -30576463, 64452, -6817084, -2692882),
533
-                array(13488534, 7794716, 22236231, 5989356, 25426474, -12578208, 2350710, -3418511, -4688006, 2364226),
534
-            ),
535
-            array(
536
-                array(16335052, 9132434, 25640582, 6678888, 1725628, 8517937, -11807024, -11697457, 15445875, -7798101),
537
-                array(29004207, -7867081, 28661402, -640412, -12794003, -7943086, 31863255, -4135540, -278050, -15759279),
538
-                array(-6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811),
539
-            ),
540
-            array(
541
-                array(27081650, 3463984, 14099042, -4517604, 1616303, -6205604, 29542636, 15372179, 17293797, 960709),
542
-                array(20263915, 11434237, -5765435, 11236810, 13505955, -10857102, -16111345, 6493122, -19384511, 7639714),
543
-                array(-2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121),
544
-            ),
545
-            array(
546
-                array(9769828, 5202651, -24157398, -13631392, -28051003, -11561624, -24613141, -13860782, -31184575, 709464),
547
-                array(12286395, 13076066, -21775189, -1176622, -25003198, 4057652, -32018128, -8890874, 16102007, 13205847),
548
-                array(13733362, 5599946, 10557076, 3195751, -5557991, 8536970, -25540170, 8525972, 10151379, 10394400),
549
-            ),
550
-            array(
551
-                array(4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414),
552
-                array(-15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158),
553
-                array(17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045),
554
-            ),
555
-            array(
556
-                array(-461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415),
557
-                array(-5070281, 12367917, -30663534, 3234473, 32617080, -8422642, 29880583, -13483331, -26898490, -7867459),
558
-                array(-31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079),
559
-            ),
560
-            array(
561
-                array(21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412),
562
-                array(-20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743),
563
-                array(-14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836),
564
-            ),
565
-        ),
566
-        array(
567
-            array(
568
-                array(12962541, 5311799, -10060768, 11658280, 18855286, -7954201, 13286263, -12808704, -4381056, 9882022),
569
-                array(18512079, 11319350, -20123124, 15090309, 18818594, 5271736, -22727904, 3666879, -23967430, -3299429),
570
-                array(-6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065),
571
-            ),
572
-            array(
573
-                array(30169808, -5317648, 26306206, -11750859, 27814964, 7069267, 7152851, 3684982, 1449224, 13082861),
574
-                array(10342826, 3098505, 2119311, 193222, 25702612, 12233820, 23697382, 15056736, -21016438, -8202000),
575
-                array(-33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101),
576
-            ),
577
-            array(
578
-                array(32869458, -5408545, 25609743, 15678670, -10687769, -15471071, 26112421, 2521008, -22664288, 6904815),
579
-                array(29506923, 4457497, 3377935, -9796444, -30510046, 12935080, 1561737, 3841096, -29003639, -6657642),
580
-                array(10340844, -6630377, -18656632, -2278430, 12621151, -13339055, 30878497, -11824370, -25584551, 5181966),
581
-            ),
582
-            array(
583
-                array(25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574),
584
-                array(-21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742),
585
-                array(-18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689),
586
-            ),
587
-            array(
588
-                array(12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020),
589
-                array(-10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772),
590
-                array(3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982),
591
-            ),
592
-            array(
593
-                array(-14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953),
594
-                array(-16777703, -15253301, -9642417, 4978983, 3308785, 8755439, 6943197, 6461331, -25583147, 8991218),
595
-                array(-17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265),
596
-            ),
597
-            array(
598
-                array(29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073),
599
-                array(-3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325),
600
-                array(-11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798),
601
-            ),
602
-            array(
603
-                array(-4811456, 13761029, -31703877, -2483919, -3312471, 7869047, -7113572, -9620092, 13240845, 10965870),
604
-                array(-7742563, -8256762, -14768334, -13656260, -23232383, 12387166, 4498947, 14147411, 29514390, 4302863),
605
-                array(-13413405, -12407859, 20757302, -13801832, 14785143, 8976368, -5061276, -2144373, 17846988, -13971927),
606
-            ),
607
-        ),
608
-        array(
609
-            array(
610
-                array(-2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267),
611
-                array(-9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663),
612
-                array(22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862),
613
-            ),
614
-            array(
615
-                array(-25169565, -10053642, -19909332, 15361595, -5984358, 2159192, 75375, -4278529, -32526221, 8469673),
616
-                array(15854970, 4148314, -8893890, 7259002, 11666551, 13824734, -30531198, 2697372, 24154791, -9460943),
617
-                array(15446137, -15806644, 29759747, 14019369, 30811221, -9610191, -31582008, 12840104, 24913809, 9815020),
618
-            ),
619
-            array(
620
-                array(-4709286, -5614269, -31841498, -12288893, -14443537, 10799414, -9103676, 13438769, 18735128, 9466238),
621
-                array(11933045, 9281483, 5081055, -5183824, -2628162, -4905629, -7727821, -10896103, -22728655, 16199064),
622
-                array(14576810, 379472, -26786533, -8317236, -29426508, -10812974, -102766, 1876699, 30801119, 2164795),
623
-            ),
624
-            array(
625
-                array(15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052),
626
-                array(-10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904),
627
-                array(29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531),
628
-            ),
629
-            array(
630
-                array(-13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979),
631
-                array(-5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841),
632
-                array(10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431),
633
-            ),
634
-            array(
635
-                array(10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324),
636
-                array(-31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940),
637
-                array(10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320),
638
-            ),
639
-            array(
640
-                array(-15815640, -10601066, -6538952, -7258995, -6984659, -6581778, -31500847, 13765824, -27434397, 9900184),
641
-                array(14465505, -13833331, -32133984, -14738873, -27443187, 12990492, 33046193, 15796406, -7051866, -8040114),
642
-                array(30924417, -8279620, 6359016, -12816335, 16508377, 9071735, -25488601, 15413635, 9524356, -7018878),
643
-            ),
644
-            array(
645
-                array(12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784),
646
-                array(-2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091),
647
-                array(-16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585),
648
-            ),
649
-        ),
650
-        array(
651
-            array(
652
-                array(-8858980, -2219056, 28571666, -10155518, -474467, -10105698, -3801496, 278095, 23440562, -290208),
653
-                array(10226241, -5928702, 15139956, 120818, -14867693, 5218603, 32937275, 11551483, -16571960, -7442864),
654
-                array(17932739, -12437276, -24039557, 10749060, 11316803, 7535897, 22503767, 5561594, -3646624, 3898661),
655
-            ),
656
-            array(
657
-                array(7749907, -969567, -16339731, -16464, -25018111, 15122143, -1573531, 7152530, 21831162, 1245233),
658
-                array(26958459, -14658026, 4314586, 8346991, -5677764, 11960072, -32589295, -620035, -30402091, -16716212),
659
-                array(-12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525),
660
-            ),
661
-            array(
662
-                array(-24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068),
663
-                array(9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397),
664
-                array(-8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988),
665
-            ),
666
-            array(
667
-                array(5269168, -6859726, -13230211, -8020715, 25932563, 1763552, -5606110, -5505881, -20017847, 2357889),
668
-                array(32264008, -15407652, -5387735, -1160093, -2091322, -3946900, 23104804, -12869908, 5727338, 189038),
669
-                array(14609123, -8954470, -6000566, -16622781, -14577387, -7743898, -26745169, 10942115, -25888931, -14884697),
670
-            ),
671
-            array(
672
-                array(20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875),
673
-                array(-25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905),
674
-                array(-25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656),
675
-            ),
676
-            array(
677
-                array(11630004, 12144454, 2116339, 13606037, 27378885, 15676917, -17408753, -13504373, -14395196, 8070818),
678
-                array(27117696, -10007378, -31282771, -5570088, 1127282, 12772488, -29845906, 10483306, -11552749, -1028714),
679
-                array(10637467, -5688064, 5674781, 1072708, -26343588, -6982302, -1683975, 9177853, -27493162, 15431203),
680
-            ),
681
-            array(
682
-                array(20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931),
683
-                array(-30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024),
684
-                array(-23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084),
685
-            ),
686
-            array(
687
-                array(-1931799, -5407458, 3304649, -12884869, 17015806, -4877091, -29783850, -7752482, -13215537, -319204),
688
-                array(20239939, 6607058, 6203985, 3483793, -18386976, -779229, -20723742, 15077870, -22750759, 14523817),
689
-                array(27406042, -6041657, 27423596, -4497394, 4996214, 10002360, -28842031, -4545494, -30172742, -4805667),
690
-            ),
691
-        ),
692
-        array(
693
-            array(
694
-                array(11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504),
695
-                array(-12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768),
696
-                array(-19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255),
697
-            ),
698
-            array(
699
-                array(6490081, 11940286, 25495923, -7726360, 8668373, -8751316, 3367603, 6970005, -1691065, -9004790),
700
-                array(1656497, 13457317, 15370807, 6364910, 13605745, 8362338, -19174622, -5475723, -16796596, -5031438),
701
-                array(-22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333),
702
-            ),
703
-            array(
704
-                array(17747465, 10039260, 19368299, -4050591, -20630635, -16041286, 31992683, -15857976, -29260363, -5511971),
705
-                array(31932027, -4986141, -19612382, 16366580, 22023614, 88450, 11371999, -3744247, 4882242, -10626905),
706
-                array(29796507, 37186, 19818052, 10115756, -11829032, 3352736, 18551198, 3272828, -5190932, -4162409),
707
-            ),
708
-            array(
709
-                array(12501286, 4044383, -8612957, -13392385, -32430052, 5136599, -19230378, -3529697, 330070, -3659409),
710
-                array(6384877, 2899513, 17807477, 7663917, -2358888, 12363165, 25366522, -8573892, -271295, 12071499),
711
-                array(-8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363),
712
-            ),
713
-            array(
714
-                array(28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664),
715
-                array(-11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324),
716
-                array(-21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940),
717
-            ),
718
-            array(
719
-                array(13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990),
720
-                array(-17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914),
721
-                array(-25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290),
722
-            ),
723
-            array(
724
-                array(24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257),
725
-                array(-6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433),
726
-                array(-16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236),
727
-            ),
728
-            array(
729
-                array(-12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045),
730
-                array(11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093),
731
-                array(-1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347),
732
-            ),
733
-        ),
734
-        array(
735
-            array(
736
-                array(-28970898, 5271447, -1266009, -9736989, -12455236, 16732599, -4862407, -4906449, 27193557, 6245191),
737
-                array(-15193956, 5362278, -1783893, 2695834, 4960227, 12840725, 23061898, 3260492, 22510453, 8577507),
738
-                array(-12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906),
739
-            ),
740
-            array(
741
-                array(3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018),
742
-                array(-16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109),
743
-                array(-23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926),
744
-            ),
745
-            array(
746
-                array(-24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528),
747
-                array(8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625),
748
-                array(-32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286),
749
-            ),
750
-            array(
751
-                array(2901347, -1117687, 3880376, -10059388, -17620940, -3612781, -21802117, -3567481, 20456845, -1885033),
752
-                array(27019610, 12299467, -13658288, -1603234, -12861660, -4861471, -19540150, -5016058, 29439641, 15138866),
753
-                array(21536104, -6626420, -32447818, -10690208, -22408077, 5175814, -5420040, -16361163, 7779328, 109896),
754
-            ),
755
-            array(
756
-                array(30279744, 14648750, -8044871, 6425558, 13639621, -743509, 28698390, 12180118, 23177719, -554075),
757
-                array(26572847, 3405927, -31701700, 12890905, -19265668, 5335866, -6493768, 2378492, 4439158, -13279347),
758
-                array(-22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437),
759
-            ),
760
-            array(
761
-                array(-5056483, 16566551, 15953661, 3767752, -10436499, 15627060, -820954, 2177225, 8550082, -15114165),
762
-                array(-18473302, 16596775, -381660, 15663611, 22860960, 15585581, -27844109, -3582739, -23260460, -8428588),
763
-                array(-32480551, 15707275, -8205912, -5652081, 29464558, 2713815, -22725137, 15860482, -21902570, 1494193),
764
-            ),
765
-            array(
766
-                array(-19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017),
767
-                array(-28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883),
768
-                array(21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961),
769
-            ),
770
-            array(
771
-                array(8832269, -14495485, 13253511, 5137575, 5037871, 4078777, 24880818, -6222716, 2862653, 9455043),
772
-                array(29306751, 5123106, 20245049, -14149889, 9592566, 8447059, -2077124, -2990080, 15511449, 4789663),
773
-                array(-20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362),
774
-            ),
775
-        ),
776
-        array(
777
-            array(
778
-                array(-33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860),
779
-                array(2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466),
780
-                array(-24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063),
781
-            ),
782
-            array(
783
-                array(-26432803, 6148329, -17184412, -14474154, 18782929, -275997, -22561534, 211300, 2719757, 4940997),
784
-                array(-1323882, 3911313, -6948744, 14759765, -30027150, 7851207, 21690126, 8518463, 26699843, 5276295),
785
-                array(-13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369),
786
-            ),
787
-            array(
788
-                array(9987780, -3404759, 17507962, 9505530, 9731535, -2165514, 22356009, 8312176, 22477218, -8403385),
789
-                array(18155857, -16504990, 19744716, 9006923, 15154154, -10538976, 24256460, -4864995, -22548173, 9334109),
790
-                array(2986088, -4911893, 10776628, -3473844, 10620590, -7083203, -21413845, 14253545, -22587149, 536906),
791
-            ),
792
-            array(
793
-                array(4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424),
794
-                array(-19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185),
795
-                array(7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962),
796
-            ),
797
-            array(
798
-                array(-7737563, -5869402, -14566319, -7406919, 11385654, 13201616, 31730678, -10962840, -3918636, -9669325),
799
-                array(10188286, -15770834, -7336361, 13427543, 22223443, 14896287, 30743455, 7116568, -21786507, 5427593),
800
-                array(696102, 13206899, 27047647, -10632082, 15285305, -9853179, 10798490, -4578720, 19236243, 12477404),
801
-            ),
802
-            array(
803
-                array(-11229439, 11243796, -17054270, -8040865, -788228, -8167967, -3897669, 11180504, -23169516, 7733644),
804
-                array(17800790, -14036179, -27000429, -11766671, 23887827, 3149671, 23466177, -10538171, 10322027, 15313801),
805
-                array(26246234, 11968874, 32263343, -5468728, 6830755, -13323031, -15794704, -101982, -24449242, 10890804),
806
-            ),
807
-            array(
808
-                array(-31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884),
809
-                array(-586574, 10376444, -32586414, -11286356, 19801893, 10997610, 2276632, 9482883, 316878, 13820577),
810
-                array(-9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849),
811
-            ),
812
-            array(
813
-                array(32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473),
814
-                array(-8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644),
815
-                array(-2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319),
816
-            ),
817
-        ),
818
-        array(
819
-            array(
820
-                array(-11225584, 2320285, -9584280, 10149187, -33444663, 5808648, -14876251, -1729667, 31234590, 6090599),
821
-                array(-9633316, 116426, 26083934, 2897444, -6364437, -2688086, 609721, 15878753, -6970405, -9034768),
822
-                array(-27757857, 247744, -15194774, -9002551, 23288161, -10011936, -23869595, 6503646, 20650474, 1804084),
823
-            ),
824
-            array(
825
-                array(-27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328),
826
-                array(-15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369),
827
-                array(20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920),
828
-            ),
829
-            array(
830
-                array(12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815),
831
-                array(-32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025),
832
-                array(-21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397),
833
-            ),
834
-            array(
835
-                array(-20184622, 2338216, 19788685, -9620956, -4001265, -8740893, -20271184, 4733254, 3727144, -12934448),
836
-                array(6120119, 814863, -11794402, -622716, 6812205, -15747771, 2019594, 7975683, 31123697, -10958981),
837
-                array(30069250, -11435332, 30434654, 2958439, 18399564, -976289, 12296869, 9204260, -16432438, 9648165),
838
-            ),
839
-            array(
840
-                array(32705432, -1550977, 30705658, 7451065, -11805606, 9631813, 3305266, 5248604, -26008332, -11377501),
841
-                array(17219865, 2375039, -31570947, -5575615, -19459679, 9219903, 294711, 15298639, 2662509, -16297073),
842
-                array(-1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861),
843
-            ),
844
-            array(
845
-                array(14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845),
846
-                array(-1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211),
847
-                array(18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870),
848
-            ),
849
-            array(
850
-                array(10141598, 6082907, 17829293, -1947643, 9830092, 13613136, -25556636, -5544586, -33502212, 3592096),
851
-                array(33114168, -15889352, -26525686, -13343397, 33076705, 8716171, 1151462, 1521897, -982665, -6837803),
852
-                array(-32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168),
853
-            ),
854
-            array(
855
-                array(30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965),
856
-                array(-14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505),
857
-                array(18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598),
858
-            ),
859
-        ),
860
-        array(
861
-            array(
862
-                array(5975908, -5243188, -19459362, -9681747, -11541277, 14015782, -23665757, 1228319, 17544096, -10593782),
863
-                array(5811932, -1715293, 3442887, -2269310, -18367348, -8359541, -18044043, -15410127, -5565381, 12348900),
864
-                array(-31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479),
865
-            ),
866
-            array(
867
-                array(-12675304, 694026, -5076145, 13300344, 14015258, -14451394, -9698672, -11329050, 30944593, 1130208),
868
-                array(8247766, -6710942, -26562381, -7709309, -14401939, -14648910, 4652152, 2488540, 23550156, -271232),
869
-                array(17294316, -3788438, 7026748, 15626851, 22990044, 113481, 2267737, -5908146, -408818, -137719),
870
-            ),
871
-            array(
872
-                array(16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271),
873
-                array(-4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326),
874
-                array(-8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132),
875
-            ),
876
-            array(
877
-                array(14763076, -15903608, -30918270, 3689867, 3511892, 10313526, -21951088, 12219231, -9037963, -940300),
878
-                array(8894987, -3446094, 6150753, 3013931, 301220, 15693451, -31981216, -2909717, -15438168, 11595570),
879
-                array(15214962, 3537601, -26238722, -14058872, 4418657, -15230761, 13947276, 10730794, -13489462, -4363670),
880
-            ),
881
-            array(
882
-                array(-2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994),
883
-                array(-12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913),
884
-                array(31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317),
885
-            ),
886
-            array(
887
-                array(-25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730),
888
-                array(842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096),
889
-                array(-4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078),
890
-            ),
891
-            array(
892
-                array(-15218652, 14667096, -13336229, 2013717, 30598287, -464137, -31504922, -7882064, 20237806, 2838411),
893
-                array(-19288047, 4453152, 15298546, -16178388, 22115043, -15972604, 12544294, -13470457, 1068881, -12499905),
894
-                array(-9558883, -16518835, 33238498, 13506958, 30505848, -1114596, -8486907, -2630053, 12521378, 4845654),
895
-            ),
896
-            array(
897
-                array(-28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870),
898
-                array(-23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498),
899
-                array(12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579),
900
-            ),
901
-        ),
902
-        array(
903
-            array(
904
-                array(14741879, -14946887, 22177208, -11721237, 1279741, 8058600, 11758140, 789443, 32195181, 3895677),
905
-                array(10758205, 15755439, -4509950, 9243698, -4879422, 6879879, -2204575, -3566119, -8982069, 4429647),
906
-                array(-2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743),
907
-            ),
908
-            array(
909
-                array(-25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468),
910
-                array(21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375),
911
-                array(-25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155),
912
-            ),
913
-            array(
914
-                array(6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725),
915
-                array(-12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612),
916
-                array(-10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943),
917
-            ),
918
-            array(
919
-                array(-30505967, -3821767, 12074681, 13582412, -19877972, 2443951, -19719286, 12746132, 5331210, -10105944),
920
-                array(30528811, 3601899, -1957090, 4619785, -27361822, -15436388, 24180793, -12570394, 27679908, -1648928),
921
-                array(9402404, -13957065, 32834043, 10838634, -26580150, -13237195, 26653274, -8685565, 22611444, -12715406),
922
-            ),
923
-            array(
924
-                array(22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139),
925
-                array(-8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963),
926
-                array(-31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693),
927
-            ),
928
-            array(
929
-                array(1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734),
930
-                array(-448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680),
931
-                array(-24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410),
932
-            ),
933
-            array(
934
-                array(-9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931),
935
-                array(-16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654),
936
-                array(22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710),
937
-            ),
938
-            array(
939
-                array(29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180),
940
-                array(-26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684),
941
-                array(-10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895),
942
-            ),
943
-        ),
944
-        array(
945
-            array(
946
-                array(22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501),
947
-                array(-11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413),
948
-                array(6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880),
949
-            ),
950
-            array(
951
-                array(-8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874),
952
-                array(22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962),
953
-                array(-7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899),
954
-            ),
955
-            array(
956
-                array(21721356, -4212746, -12206123, 9310182, -3882239, -13653110, 23740224, -2709232, 20491983, -8042152),
957
-                array(9209270, -15135055, -13256557, -6167798, -731016, 15289673, 25947805, 15286587, 30997318, -6703063),
958
-                array(7392032, 16618386, 23946583, -8039892, -13265164, -1533858, -14197445, -2321576, 17649998, -250080),
959
-            ),
960
-            array(
961
-                array(-9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146),
962
-                array(-17558673, 1763594, -33114336, 15908610, -30040870, -12174295, 7335080, -8472199, -3174674, 3440183),
963
-                array(-19889700, -5977008, -24111293, -9688870, 10799743, -16571957, 40450, -4431835, 4862400, 1133),
964
-            ),
965
-            array(
966
-                array(-32856209, -7873957, -5422389, 14860950, -16319031, 7956142, 7258061, 311861, -30594991, -7379421),
967
-                array(-3773428, -1565936, 28985340, 7499440, 24445838, 9325937, 29727763, 16527196, 18278453, 15405622),
968
-                array(-4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197),
969
-            ),
970
-            array(
971
-                array(2281448, -13487055, -10915418, -2609910, 1879358, 16164207, -10783882, 3953792, 13340839, 15928663),
972
-                array(31727126, -7179855, -18437503, -8283652, 2875793, -16390330, -25269894, -7014826, -23452306, 5964753),
973
-                array(4100420, -5959452, -17179337, 6017714, -18705837, 12227141, -26684835, 11344144, 2538215, -7570755),
974
-            ),
975
-            array(
976
-                array(-9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862),
977
-                array(-26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118),
978
-                array(26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171),
979
-            ),
980
-            array(
981
-                array(15121113, -5201871, -10389905, 15427821, -27509937, -15992507, 21670947, 4486675, -5931810, -14466380),
982
-                array(16166486, -9483733, -11104130, 6023908, -31926798, -1364923, 2340060, -16254968, -10735770, -10039824),
983
-                array(28042865, -3557089, -12126526, 12259706, -3717498, -6945899, 6766453, -8689599, 18036436, 5803270),
984
-            ),
985
-        ),
986
-        array(
987
-            array(
988
-                array(-817581, 6763912, 11803561, 1585585, 10958447, -2671165, 23855391, 4598332, -6159431, -14117438),
989
-                array(-31031306, -14256194, 17332029, -2383520, 31312682, -5967183, 696309, 50292, -20095739, 11763584),
990
-                array(-594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562),
991
-            ),
992
-            array(
993
-                array(30464590, -11262872, -4127476, -12734478, 19835327, -7105613, -24396175, 2075773, -17020157, 992471),
994
-                array(18357185, -6994433, 7766382, 16342475, -29324918, 411174, 14578841, 8080033, -11574335, -10601610),
995
-                array(19598397, 10334610, 12555054, 2555664, 18821899, -10339780, 21873263, 16014234, 26224780, 16452269),
996
-            ),
997
-            array(
998
-                array(-30223925, 5145196, 5944548, 16385966, 3976735, 2009897, -11377804, -7618186, -20533829, 3698650),
999
-                array(14187449, 3448569, -10636236, -10810935, -22663880, -3433596, 7268410, -10890444, 27394301, 12015369),
1000
-                array(19695761, 16087646, 28032085, 12999827, 6817792, 11427614, 20244189, -1312777, -13259127, -3402461),
1001
-            ),
1002
-            array(
1003
-                array(30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462),
1004
-                array(-5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793),
1005
-                array(-2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218),
1006
-            ),
1007
-            array(
1008
-                array(-24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226),
1009
-                array(18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019),
1010
-                array(-15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037),
1011
-            ),
1012
-            array(
1013
-                array(31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171),
1014
-                array(-17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132),
1015
-                array(-28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841),
1016
-            ),
1017
-            array(
1018
-                array(21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181),
1019
-                array(-33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210),
1020
-                array(-1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040),
1021
-            ),
1022
-            array(
1023
-                array(3960823, -14267803, -28026090, -15918051, -19404858, 13146868, 15567327, 951507, -3260321, -573935),
1024
-                array(24740841, 5052253, -30094131, 8961361, 25877428, 6165135, -24368180, 14397372, -7380369, -6144105),
1025
-                array(-28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814),
1026
-            ),
1027
-        ),
1028
-        array(
1029
-            array(
1030
-                array(793299, -9230478, 8836302, -6235707, -27360908, -2369593, 33152843, -4885251, -9906200, -621852),
1031
-                array(5666233, 525582, 20782575, -8038419, -24538499, 14657740, 16099374, 1468826, -6171428, -15186581),
1032
-                array(-4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646),
1033
-            ),
1034
-            array(
1035
-                array(10896332, -7719704, 824275, 472601, -19460308, 3009587, 25248958, 14783338, -30581476, -15757844),
1036
-                array(10566929, 12612572, -31944212, 11118703, -12633376, 12362879, 21752402, 8822496, 24003793, 14264025),
1037
-                array(27713862, -7355973, -11008240, 9227530, 27050101, 2504721, 23886875, -13117525, 13958495, -5732453),
1038
-            ),
1039
-            array(
1040
-                array(-23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068),
1041
-                array(4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192),
1042
-                array(-17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921),
1043
-            ),
1044
-            array(
1045
-                array(-9064912, 2103172, 25561640, -15125738, -5239824, 9582958, 32477045, -9017955, 5002294, -15550259),
1046
-                array(-12057553, -11177906, 21115585, -13365155, 8808712, -12030708, 16489530, 13378448, -25845716, 12741426),
1047
-                array(-5946367, 10645103, -30911586, 15390284, -3286982, -7118677, 24306472, 15852464, 28834118, -7646072),
1048
-            ),
1049
-            array(
1050
-                array(-17335748, -9107057, -24531279, 9434953, -8472084, -583362, -13090771, 455841, 20461858, 5491305),
1051
-                array(13669248, -16095482, -12481974, -10203039, -14569770, -11893198, -24995986, 11293807, -28588204, -9421832),
1052
-                array(28497928, 6272777, -33022994, 14470570, 8906179, -1225630, 18504674, -14165166, 29867745, -8795943),
1053
-            ),
1054
-            array(
1055
-                array(-16207023, 13517196, -27799630, -13697798, 24009064, -6373891, -6367600, -13175392, 22853429, -4012011),
1056
-                array(24191378, 16712145, -13931797, 15217831, 14542237, 1646131, 18603514, -11037887, 12876623, -2112447),
1057
-                array(17902668, 4518229, -411702, -2829247, 26878217, 5258055, -12860753, 608397, 16031844, 3723494),
1058
-            ),
1059
-            array(
1060
-                array(-28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245),
1061
-                array(-20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859),
1062
-                array(28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915),
1063
-            ),
1064
-            array(
1065
-                array(16000882, -344896, 3493092, -11447198, -29504595, -13159789, 12577740, 16041268, -19715240, 7847707),
1066
-                array(10151868, 10572098, 27312476, 7922682, 14825339, 4723128, -32855931, -6519018, -10020567, 3852848),
1067
-                array(-11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224),
1068
-            ),
1069
-        ),
1070
-        array(
1071
-            array(
1072
-                array(-25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391),
1073
-                array(15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215),
1074
-                array(-23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101),
1075
-            ),
1076
-            array(
1077
-                array(23190676, 2384583, -32714340, 3462154, -29903655, -1529132, -11266856, 8911517, -25205859, 2739713),
1078
-                array(21374101, -3554250, -33524649, 9874411, 15377179, 11831242, -33529904, 6134907, 4931255, 11987849),
1079
-                array(-7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930),
1080
-            ),
1081
-            array(
1082
-                array(-29501170, -10744872, -26163768, 13051539, -25625564, 5089643, -6325503, 6704079, 12890019, 15728940),
1083
-                array(-21972360, -11771379, -951059, -4418840, 14704840, 2695116, 903376, -10428139, 12885167, 8311031),
1084
-                array(-17516482, 5352194, 10384213, -13811658, 7506451, 13453191, 26423267, 4384730, 1888765, -5435404),
1085
-            ),
1086
-            array(
1087
-                array(-25817338, -3107312, -13494599, -3182506, 30896459, -13921729, -32251644, -12707869, -19464434, -3340243),
1088
-                array(-23607977, -2665774, -526091, 4651136, 5765089, 4618330, 6092245, 14845197, 17151279, -9854116),
1089
-                array(-24830458, -12733720, -15165978, 10367250, -29530908, -265356, 22825805, -7087279, -16866484, 16176525),
1090
-            ),
1091
-            array(
1092
-                array(-23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509),
1093
-                array(-10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883),
1094
-                array(15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865),
1095
-            ),
1096
-            array(
1097
-                array(-3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660),
1098
-                array(4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273),
1099
-                array(-28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138),
1100
-            ),
1101
-            array(
1102
-                array(-25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560),
1103
-                array(-10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135),
1104
-                array(2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941),
1105
-            ),
1106
-            array(
1107
-                array(-4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739),
1108
-                array(18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756),
1109
-                array(-30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819),
1110
-            ),
1111
-        ),
1112
-        array(
1113
-            array(
1114
-                array(-6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347),
1115
-                array(-27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028),
1116
-                array(21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075),
1117
-            ),
1118
-            array(
1119
-                array(16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799),
1120
-                array(-2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609),
1121
-                array(-25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817),
1122
-            ),
1123
-            array(
1124
-                array(-23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989),
1125
-                array(-30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523),
1126
-                array(4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278),
1127
-            ),
1128
-            array(
1129
-                array(31879134, -8918693, 17258761, 90626, -8041836, -4917709, 24162788, -9650886, -17970238, 12833045),
1130
-                array(19073683, 14851414, -24403169, -11860168, 7625278, 11091125, -19619190, 2074449, -9413939, 14905377),
1131
-                array(24483667, -11935567, -2518866, -11547418, -1553130, 15355506, -25282080, 9253129, 27628530, -7555480),
1132
-            ),
1133
-            array(
1134
-                array(17597607, 8340603, 19355617, 552187, 26198470, -3176583, 4593324, -9157582, -14110875, 15297016),
1135
-                array(510886, 14337390, -31785257, 16638632, 6328095, 2713355, -20217417, -11864220, 8683221, 2921426),
1136
-                array(18606791, 11874196, 27155355, -5281482, -24031742, 6265446, -25178240, -1278924, 4674690, 13890525),
1137
-            ),
1138
-            array(
1139
-                array(13609624, 13069022, -27372361, -13055908, 24360586, 9592974, 14977157, 9835105, 4389687, 288396),
1140
-                array(9922506, -519394, 13613107, 5883594, -18758345, -434263, -12304062, 8317628, 23388070, 16052080),
1141
-                array(12720016, 11937594, -31970060, -5028689, 26900120, 8561328, -20155687, -11632979, -14754271, -10812892),
1142
-            ),
1143
-            array(
1144
-                array(15961858, 14150409, 26716931, -665832, -22794328, 13603569, 11829573, 7467844, -28822128, 929275),
1145
-                array(11038231, -11582396, -27310482, -7316562, -10498527, -16307831, -23479533, -9371869, -21393143, 2465074),
1146
-                array(20017163, -4323226, 27915242, 1529148, 12396362, 15675764, 13817261, -9658066, 2463391, -4622140),
1147
-            ),
1148
-            array(
1149
-                array(-16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717),
1150
-                array(-1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101),
1151
-                array(24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127),
1152
-            ),
1153
-        ),
1154
-        array(
1155
-            array(
1156
-                array(-12622226, -6204820, 30718825, 2591312, -10617028, 12192840, 18873298, -7297090, -32297756, 15221632),
1157
-                array(-26478122, -11103864, 11546244, -1852483, 9180880, 7656409, -21343950, 2095755, 29769758, 6593415),
1158
-                array(-31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160),
1159
-            ),
1160
-            array(
1161
-                array(31429822, -13959116, 29173532, 15632448, 12174511, -2760094, 32808831, 3977186, 26143136, -3148876),
1162
-                array(22648901, 1402143, -22799984, 13746059, 7936347, 365344, -8668633, -1674433, -3758243, -2304625),
1163
-                array(-15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478),
1164
-            ),
1165
-            array(
1166
-                array(27338066, -7507420, -7414224, 10140405, -19026427, -6589889, 27277191, 8855376, 28572286, 3005164),
1167
-                array(26287124, 4821776, 25476601, -4145903, -3764513, -15788984, -18008582, 1182479, -26094821, -13079595),
1168
-                array(-7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248),
1169
-            ),
1170
-            array(
1171
-                array(-16657702, 2817643, -10286362, 14811298, 6024667, 13349505, -27315504, -10497842, -27672585, -11539858),
1172
-                array(15941029, -9405932, -21367050, 8062055, 31876073, -238629, -15278393, -1444429, 15397331, -4130193),
1173
-                array(8934485, -13485467, -23286397, -13423241, -32446090, 14047986, 31170398, -1441021, -27505566, 15087184),
1174
-            ),
1175
-            array(
1176
-                array(-18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942),
1177
-                array(-1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635),
1178
-                array(21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948),
1179
-            ),
1180
-            array(
1181
-                array(11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935),
1182
-                array(-25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415),
1183
-                array(-15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416),
1184
-            ),
1185
-            array(
1186
-                array(-7091295, 12556208, -20191352, 9025187, -17072479, 4333801, 4378436, 2432030, 23097949, -566018),
1187
-                array(4565804, -16025654, 20084412, -7842817, 1724999, 189254, 24767264, 10103221, -18512313, 2424778),
1188
-                array(366633, -11976806, 8173090, -6890119, 30788634, 5745705, -7168678, 1344109, -3642553, 12412659),
1189
-            ),
1190
-            array(
1191
-                array(-24001791, 7690286, 14929416, -168257, -32210835, -13412986, 24162697, -15326504, -3141501, 11179385),
1192
-                array(18289522, -14724954, 8056945, 16430056, -21729724, 7842514, -6001441, -1486897, -18684645, -11443503),
1193
-                array(476239, 6601091, -6152790, -9723375, 17503545, -4863900, 27672959, 13403813, 11052904, 5219329),
1194
-            ),
1195
-        ),
1196
-        array(
1197
-            array(
1198
-                array(20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056),
1199
-                array(-13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838),
1200
-                array(24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948),
1201
-            ),
1202
-            array(
1203
-                array(-3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691),
1204
-                array(-15659161, 16736706, -22467150, 10215878, -9097177, 7563911, 11871841, -12505194, -18513325, 8464118),
1205
-                array(-23400612, 8348507, -14585951, -861714, -3950205, -6373419, 14325289, 8628612, 33313881, -8370517),
1206
-            ),
1207
-            array(
1208
-                array(-20186973, -4967935, 22367356, 5271547, -1097117, -4788838, -24805667, -10236854, -8940735, -5818269),
1209
-                array(-6948785, -1795212, -32625683, -16021179, 32635414, -7374245, 15989197, -12838188, 28358192, -4253904),
1210
-                array(-23561781, -2799059, -32351682, -1661963, -9147719, 10429267, -16637684, 4072016, -5351664, 5596589),
1211
-            ),
1212
-            array(
1213
-                array(-28236598, -3390048, 12312896, 6213178, 3117142, 16078565, 29266239, 2557221, 1768301, 15373193),
1214
-                array(-7243358, -3246960, -4593467, -7553353, -127927, -912245, -1090902, -4504991, -24660491, 3442910),
1215
-                array(-30210571, 5124043, 14181784, 8197961, 18964734, -11939093, 22597931, 7176455, -18585478, 13365930),
1216
-            ),
1217
-            array(
1218
-                array(-7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667),
1219
-                array(25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481),
1220
-                array(-9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876),
1221
-            ),
1222
-            array(
1223
-                array(22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640),
1224
-                array(-8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278),
1225
-                array(-21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112),
1226
-            ),
1227
-            array(
1228
-                array(26047220, -11751471, -6900323, -16521798, 24092068, 9158119, -4273545, -12555558, -29365436, -5498272),
1229
-                array(17510331, -322857, 5854289, 8403524, 17133918, -3112612, -28111007, 12327945, 10750447, 10014012),
1230
-                array(-10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221),
1231
-            ),
1232
-            array(
1233
-                array(30322361, -6964110, 11361005, -4143317, 7433304, 4989748, -7071422, -16317219, -9244265, 15258046),
1234
-                array(13054562, -2779497, 19155474, 469045, -12482797, 4566042, 5631406, 2711395, 1062915, -5136345),
1235
-                array(-19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310),
1236
-            ),
1237
-        ),
1238
-        array(
1239
-            array(
1240
-                array(19852034, 7027924, 23669353, 10020366, 8586503, -6657907, 394197, -6101885, 18638003, -11174937),
1241
-                array(31395534, 15098109, 26581030, 8030562, -16527914, -5007134, 9012486, -7584354, -6643087, -5442636),
1242
-                array(-9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008),
1243
-            ),
1244
-            array(
1245
-                array(-2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429),
1246
-                array(-15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576),
1247
-                array(31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066),
1248
-            ),
1249
-            array(
1250
-                array(-9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490),
1251
-                array(-12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104),
1252
-                array(33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053),
1253
-            ),
1254
-            array(
1255
-                array(31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275),
1256
-                array(-20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511),
1257
-                array(22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095),
1258
-            ),
1259
-            array(
1260
-                array(-28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439),
1261
-                array(23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939),
1262
-                array(-23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424),
1263
-            ),
1264
-            array(
1265
-                array(2101391, -4930054, 19702731, 2367575, -15427167, 1047675, 5301017, 9328700, 29955601, -11678310),
1266
-                array(3096359, 9271816, -21620864, -15521844, -14847996, -7592937, -25892142, -12635595, -9917575, 6216608),
1267
-                array(-32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079),
1268
-            ),
1269
-            array(
1270
-                array(-23066649, -13985623, 16133487, -7896178, -3389565, 778788, -910336, -2782495, -19386633, 11994101),
1271
-                array(21691500, -13624626, -641331, -14367021, 3285881, -3483596, -25064666, 9718258, -7477437, 13381418),
1272
-                array(18445390, -4202236, 14979846, 11622458, -1727110, -3582980, 23111648, -6375247, 28535282, 15779576),
1273
-            ),
1274
-            array(
1275
-                array(30098053, 3089662, -9234387, 16662135, -21306940, 11308411, -14068454, 12021730, 9955285, -16303356),
1276
-                array(9734894, -14576830, -7473633, -9138735, 2060392, 11313496, -18426029, 9924399, 20194861, 13380996),
1277
-                array(-26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099),
1278
-            ),
1279
-        ),
1280
-        array(
1281
-            array(
1282
-                array(-26016874, -219943, 21339191, -41388, 19745256, -2878700, -29637280, 2227040, 21612326, -545728),
1283
-                array(-13077387, 1184228, 23562814, -5970442, -20351244, -6348714, 25764461, 12243797, -20856566, 11649658),
1284
-                array(-10031494, 11262626, 27384172, 2271902, 26947504, -15997771, 39944, 6114064, 33514190, 2333242),
1285
-            ),
1286
-            array(
1287
-                array(-21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001),
1288
-                array(-4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766),
1289
-                array(18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373),
1290
-            ),
1291
-            array(
1292
-                array(26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458),
1293
-                array(-17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628),
1294
-                array(-13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657),
1295
-            ),
1296
-            array(
1297
-                array(-23860538, -11233159, 26961357, 1640861, -32413112, -16737940, 12248509, -5240639, 13735342, 1934062),
1298
-                array(25089769, 6742589, 17081145, -13406266, 21909293, -16067981, -15136294, -3765346, -21277997, 5473616),
1299
-                array(31883677, -7961101, 1083432, -11572403, 22828471, 13290673, -7125085, 12469656, 29111212, -5451014),
1300
-            ),
1301
-            array(
1302
-                array(24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383),
1303
-                array(-25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814),
1304
-                array(-20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718),
1305
-            ),
1306
-            array(
1307
-                array(30157918, 12924066, -17712050, 9245753, 19895028, 3368142, -23827587, 5096219, 22740376, -7303417),
1308
-                array(2041139, -14256350, 7783687, 13876377, -25946985, -13352459, 24051124, 13742383, -15637599, 13295222),
1309
-                array(33338237, -8505733, 12532113, 7977527, 9106186, -1715251, -17720195, -4612972, -4451357, -14669444),
1310
-            ),
1311
-            array(
1312
-                array(-20045281, 5454097, -14346548, 6447146, 28862071, 1883651, -2469266, -4141880, 7770569, 9620597),
1313
-                array(23208068, 7979712, 33071466, 8149229, 1758231, -10834995, 30945528, -1694323, -33502340, -14767970),
1314
-                array(1439958, -16270480, -1079989, -793782, 4625402, 10647766, -5043801, 1220118, 30494170, -11440799),
1315
-            ),
1316
-            array(
1317
-                array(-5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647),
1318
-                array(13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511),
1319
-                array(-29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032),
1320
-            ),
1321
-        ),
1322
-        array(
1323
-            array(
1324
-                array(9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834),
1325
-                array(-23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461),
1326
-                array(29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062),
1327
-            ),
1328
-            array(
1329
-                array(-25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516),
1330
-                array(-20384450, -14347713, -18336405, 13884722, -33039454, 2842114, -21610826, -3649888, 11177095, 14989547),
1331
-                array(-24496721, -11716016, 16959896, 2278463, 12066309, 10137771, 13515641, 2581286, -28487508, 9930240),
1332
-            ),
1333
-            array(
1334
-                array(-17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038),
1335
-                array(-33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741),
1336
-                array(16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103),
1337
-            ),
1338
-            array(
1339
-                array(-19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747),
1340
-                array(-1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323),
1341
-                array(31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016),
1342
-            ),
1343
-            array(
1344
-                array(-14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373),
1345
-                array(15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228),
1346
-                array(-2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141),
1347
-            ),
1348
-            array(
1349
-                array(16918416, 11729663, -18083579, 3022987, -31015732, -13339659, -28741185, -12227393, 32851222, 11717399),
1350
-                array(11166634, 7338049, -6722523, 4531520, -29468672, -7302055, 31474879, 3483633, -1193175, -4030831),
1351
-                array(-185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376),
1352
-            ),
1353
-            array(
1354
-                array(-32460596, 11266712, -11197107, -7899103, 31703694, 3855903, -8537131, -12833048, -30772034, -15486313),
1355
-                array(-18006477, 12709068, 3991746, -6479188, -21491523, -10550425, -31135347, -16049879, 10928917, 3011958),
1356
-                array(-6957757, -15594337, 31696059, 334240, 29576716, 14796075, -30831056, -12805180, 18008031, 10258577),
1357
-            ),
1358
-            array(
1359
-                array(-22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743),
1360
-                array(29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684),
1361
-                array(-20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476),
1362
-            ),
1363
-        )
1364
-    );
14
+	/**
15
+	 * See: libsodium's crypto_core/curve25519/ref10/base.h
16
+	 *
17
+	 * @var array<int, array<int, array<int, array<int, int>>>> Basically, int[32][8][3][10]
18
+	 */
19
+	protected static $base = array(
20
+		array(
21
+			array(
22
+				array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
23
+				array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
24
+				array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
25
+			),
26
+			array(
27
+				array(-12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303),
28
+				array(-21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081),
29
+				array(26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697),
30
+			),
31
+			array(
32
+				array(15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024),
33
+				array(16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574),
34
+				array(30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357),
35
+			),
36
+			array(
37
+				array(-17036878, 13921892, 10945806, -6033431, 27105052, -16084379, -28926210, 15006023, 3284568, -6276540),
38
+				array(23599295, -8306047, -11193664, -7687416, 13236774, 10506355, 7464579, 9656445, 13059162, 10374397),
39
+				array(7798556, 16710257, 3033922, 2874086, 28997861, 2835604, 32406664, -3839045, -641708, -101325),
40
+			),
41
+			array(
42
+				array(10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380),
43
+				array(4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306),
44
+				array(19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942),
45
+			),
46
+			array(
47
+				array(-15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777),
48
+				array(-8549212, 109983, 15149363, 2178705, 22900618, 4543417, 3044240, -15689887, 1762328, 14866737),
49
+				array(-18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652),
50
+			),
51
+			array(
52
+				array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
53
+				array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
54
+				array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
55
+			),
56
+			array(
57
+				array(14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726),
58
+				array(-7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955),
59
+				array(27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425),
60
+			),
61
+		),
62
+		array(
63
+			array(
64
+				array(-13657040, -13155431, -31283750, 11777098, 21447386, 6519384, -2378284, -1627556, 10092783, -4764171),
65
+				array(27939166, 14210322, 4677035, 16277044, -22964462, -12398139, -32508754, 12005538, -17810127, 12803510),
66
+				array(17228999, -15661624, -1233527, 300140, -1224870, -11714777, 30364213, -9038194, 18016357, 4397660),
67
+			),
68
+			array(
69
+				array(-10958843, -7690207, 4776341, -14954238, 27850028, -15602212, -26619106, 14544525, -17477504, 982639),
70
+				array(29253598, 15796703, -2863982, -9908884, 10057023, 3163536, 7332899, -4120128, -21047696, 9934963),
71
+				array(5793303, 16271923, -24131614, -10116404, 29188560, 1206517, -14747930, 4559895, -30123922, -10897950),
72
+			),
73
+			array(
74
+				array(-27643952, -11493006, 16282657, -11036493, 28414021, -15012264, 24191034, 4541697, -13338309, 5500568),
75
+				array(12650548, -1497113, 9052871, 11355358, -17680037, -8400164, -17430592, 12264343, 10874051, 13524335),
76
+				array(25556948, -3045990, 714651, 2510400, 23394682, -10415330, 33119038, 5080568, -22528059, 5376628),
77
+			),
78
+			array(
79
+				array(-26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007),
80
+				array(-2255422, 14606630, -21692440, -8039818, 28430649, 8775819, -30494562, 3044290, 31848280, 12543772),
81
+				array(-22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653),
82
+			),
83
+			array(
84
+				array(2385315, 2454213, -22631320, 46603, -4437935, -15680415, 656965, -7236665, 24316168, -5253567),
85
+				array(13741529, 10911568, -33233417, -8603737, -20177830, -1033297, 33040651, -13424532, -20729456, 8321686),
86
+				array(21060490, -2212744, 15712757, -4336099, 1639040, 10656336, 23845965, -11874838, -9984458, 608372),
87
+			),
88
+			array(
89
+				array(-13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887),
90
+				array(-23244140, -294205, -11744728, 14712571, -29465699, -2029617, 12797024, -6440308, -1633405, 16678954),
91
+				array(-29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953),
92
+			),
93
+			array(
94
+				array(24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833),
95
+				array(-16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532),
96
+				array(-22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876),
97
+			),
98
+			array(
99
+				array(2379352, 11839345, -4110402, -5988665, 11274298, 794957, 212801, -14594663, 23527084, -16458268),
100
+				array(33431127, -11130478, -17838966, -15626900, 8909499, 8376530, -32625340, 4087881, -15188911, -14416214),
101
+				array(1767683, 7197987, -13205226, -2022635, -13091350, 448826, 5799055, 4357868, -4774191, -16323038),
102
+			),
103
+		),
104
+		array(
105
+			array(
106
+				array(6721966, 13833823, -23523388, -1551314, 26354293, -11863321, 23365147, -3949732, 7390890, 2759800),
107
+				array(4409041, 2052381, 23373853, 10530217, 7676779, -12885954, 21302353, -4264057, 1244380, -12919645),
108
+				array(-4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664),
109
+			),
110
+			array(
111
+				array(1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933),
112
+				array(-25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182),
113
+				array(-17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222),
114
+			),
115
+			array(
116
+				array(-18582163, -3416217, 17824843, -2340966, 22744343, -10442611, 8763061, 3617786, -19600662, 10370991),
117
+				array(20246567, -14369378, 22358229, -543712, 18507283, -10413996, 14554437, -8746092, 32232924, 16763880),
118
+				array(9648505, 10094563, 26416693, 14745928, -30374318, -6472621, 11094161, 15689506, 3140038, -16510092),
119
+			),
120
+			array(
121
+				array(-16160072, 5472695, 31895588, 4744994, 8823515, 10365685, -27224800, 9448613, -28774454, 366295),
122
+				array(19153450, 11523972, -11096490, -6503142, -24647631, 5420647, 28344573, 8041113, 719605, 11671788),
123
+				array(8678025, 2694440, -6808014, 2517372, 4964326, 11152271, -15432916, -15266516, 27000813, -10195553),
124
+			),
125
+			array(
126
+				array(-15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026),
127
+				array(11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347),
128
+				array(-18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033),
129
+			),
130
+			array(
131
+				array(-23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395),
132
+				array(-27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278),
133
+				array(1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890),
134
+			),
135
+			array(
136
+				array(32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995),
137
+				array(-30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596),
138
+				array(-11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891),
139
+			),
140
+			array(
141
+				array(31947069, -14366651, -4640583, -15339921, -15125977, -6039709, -14756777, -16411740, 19072640, -9511060),
142
+				array(11685058, 11822410, 3158003, -13952594, 33402194, -4165066, 5977896, -5215017, 473099, 5040608),
143
+				array(-20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606),
144
+			),
145
+		),
146
+		array(
147
+			array(
148
+				array(7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389),
149
+				array(-19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016),
150
+				array(-11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341),
151
+			),
152
+			array(
153
+				array(-22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505),
154
+				array(14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553),
155
+				array(-28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655),
156
+			),
157
+			array(
158
+				array(15200332, 8368572, 19679101, 15970074, -31872674, 1959451, 24611599, -4543832, -11745876, 12340220),
159
+				array(12876937, -10480056, 33134381, 6590940, -6307776, 14872440, 9613953, 8241152, 15370987, 9608631),
160
+				array(-4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099),
161
+			),
162
+			array(
163
+				array(26660628, -15677655, 8393734, 358047, -7401291, 992988, -23904233, 858697, 20571223, 8420556),
164
+				array(14620715, 13067227, -15447274, 8264467, 14106269, 15080814, 33531827, 12516406, -21574435, -12476749),
165
+				array(236881, 10476226, 57258, -14677024, 6472998, 2466984, 17258519, 7256740, 8791136, 15069930),
166
+			),
167
+			array(
168
+				array(1276410, -9371918, 22949635, -16322807, -23493039, -5702186, 14711875, 4874229, -30663140, -2331391),
169
+				array(5855666, 4990204, -13711848, 7294284, -7804282, 1924647, -1423175, -7912378, -33069337, 9234253),
170
+				array(20590503, -9018988, 31529744, -7352666, -2706834, 10650548, 31559055, -11609587, 18979186, 13396066),
171
+			),
172
+			array(
173
+				array(24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958),
174
+				array(-11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082),
175
+				array(-28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383),
176
+			),
177
+			array(
178
+				array(-30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521),
179
+				array(-11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807),
180
+				array(23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948),
181
+			),
182
+			array(
183
+				array(9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134),
184
+				array(-32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455),
185
+				array(27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629),
186
+			),
187
+		),
188
+		array(
189
+			array(
190
+				array(-8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069),
191
+				array(-32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746),
192
+				array(24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919),
193
+			),
194
+			array(
195
+				array(11334899, -9218022, 8025293, 12707519, 17523892, -10476071, 10243738, -14685461, -5066034, 16498837),
196
+				array(8911542, 6887158, -9584260, -6958590, 11145641, -9543680, 17303925, -14124238, 6536641, 10543906),
197
+				array(-28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771),
198
+			),
199
+			array(
200
+				array(-25742899, -12566864, -15649966, -846607, -33026686, -796288, -33481822, 15824474, -604426, -9039817),
201
+				array(10330056, 70051, 7957388, -9002667, 9764902, 15609756, 27698697, -4890037, 1657394, 3084098),
202
+				array(10477963, -7470260, 12119566, -13250805, 29016247, -5365589, 31280319, 14396151, -30233575, 15272409),
203
+			),
204
+			array(
205
+				array(-12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504),
206
+				array(-26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727),
207
+				array(28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420),
208
+			),
209
+			array(
210
+				array(-32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003),
211
+				array(-1580388, -11729417, -25979658, -11445023, -17411874, -10912854, 9291594, -16247779, -12154742, 6048605),
212
+				array(-30305315, 14843444, 1539301, 11864366, 20201677, 1900163, 13934231, 5128323, 11213262, 9168384),
213
+			),
214
+			array(
215
+				array(-26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701),
216
+				array(-23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683),
217
+				array(29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708),
218
+			),
219
+			array(
220
+				array(-3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563),
221
+				array(-19464629, 10110288, -17262528, -3503892, -23500387, 1355669, -15523050, 15300988, -20514118, 9168260),
222
+				array(-5353335, 4488613, -23803248, 16314347, 7780487, -15638939, -28948358, 9601605, 33087103, -9011387),
223
+			),
224
+			array(
225
+				array(-19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870, 15664672),
226
+				array(23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686),
227
+				array(-24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665),
228
+			),
229
+		),
230
+		array(
231
+			array(
232
+				array(11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182),
233
+				array(-31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277),
234
+				array(14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628),
235
+			),
236
+			array(
237
+				array(-4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474),
238
+				array(-26531820, -3695990, -1908898, 2534301, -31870557, -16550355, 18341390, -11419951, 32013174, -10103539),
239
+				array(-25479301, 10876443, -11771086, -14625140, -12369567, 1838104, 21911214, 6354752, 4425632, -837822),
240
+			),
241
+			array(
242
+				array(-10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970),
243
+				array(19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756),
244
+				array(-24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508),
245
+			),
246
+			array(
247
+				array(-26205082, 4428547, -8661196, -13194263, 4098402, -14165257, 15522535, 8372215, 5542595, -10702683),
248
+				array(-10562541, 14895633, 26814552, -16673850, -17480754, -2489360, -2781891, 6993761, -18093885, 10114655),
249
+				array(-20107055, -929418, 31422704, 10427861, -7110749, 6150669, -29091755, -11529146, 25953725, -106158),
250
+			),
251
+			array(
252
+				array(-4234397, -8039292, -9119125, 3046000, 2101609, -12607294, 19390020, 6094296, -3315279, 12831125),
253
+				array(-15998678, 7578152, 5310217, 14408357, -33548620, -224739, 31575954, 6326196, 7381791, -2421839),
254
+				array(-20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664),
255
+			),
256
+			array(
257
+				array(27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294),
258
+				array(-18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899),
259
+				array(-11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070),
260
+			),
261
+			array(
262
+				array(3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294),
263
+				array(-15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949),
264
+				array(-21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083),
265
+			),
266
+			array(
267
+				array(31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420),
268
+				array(-5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940),
269
+				array(29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396),
270
+			),
271
+		),
272
+		array(
273
+			array(
274
+				array(-12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567),
275
+				array(20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127),
276
+				array(-16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294),
277
+			),
278
+			array(
279
+				array(-12889898, 9373458, 31595848, 16374215, 21471720, 13221525, -27283495, -12348559, -3698806, 117887),
280
+				array(22263325, -6560050, 3984570, -11174646, -15114008, -566785, 28311253, 5358056, -23319780, 541964),
281
+				array(16259219, 3261970, 2309254, -15534474, -16885711, -4581916, 24134070, -16705829, -13337066, -13552195),
282
+			),
283
+			array(
284
+				array(9378160, -13140186, -22845982, -12745264, 28198281, -7244098, -2399684, -717351, 690426, 14876244),
285
+				array(24977353, -314384, -8223969, -13465086, 28432343, -1176353, -13068804, -12297348, -22380984, 6618999),
286
+				array(-1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762),
287
+			),
288
+			array(
289
+				array(-18603066, 4762990, -926250, 8885304, -28412480, -3187315, 9781647, -10350059, 32779359, 5095274),
290
+				array(-33008130, -5214506, -32264887, -3685216, 9460461, -9327423, -24601656, 14506724, 21639561, -2630236),
291
+				array(-16400943, -13112215, 25239338, 15531969, 3987758, -4499318, -1289502, -6863535, 17874574, 558605),
292
+			),
293
+			array(
294
+				array(-13600129, 10240081, 9171883, 16131053, -20869254, 9599700, 33499487, 5080151, 2085892, 5119761),
295
+				array(-22205145, -2519528, -16381601, 414691, -25019550, 2170430, 30634760, -8363614, -31999993, -5759884),
296
+				array(-6845704, 15791202, 8550074, -1312654, 29928809, -12092256, 27534430, -7192145, -22351378, 12961482),
297
+			),
298
+			array(
299
+				array(-24492060, -9570771, 10368194, 11582341, -23397293, -2245287, 16533930, 8206996, -30194652, -5159638),
300
+				array(-11121496, -3382234, 2307366, 6362031, -135455, 8868177, -16835630, 7031275, 7589640, 8945490),
301
+				array(-32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170),
302
+			),
303
+			array(
304
+				array(5019558, -7907470, 4244127, -14714356, -26933272, 6453165, -19118182, -13289025, -6231896, -10280736),
305
+				array(10853594, 10721687, 26480089, 5861829, -22995819, 1972175, -1866647, -10557898, -3363451, -6441124),
306
+				array(-17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392),
307
+			),
308
+			array(
309
+				array(8139927, -6546497, 32257646, -5890546, 30375719, 1886181, -21175108, 15441252, 28826358, -4123029),
310
+				array(6267086, 9695052, 7709135, -16603597, -32869068, -1886135, 14795160, -7840124, 13746021, -1742048),
311
+				array(28584902, 7787108, -6732942, -15050729, 22846041, -7571236, -3181936, -363524, 4771362, -8419958),
312
+			),
313
+		),
314
+		array(
315
+			array(
316
+				array(24949256, 6376279, -27466481, -8174608, -18646154, -9930606, 33543569, -12141695, 3569627, 11342593),
317
+				array(26514989, 4740088, 27912651, 3697550, 19331575, -11472339, 6809886, 4608608, 7325975, -14801071),
318
+				array(-11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692),
319
+			),
320
+			array(
321
+				array(11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687),
322
+				array(-160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441),
323
+				array(-20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001),
324
+			),
325
+			array(
326
+				array(-938825, -3930586, -8714311, 16124718, 24603125, -6225393, -13775352, -11875822, 24345683, 10325460),
327
+				array(-19855277, -1568885, -22202708, 8714034, 14007766, 6928528, 16318175, -1010689, 4766743, 3552007),
328
+				array(-21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762),
329
+			),
330
+			array(
331
+				array(15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005),
332
+				array(-9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674),
333
+				array(4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035),
334
+			),
335
+			array(
336
+				array(7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590),
337
+				array(-2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957),
338
+				array(-30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812),
339
+			),
340
+			array(
341
+				array(33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740),
342
+				array(-18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122),
343
+				array(-27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158),
344
+			),
345
+			array(
346
+				array(8894125, 7450974, -2664149, -9765752, -28080517, -12389115, 19345746, 14680796, 11632993, 5847885),
347
+				array(26942781, -2315317, 9129564, -4906607, 26024105, 11769399, -11518837, 6367194, -9727230, 4782140),
348
+				array(19916461, -4828410, -22910704, -11414391, 25606324, -5972441, 33253853, 8220911, 6358847, -1873857),
349
+			),
350
+			array(
351
+				array(801428, -2081702, 16569428, 11065167, 29875704, 96627, 7908388, -4480480, -13538503, 1387155),
352
+				array(19646058, 5720633, -11416706, 12814209, 11607948, 12749789, 14147075, 15156355, -21866831, 11835260),
353
+				array(19299512, 1155910, 28703737, 14890794, 2925026, 7269399, 26121523, 15467869, -26560550, 5052483),
354
+			),
355
+		),
356
+		array(
357
+			array(
358
+				array(-3017432, 10058206, 1980837, 3964243, 22160966, 12322533, -6431123, -12618185, 12228557, -7003677),
359
+				array(32944382, 14922211, -22844894, 5188528, 21913450, -8719943, 4001465, 13238564, -6114803, 8653815),
360
+				array(22865569, -4652735, 27603668, -12545395, 14348958, 8234005, 24808405, 5719875, 28483275, 2841751),
361
+			),
362
+			array(
363
+				array(-16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203),
364
+				array(-11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208),
365
+				array(1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230),
366
+			),
367
+			array(
368
+				array(16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850),
369
+				array(-21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389),
370
+				array(-9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968),
371
+			),
372
+			array(
373
+				array(-11307610, 6210372, 13206574, 5806320, -29017692, -13967200, -12331205, -7486601, -25578460, -16240689),
374
+				array(14668462, -12270235, 26039039, 15305210, 25515617, 4542480, 10453892, 6577524, 9145645, -6443880),
375
+				array(5974874, 3053895, -9433049, -10385191, -31865124, 3225009, -7972642, 3936128, -5652273, -3050304),
376
+			),
377
+			array(
378
+				array(30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632),
379
+				array(-3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412),
380
+				array(20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566),
381
+			),
382
+			array(
383
+				array(-20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038),
384
+				array(-26819236, -3283715, 29965059, 3039786, -14473765, 2540457, 29457502, 14625692, -24819617, 12570232),
385
+				array(-1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943),
386
+			),
387
+			array(
388
+				array(17960970, -11775534, -4140968, -9702530, -8876562, -1410617, -12907383, -8659932, -29576300, 1903856),
389
+				array(23134274, -14279132, -10681997, -1611936, 20684485, 15770816, -12989750, 3190296, 26955097, 14109738),
390
+				array(15308788, 5320727, -30113809, -14318877, 22902008, 7767164, 29425325, -11277562, 31960942, 11934971),
391
+			),
392
+			array(
393
+				array(-27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718),
394
+				array(-13159415, 9197841, 3875503, -8936108, -1383712, -5879801, 33518459, 16176658, 21432314, 12180697),
395
+				array(-11787308, 11500838, 13787581, -13832590, -22430679, 10140205, 1465425, 12689540, -10301319, -13872883),
396
+			),
397
+		),
398
+		array(
399
+			array(
400
+				array(5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912),
401
+				array(-26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358),
402
+				array(3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849),
403
+			),
404
+			array(
405
+				array(29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307),
406
+				array(-14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977),
407
+				array(-6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335),
408
+			),
409
+			array(
410
+				array(-29265967, -14186805, -13538216, -12117373, -19457059, -10655384, -31462369, -2948985, 24018831, 15026644),
411
+				array(-22592535, -3145277, -2289276, 5953843, -13440189, 9425631, 25310643, 13003497, -2314791, -15145616),
412
+				array(-27419985, -603321, -8043984, -1669117, -26092265, 13987819, -27297622, 187899, -23166419, -2531735),
413
+			),
414
+			array(
415
+				array(-21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099),
416
+				array(29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341),
417
+				array(-936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336),
418
+			),
419
+			array(
420
+				array(-23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646),
421
+				array(31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425),
422
+				array(-17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388),
423
+			),
424
+			array(
425
+				array(-31361739, -11346780, -15007447, -5856218, -22453340, -12152771, 1222336, 4389483, 3293637, -15551743),
426
+				array(-16684801, -14444245, 11038544, 11054958, -13801175, -3338533, -24319580, 7733547, 12796905, -6335822),
427
+				array(-8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462),
428
+			),
429
+			array(
430
+				array(18606113, 1693100, -25448386, -15170272, 4112353, 10045021, 23603893, -2048234, -7550776, 2484985),
431
+				array(9255317, -3131197, -12156162, -1004256, 13098013, -9214866, 16377220, -2102812, -19802075, -3034702),
432
+				array(-22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797),
433
+			),
434
+			array(
435
+				array(21878590, -5001297, 4338336, 13643897, -3036865, 13160960, 19708896, 5415497, -7360503, -4109293),
436
+				array(27736861, 10103576, 12500508, 8502413, -3413016, -9633558, 10436918, -1550276, -23659143, -8132100),
437
+				array(19492550, -12104365, -29681976, -852630, -3208171, 12403437, 30066266, 8367329, 13243957, 8709688),
438
+			),
439
+		),
440
+		array(
441
+			array(
442
+				array(12015105, 2801261, 28198131, 10151021, 24818120, -4743133, -11194191, -5645734, 5150968, 7274186),
443
+				array(2831366, -12492146, 1478975, 6122054, 23825128, -12733586, 31097299, 6083058, 31021603, -9793610),
444
+				array(-2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707),
445
+			),
446
+			array(
447
+				array(7840942, 14037873, -33364863, 15934016, -728213, -3642706, 21403988, 1057586, -19379462, -12403220),
448
+				array(915865, -16469274, 15608285, -8789130, -24357026, 6060030, -17371319, 8410997, -7220461, 16527025),
449
+				array(32922597, -556987, 20336074, -16184568, 10903705, -5384487, 16957574, 52992, 23834301, 6588044),
450
+			),
451
+			array(
452
+				array(32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992),
453
+				array(-4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027),
454
+				array(21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197),
455
+			),
456
+			array(
457
+				array(8651614, -4477032, -16085636, -4996994, 13002507, 2950805, 29054427, -5106970, 10008136, -4667901),
458
+				array(31486080, 15114593, -14261250, 12951354, 14369431, -7387845, 16347321, -13662089, 8684155, -10532952),
459
+				array(19443825, 11385320, 24468943, -9659068, -23919258, 2187569, -26263207, -6086921, 31316348, 14219878),
460
+			),
461
+			array(
462
+				array(-28594490, 1193785, 32245219, 11392485, 31092169, 15722801, 27146014, 6992409, 29126555, 9207390),
463
+				array(32382935, 1110093, 18477781, 11028262, -27411763, -7548111, -4980517, 10843782, -7957600, -14435730),
464
+				array(2814918, 7836403, 27519878, -7868156, -20894015, -11553689, -21494559, 8550130, 28346258, 1994730),
465
+			),
466
+			array(
467
+				array(-19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180),
468
+				array(-30405132, 955511, -11133838, -15078069, -32447087, -13278079, -25651578, 3317160, -9943017, 930272),
469
+				array(-15303681, -6833769, 28856490, 1357446, 23421993, 1057177, 24091212, -1388970, -22765376, -10650715),
470
+			),
471
+			array(
472
+				array(-22751231, -5303997, -12907607, -12768866, -15811511, -7797053, -14839018, -16554220, -1867018, 8398970),
473
+				array(-31969310, 2106403, -4736360, 1362501, 12813763, 16200670, 22981545, -6291273, 18009408, -15772772),
474
+				array(-17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865),
475
+			),
476
+			array(
477
+				array(15100157, -15835752, -23923978, -1005098, -26450192, 15509408, 12376730, -3479146, 33166107, -8042750),
478
+				array(20909231, 13023121, -9209752, 16251778, -5778415, -8094914, 12412151, 10018715, 2213263, -13878373),
479
+				array(32529814, -11074689, 30361439, -16689753, -9135940, 1513226, 22922121, 6382134, -5766928, 8371348),
480
+			),
481
+		),
482
+		array(
483
+			array(
484
+				array(9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144),
485
+				array(-22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195),
486
+				array(5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086),
487
+			),
488
+			array(
489
+				array(-13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684),
490
+				array(-8320926, -12049626, 31204563, 5839400, -20627288, -1057277, -19442942, 6922164, 12743482, -9800518),
491
+				array(-2361371, 12678785, 28815050, 4759974, -23893047, 4884717, 23783145, 11038569, 18800704, 255233),
492
+			),
493
+			array(
494
+				array(-5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793),
495
+				array(-2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794),
496
+				array(580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435),
497
+			),
498
+			array(
499
+				array(23838809, 1822728, -15738443, 15242727, 8318092, -3733104, -21672180, -3492205, -4821741, 14799921),
500
+				array(13345610, 9759151, 3371034, -16137791, 16353039, 8577942, 31129804, 13496856, -9056018, 7402518),
501
+				array(2286874, -4435931, -20042458, -2008336, -13696227, 5038122, 11006906, -15760352, 8205061, 1607563),
502
+			),
503
+			array(
504
+				array(14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278),
505
+				array(-27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024),
506
+				array(4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030),
507
+			),
508
+			array(
509
+				array(10299610, 13746483, 11661824, 16234854, 7630238, 5998374, 9809887, -16694564, 15219798, -14327783),
510
+				array(27425505, -5719081, 3055006, 10660664, 23458024, 595578, -15398605, -1173195, -18342183, 9742717),
511
+				array(6744077, 2427284, 26042789, 2720740, -847906, 1118974, 32324614, 7406442, 12420155, 1994844),
512
+			),
513
+			array(
514
+				array(14012521, -5024720, -18384453, -9578469, -26485342, -3936439, -13033478, -10909803, 24319929, -6446333),
515
+				array(16412690, -4507367, 10772641, 15929391, -17068788, -4658621, 10555945, -10484049, -30102368, -4739048),
516
+				array(22397382, -7767684, -9293161, -12792868, 17166287, -9755136, -27333065, 6199366, 21880021, -12250760),
517
+			),
518
+			array(
519
+				array(-4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760),
520
+				array(-15447727, 709327, -6919446, -10870178, -29777922, 6522332, -21720181, 12130072, -14796503, 5005757),
521
+				array(-2114751, -14308128, 23019042, 15765735, -25269683, 6002752, 10183197, -13239326, -16395286, -2176112),
522
+			),
523
+		),
524
+		array(
525
+			array(
526
+				array(-19025756, 1632005, 13466291, -7995100, -23640451, 16573537, -32013908, -3057104, 22208662, 2000468),
527
+				array(3065073, -1412761, -25598674, -361432, -17683065, -5703415, -8164212, 11248527, -3691214, -7414184),
528
+				array(10379208, -6045554, 8877319, 1473647, -29291284, -12507580, 16690915, 2553332, -3132688, 16400289),
529
+			),
530
+			array(
531
+				array(15716668, 1254266, -18472690, 7446274, -8448918, 6344164, -22097271, -7285580, 26894937, 9132066),
532
+				array(24158887, 12938817, 11085297, -8177598, -28063478, -4457083, -30576463, 64452, -6817084, -2692882),
533
+				array(13488534, 7794716, 22236231, 5989356, 25426474, -12578208, 2350710, -3418511, -4688006, 2364226),
534
+			),
535
+			array(
536
+				array(16335052, 9132434, 25640582, 6678888, 1725628, 8517937, -11807024, -11697457, 15445875, -7798101),
537
+				array(29004207, -7867081, 28661402, -640412, -12794003, -7943086, 31863255, -4135540, -278050, -15759279),
538
+				array(-6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811),
539
+			),
540
+			array(
541
+				array(27081650, 3463984, 14099042, -4517604, 1616303, -6205604, 29542636, 15372179, 17293797, 960709),
542
+				array(20263915, 11434237, -5765435, 11236810, 13505955, -10857102, -16111345, 6493122, -19384511, 7639714),
543
+				array(-2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121),
544
+			),
545
+			array(
546
+				array(9769828, 5202651, -24157398, -13631392, -28051003, -11561624, -24613141, -13860782, -31184575, 709464),
547
+				array(12286395, 13076066, -21775189, -1176622, -25003198, 4057652, -32018128, -8890874, 16102007, 13205847),
548
+				array(13733362, 5599946, 10557076, 3195751, -5557991, 8536970, -25540170, 8525972, 10151379, 10394400),
549
+			),
550
+			array(
551
+				array(4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414),
552
+				array(-15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158),
553
+				array(17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045),
554
+			),
555
+			array(
556
+				array(-461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415),
557
+				array(-5070281, 12367917, -30663534, 3234473, 32617080, -8422642, 29880583, -13483331, -26898490, -7867459),
558
+				array(-31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079),
559
+			),
560
+			array(
561
+				array(21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412),
562
+				array(-20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743),
563
+				array(-14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836),
564
+			),
565
+		),
566
+		array(
567
+			array(
568
+				array(12962541, 5311799, -10060768, 11658280, 18855286, -7954201, 13286263, -12808704, -4381056, 9882022),
569
+				array(18512079, 11319350, -20123124, 15090309, 18818594, 5271736, -22727904, 3666879, -23967430, -3299429),
570
+				array(-6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065),
571
+			),
572
+			array(
573
+				array(30169808, -5317648, 26306206, -11750859, 27814964, 7069267, 7152851, 3684982, 1449224, 13082861),
574
+				array(10342826, 3098505, 2119311, 193222, 25702612, 12233820, 23697382, 15056736, -21016438, -8202000),
575
+				array(-33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101),
576
+			),
577
+			array(
578
+				array(32869458, -5408545, 25609743, 15678670, -10687769, -15471071, 26112421, 2521008, -22664288, 6904815),
579
+				array(29506923, 4457497, 3377935, -9796444, -30510046, 12935080, 1561737, 3841096, -29003639, -6657642),
580
+				array(10340844, -6630377, -18656632, -2278430, 12621151, -13339055, 30878497, -11824370, -25584551, 5181966),
581
+			),
582
+			array(
583
+				array(25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574),
584
+				array(-21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742),
585
+				array(-18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689),
586
+			),
587
+			array(
588
+				array(12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020),
589
+				array(-10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772),
590
+				array(3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982),
591
+			),
592
+			array(
593
+				array(-14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953),
594
+				array(-16777703, -15253301, -9642417, 4978983, 3308785, 8755439, 6943197, 6461331, -25583147, 8991218),
595
+				array(-17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265),
596
+			),
597
+			array(
598
+				array(29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073),
599
+				array(-3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325),
600
+				array(-11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798),
601
+			),
602
+			array(
603
+				array(-4811456, 13761029, -31703877, -2483919, -3312471, 7869047, -7113572, -9620092, 13240845, 10965870),
604
+				array(-7742563, -8256762, -14768334, -13656260, -23232383, 12387166, 4498947, 14147411, 29514390, 4302863),
605
+				array(-13413405, -12407859, 20757302, -13801832, 14785143, 8976368, -5061276, -2144373, 17846988, -13971927),
606
+			),
607
+		),
608
+		array(
609
+			array(
610
+				array(-2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267),
611
+				array(-9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663),
612
+				array(22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862),
613
+			),
614
+			array(
615
+				array(-25169565, -10053642, -19909332, 15361595, -5984358, 2159192, 75375, -4278529, -32526221, 8469673),
616
+				array(15854970, 4148314, -8893890, 7259002, 11666551, 13824734, -30531198, 2697372, 24154791, -9460943),
617
+				array(15446137, -15806644, 29759747, 14019369, 30811221, -9610191, -31582008, 12840104, 24913809, 9815020),
618
+			),
619
+			array(
620
+				array(-4709286, -5614269, -31841498, -12288893, -14443537, 10799414, -9103676, 13438769, 18735128, 9466238),
621
+				array(11933045, 9281483, 5081055, -5183824, -2628162, -4905629, -7727821, -10896103, -22728655, 16199064),
622
+				array(14576810, 379472, -26786533, -8317236, -29426508, -10812974, -102766, 1876699, 30801119, 2164795),
623
+			),
624
+			array(
625
+				array(15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052),
626
+				array(-10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904),
627
+				array(29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531),
628
+			),
629
+			array(
630
+				array(-13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979),
631
+				array(-5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841),
632
+				array(10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431),
633
+			),
634
+			array(
635
+				array(10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324),
636
+				array(-31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940),
637
+				array(10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320),
638
+			),
639
+			array(
640
+				array(-15815640, -10601066, -6538952, -7258995, -6984659, -6581778, -31500847, 13765824, -27434397, 9900184),
641
+				array(14465505, -13833331, -32133984, -14738873, -27443187, 12990492, 33046193, 15796406, -7051866, -8040114),
642
+				array(30924417, -8279620, 6359016, -12816335, 16508377, 9071735, -25488601, 15413635, 9524356, -7018878),
643
+			),
644
+			array(
645
+				array(12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784),
646
+				array(-2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091),
647
+				array(-16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585),
648
+			),
649
+		),
650
+		array(
651
+			array(
652
+				array(-8858980, -2219056, 28571666, -10155518, -474467, -10105698, -3801496, 278095, 23440562, -290208),
653
+				array(10226241, -5928702, 15139956, 120818, -14867693, 5218603, 32937275, 11551483, -16571960, -7442864),
654
+				array(17932739, -12437276, -24039557, 10749060, 11316803, 7535897, 22503767, 5561594, -3646624, 3898661),
655
+			),
656
+			array(
657
+				array(7749907, -969567, -16339731, -16464, -25018111, 15122143, -1573531, 7152530, 21831162, 1245233),
658
+				array(26958459, -14658026, 4314586, 8346991, -5677764, 11960072, -32589295, -620035, -30402091, -16716212),
659
+				array(-12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525),
660
+			),
661
+			array(
662
+				array(-24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068),
663
+				array(9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397),
664
+				array(-8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988),
665
+			),
666
+			array(
667
+				array(5269168, -6859726, -13230211, -8020715, 25932563, 1763552, -5606110, -5505881, -20017847, 2357889),
668
+				array(32264008, -15407652, -5387735, -1160093, -2091322, -3946900, 23104804, -12869908, 5727338, 189038),
669
+				array(14609123, -8954470, -6000566, -16622781, -14577387, -7743898, -26745169, 10942115, -25888931, -14884697),
670
+			),
671
+			array(
672
+				array(20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875),
673
+				array(-25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905),
674
+				array(-25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656),
675
+			),
676
+			array(
677
+				array(11630004, 12144454, 2116339, 13606037, 27378885, 15676917, -17408753, -13504373, -14395196, 8070818),
678
+				array(27117696, -10007378, -31282771, -5570088, 1127282, 12772488, -29845906, 10483306, -11552749, -1028714),
679
+				array(10637467, -5688064, 5674781, 1072708, -26343588, -6982302, -1683975, 9177853, -27493162, 15431203),
680
+			),
681
+			array(
682
+				array(20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931),
683
+				array(-30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024),
684
+				array(-23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084),
685
+			),
686
+			array(
687
+				array(-1931799, -5407458, 3304649, -12884869, 17015806, -4877091, -29783850, -7752482, -13215537, -319204),
688
+				array(20239939, 6607058, 6203985, 3483793, -18386976, -779229, -20723742, 15077870, -22750759, 14523817),
689
+				array(27406042, -6041657, 27423596, -4497394, 4996214, 10002360, -28842031, -4545494, -30172742, -4805667),
690
+			),
691
+		),
692
+		array(
693
+			array(
694
+				array(11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504),
695
+				array(-12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768),
696
+				array(-19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255),
697
+			),
698
+			array(
699
+				array(6490081, 11940286, 25495923, -7726360, 8668373, -8751316, 3367603, 6970005, -1691065, -9004790),
700
+				array(1656497, 13457317, 15370807, 6364910, 13605745, 8362338, -19174622, -5475723, -16796596, -5031438),
701
+				array(-22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333),
702
+			),
703
+			array(
704
+				array(17747465, 10039260, 19368299, -4050591, -20630635, -16041286, 31992683, -15857976, -29260363, -5511971),
705
+				array(31932027, -4986141, -19612382, 16366580, 22023614, 88450, 11371999, -3744247, 4882242, -10626905),
706
+				array(29796507, 37186, 19818052, 10115756, -11829032, 3352736, 18551198, 3272828, -5190932, -4162409),
707
+			),
708
+			array(
709
+				array(12501286, 4044383, -8612957, -13392385, -32430052, 5136599, -19230378, -3529697, 330070, -3659409),
710
+				array(6384877, 2899513, 17807477, 7663917, -2358888, 12363165, 25366522, -8573892, -271295, 12071499),
711
+				array(-8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363),
712
+			),
713
+			array(
714
+				array(28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664),
715
+				array(-11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324),
716
+				array(-21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940),
717
+			),
718
+			array(
719
+				array(13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990),
720
+				array(-17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914),
721
+				array(-25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290),
722
+			),
723
+			array(
724
+				array(24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257),
725
+				array(-6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433),
726
+				array(-16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236),
727
+			),
728
+			array(
729
+				array(-12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045),
730
+				array(11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093),
731
+				array(-1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347),
732
+			),
733
+		),
734
+		array(
735
+			array(
736
+				array(-28970898, 5271447, -1266009, -9736989, -12455236, 16732599, -4862407, -4906449, 27193557, 6245191),
737
+				array(-15193956, 5362278, -1783893, 2695834, 4960227, 12840725, 23061898, 3260492, 22510453, 8577507),
738
+				array(-12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906),
739
+			),
740
+			array(
741
+				array(3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018),
742
+				array(-16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109),
743
+				array(-23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926),
744
+			),
745
+			array(
746
+				array(-24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528),
747
+				array(8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625),
748
+				array(-32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286),
749
+			),
750
+			array(
751
+				array(2901347, -1117687, 3880376, -10059388, -17620940, -3612781, -21802117, -3567481, 20456845, -1885033),
752
+				array(27019610, 12299467, -13658288, -1603234, -12861660, -4861471, -19540150, -5016058, 29439641, 15138866),
753
+				array(21536104, -6626420, -32447818, -10690208, -22408077, 5175814, -5420040, -16361163, 7779328, 109896),
754
+			),
755
+			array(
756
+				array(30279744, 14648750, -8044871, 6425558, 13639621, -743509, 28698390, 12180118, 23177719, -554075),
757
+				array(26572847, 3405927, -31701700, 12890905, -19265668, 5335866, -6493768, 2378492, 4439158, -13279347),
758
+				array(-22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437),
759
+			),
760
+			array(
761
+				array(-5056483, 16566551, 15953661, 3767752, -10436499, 15627060, -820954, 2177225, 8550082, -15114165),
762
+				array(-18473302, 16596775, -381660, 15663611, 22860960, 15585581, -27844109, -3582739, -23260460, -8428588),
763
+				array(-32480551, 15707275, -8205912, -5652081, 29464558, 2713815, -22725137, 15860482, -21902570, 1494193),
764
+			),
765
+			array(
766
+				array(-19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017),
767
+				array(-28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883),
768
+				array(21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961),
769
+			),
770
+			array(
771
+				array(8832269, -14495485, 13253511, 5137575, 5037871, 4078777, 24880818, -6222716, 2862653, 9455043),
772
+				array(29306751, 5123106, 20245049, -14149889, 9592566, 8447059, -2077124, -2990080, 15511449, 4789663),
773
+				array(-20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362),
774
+			),
775
+		),
776
+		array(
777
+			array(
778
+				array(-33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860),
779
+				array(2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466),
780
+				array(-24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063),
781
+			),
782
+			array(
783
+				array(-26432803, 6148329, -17184412, -14474154, 18782929, -275997, -22561534, 211300, 2719757, 4940997),
784
+				array(-1323882, 3911313, -6948744, 14759765, -30027150, 7851207, 21690126, 8518463, 26699843, 5276295),
785
+				array(-13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369),
786
+			),
787
+			array(
788
+				array(9987780, -3404759, 17507962, 9505530, 9731535, -2165514, 22356009, 8312176, 22477218, -8403385),
789
+				array(18155857, -16504990, 19744716, 9006923, 15154154, -10538976, 24256460, -4864995, -22548173, 9334109),
790
+				array(2986088, -4911893, 10776628, -3473844, 10620590, -7083203, -21413845, 14253545, -22587149, 536906),
791
+			),
792
+			array(
793
+				array(4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424),
794
+				array(-19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185),
795
+				array(7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962),
796
+			),
797
+			array(
798
+				array(-7737563, -5869402, -14566319, -7406919, 11385654, 13201616, 31730678, -10962840, -3918636, -9669325),
799
+				array(10188286, -15770834, -7336361, 13427543, 22223443, 14896287, 30743455, 7116568, -21786507, 5427593),
800
+				array(696102, 13206899, 27047647, -10632082, 15285305, -9853179, 10798490, -4578720, 19236243, 12477404),
801
+			),
802
+			array(
803
+				array(-11229439, 11243796, -17054270, -8040865, -788228, -8167967, -3897669, 11180504, -23169516, 7733644),
804
+				array(17800790, -14036179, -27000429, -11766671, 23887827, 3149671, 23466177, -10538171, 10322027, 15313801),
805
+				array(26246234, 11968874, 32263343, -5468728, 6830755, -13323031, -15794704, -101982, -24449242, 10890804),
806
+			),
807
+			array(
808
+				array(-31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884),
809
+				array(-586574, 10376444, -32586414, -11286356, 19801893, 10997610, 2276632, 9482883, 316878, 13820577),
810
+				array(-9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849),
811
+			),
812
+			array(
813
+				array(32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473),
814
+				array(-8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644),
815
+				array(-2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319),
816
+			),
817
+		),
818
+		array(
819
+			array(
820
+				array(-11225584, 2320285, -9584280, 10149187, -33444663, 5808648, -14876251, -1729667, 31234590, 6090599),
821
+				array(-9633316, 116426, 26083934, 2897444, -6364437, -2688086, 609721, 15878753, -6970405, -9034768),
822
+				array(-27757857, 247744, -15194774, -9002551, 23288161, -10011936, -23869595, 6503646, 20650474, 1804084),
823
+			),
824
+			array(
825
+				array(-27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328),
826
+				array(-15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369),
827
+				array(20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920),
828
+			),
829
+			array(
830
+				array(12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815),
831
+				array(-32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025),
832
+				array(-21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397),
833
+			),
834
+			array(
835
+				array(-20184622, 2338216, 19788685, -9620956, -4001265, -8740893, -20271184, 4733254, 3727144, -12934448),
836
+				array(6120119, 814863, -11794402, -622716, 6812205, -15747771, 2019594, 7975683, 31123697, -10958981),
837
+				array(30069250, -11435332, 30434654, 2958439, 18399564, -976289, 12296869, 9204260, -16432438, 9648165),
838
+			),
839
+			array(
840
+				array(32705432, -1550977, 30705658, 7451065, -11805606, 9631813, 3305266, 5248604, -26008332, -11377501),
841
+				array(17219865, 2375039, -31570947, -5575615, -19459679, 9219903, 294711, 15298639, 2662509, -16297073),
842
+				array(-1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861),
843
+			),
844
+			array(
845
+				array(14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845),
846
+				array(-1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211),
847
+				array(18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870),
848
+			),
849
+			array(
850
+				array(10141598, 6082907, 17829293, -1947643, 9830092, 13613136, -25556636, -5544586, -33502212, 3592096),
851
+				array(33114168, -15889352, -26525686, -13343397, 33076705, 8716171, 1151462, 1521897, -982665, -6837803),
852
+				array(-32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168),
853
+			),
854
+			array(
855
+				array(30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965),
856
+				array(-14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505),
857
+				array(18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598),
858
+			),
859
+		),
860
+		array(
861
+			array(
862
+				array(5975908, -5243188, -19459362, -9681747, -11541277, 14015782, -23665757, 1228319, 17544096, -10593782),
863
+				array(5811932, -1715293, 3442887, -2269310, -18367348, -8359541, -18044043, -15410127, -5565381, 12348900),
864
+				array(-31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479),
865
+			),
866
+			array(
867
+				array(-12675304, 694026, -5076145, 13300344, 14015258, -14451394, -9698672, -11329050, 30944593, 1130208),
868
+				array(8247766, -6710942, -26562381, -7709309, -14401939, -14648910, 4652152, 2488540, 23550156, -271232),
869
+				array(17294316, -3788438, 7026748, 15626851, 22990044, 113481, 2267737, -5908146, -408818, -137719),
870
+			),
871
+			array(
872
+				array(16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271),
873
+				array(-4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326),
874
+				array(-8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132),
875
+			),
876
+			array(
877
+				array(14763076, -15903608, -30918270, 3689867, 3511892, 10313526, -21951088, 12219231, -9037963, -940300),
878
+				array(8894987, -3446094, 6150753, 3013931, 301220, 15693451, -31981216, -2909717, -15438168, 11595570),
879
+				array(15214962, 3537601, -26238722, -14058872, 4418657, -15230761, 13947276, 10730794, -13489462, -4363670),
880
+			),
881
+			array(
882
+				array(-2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994),
883
+				array(-12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913),
884
+				array(31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317),
885
+			),
886
+			array(
887
+				array(-25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730),
888
+				array(842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096),
889
+				array(-4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078),
890
+			),
891
+			array(
892
+				array(-15218652, 14667096, -13336229, 2013717, 30598287, -464137, -31504922, -7882064, 20237806, 2838411),
893
+				array(-19288047, 4453152, 15298546, -16178388, 22115043, -15972604, 12544294, -13470457, 1068881, -12499905),
894
+				array(-9558883, -16518835, 33238498, 13506958, 30505848, -1114596, -8486907, -2630053, 12521378, 4845654),
895
+			),
896
+			array(
897
+				array(-28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870),
898
+				array(-23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498),
899
+				array(12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579),
900
+			),
901
+		),
902
+		array(
903
+			array(
904
+				array(14741879, -14946887, 22177208, -11721237, 1279741, 8058600, 11758140, 789443, 32195181, 3895677),
905
+				array(10758205, 15755439, -4509950, 9243698, -4879422, 6879879, -2204575, -3566119, -8982069, 4429647),
906
+				array(-2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743),
907
+			),
908
+			array(
909
+				array(-25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468),
910
+				array(21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375),
911
+				array(-25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155),
912
+			),
913
+			array(
914
+				array(6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725),
915
+				array(-12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612),
916
+				array(-10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943),
917
+			),
918
+			array(
919
+				array(-30505967, -3821767, 12074681, 13582412, -19877972, 2443951, -19719286, 12746132, 5331210, -10105944),
920
+				array(30528811, 3601899, -1957090, 4619785, -27361822, -15436388, 24180793, -12570394, 27679908, -1648928),
921
+				array(9402404, -13957065, 32834043, 10838634, -26580150, -13237195, 26653274, -8685565, 22611444, -12715406),
922
+			),
923
+			array(
924
+				array(22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139),
925
+				array(-8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963),
926
+				array(-31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693),
927
+			),
928
+			array(
929
+				array(1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734),
930
+				array(-448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680),
931
+				array(-24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410),
932
+			),
933
+			array(
934
+				array(-9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931),
935
+				array(-16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654),
936
+				array(22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710),
937
+			),
938
+			array(
939
+				array(29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180),
940
+				array(-26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684),
941
+				array(-10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895),
942
+			),
943
+		),
944
+		array(
945
+			array(
946
+				array(22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501),
947
+				array(-11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413),
948
+				array(6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880),
949
+			),
950
+			array(
951
+				array(-8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874),
952
+				array(22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962),
953
+				array(-7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899),
954
+			),
955
+			array(
956
+				array(21721356, -4212746, -12206123, 9310182, -3882239, -13653110, 23740224, -2709232, 20491983, -8042152),
957
+				array(9209270, -15135055, -13256557, -6167798, -731016, 15289673, 25947805, 15286587, 30997318, -6703063),
958
+				array(7392032, 16618386, 23946583, -8039892, -13265164, -1533858, -14197445, -2321576, 17649998, -250080),
959
+			),
960
+			array(
961
+				array(-9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146),
962
+				array(-17558673, 1763594, -33114336, 15908610, -30040870, -12174295, 7335080, -8472199, -3174674, 3440183),
963
+				array(-19889700, -5977008, -24111293, -9688870, 10799743, -16571957, 40450, -4431835, 4862400, 1133),
964
+			),
965
+			array(
966
+				array(-32856209, -7873957, -5422389, 14860950, -16319031, 7956142, 7258061, 311861, -30594991, -7379421),
967
+				array(-3773428, -1565936, 28985340, 7499440, 24445838, 9325937, 29727763, 16527196, 18278453, 15405622),
968
+				array(-4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197),
969
+			),
970
+			array(
971
+				array(2281448, -13487055, -10915418, -2609910, 1879358, 16164207, -10783882, 3953792, 13340839, 15928663),
972
+				array(31727126, -7179855, -18437503, -8283652, 2875793, -16390330, -25269894, -7014826, -23452306, 5964753),
973
+				array(4100420, -5959452, -17179337, 6017714, -18705837, 12227141, -26684835, 11344144, 2538215, -7570755),
974
+			),
975
+			array(
976
+				array(-9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862),
977
+				array(-26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118),
978
+				array(26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171),
979
+			),
980
+			array(
981
+				array(15121113, -5201871, -10389905, 15427821, -27509937, -15992507, 21670947, 4486675, -5931810, -14466380),
982
+				array(16166486, -9483733, -11104130, 6023908, -31926798, -1364923, 2340060, -16254968, -10735770, -10039824),
983
+				array(28042865, -3557089, -12126526, 12259706, -3717498, -6945899, 6766453, -8689599, 18036436, 5803270),
984
+			),
985
+		),
986
+		array(
987
+			array(
988
+				array(-817581, 6763912, 11803561, 1585585, 10958447, -2671165, 23855391, 4598332, -6159431, -14117438),
989
+				array(-31031306, -14256194, 17332029, -2383520, 31312682, -5967183, 696309, 50292, -20095739, 11763584),
990
+				array(-594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562),
991
+			),
992
+			array(
993
+				array(30464590, -11262872, -4127476, -12734478, 19835327, -7105613, -24396175, 2075773, -17020157, 992471),
994
+				array(18357185, -6994433, 7766382, 16342475, -29324918, 411174, 14578841, 8080033, -11574335, -10601610),
995
+				array(19598397, 10334610, 12555054, 2555664, 18821899, -10339780, 21873263, 16014234, 26224780, 16452269),
996
+			),
997
+			array(
998
+				array(-30223925, 5145196, 5944548, 16385966, 3976735, 2009897, -11377804, -7618186, -20533829, 3698650),
999
+				array(14187449, 3448569, -10636236, -10810935, -22663880, -3433596, 7268410, -10890444, 27394301, 12015369),
1000
+				array(19695761, 16087646, 28032085, 12999827, 6817792, 11427614, 20244189, -1312777, -13259127, -3402461),
1001
+			),
1002
+			array(
1003
+				array(30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462),
1004
+				array(-5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793),
1005
+				array(-2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218),
1006
+			),
1007
+			array(
1008
+				array(-24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226),
1009
+				array(18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019),
1010
+				array(-15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037),
1011
+			),
1012
+			array(
1013
+				array(31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171),
1014
+				array(-17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132),
1015
+				array(-28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841),
1016
+			),
1017
+			array(
1018
+				array(21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181),
1019
+				array(-33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210),
1020
+				array(-1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040),
1021
+			),
1022
+			array(
1023
+				array(3960823, -14267803, -28026090, -15918051, -19404858, 13146868, 15567327, 951507, -3260321, -573935),
1024
+				array(24740841, 5052253, -30094131, 8961361, 25877428, 6165135, -24368180, 14397372, -7380369, -6144105),
1025
+				array(-28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814),
1026
+			),
1027
+		),
1028
+		array(
1029
+			array(
1030
+				array(793299, -9230478, 8836302, -6235707, -27360908, -2369593, 33152843, -4885251, -9906200, -621852),
1031
+				array(5666233, 525582, 20782575, -8038419, -24538499, 14657740, 16099374, 1468826, -6171428, -15186581),
1032
+				array(-4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646),
1033
+			),
1034
+			array(
1035
+				array(10896332, -7719704, 824275, 472601, -19460308, 3009587, 25248958, 14783338, -30581476, -15757844),
1036
+				array(10566929, 12612572, -31944212, 11118703, -12633376, 12362879, 21752402, 8822496, 24003793, 14264025),
1037
+				array(27713862, -7355973, -11008240, 9227530, 27050101, 2504721, 23886875, -13117525, 13958495, -5732453),
1038
+			),
1039
+			array(
1040
+				array(-23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068),
1041
+				array(4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192),
1042
+				array(-17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921),
1043
+			),
1044
+			array(
1045
+				array(-9064912, 2103172, 25561640, -15125738, -5239824, 9582958, 32477045, -9017955, 5002294, -15550259),
1046
+				array(-12057553, -11177906, 21115585, -13365155, 8808712, -12030708, 16489530, 13378448, -25845716, 12741426),
1047
+				array(-5946367, 10645103, -30911586, 15390284, -3286982, -7118677, 24306472, 15852464, 28834118, -7646072),
1048
+			),
1049
+			array(
1050
+				array(-17335748, -9107057, -24531279, 9434953, -8472084, -583362, -13090771, 455841, 20461858, 5491305),
1051
+				array(13669248, -16095482, -12481974, -10203039, -14569770, -11893198, -24995986, 11293807, -28588204, -9421832),
1052
+				array(28497928, 6272777, -33022994, 14470570, 8906179, -1225630, 18504674, -14165166, 29867745, -8795943),
1053
+			),
1054
+			array(
1055
+				array(-16207023, 13517196, -27799630, -13697798, 24009064, -6373891, -6367600, -13175392, 22853429, -4012011),
1056
+				array(24191378, 16712145, -13931797, 15217831, 14542237, 1646131, 18603514, -11037887, 12876623, -2112447),
1057
+				array(17902668, 4518229, -411702, -2829247, 26878217, 5258055, -12860753, 608397, 16031844, 3723494),
1058
+			),
1059
+			array(
1060
+				array(-28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245),
1061
+				array(-20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859),
1062
+				array(28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915),
1063
+			),
1064
+			array(
1065
+				array(16000882, -344896, 3493092, -11447198, -29504595, -13159789, 12577740, 16041268, -19715240, 7847707),
1066
+				array(10151868, 10572098, 27312476, 7922682, 14825339, 4723128, -32855931, -6519018, -10020567, 3852848),
1067
+				array(-11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224),
1068
+			),
1069
+		),
1070
+		array(
1071
+			array(
1072
+				array(-25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391),
1073
+				array(15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215),
1074
+				array(-23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101),
1075
+			),
1076
+			array(
1077
+				array(23190676, 2384583, -32714340, 3462154, -29903655, -1529132, -11266856, 8911517, -25205859, 2739713),
1078
+				array(21374101, -3554250, -33524649, 9874411, 15377179, 11831242, -33529904, 6134907, 4931255, 11987849),
1079
+				array(-7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930),
1080
+			),
1081
+			array(
1082
+				array(-29501170, -10744872, -26163768, 13051539, -25625564, 5089643, -6325503, 6704079, 12890019, 15728940),
1083
+				array(-21972360, -11771379, -951059, -4418840, 14704840, 2695116, 903376, -10428139, 12885167, 8311031),
1084
+				array(-17516482, 5352194, 10384213, -13811658, 7506451, 13453191, 26423267, 4384730, 1888765, -5435404),
1085
+			),
1086
+			array(
1087
+				array(-25817338, -3107312, -13494599, -3182506, 30896459, -13921729, -32251644, -12707869, -19464434, -3340243),
1088
+				array(-23607977, -2665774, -526091, 4651136, 5765089, 4618330, 6092245, 14845197, 17151279, -9854116),
1089
+				array(-24830458, -12733720, -15165978, 10367250, -29530908, -265356, 22825805, -7087279, -16866484, 16176525),
1090
+			),
1091
+			array(
1092
+				array(-23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509),
1093
+				array(-10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883),
1094
+				array(15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865),
1095
+			),
1096
+			array(
1097
+				array(-3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660),
1098
+				array(4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273),
1099
+				array(-28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138),
1100
+			),
1101
+			array(
1102
+				array(-25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560),
1103
+				array(-10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135),
1104
+				array(2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941),
1105
+			),
1106
+			array(
1107
+				array(-4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739),
1108
+				array(18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756),
1109
+				array(-30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819),
1110
+			),
1111
+		),
1112
+		array(
1113
+			array(
1114
+				array(-6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347),
1115
+				array(-27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028),
1116
+				array(21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075),
1117
+			),
1118
+			array(
1119
+				array(16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799),
1120
+				array(-2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609),
1121
+				array(-25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817),
1122
+			),
1123
+			array(
1124
+				array(-23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989),
1125
+				array(-30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523),
1126
+				array(4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278),
1127
+			),
1128
+			array(
1129
+				array(31879134, -8918693, 17258761, 90626, -8041836, -4917709, 24162788, -9650886, -17970238, 12833045),
1130
+				array(19073683, 14851414, -24403169, -11860168, 7625278, 11091125, -19619190, 2074449, -9413939, 14905377),
1131
+				array(24483667, -11935567, -2518866, -11547418, -1553130, 15355506, -25282080, 9253129, 27628530, -7555480),
1132
+			),
1133
+			array(
1134
+				array(17597607, 8340603, 19355617, 552187, 26198470, -3176583, 4593324, -9157582, -14110875, 15297016),
1135
+				array(510886, 14337390, -31785257, 16638632, 6328095, 2713355, -20217417, -11864220, 8683221, 2921426),
1136
+				array(18606791, 11874196, 27155355, -5281482, -24031742, 6265446, -25178240, -1278924, 4674690, 13890525),
1137
+			),
1138
+			array(
1139
+				array(13609624, 13069022, -27372361, -13055908, 24360586, 9592974, 14977157, 9835105, 4389687, 288396),
1140
+				array(9922506, -519394, 13613107, 5883594, -18758345, -434263, -12304062, 8317628, 23388070, 16052080),
1141
+				array(12720016, 11937594, -31970060, -5028689, 26900120, 8561328, -20155687, -11632979, -14754271, -10812892),
1142
+			),
1143
+			array(
1144
+				array(15961858, 14150409, 26716931, -665832, -22794328, 13603569, 11829573, 7467844, -28822128, 929275),
1145
+				array(11038231, -11582396, -27310482, -7316562, -10498527, -16307831, -23479533, -9371869, -21393143, 2465074),
1146
+				array(20017163, -4323226, 27915242, 1529148, 12396362, 15675764, 13817261, -9658066, 2463391, -4622140),
1147
+			),
1148
+			array(
1149
+				array(-16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717),
1150
+				array(-1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101),
1151
+				array(24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127),
1152
+			),
1153
+		),
1154
+		array(
1155
+			array(
1156
+				array(-12622226, -6204820, 30718825, 2591312, -10617028, 12192840, 18873298, -7297090, -32297756, 15221632),
1157
+				array(-26478122, -11103864, 11546244, -1852483, 9180880, 7656409, -21343950, 2095755, 29769758, 6593415),
1158
+				array(-31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160),
1159
+			),
1160
+			array(
1161
+				array(31429822, -13959116, 29173532, 15632448, 12174511, -2760094, 32808831, 3977186, 26143136, -3148876),
1162
+				array(22648901, 1402143, -22799984, 13746059, 7936347, 365344, -8668633, -1674433, -3758243, -2304625),
1163
+				array(-15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478),
1164
+			),
1165
+			array(
1166
+				array(27338066, -7507420, -7414224, 10140405, -19026427, -6589889, 27277191, 8855376, 28572286, 3005164),
1167
+				array(26287124, 4821776, 25476601, -4145903, -3764513, -15788984, -18008582, 1182479, -26094821, -13079595),
1168
+				array(-7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248),
1169
+			),
1170
+			array(
1171
+				array(-16657702, 2817643, -10286362, 14811298, 6024667, 13349505, -27315504, -10497842, -27672585, -11539858),
1172
+				array(15941029, -9405932, -21367050, 8062055, 31876073, -238629, -15278393, -1444429, 15397331, -4130193),
1173
+				array(8934485, -13485467, -23286397, -13423241, -32446090, 14047986, 31170398, -1441021, -27505566, 15087184),
1174
+			),
1175
+			array(
1176
+				array(-18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942),
1177
+				array(-1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635),
1178
+				array(21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948),
1179
+			),
1180
+			array(
1181
+				array(11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935),
1182
+				array(-25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415),
1183
+				array(-15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416),
1184
+			),
1185
+			array(
1186
+				array(-7091295, 12556208, -20191352, 9025187, -17072479, 4333801, 4378436, 2432030, 23097949, -566018),
1187
+				array(4565804, -16025654, 20084412, -7842817, 1724999, 189254, 24767264, 10103221, -18512313, 2424778),
1188
+				array(366633, -11976806, 8173090, -6890119, 30788634, 5745705, -7168678, 1344109, -3642553, 12412659),
1189
+			),
1190
+			array(
1191
+				array(-24001791, 7690286, 14929416, -168257, -32210835, -13412986, 24162697, -15326504, -3141501, 11179385),
1192
+				array(18289522, -14724954, 8056945, 16430056, -21729724, 7842514, -6001441, -1486897, -18684645, -11443503),
1193
+				array(476239, 6601091, -6152790, -9723375, 17503545, -4863900, 27672959, 13403813, 11052904, 5219329),
1194
+			),
1195
+		),
1196
+		array(
1197
+			array(
1198
+				array(20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056),
1199
+				array(-13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838),
1200
+				array(24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948),
1201
+			),
1202
+			array(
1203
+				array(-3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691),
1204
+				array(-15659161, 16736706, -22467150, 10215878, -9097177, 7563911, 11871841, -12505194, -18513325, 8464118),
1205
+				array(-23400612, 8348507, -14585951, -861714, -3950205, -6373419, 14325289, 8628612, 33313881, -8370517),
1206
+			),
1207
+			array(
1208
+				array(-20186973, -4967935, 22367356, 5271547, -1097117, -4788838, -24805667, -10236854, -8940735, -5818269),
1209
+				array(-6948785, -1795212, -32625683, -16021179, 32635414, -7374245, 15989197, -12838188, 28358192, -4253904),
1210
+				array(-23561781, -2799059, -32351682, -1661963, -9147719, 10429267, -16637684, 4072016, -5351664, 5596589),
1211
+			),
1212
+			array(
1213
+				array(-28236598, -3390048, 12312896, 6213178, 3117142, 16078565, 29266239, 2557221, 1768301, 15373193),
1214
+				array(-7243358, -3246960, -4593467, -7553353, -127927, -912245, -1090902, -4504991, -24660491, 3442910),
1215
+				array(-30210571, 5124043, 14181784, 8197961, 18964734, -11939093, 22597931, 7176455, -18585478, 13365930),
1216
+			),
1217
+			array(
1218
+				array(-7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667),
1219
+				array(25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481),
1220
+				array(-9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876),
1221
+			),
1222
+			array(
1223
+				array(22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640),
1224
+				array(-8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278),
1225
+				array(-21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112),
1226
+			),
1227
+			array(
1228
+				array(26047220, -11751471, -6900323, -16521798, 24092068, 9158119, -4273545, -12555558, -29365436, -5498272),
1229
+				array(17510331, -322857, 5854289, 8403524, 17133918, -3112612, -28111007, 12327945, 10750447, 10014012),
1230
+				array(-10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221),
1231
+			),
1232
+			array(
1233
+				array(30322361, -6964110, 11361005, -4143317, 7433304, 4989748, -7071422, -16317219, -9244265, 15258046),
1234
+				array(13054562, -2779497, 19155474, 469045, -12482797, 4566042, 5631406, 2711395, 1062915, -5136345),
1235
+				array(-19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310),
1236
+			),
1237
+		),
1238
+		array(
1239
+			array(
1240
+				array(19852034, 7027924, 23669353, 10020366, 8586503, -6657907, 394197, -6101885, 18638003, -11174937),
1241
+				array(31395534, 15098109, 26581030, 8030562, -16527914, -5007134, 9012486, -7584354, -6643087, -5442636),
1242
+				array(-9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008),
1243
+			),
1244
+			array(
1245
+				array(-2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429),
1246
+				array(-15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576),
1247
+				array(31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066),
1248
+			),
1249
+			array(
1250
+				array(-9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490),
1251
+				array(-12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104),
1252
+				array(33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053),
1253
+			),
1254
+			array(
1255
+				array(31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275),
1256
+				array(-20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511),
1257
+				array(22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095),
1258
+			),
1259
+			array(
1260
+				array(-28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439),
1261
+				array(23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939),
1262
+				array(-23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424),
1263
+			),
1264
+			array(
1265
+				array(2101391, -4930054, 19702731, 2367575, -15427167, 1047675, 5301017, 9328700, 29955601, -11678310),
1266
+				array(3096359, 9271816, -21620864, -15521844, -14847996, -7592937, -25892142, -12635595, -9917575, 6216608),
1267
+				array(-32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079),
1268
+			),
1269
+			array(
1270
+				array(-23066649, -13985623, 16133487, -7896178, -3389565, 778788, -910336, -2782495, -19386633, 11994101),
1271
+				array(21691500, -13624626, -641331, -14367021, 3285881, -3483596, -25064666, 9718258, -7477437, 13381418),
1272
+				array(18445390, -4202236, 14979846, 11622458, -1727110, -3582980, 23111648, -6375247, 28535282, 15779576),
1273
+			),
1274
+			array(
1275
+				array(30098053, 3089662, -9234387, 16662135, -21306940, 11308411, -14068454, 12021730, 9955285, -16303356),
1276
+				array(9734894, -14576830, -7473633, -9138735, 2060392, 11313496, -18426029, 9924399, 20194861, 13380996),
1277
+				array(-26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099),
1278
+			),
1279
+		),
1280
+		array(
1281
+			array(
1282
+				array(-26016874, -219943, 21339191, -41388, 19745256, -2878700, -29637280, 2227040, 21612326, -545728),
1283
+				array(-13077387, 1184228, 23562814, -5970442, -20351244, -6348714, 25764461, 12243797, -20856566, 11649658),
1284
+				array(-10031494, 11262626, 27384172, 2271902, 26947504, -15997771, 39944, 6114064, 33514190, 2333242),
1285
+			),
1286
+			array(
1287
+				array(-21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001),
1288
+				array(-4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766),
1289
+				array(18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373),
1290
+			),
1291
+			array(
1292
+				array(26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458),
1293
+				array(-17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628),
1294
+				array(-13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657),
1295
+			),
1296
+			array(
1297
+				array(-23860538, -11233159, 26961357, 1640861, -32413112, -16737940, 12248509, -5240639, 13735342, 1934062),
1298
+				array(25089769, 6742589, 17081145, -13406266, 21909293, -16067981, -15136294, -3765346, -21277997, 5473616),
1299
+				array(31883677, -7961101, 1083432, -11572403, 22828471, 13290673, -7125085, 12469656, 29111212, -5451014),
1300
+			),
1301
+			array(
1302
+				array(24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383),
1303
+				array(-25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814),
1304
+				array(-20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718),
1305
+			),
1306
+			array(
1307
+				array(30157918, 12924066, -17712050, 9245753, 19895028, 3368142, -23827587, 5096219, 22740376, -7303417),
1308
+				array(2041139, -14256350, 7783687, 13876377, -25946985, -13352459, 24051124, 13742383, -15637599, 13295222),
1309
+				array(33338237, -8505733, 12532113, 7977527, 9106186, -1715251, -17720195, -4612972, -4451357, -14669444),
1310
+			),
1311
+			array(
1312
+				array(-20045281, 5454097, -14346548, 6447146, 28862071, 1883651, -2469266, -4141880, 7770569, 9620597),
1313
+				array(23208068, 7979712, 33071466, 8149229, 1758231, -10834995, 30945528, -1694323, -33502340, -14767970),
1314
+				array(1439958, -16270480, -1079989, -793782, 4625402, 10647766, -5043801, 1220118, 30494170, -11440799),
1315
+			),
1316
+			array(
1317
+				array(-5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647),
1318
+				array(13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511),
1319
+				array(-29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032),
1320
+			),
1321
+		),
1322
+		array(
1323
+			array(
1324
+				array(9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834),
1325
+				array(-23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461),
1326
+				array(29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062),
1327
+			),
1328
+			array(
1329
+				array(-25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516),
1330
+				array(-20384450, -14347713, -18336405, 13884722, -33039454, 2842114, -21610826, -3649888, 11177095, 14989547),
1331
+				array(-24496721, -11716016, 16959896, 2278463, 12066309, 10137771, 13515641, 2581286, -28487508, 9930240),
1332
+			),
1333
+			array(
1334
+				array(-17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038),
1335
+				array(-33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741),
1336
+				array(16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103),
1337
+			),
1338
+			array(
1339
+				array(-19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747),
1340
+				array(-1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323),
1341
+				array(31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016),
1342
+			),
1343
+			array(
1344
+				array(-14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373),
1345
+				array(15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228),
1346
+				array(-2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141),
1347
+			),
1348
+			array(
1349
+				array(16918416, 11729663, -18083579, 3022987, -31015732, -13339659, -28741185, -12227393, 32851222, 11717399),
1350
+				array(11166634, 7338049, -6722523, 4531520, -29468672, -7302055, 31474879, 3483633, -1193175, -4030831),
1351
+				array(-185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376),
1352
+			),
1353
+			array(
1354
+				array(-32460596, 11266712, -11197107, -7899103, 31703694, 3855903, -8537131, -12833048, -30772034, -15486313),
1355
+				array(-18006477, 12709068, 3991746, -6479188, -21491523, -10550425, -31135347, -16049879, 10928917, 3011958),
1356
+				array(-6957757, -15594337, 31696059, 334240, 29576716, 14796075, -30831056, -12805180, 18008031, 10258577),
1357
+			),
1358
+			array(
1359
+				array(-22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743),
1360
+				array(29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684),
1361
+				array(-20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476),
1362
+			),
1363
+		)
1364
+	);
1365 1365
 
1366
-    /**
1367
-     * See: libsodium's crypto_core/curve25519/ref10/base2.h
1368
-     *
1369
-     * @var array<int, array<int, array<int, int>>> basically int[8][3]
1370
-     */
1371
-    protected static $base2 = array(
1372
-        array(
1373
-            array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
1374
-            array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
1375
-            array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
1376
-        ),
1377
-        array(
1378
-            array(15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024),
1379
-            array(16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574),
1380
-            array(30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357),
1381
-        ),
1382
-        array(
1383
-            array(10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380),
1384
-            array(4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306),
1385
-            array(19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942),
1386
-        ),
1387
-        array(
1388
-            array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
1389
-            array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
1390
-            array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
1391
-        ),
1392
-        array(
1393
-            array(-22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877),
1394
-            array(-6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951),
1395
-            array(4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784),
1396
-        ),
1397
-        array(
1398
-            array(-25154831, -4185821, 29681144, 7868801, -6854661, -9423865, -12437364, -663000, -31111463, -16132436),
1399
-            array(25576264, -2703214, 7349804, -11814844, 16472782, 9300885, 3844789, 15725684, 171356, 6466918),
1400
-            array(23103977, 13316479, 9739013, -16149481, 817875, -15038942, 8965339, -14088058, -30714912, 16193877),
1401
-        ),
1402
-        array(
1403
-            array(-33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800),
1404
-            array(-25182317, -4174131, 32336398, 5036987, -21236817, 11360617, 22616405, 9761698, -19827198, 630305),
1405
-            array(-13720693, 2639453, -24237460, -7406481, 9494427, -5774029, -6554551, -15960994, -2449256, -14291300),
1406
-        ),
1407
-        array(
1408
-            array(-3151181, -5046075, 9282714, 6866145, -31907062, -863023, -18940575, 15033784, 25105118, -7894876),
1409
-            array(-24326370, 15950226, -31801215, -14592823, -11662737, -5090925, 1573892, -2625887, 2198790, -15804619),
1410
-            array(-3099351, 10324967, -2241613, 7453183, -5446979, -2735503, -13812022, -16236442, -32461234, -12290683),
1411
-        )
1412
-    );
1366
+	/**
1367
+	 * See: libsodium's crypto_core/curve25519/ref10/base2.h
1368
+	 *
1369
+	 * @var array<int, array<int, array<int, int>>> basically int[8][3]
1370
+	 */
1371
+	protected static $base2 = array(
1372
+		array(
1373
+			array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
1374
+			array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
1375
+			array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
1376
+		),
1377
+		array(
1378
+			array(15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024),
1379
+			array(16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574),
1380
+			array(30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357),
1381
+		),
1382
+		array(
1383
+			array(10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380),
1384
+			array(4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306),
1385
+			array(19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942),
1386
+		),
1387
+		array(
1388
+			array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
1389
+			array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
1390
+			array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
1391
+		),
1392
+		array(
1393
+			array(-22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877),
1394
+			array(-6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951),
1395
+			array(4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784),
1396
+		),
1397
+		array(
1398
+			array(-25154831, -4185821, 29681144, 7868801, -6854661, -9423865, -12437364, -663000, -31111463, -16132436),
1399
+			array(25576264, -2703214, 7349804, -11814844, 16472782, 9300885, 3844789, 15725684, 171356, 6466918),
1400
+			array(23103977, 13316479, 9739013, -16149481, 817875, -15038942, 8965339, -14088058, -30714912, 16193877),
1401
+		),
1402
+		array(
1403
+			array(-33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800),
1404
+			array(-25182317, -4174131, 32336398, 5036987, -21236817, 11360617, 22616405, 9761698, -19827198, 630305),
1405
+			array(-13720693, 2639453, -24237460, -7406481, 9494427, -5774029, -6554551, -15960994, -2449256, -14291300),
1406
+		),
1407
+		array(
1408
+			array(-3151181, -5046075, 9282714, 6866145, -31907062, -863023, -18940575, 15033784, 25105118, -7894876),
1409
+			array(-24326370, 15950226, -31801215, -14592823, -11662737, -5090925, 1573892, -2625887, 2198790, -15804619),
1410
+			array(-3099351, 10324967, -2241613, 7453183, -5446979, -2735503, -13812022, -16236442, -32461234, -12290683),
1411
+		)
1412
+	);
1413 1413
 
1414
-    /**
1415
-     * 37095705934669439343138083508754565189542113879843219016388785533085940283555
1416
-     *
1417
-     * @var array<int, int>
1418
-     */
1419
-    protected static $d = array(
1420
-        -10913610,
1421
-        13857413,
1422
-        -15372611,
1423
-        6949391,
1424
-        114729,
1425
-        -8787816,
1426
-        -6275908,
1427
-        -3247719,
1428
-        -18696448,
1429
-        -12055116
1430
-    );
1414
+	/**
1415
+	 * 37095705934669439343138083508754565189542113879843219016388785533085940283555
1416
+	 *
1417
+	 * @var array<int, int>
1418
+	 */
1419
+	protected static $d = array(
1420
+		-10913610,
1421
+		13857413,
1422
+		-15372611,
1423
+		6949391,
1424
+		114729,
1425
+		-8787816,
1426
+		-6275908,
1427
+		-3247719,
1428
+		-18696448,
1429
+		-12055116
1430
+	);
1431 1431
 
1432
-    /**
1433
-     * 2 * d = 16295367250680780974490674513165176452449235426866156013048779062215315747161
1434
-     *
1435
-     * @var array<int, int>
1436
-     */
1437
-    protected static $d2 = array(
1438
-        -21827239,
1439
-        -5839606,
1440
-        -30745221,
1441
-        13898782,
1442
-        229458,
1443
-        15978800,
1444
-        -12551817,
1445
-        -6495438,
1446
-        29715968,
1447
-        9444199
1448
-    );
1432
+	/**
1433
+	 * 2 * d = 16295367250680780974490674513165176452449235426866156013048779062215315747161
1434
+	 *
1435
+	 * @var array<int, int>
1436
+	 */
1437
+	protected static $d2 = array(
1438
+		-21827239,
1439
+		-5839606,
1440
+		-30745221,
1441
+		13898782,
1442
+		229458,
1443
+		15978800,
1444
+		-12551817,
1445
+		-6495438,
1446
+		29715968,
1447
+		9444199
1448
+	);
1449 1449
 
1450
-    /**
1451
-     * sqrt(-1)
1452
-     *
1453
-     * @var array<int, int>
1454
-     */
1455
-    protected static $sqrtm1 = array(
1456
-        -32595792,
1457
-        -7943725,
1458
-        9377950,
1459
-        3500415,
1460
-        12389472,
1461
-        -272473,
1462
-        -25146209,
1463
-        -2005654,
1464
-        326686,
1465
-        11406482
1466
-    );
1450
+	/**
1451
+	 * sqrt(-1)
1452
+	 *
1453
+	 * @var array<int, int>
1454
+	 */
1455
+	protected static $sqrtm1 = array(
1456
+		-32595792,
1457
+		-7943725,
1458
+		9377950,
1459
+		3500415,
1460
+		12389472,
1461
+		-272473,
1462
+		-25146209,
1463
+		-2005654,
1464
+		326686,
1465
+		11406482
1466
+	);
1467 1467
 }
Please login to merge, or discard this patch.