Completed
Pull Request — develop (#1726)
by
unknown
19:16
created
vendor/paragonie/sodium_compat/src/Core32/Curve25519/Fe.php 3 patches
Indentation   +166 added lines, -166 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_Fe', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -11,179 +11,179 @@  discard block
 block discarded – undo
11 11
  */
12 12
 class ParagonIE_Sodium_Core32_Curve25519_Fe implements ArrayAccess
13 13
 {
14
-    /**
15
-     * @var array<int, ParagonIE_Sodium_Core32_Int32>
16
-     */
17
-    protected $container = array();
14
+	/**
15
+	 * @var array<int, ParagonIE_Sodium_Core32_Int32>
16
+	 */
17
+	protected $container = array();
18 18
 
19
-    /**
20
-     * @var int
21
-     */
22
-    protected $size = 10;
19
+	/**
20
+	 * @var int
21
+	 */
22
+	protected $size = 10;
23 23
 
24
-    /**
25
-     * @internal You should not use this directly from another application
26
-     *
27
-     * @param array<int, ParagonIE_Sodium_Core32_Int32> $array
28
-     * @param bool $save_indexes
29
-     * @return self
30
-     * @throws SodiumException
31
-     * @throws TypeError
32
-     */
33
-    public static function fromArray($array, $save_indexes = null)
34
-    {
35
-        $count = count($array);
36
-        if ($save_indexes) {
37
-            $keys = array_keys($array);
38
-        } else {
39
-            $keys = range(0, $count - 1);
40
-        }
41
-        $array = array_values($array);
24
+	/**
25
+	 * @internal You should not use this directly from another application
26
+	 *
27
+	 * @param array<int, ParagonIE_Sodium_Core32_Int32> $array
28
+	 * @param bool $save_indexes
29
+	 * @return self
30
+	 * @throws SodiumException
31
+	 * @throws TypeError
32
+	 */
33
+	public static function fromArray($array, $save_indexes = null)
34
+	{
35
+		$count = count($array);
36
+		if ($save_indexes) {
37
+			$keys = array_keys($array);
38
+		} else {
39
+			$keys = range(0, $count - 1);
40
+		}
41
+		$array = array_values($array);
42 42
 
43
-        $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
44
-        if ($save_indexes) {
45
-            for ($i = 0; $i < $count; ++$i) {
46
-                $array[$i]->overflow = 0;
47
-                $obj->offsetSet($keys[$i], $array[$i]);
48
-            }
49
-        } else {
50
-            for ($i = 0; $i < $count; ++$i) {
51
-                $array[$i]->overflow = 0;
52
-                $obj->offsetSet($i, $array[$i]);
53
-            }
54
-        }
55
-        return $obj;
56
-    }
43
+		$obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
44
+		if ($save_indexes) {
45
+			for ($i = 0; $i < $count; ++$i) {
46
+				$array[$i]->overflow = 0;
47
+				$obj->offsetSet($keys[$i], $array[$i]);
48
+			}
49
+		} else {
50
+			for ($i = 0; $i < $count; ++$i) {
51
+				$array[$i]->overflow = 0;
52
+				$obj->offsetSet($i, $array[$i]);
53
+			}
54
+		}
55
+		return $obj;
56
+	}
57 57
 
58
-    /**
59
-     * @internal You should not use this directly from another application
60
-     *
61
-     * @param array<int, int> $array
62
-     * @param bool $save_indexes
63
-     * @return self
64
-     * @throws SodiumException
65
-     * @throws TypeError
66
-     */
67
-    public static function fromIntArray($array, $save_indexes = null)
68
-    {
69
-        $count = count($array);
70
-        if ($save_indexes) {
71
-            $keys = array_keys($array);
72
-        } else {
73
-            $keys = range(0, $count - 1);
74
-        }
75
-        $array = array_values($array);
76
-        $set = array();
77
-        /** @var int $i */
78
-        /** @var int $v */
79
-        foreach ($array as $i => $v) {
80
-            $set[$i] = ParagonIE_Sodium_Core32_Int32::fromInt($v);
81
-        }
58
+	/**
59
+	 * @internal You should not use this directly from another application
60
+	 *
61
+	 * @param array<int, int> $array
62
+	 * @param bool $save_indexes
63
+	 * @return self
64
+	 * @throws SodiumException
65
+	 * @throws TypeError
66
+	 */
67
+	public static function fromIntArray($array, $save_indexes = null)
68
+	{
69
+		$count = count($array);
70
+		if ($save_indexes) {
71
+			$keys = array_keys($array);
72
+		} else {
73
+			$keys = range(0, $count - 1);
74
+		}
75
+		$array = array_values($array);
76
+		$set = array();
77
+		/** @var int $i */
78
+		/** @var int $v */
79
+		foreach ($array as $i => $v) {
80
+			$set[$i] = ParagonIE_Sodium_Core32_Int32::fromInt($v);
81
+		}
82 82
 
83
-        $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
84
-        if ($save_indexes) {
85
-            for ($i = 0; $i < $count; ++$i) {
86
-                $set[$i]->overflow = 0;
87
-                $obj->offsetSet($keys[$i], $set[$i]);
88
-            }
89
-        } else {
90
-            for ($i = 0; $i < $count; ++$i) {
91
-                $set[$i]->overflow = 0;
92
-                $obj->offsetSet($i, $set[$i]);
93
-            }
94
-        }
95
-        return $obj;
96
-    }
83
+		$obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
84
+		if ($save_indexes) {
85
+			for ($i = 0; $i < $count; ++$i) {
86
+				$set[$i]->overflow = 0;
87
+				$obj->offsetSet($keys[$i], $set[$i]);
88
+			}
89
+		} else {
90
+			for ($i = 0; $i < $count; ++$i) {
91
+				$set[$i]->overflow = 0;
92
+				$obj->offsetSet($i, $set[$i]);
93
+			}
94
+		}
95
+		return $obj;
96
+	}
97 97
 
98
-    /**
99
-     * @internal You should not use this directly from another application
100
-     *
101
-     * @param mixed $offset
102
-     * @param mixed $value
103
-     * @return void
104
-     * @throws SodiumException
105
-     * @throws TypeError
106
-     */
107
-    #[ReturnTypeWillChange]
108
-    public function offsetSet($offset, $value)
109
-    {
110
-        if (!($value instanceof ParagonIE_Sodium_Core32_Int32)) {
111
-            throw new InvalidArgumentException('Expected an instance of ParagonIE_Sodium_Core32_Int32');
112
-        }
113
-        if (is_null($offset)) {
114
-            $this->container[] = $value;
115
-        } else {
116
-            ParagonIE_Sodium_Core32_Util::declareScalarType($offset, 'int', 1);
117
-            $this->container[(int) $offset] = $value;
118
-        }
119
-    }
98
+	/**
99
+	 * @internal You should not use this directly from another application
100
+	 *
101
+	 * @param mixed $offset
102
+	 * @param mixed $value
103
+	 * @return void
104
+	 * @throws SodiumException
105
+	 * @throws TypeError
106
+	 */
107
+	#[ReturnTypeWillChange]
108
+	public function offsetSet($offset, $value)
109
+	{
110
+		if (!($value instanceof ParagonIE_Sodium_Core32_Int32)) {
111
+			throw new InvalidArgumentException('Expected an instance of ParagonIE_Sodium_Core32_Int32');
112
+		}
113
+		if (is_null($offset)) {
114
+			$this->container[] = $value;
115
+		} else {
116
+			ParagonIE_Sodium_Core32_Util::declareScalarType($offset, 'int', 1);
117
+			$this->container[(int) $offset] = $value;
118
+		}
119
+	}
120 120
 
121
-    /**
122
-     * @internal You should not use this directly from another application
123
-     *
124
-     * @param mixed $offset
125
-     * @return bool
126
-     * @psalm-suppress MixedArrayOffset
127
-     */
128
-    #[ReturnTypeWillChange]
129
-    public function offsetExists($offset)
130
-    {
131
-        return isset($this->container[$offset]);
132
-    }
121
+	/**
122
+	 * @internal You should not use this directly from another application
123
+	 *
124
+	 * @param mixed $offset
125
+	 * @return bool
126
+	 * @psalm-suppress MixedArrayOffset
127
+	 */
128
+	#[ReturnTypeWillChange]
129
+	public function offsetExists($offset)
130
+	{
131
+		return isset($this->container[$offset]);
132
+	}
133 133
 
134
-    /**
135
-     * @internal You should not use this directly from another application
136
-     *
137
-     * @param mixed $offset
138
-     * @return void
139
-     * @psalm-suppress MixedArrayOffset
140
-     */
141
-    #[ReturnTypeWillChange]
142
-    public function offsetUnset($offset)
143
-    {
144
-        unset($this->container[$offset]);
145
-    }
134
+	/**
135
+	 * @internal You should not use this directly from another application
136
+	 *
137
+	 * @param mixed $offset
138
+	 * @return void
139
+	 * @psalm-suppress MixedArrayOffset
140
+	 */
141
+	#[ReturnTypeWillChange]
142
+	public function offsetUnset($offset)
143
+	{
144
+		unset($this->container[$offset]);
145
+	}
146 146
 
147
-    /**
148
-     * @internal You should not use this directly from another application
149
-     *
150
-     * @param mixed $offset
151
-     * @return ParagonIE_Sodium_Core32_Int32
152
-     * @psalm-suppress MixedArrayOffset
153
-     */
154
-    #[ReturnTypeWillChange]
155
-    public function offsetGet($offset)
156
-    {
157
-        if (!isset($this->container[$offset])) {
158
-            $this->container[(int) $offset] = new ParagonIE_Sodium_Core32_Int32();
159
-        }
160
-        /** @var ParagonIE_Sodium_Core32_Int32 $get */
161
-        $get = $this->container[$offset];
162
-        return $get;
163
-    }
147
+	/**
148
+	 * @internal You should not use this directly from another application
149
+	 *
150
+	 * @param mixed $offset
151
+	 * @return ParagonIE_Sodium_Core32_Int32
152
+	 * @psalm-suppress MixedArrayOffset
153
+	 */
154
+	#[ReturnTypeWillChange]
155
+	public function offsetGet($offset)
156
+	{
157
+		if (!isset($this->container[$offset])) {
158
+			$this->container[(int) $offset] = new ParagonIE_Sodium_Core32_Int32();
159
+		}
160
+		/** @var ParagonIE_Sodium_Core32_Int32 $get */
161
+		$get = $this->container[$offset];
162
+		return $get;
163
+	}
164 164
 
165
-    /**
166
-     * @internal You should not use this directly from another application
167
-     *
168
-     * @return array
169
-     */
170
-    public function __debugInfo()
171
-    {
172
-        if (empty($this->container)) {
173
-            return array();
174
-        }
175
-        $c = array(
176
-            (int) ($this->container[0]->toInt()),
177
-            (int) ($this->container[1]->toInt()),
178
-            (int) ($this->container[2]->toInt()),
179
-            (int) ($this->container[3]->toInt()),
180
-            (int) ($this->container[4]->toInt()),
181
-            (int) ($this->container[5]->toInt()),
182
-            (int) ($this->container[6]->toInt()),
183
-            (int) ($this->container[7]->toInt()),
184
-            (int) ($this->container[8]->toInt()),
185
-            (int) ($this->container[9]->toInt())
186
-        );
187
-        return array(implode(', ', $c));
188
-    }
165
+	/**
166
+	 * @internal You should not use this directly from another application
167
+	 *
168
+	 * @return array
169
+	 */
170
+	public function __debugInfo()
171
+	{
172
+		if (empty($this->container)) {
173
+			return array();
174
+		}
175
+		$c = array(
176
+			(int) ($this->container[0]->toInt()),
177
+			(int) ($this->container[1]->toInt()),
178
+			(int) ($this->container[2]->toInt()),
179
+			(int) ($this->container[3]->toInt()),
180
+			(int) ($this->container[4]->toInt()),
181
+			(int) ($this->container[5]->toInt()),
182
+			(int) ($this->container[6]->toInt()),
183
+			(int) ($this->container[7]->toInt()),
184
+			(int) ($this->container[8]->toInt()),
185
+			(int) ($this->container[9]->toInt())
186
+		);
187
+		return array(implode(', ', $c));
188
+	}
189 189
 }
Please login to merge, or discard this patch.
Braces   +8 added lines, -16 removed lines patch added patch discarded remove patch
@@ -9,8 +9,7 @@  discard block
 block discarded – undo
9 9
  *
10 10
  * This represents a Field Element
11 11
  */
12
-class ParagonIE_Sodium_Core32_Curve25519_Fe implements ArrayAccess
13
-{
12
+class ParagonIE_Sodium_Core32_Curve25519_Fe implements ArrayAccess {
14 13
     /**
15 14
      * @var array<int, ParagonIE_Sodium_Core32_Int32>
16 15
      */
@@ -30,8 +29,7 @@  discard block
 block discarded – undo
30 29
      * @throws SodiumException
31 30
      * @throws TypeError
32 31
      */
33
-    public static function fromArray($array, $save_indexes = null)
34
-    {
32
+    public static function fromArray($array, $save_indexes = null) {
35 33
         $count = count($array);
36 34
         if ($save_indexes) {
37 35
             $keys = array_keys($array);
@@ -64,8 +62,7 @@  discard block
 block discarded – undo
64 62
      * @throws SodiumException
65 63
      * @throws TypeError
66 64
      */
67
-    public static function fromIntArray($array, $save_indexes = null)
68
-    {
65
+    public static function fromIntArray($array, $save_indexes = null) {
69 66
         $count = count($array);
70 67
         if ($save_indexes) {
71 68
             $keys = array_keys($array);
@@ -105,8 +102,7 @@  discard block
 block discarded – undo
105 102
      * @throws TypeError
106 103
      */
107 104
     #[ReturnTypeWillChange]
108
-    public function offsetSet($offset, $value)
109
-    {
105
+    public function offsetSet($offset, $value) {
110 106
         if (!($value instanceof ParagonIE_Sodium_Core32_Int32)) {
111 107
             throw new InvalidArgumentException('Expected an instance of ParagonIE_Sodium_Core32_Int32');
112 108
         }
@@ -126,8 +122,7 @@  discard block
 block discarded – undo
126 122
      * @psalm-suppress MixedArrayOffset
127 123
      */
128 124
     #[ReturnTypeWillChange]
129
-    public function offsetExists($offset)
130
-    {
125
+    public function offsetExists($offset) {
131 126
         return isset($this->container[$offset]);
132 127
     }
133 128
 
@@ -139,8 +134,7 @@  discard block
 block discarded – undo
139 134
      * @psalm-suppress MixedArrayOffset
140 135
      */
141 136
     #[ReturnTypeWillChange]
142
-    public function offsetUnset($offset)
143
-    {
137
+    public function offsetUnset($offset) {
144 138
         unset($this->container[$offset]);
145 139
     }
146 140
 
@@ -152,8 +146,7 @@  discard block
 block discarded – undo
152 146
      * @psalm-suppress MixedArrayOffset
153 147
      */
154 148
     #[ReturnTypeWillChange]
155
-    public function offsetGet($offset)
156
-    {
149
+    public function offsetGet($offset) {
157 150
         if (!isset($this->container[$offset])) {
158 151
             $this->container[(int) $offset] = new ParagonIE_Sodium_Core32_Int32();
159 152
         }
@@ -167,8 +160,7 @@  discard block
 block discarded – undo
167 160
      *
168 161
      * @return array
169 162
      */
170
-    public function __debugInfo()
171
-    {
163
+    public function __debugInfo() {
172 164
         if (empty($this->container)) {
173 165
             return array();
174 166
         }
Please login to merge, or discard this patch.
Spacing   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Fe', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Curve25519_Fe', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -30,26 +30,26 @@  discard block
 block discarded – undo
30 30
      * @throws SodiumException
31 31
      * @throws TypeError
32 32
      */
33
-    public static function fromArray($array, $save_indexes = null)
33
+    public static function fromArray( $array, $save_indexes = null )
34 34
     {
35
-        $count = count($array);
36
-        if ($save_indexes) {
37
-            $keys = array_keys($array);
35
+        $count = count( $array );
36
+        if ( $save_indexes ) {
37
+            $keys = array_keys( $array );
38 38
         } else {
39
-            $keys = range(0, $count - 1);
39
+            $keys = range( 0, $count - 1 );
40 40
         }
41
-        $array = array_values($array);
41
+        $array = array_values( $array );
42 42
 
43 43
         $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
44
-        if ($save_indexes) {
45
-            for ($i = 0; $i < $count; ++$i) {
46
-                $array[$i]->overflow = 0;
47
-                $obj->offsetSet($keys[$i], $array[$i]);
44
+        if ( $save_indexes ) {
45
+            for ( $i = 0; $i < $count; ++$i ) {
46
+                $array[ $i ]->overflow = 0;
47
+                $obj->offsetSet( $keys[ $i ], $array[ $i ] );
48 48
             }
49 49
         } else {
50
-            for ($i = 0; $i < $count; ++$i) {
51
-                $array[$i]->overflow = 0;
52
-                $obj->offsetSet($i, $array[$i]);
50
+            for ( $i = 0; $i < $count; ++$i ) {
51
+                $array[ $i ]->overflow = 0;
52
+                $obj->offsetSet( $i, $array[ $i ] );
53 53
             }
54 54
         }
55 55
         return $obj;
@@ -64,32 +64,32 @@  discard block
 block discarded – undo
64 64
      * @throws SodiumException
65 65
      * @throws TypeError
66 66
      */
67
-    public static function fromIntArray($array, $save_indexes = null)
67
+    public static function fromIntArray( $array, $save_indexes = null )
68 68
     {
69
-        $count = count($array);
70
-        if ($save_indexes) {
71
-            $keys = array_keys($array);
69
+        $count = count( $array );
70
+        if ( $save_indexes ) {
71
+            $keys = array_keys( $array );
72 72
         } else {
73
-            $keys = range(0, $count - 1);
73
+            $keys = range( 0, $count - 1 );
74 74
         }
75
-        $array = array_values($array);
75
+        $array = array_values( $array );
76 76
         $set = array();
77 77
         /** @var int $i */
78 78
         /** @var int $v */
79
-        foreach ($array as $i => $v) {
80
-            $set[$i] = ParagonIE_Sodium_Core32_Int32::fromInt($v);
79
+        foreach ( $array as $i => $v ) {
80
+            $set[ $i ] = ParagonIE_Sodium_Core32_Int32::fromInt( $v );
81 81
         }
82 82
 
83 83
         $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
84
-        if ($save_indexes) {
85
-            for ($i = 0; $i < $count; ++$i) {
86
-                $set[$i]->overflow = 0;
87
-                $obj->offsetSet($keys[$i], $set[$i]);
84
+        if ( $save_indexes ) {
85
+            for ( $i = 0; $i < $count; ++$i ) {
86
+                $set[ $i ]->overflow = 0;
87
+                $obj->offsetSet( $keys[ $i ], $set[ $i ] );
88 88
             }
89 89
         } else {
90
-            for ($i = 0; $i < $count; ++$i) {
91
-                $set[$i]->overflow = 0;
92
-                $obj->offsetSet($i, $set[$i]);
90
+            for ( $i = 0; $i < $count; ++$i ) {
91
+                $set[ $i ]->overflow = 0;
92
+                $obj->offsetSet( $i, $set[ $i ] );
93 93
             }
94 94
         }
95 95
         return $obj;
@@ -104,17 +104,17 @@  discard block
 block discarded – undo
104 104
      * @throws SodiumException
105 105
      * @throws TypeError
106 106
      */
107
-    #[ReturnTypeWillChange]
108
-    public function offsetSet($offset, $value)
107
+    #[ReturnTypeWillChange ]
108
+    public function offsetSet( $offset, $value )
109 109
     {
110
-        if (!($value instanceof ParagonIE_Sodium_Core32_Int32)) {
111
-            throw new InvalidArgumentException('Expected an instance of ParagonIE_Sodium_Core32_Int32');
110
+        if ( ! ( $value instanceof ParagonIE_Sodium_Core32_Int32 ) ) {
111
+            throw new InvalidArgumentException( 'Expected an instance of ParagonIE_Sodium_Core32_Int32' );
112 112
         }
113
-        if (is_null($offset)) {
114
-            $this->container[] = $value;
113
+        if ( is_null( $offset ) ) {
114
+            $this->container[ ] = $value;
115 115
         } else {
116
-            ParagonIE_Sodium_Core32_Util::declareScalarType($offset, 'int', 1);
117
-            $this->container[(int) $offset] = $value;
116
+            ParagonIE_Sodium_Core32_Util::declareScalarType( $offset, 'int', 1 );
117
+            $this->container[ (int)$offset ] = $value;
118 118
         }
119 119
     }
120 120
 
@@ -125,10 +125,10 @@  discard block
 block discarded – undo
125 125
      * @return bool
126 126
      * @psalm-suppress MixedArrayOffset
127 127
      */
128
-    #[ReturnTypeWillChange]
129
-    public function offsetExists($offset)
128
+    #[ReturnTypeWillChange ]
129
+    public function offsetExists( $offset )
130 130
     {
131
-        return isset($this->container[$offset]);
131
+        return isset( $this->container[ $offset ] );
132 132
     }
133 133
 
134 134
     /**
@@ -138,10 +138,10 @@  discard block
 block discarded – undo
138 138
      * @return void
139 139
      * @psalm-suppress MixedArrayOffset
140 140
      */
141
-    #[ReturnTypeWillChange]
142
-    public function offsetUnset($offset)
141
+    #[ReturnTypeWillChange ]
142
+    public function offsetUnset( $offset )
143 143
     {
144
-        unset($this->container[$offset]);
144
+        unset( $this->container[ $offset ] );
145 145
     }
146 146
 
147 147
     /**
@@ -151,14 +151,14 @@  discard block
 block discarded – undo
151 151
      * @return ParagonIE_Sodium_Core32_Int32
152 152
      * @psalm-suppress MixedArrayOffset
153 153
      */
154
-    #[ReturnTypeWillChange]
155
-    public function offsetGet($offset)
154
+    #[ReturnTypeWillChange ]
155
+    public function offsetGet( $offset )
156 156
     {
157
-        if (!isset($this->container[$offset])) {
158
-            $this->container[(int) $offset] = new ParagonIE_Sodium_Core32_Int32();
157
+        if ( ! isset( $this->container[ $offset ] ) ) {
158
+            $this->container[ (int)$offset ] = new ParagonIE_Sodium_Core32_Int32();
159 159
         }
160 160
         /** @var ParagonIE_Sodium_Core32_Int32 $get */
161
-        $get = $this->container[$offset];
161
+        $get = $this->container[ $offset ];
162 162
         return $get;
163 163
     }
164 164
 
@@ -169,21 +169,21 @@  discard block
 block discarded – undo
169 169
      */
170 170
     public function __debugInfo()
171 171
     {
172
-        if (empty($this->container)) {
172
+        if ( empty( $this->container ) ) {
173 173
             return array();
174 174
         }
175 175
         $c = array(
176
-            (int) ($this->container[0]->toInt()),
177
-            (int) ($this->container[1]->toInt()),
178
-            (int) ($this->container[2]->toInt()),
179
-            (int) ($this->container[3]->toInt()),
180
-            (int) ($this->container[4]->toInt()),
181
-            (int) ($this->container[5]->toInt()),
182
-            (int) ($this->container[6]->toInt()),
183
-            (int) ($this->container[7]->toInt()),
184
-            (int) ($this->container[8]->toInt()),
185
-            (int) ($this->container[9]->toInt())
176
+            (int)( $this->container[ 0 ]->toInt() ),
177
+            (int)( $this->container[ 1 ]->toInt() ),
178
+            (int)( $this->container[ 2 ]->toInt() ),
179
+            (int)( $this->container[ 3 ]->toInt() ),
180
+            (int)( $this->container[ 4 ]->toInt() ),
181
+            (int)( $this->container[ 5 ]->toInt() ),
182
+            (int)( $this->container[ 6 ]->toInt() ),
183
+            (int)( $this->container[ 7 ]->toInt() ),
184
+            (int)( $this->container[ 8 ]->toInt() ),
185
+            (int)( $this->container[ 9 ]->toInt() )
186 186
         );
187
-        return array(implode(', ', $c));
187
+        return array( implode( ', ', $c ) );
188 188
     }
189 189
 }
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Curve25519/H.php 3 patches
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.
Spacing   +386 added lines, -386 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Curve25519_H', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Curve25519_H', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -19,29 +19,29 @@  discard block
 block discarded – undo
19 19
     protected static $base = array(
20 20
         array(
21 21
             array(
22
-                array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
22
+                array( 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605 ),
23 23
                 array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
24 24
                 array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
25 25
             ),
26 26
             array(
27 27
                 array(-12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303),
28 28
                 array(-21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081),
29
-                array(26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697),
29
+                array( 26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697 ),
30 30
             ),
31 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),
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 35
             ),
36 36
             array(
37 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),
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 40
             ),
41 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),
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 45
             ),
46 46
             array(
47 47
                 array(-15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777),
@@ -49,31 +49,31 @@  discard block
 block discarded – undo
49 49
                 array(-18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652),
50 50
             ),
51 51
             array(
52
-                array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
52
+                array( 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766 ),
53 53
                 array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
54
-                array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
54
+                array( 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300 ),
55 55
             ),
56 56
             array(
57
-                array(14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726),
57
+                array( 14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726 ),
58 58
                 array(-7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955),
59
-                array(27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425),
59
+                array( 27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425 ),
60 60
             ),
61 61
         ),
62 62
         array(
63 63
             array(
64 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),
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 67
             ),
68 68
             array(
69 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),
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 72
             ),
73 73
             array(
74 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),
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 77
             ),
78 78
             array(
79 79
                 array(-26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007),
@@ -81,9 +81,9 @@  discard block
 block discarded – undo
81 81
                 array(-22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653),
82 82
             ),
83 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),
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 87
             ),
88 88
             array(
89 89
                 array(-13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887),
@@ -91,120 +91,120 @@  discard block
 block discarded – undo
91 91
                 array(-29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953),
92 92
             ),
93 93
             array(
94
-                array(24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833),
94
+                array( 24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833 ),
95 95
                 array(-16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532),
96 96
                 array(-22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876),
97 97
             ),
98 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),
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 102
             ),
103 103
         ),
104 104
         array(
105 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),
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 108
                 array(-4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664),
109 109
             ),
110 110
             array(
111
-                array(1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933),
111
+                array( 1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933 ),
112 112
                 array(-25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182),
113 113
                 array(-17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222),
114 114
             ),
115 115
             array(
116 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),
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 119
             ),
120 120
             array(
121 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),
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 124
             ),
125 125
             array(
126 126
                 array(-15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026),
127
-                array(11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347),
127
+                array( 11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347 ),
128 128
                 array(-18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033),
129 129
             ),
130 130
             array(
131 131
                 array(-23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395),
132 132
                 array(-27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278),
133
-                array(1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890),
133
+                array( 1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890 ),
134 134
             ),
135 135
             array(
136
-                array(32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995),
136
+                array( 32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995 ),
137 137
                 array(-30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596),
138 138
                 array(-11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891),
139 139
             ),
140 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),
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 143
                 array(-20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606),
144 144
             ),
145 145
         ),
146 146
         array(
147 147
             array(
148
-                array(7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389),
148
+                array( 7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389 ),
149 149
                 array(-19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016),
150 150
                 array(-11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341),
151 151
             ),
152 152
             array(
153 153
                 array(-22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505),
154
-                array(14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553),
154
+                array( 14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553 ),
155 155
                 array(-28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655),
156 156
             ),
157 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),
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 160
                 array(-4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099),
161 161
             ),
162 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),
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 166
             ),
167 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),
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 171
             ),
172 172
             array(
173
-                array(24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958),
173
+                array( 24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958 ),
174 174
                 array(-11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082),
175 175
                 array(-28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383),
176 176
             ),
177 177
             array(
178 178
                 array(-30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521),
179 179
                 array(-11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807),
180
-                array(23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948),
180
+                array( 23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948 ),
181 181
             ),
182 182
             array(
183
-                array(9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134),
183
+                array( 9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134 ),
184 184
                 array(-32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455),
185
-                array(27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629),
185
+                array( 27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629 ),
186 186
             ),
187 187
         ),
188 188
         array(
189 189
             array(
190 190
                 array(-8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069),
191 191
                 array(-32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746),
192
-                array(24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919),
192
+                array( 24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919 ),
193 193
             ),
194 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),
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 197
                 array(-28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771),
198 198
             ),
199 199
             array(
200 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),
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 203
             ),
204 204
             array(
205 205
                 array(-12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504),
206 206
                 array(-26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727),
207
-                array(28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420),
207
+                array( 28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420 ),
208 208
             ),
209 209
             array(
210 210
                 array(-32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003),
@@ -214,7 +214,7 @@  discard block
 block discarded – undo
214 214
             array(
215 215
                 array(-26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701),
216 216
                 array(-23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683),
217
-                array(29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708),
217
+                array( 29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708 ),
218 218
             ),
219 219
             array(
220 220
                 array(-3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563),
@@ -223,15 +223,15 @@  discard block
 block discarded – undo
223 223
             ),
224 224
             array(
225 225
                 array(-19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870, 15664672),
226
-                array(23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686),
226
+                array( 23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686 ),
227 227
                 array(-24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665),
228 228
             ),
229 229
         ),
230 230
         array(
231 231
             array(
232
-                array(11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182),
232
+                array( 11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182 ),
233 233
                 array(-31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277),
234
-                array(14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628),
234
+                array( 14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628 ),
235 235
             ),
236 236
             array(
237 237
                 array(-4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474),
@@ -240,7 +240,7 @@  discard block
 block discarded – undo
240 240
             ),
241 241
             array(
242 242
                 array(-10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970),
243
-                array(19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756),
243
+                array( 19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756 ),
244 244
                 array(-24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508),
245 245
             ),
246 246
             array(
@@ -254,35 +254,35 @@  discard block
 block discarded – undo
254 254
                 array(-20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664),
255 255
             ),
256 256
             array(
257
-                array(27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294),
257
+                array( 27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294 ),
258 258
                 array(-18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899),
259 259
                 array(-11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070),
260 260
             ),
261 261
             array(
262
-                array(3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294),
262
+                array( 3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294 ),
263 263
                 array(-15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949),
264 264
                 array(-21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083),
265 265
             ),
266 266
             array(
267
-                array(31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420),
267
+                array( 31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420 ),
268 268
                 array(-5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940),
269
-                array(29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396),
269
+                array( 29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396 ),
270 270
             ),
271 271
         ),
272 272
         array(
273 273
             array(
274 274
                 array(-12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567),
275
-                array(20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127),
275
+                array( 20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127 ),
276 276
                 array(-16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294),
277 277
             ),
278 278
             array(
279 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),
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 282
             ),
283 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),
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 286
                 array(-1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762),
287 287
             ),
288 288
             array(
@@ -301,24 +301,24 @@  discard block
 block discarded – undo
301 301
                 array(-32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170),
302 302
             ),
303 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),
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 306
                 array(-17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392),
307 307
             ),
308 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),
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 312
             ),
313 313
         ),
314 314
         array(
315 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),
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 318
                 array(-11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692),
319 319
             ),
320 320
             array(
321
-                array(11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687),
321
+                array( 11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687 ),
322 322
                 array(-160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441),
323 323
                 array(-20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001),
324 324
             ),
@@ -328,56 +328,56 @@  discard block
 block discarded – undo
328 328
                 array(-21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762),
329 329
             ),
330 330
             array(
331
-                array(15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005),
331
+                array( 15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005 ),
332 332
                 array(-9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674),
333
-                array(4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035),
333
+                array( 4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035 ),
334 334
             ),
335 335
             array(
336
-                array(7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590),
336
+                array( 7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590 ),
337 337
                 array(-2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957),
338 338
                 array(-30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812),
339 339
             ),
340 340
             array(
341
-                array(33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740),
341
+                array( 33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740 ),
342 342
                 array(-18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122),
343 343
                 array(-27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158),
344 344
             ),
345 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),
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 349
             ),
350 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),
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 354
             ),
355 355
         ),
356 356
         array(
357 357
             array(
358 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),
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 361
             ),
362 362
             array(
363 363
                 array(-16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203),
364 364
                 array(-11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208),
365
-                array(1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230),
365
+                array( 1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230 ),
366 366
             ),
367 367
             array(
368
-                array(16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850),
368
+                array( 16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850 ),
369 369
                 array(-21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389),
370 370
                 array(-9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968),
371 371
             ),
372 372
             array(
373 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),
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 376
             ),
377 377
             array(
378
-                array(30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632),
378
+                array( 30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632 ),
379 379
                 array(-3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412),
380
-                array(20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566),
380
+                array( 20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566 ),
381 381
             ),
382 382
             array(
383 383
                 array(-20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038),
@@ -385,9 +385,9 @@  discard block
 block discarded – undo
385 385
                 array(-1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943),
386 386
             ),
387 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),
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 391
             ),
392 392
             array(
393 393
                 array(-27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718),
@@ -397,12 +397,12 @@  discard block
 block discarded – undo
397 397
         ),
398 398
         array(
399 399
             array(
400
-                array(5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912),
400
+                array( 5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912 ),
401 401
                 array(-26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358),
402
-                array(3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849),
402
+                array( 3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849 ),
403 403
             ),
404 404
             array(
405
-                array(29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307),
405
+                array( 29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307 ),
406 406
                 array(-14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977),
407 407
                 array(-6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335),
408 408
             ),
@@ -413,12 +413,12 @@  discard block
 block discarded – undo
413 413
             ),
414 414
             array(
415 415
                 array(-21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099),
416
-                array(29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341),
416
+                array( 29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341 ),
417 417
                 array(-936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336),
418 418
             ),
419 419
             array(
420 420
                 array(-23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646),
421
-                array(31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425),
421
+                array( 31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425 ),
422 422
                 array(-17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388),
423 423
             ),
424 424
             array(
@@ -427,41 +427,41 @@  discard block
 block discarded – undo
427 427
                 array(-8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462),
428 428
             ),
429 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),
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 432
                 array(-22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797),
433 433
             ),
434 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),
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 438
             ),
439 439
         ),
440 440
         array(
441 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),
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 444
                 array(-2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707),
445 445
             ),
446 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),
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 450
             ),
451 451
             array(
452
-                array(32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992),
452
+                array( 32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992 ),
453 453
                 array(-4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027),
454
-                array(21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197),
454
+                array( 21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197 ),
455 455
             ),
456 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),
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 460
             ),
461 461
             array(
462 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),
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 465
             ),
466 466
             array(
467 467
                 array(-19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180),
@@ -474,16 +474,16 @@  discard block
 block discarded – undo
474 474
                 array(-17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865),
475 475
             ),
476 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),
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 480
             ),
481 481
         ),
482 482
         array(
483 483
             array(
484
-                array(9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144),
484
+                array( 9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144 ),
485 485
                 array(-22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195),
486
-                array(5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086),
486
+                array( 5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086 ),
487 487
             ),
488 488
             array(
489 489
                 array(-13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684),
@@ -493,27 +493,27 @@  discard block
 block discarded – undo
493 493
             array(
494 494
                 array(-5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793),
495 495
                 array(-2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794),
496
-                array(580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435),
496
+                array( 580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435 ),
497 497
             ),
498 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),
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 502
             ),
503 503
             array(
504
-                array(14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278),
504
+                array( 14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278 ),
505 505
                 array(-27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024),
506
-                array(4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030),
506
+                array( 4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030 ),
507 507
             ),
508 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),
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 512
             ),
513 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),
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 517
             ),
518 518
             array(
519 519
                 array(-4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760),
@@ -524,33 +524,33 @@  discard block
 block discarded – undo
524 524
         array(
525 525
             array(
526 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),
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 529
             ),
530 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),
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 534
             ),
535 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),
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 538
                 array(-6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811),
539 539
             ),
540 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),
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 543
                 array(-2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121),
544 544
             ),
545 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),
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 549
             ),
550 550
             array(
551
-                array(4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414),
551
+                array( 4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414 ),
552 552
                 array(-15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158),
553
-                array(17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045),
553
+                array( 17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045 ),
554 554
             ),
555 555
             array(
556 556
                 array(-461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415),
@@ -558,36 +558,36 @@  discard block
 block discarded – undo
558 558
                 array(-31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079),
559 559
             ),
560 560
             array(
561
-                array(21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412),
561
+                array( 21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412 ),
562 562
                 array(-20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743),
563 563
                 array(-14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836),
564 564
             ),
565 565
         ),
566 566
         array(
567 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),
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 570
                 array(-6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065),
571 571
             ),
572 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),
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 575
                 array(-33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101),
576 576
             ),
577 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),
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 581
             ),
582 582
             array(
583
-                array(25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574),
583
+                array( 25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574 ),
584 584
                 array(-21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742),
585 585
                 array(-18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689),
586 586
             ),
587 587
             array(
588
-                array(12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020),
588
+                array( 12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020 ),
589 589
                 array(-10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772),
590
-                array(3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982),
590
+                array( 3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982 ),
591 591
             ),
592 592
             array(
593 593
                 array(-14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953),
@@ -595,7 +595,7 @@  discard block
 block discarded – undo
595 595
                 array(-17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265),
596 596
             ),
597 597
             array(
598
-                array(29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073),
598
+                array( 29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073 ),
599 599
                 array(-3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325),
600 600
                 array(-11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798),
601 601
             ),
@@ -609,40 +609,40 @@  discard block
 block discarded – undo
609 609
             array(
610 610
                 array(-2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267),
611 611
                 array(-9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663),
612
-                array(22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862),
612
+                array( 22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862 ),
613 613
             ),
614 614
             array(
615 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),
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 618
             ),
619 619
             array(
620 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),
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 623
             ),
624 624
             array(
625
-                array(15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052),
625
+                array( 15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052 ),
626 626
                 array(-10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904),
627
-                array(29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531),
627
+                array( 29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531 ),
628 628
             ),
629 629
             array(
630 630
                 array(-13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979),
631 631
                 array(-5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841),
632
-                array(10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431),
632
+                array( 10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431 ),
633 633
             ),
634 634
             array(
635
-                array(10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324),
635
+                array( 10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324 ),
636 636
                 array(-31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940),
637
-                array(10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320),
637
+                array( 10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320 ),
638 638
             ),
639 639
             array(
640 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),
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 643
             ),
644 644
             array(
645
-                array(12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784),
645
+                array( 12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784 ),
646 646
                 array(-2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091),
647 647
                 array(-16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585),
648 648
             ),
@@ -650,84 +650,84 @@  discard block
 block discarded – undo
650 650
         array(
651 651
             array(
652 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),
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 655
             ),
656 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),
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 659
                 array(-12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525),
660 660
             ),
661 661
             array(
662 662
                 array(-24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068),
663
-                array(9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397),
663
+                array( 9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397 ),
664 664
                 array(-8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988),
665 665
             ),
666 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),
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 670
             ),
671 671
             array(
672
-                array(20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875),
672
+                array( 20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875 ),
673 673
                 array(-25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905),
674 674
                 array(-25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656),
675 675
             ),
676 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),
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 680
             ),
681 681
             array(
682
-                array(20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931),
682
+                array( 20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931 ),
683 683
                 array(-30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024),
684 684
                 array(-23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084),
685 685
             ),
686 686
             array(
687 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),
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 690
             ),
691 691
         ),
692 692
         array(
693 693
             array(
694
-                array(11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504),
694
+                array( 11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504 ),
695 695
                 array(-12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768),
696 696
                 array(-19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255),
697 697
             ),
698 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),
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 701
                 array(-22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333),
702 702
             ),
703 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),
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 707
             ),
708 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),
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 711
                 array(-8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363),
712 712
             ),
713 713
             array(
714
-                array(28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664),
714
+                array( 28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664 ),
715 715
                 array(-11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324),
716 716
                 array(-21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940),
717 717
             ),
718 718
             array(
719
-                array(13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990),
719
+                array( 13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990 ),
720 720
                 array(-17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914),
721 721
                 array(-25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290),
722 722
             ),
723 723
             array(
724
-                array(24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257),
724
+                array( 24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257 ),
725 725
                 array(-6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433),
726 726
                 array(-16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236),
727 727
             ),
728 728
             array(
729 729
                 array(-12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045),
730
-                array(11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093),
730
+                array( 11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093 ),
731 731
                 array(-1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347),
732 732
             ),
733 733
         ),
@@ -738,23 +738,23 @@  discard block
 block discarded – undo
738 738
                 array(-12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906),
739 739
             ),
740 740
             array(
741
-                array(3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018),
741
+                array( 3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018 ),
742 742
                 array(-16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109),
743 743
                 array(-23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926),
744 744
             ),
745 745
             array(
746 746
                 array(-24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528),
747
-                array(8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625),
747
+                array( 8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625 ),
748 748
                 array(-32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286),
749 749
             ),
750 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),
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 754
             ),
755 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),
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 758
                 array(-22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437),
759 759
             ),
760 760
             array(
@@ -765,18 +765,18 @@  discard block
 block discarded – undo
765 765
             array(
766 766
                 array(-19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017),
767 767
                 array(-28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883),
768
-                array(21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961),
768
+                array( 21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961 ),
769 769
             ),
770 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),
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 773
                 array(-20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362),
774 774
             ),
775 775
         ),
776 776
         array(
777 777
             array(
778 778
                 array(-33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860),
779
-                array(2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466),
779
+                array( 2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466 ),
780 780
                 array(-24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063),
781 781
             ),
782 782
             array(
@@ -785,24 +785,24 @@  discard block
 block discarded – undo
785 785
                 array(-13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369),
786 786
             ),
787 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),
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 791
             ),
792 792
             array(
793
-                array(4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424),
793
+                array( 4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424 ),
794 794
                 array(-19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185),
795
-                array(7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962),
795
+                array( 7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962 ),
796 796
             ),
797 797
             array(
798 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),
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 801
             ),
802 802
             array(
803 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),
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 806
             ),
807 807
             array(
808 808
                 array(-31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884),
@@ -810,7 +810,7 @@  discard block
 block discarded – undo
810 810
                 array(-9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849),
811 811
             ),
812 812
             array(
813
-                array(32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473),
813
+                array( 32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473 ),
814 814
                 array(-8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644),
815 815
                 array(-2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319),
816 816
             ),
@@ -824,68 +824,68 @@  discard block
 block discarded – undo
824 824
             array(
825 825
                 array(-27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328),
826 826
                 array(-15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369),
827
-                array(20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920),
827
+                array( 20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920 ),
828 828
             ),
829 829
             array(
830
-                array(12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815),
830
+                array( 12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815 ),
831 831
                 array(-32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025),
832 832
                 array(-21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397),
833 833
             ),
834 834
             array(
835 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),
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 838
             ),
839 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),
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 842
                 array(-1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861),
843 843
             ),
844 844
             array(
845
-                array(14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845),
845
+                array( 14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845 ),
846 846
                 array(-1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211),
847
-                array(18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870),
847
+                array( 18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870 ),
848 848
             ),
849 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),
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 852
                 array(-32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168),
853 853
             ),
854 854
             array(
855
-                array(30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965),
855
+                array( 30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965 ),
856 856
                 array(-14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505),
857
-                array(18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598),
857
+                array( 18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598 ),
858 858
             ),
859 859
         ),
860 860
         array(
861 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),
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 864
                 array(-31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479),
865 865
             ),
866 866
             array(
867 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),
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 870
             ),
871 871
             array(
872
-                array(16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271),
872
+                array( 16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271 ),
873 873
                 array(-4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326),
874 874
                 array(-8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132),
875 875
             ),
876 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),
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 880
             ),
881 881
             array(
882 882
                 array(-2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994),
883 883
                 array(-12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913),
884
-                array(31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317),
884
+                array( 31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317 ),
885 885
             ),
886 886
             array(
887 887
                 array(-25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730),
888
-                array(842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096),
888
+                array( 842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096 ),
889 889
                 array(-4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078),
890 890
             ),
891 891
             array(
@@ -896,66 +896,66 @@  discard block
 block discarded – undo
896 896
             array(
897 897
                 array(-28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870),
898 898
                 array(-23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498),
899
-                array(12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579),
899
+                array( 12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579 ),
900 900
             ),
901 901
         ),
902 902
         array(
903 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),
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 906
                 array(-2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743),
907 907
             ),
908 908
             array(
909 909
                 array(-25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468),
910
-                array(21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375),
910
+                array( 21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375 ),
911 911
                 array(-25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155),
912 912
             ),
913 913
             array(
914
-                array(6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725),
914
+                array( 6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725 ),
915 915
                 array(-12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612),
916 916
                 array(-10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943),
917 917
             ),
918 918
             array(
919 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),
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 922
             ),
923 923
             array(
924
-                array(22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139),
924
+                array( 22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139 ),
925 925
                 array(-8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963),
926 926
                 array(-31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693),
927 927
             ),
928 928
             array(
929
-                array(1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734),
929
+                array( 1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734 ),
930 930
                 array(-448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680),
931 931
                 array(-24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410),
932 932
             ),
933 933
             array(
934 934
                 array(-9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931),
935 935
                 array(-16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654),
936
-                array(22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710),
936
+                array( 22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710 ),
937 937
             ),
938 938
             array(
939
-                array(29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180),
939
+                array( 29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180 ),
940 940
                 array(-26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684),
941 941
                 array(-10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895),
942 942
             ),
943 943
         ),
944 944
         array(
945 945
             array(
946
-                array(22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501),
946
+                array( 22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501 ),
947 947
                 array(-11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413),
948
-                array(6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880),
948
+                array( 6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880 ),
949 949
             ),
950 950
             array(
951 951
                 array(-8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874),
952
-                array(22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962),
952
+                array( 22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962 ),
953 953
                 array(-7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899),
954 954
             ),
955 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),
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 959
             ),
960 960
             array(
961 961
                 array(-9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146),
@@ -968,19 +968,19 @@  discard block
 block discarded – undo
968 968
                 array(-4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197),
969 969
             ),
970 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),
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 974
             ),
975 975
             array(
976 976
                 array(-9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862),
977 977
                 array(-26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118),
978
-                array(26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171),
978
+                array( 26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171 ),
979 979
             ),
980 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),
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 984
             ),
985 985
         ),
986 986
         array(
@@ -990,55 +990,55 @@  discard block
 block discarded – undo
990 990
                 array(-594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562),
991 991
             ),
992 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),
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 996
             ),
997 997
             array(
998 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),
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 1001
             ),
1002 1002
             array(
1003
-                array(30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462),
1003
+                array( 30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462 ),
1004 1004
                 array(-5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793),
1005 1005
                 array(-2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218),
1006 1006
             ),
1007 1007
             array(
1008 1008
                 array(-24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226),
1009
-                array(18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019),
1009
+                array( 18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019 ),
1010 1010
                 array(-15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037),
1011 1011
             ),
1012 1012
             array(
1013
-                array(31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171),
1013
+                array( 31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171 ),
1014 1014
                 array(-17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132),
1015 1015
                 array(-28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841),
1016 1016
             ),
1017 1017
             array(
1018
-                array(21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181),
1018
+                array( 21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181 ),
1019 1019
                 array(-33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210),
1020 1020
                 array(-1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040),
1021 1021
             ),
1022 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),
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 1025
                 array(-28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814),
1026 1026
             ),
1027 1027
         ),
1028 1028
         array(
1029 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),
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 1032
                 array(-4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646),
1033 1033
             ),
1034 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),
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 1038
             ),
1039 1039
             array(
1040 1040
                 array(-23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068),
1041
-                array(4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192),
1041
+                array( 4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192 ),
1042 1042
                 array(-17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921),
1043 1043
             ),
1044 1044
             array(
@@ -1048,34 +1048,34 @@  discard block
 block discarded – undo
1048 1048
             ),
1049 1049
             array(
1050 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),
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 1053
             ),
1054 1054
             array(
1055 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),
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 1058
             ),
1059 1059
             array(
1060 1060
                 array(-28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245),
1061 1061
                 array(-20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859),
1062
-                array(28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915),
1062
+                array( 28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915 ),
1063 1063
             ),
1064 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),
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 1067
                 array(-11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224),
1068 1068
             ),
1069 1069
         ),
1070 1070
         array(
1071 1071
             array(
1072 1072
                 array(-25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391),
1073
-                array(15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215),
1073
+                array( 15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215 ),
1074 1074
                 array(-23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101),
1075 1075
             ),
1076 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),
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 1079
                 array(-7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930),
1080 1080
             ),
1081 1081
             array(
@@ -1091,21 +1091,21 @@  discard block
 block discarded – undo
1091 1091
             array(
1092 1092
                 array(-23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509),
1093 1093
                 array(-10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883),
1094
-                array(15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865),
1094
+                array( 15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865 ),
1095 1095
             ),
1096 1096
             array(
1097 1097
                 array(-3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660),
1098
-                array(4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273),
1098
+                array( 4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273 ),
1099 1099
                 array(-28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138),
1100 1100
             ),
1101 1101
             array(
1102 1102
                 array(-25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560),
1103 1103
                 array(-10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135),
1104
-                array(2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941),
1104
+                array( 2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941 ),
1105 1105
             ),
1106 1106
             array(
1107 1107
                 array(-4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739),
1108
-                array(18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756),
1108
+                array( 18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756 ),
1109 1109
                 array(-30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819),
1110 1110
             ),
1111 1111
         ),
@@ -1113,42 +1113,42 @@  discard block
 block discarded – undo
1113 1113
             array(
1114 1114
                 array(-6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347),
1115 1115
                 array(-27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028),
1116
-                array(21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075),
1116
+                array( 21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075 ),
1117 1117
             ),
1118 1118
             array(
1119
-                array(16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799),
1119
+                array( 16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799 ),
1120 1120
                 array(-2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609),
1121 1121
                 array(-25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817),
1122 1122
             ),
1123 1123
             array(
1124 1124
                 array(-23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989),
1125 1125
                 array(-30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523),
1126
-                array(4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278),
1126
+                array( 4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278 ),
1127 1127
             ),
1128 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),
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 1132
             ),
1133 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),
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 1137
             ),
1138 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),
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 1142
             ),
1143 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),
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 1147
             ),
1148 1148
             array(
1149 1149
                 array(-16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717),
1150 1150
                 array(-1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101),
1151
-                array(24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127),
1151
+                array( 24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127 ),
1152 1152
             ),
1153 1153
         ),
1154 1154
         array(
@@ -1158,46 +1158,46 @@  discard block
 block discarded – undo
1158 1158
                 array(-31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160),
1159 1159
             ),
1160 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),
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 1163
                 array(-15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478),
1164 1164
             ),
1165 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),
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 1168
                 array(-7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248),
1169 1169
             ),
1170 1170
             array(
1171 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),
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 1174
             ),
1175 1175
             array(
1176 1176
                 array(-18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942),
1177 1177
                 array(-1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635),
1178
-                array(21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948),
1178
+                array( 21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948 ),
1179 1179
             ),
1180 1180
             array(
1181
-                array(11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935),
1181
+                array( 11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935 ),
1182 1182
                 array(-25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415),
1183 1183
                 array(-15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416),
1184 1184
             ),
1185 1185
             array(
1186 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),
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 1189
             ),
1190 1190
             array(
1191 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),
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 1194
             ),
1195 1195
         ),
1196 1196
         array(
1197 1197
             array(
1198
-                array(20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056),
1198
+                array( 20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056 ),
1199 1199
                 array(-13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838),
1200
-                array(24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948),
1200
+                array( 24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948 ),
1201 1201
             ),
1202 1202
             array(
1203 1203
                 array(-3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691),
@@ -1216,64 +1216,64 @@  discard block
 block discarded – undo
1216 1216
             ),
1217 1217
             array(
1218 1218
                 array(-7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667),
1219
-                array(25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481),
1219
+                array( 25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481 ),
1220 1220
                 array(-9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876),
1221 1221
             ),
1222 1222
             array(
1223
-                array(22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640),
1223
+                array( 22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640 ),
1224 1224
                 array(-8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278),
1225 1225
                 array(-21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112),
1226 1226
             ),
1227 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),
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 1230
                 array(-10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221),
1231 1231
             ),
1232 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),
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 1235
                 array(-19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310),
1236 1236
             ),
1237 1237
         ),
1238 1238
         array(
1239 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),
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 1242
                 array(-9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008),
1243 1243
             ),
1244 1244
             array(
1245 1245
                 array(-2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429),
1246 1246
                 array(-15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576),
1247
-                array(31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066),
1247
+                array( 31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066 ),
1248 1248
             ),
1249 1249
             array(
1250 1250
                 array(-9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490),
1251 1251
                 array(-12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104),
1252
-                array(33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053),
1252
+                array( 33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053 ),
1253 1253
             ),
1254 1254
             array(
1255
-                array(31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275),
1255
+                array( 31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275 ),
1256 1256
                 array(-20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511),
1257
-                array(22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095),
1257
+                array( 22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095 ),
1258 1258
             ),
1259 1259
             array(
1260 1260
                 array(-28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439),
1261
-                array(23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939),
1261
+                array( 23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939 ),
1262 1262
                 array(-23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424),
1263 1263
             ),
1264 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),
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 1267
                 array(-32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079),
1268 1268
             ),
1269 1269
             array(
1270 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),
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 1273
             ),
1274 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),
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 1277
                 array(-26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099),
1278 1278
             ),
1279 1279
         ),
@@ -1286,44 +1286,44 @@  discard block
 block discarded – undo
1286 1286
             array(
1287 1287
                 array(-21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001),
1288 1288
                 array(-4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766),
1289
-                array(18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373),
1289
+                array( 18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373 ),
1290 1290
             ),
1291 1291
             array(
1292
-                array(26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458),
1292
+                array( 26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458 ),
1293 1293
                 array(-17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628),
1294 1294
                 array(-13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657),
1295 1295
             ),
1296 1296
             array(
1297 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),
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 1300
             ),
1301 1301
             array(
1302
-                array(24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383),
1302
+                array( 24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383 ),
1303 1303
                 array(-25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814),
1304 1304
                 array(-20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718),
1305 1305
             ),
1306 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),
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 1310
             ),
1311 1311
             array(
1312 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),
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 1315
             ),
1316 1316
             array(
1317 1317
                 array(-5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647),
1318
-                array(13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511),
1318
+                array( 13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511 ),
1319 1319
                 array(-29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032),
1320 1320
             ),
1321 1321
         ),
1322 1322
         array(
1323 1323
             array(
1324
-                array(9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834),
1324
+                array( 9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834 ),
1325 1325
                 array(-23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461),
1326
-                array(29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062),
1326
+                array( 29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062 ),
1327 1327
             ),
1328 1328
             array(
1329 1329
                 array(-25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516),
@@ -1333,21 +1333,21 @@  discard block
 block discarded – undo
1333 1333
             array(
1334 1334
                 array(-17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038),
1335 1335
                 array(-33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741),
1336
-                array(16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103),
1336
+                array( 16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103 ),
1337 1337
             ),
1338 1338
             array(
1339 1339
                 array(-19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747),
1340 1340
                 array(-1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323),
1341
-                array(31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016),
1341
+                array( 31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016 ),
1342 1342
             ),
1343 1343
             array(
1344 1344
                 array(-14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373),
1345
-                array(15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228),
1345
+                array( 15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228 ),
1346 1346
                 array(-2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141),
1347 1347
             ),
1348 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),
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 1351
                 array(-185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376),
1352 1352
             ),
1353 1353
             array(
@@ -1357,7 +1357,7 @@  discard block
 block discarded – undo
1357 1357
             ),
1358 1358
             array(
1359 1359
                 array(-22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743),
1360
-                array(29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684),
1360
+                array( 29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684 ),
1361 1361
                 array(-20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476),
1362 1362
             ),
1363 1363
         )
@@ -1370,34 +1370,34 @@  discard block
 block discarded – undo
1370 1370
      */
1371 1371
     protected static $base2 = array(
1372 1372
         array(
1373
-            array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
1373
+            array( 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605 ),
1374 1374
             array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
1375 1375
             array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
1376 1376
         ),
1377 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),
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 1381
         ),
1382 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),
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 1386
         ),
1387 1387
         array(
1388
-            array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
1388
+            array( 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766 ),
1389 1389
             array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
1390
-            array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
1390
+            array( 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300 ),
1391 1391
         ),
1392 1392
         array(
1393 1393
             array(-22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877),
1394 1394
             array(-6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951),
1395
-            array(4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784),
1395
+            array( 4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784 ),
1396 1396
         ),
1397 1397
         array(
1398 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),
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 1401
         ),
1402 1402
         array(
1403 1403
             array(-33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800),
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -9,8 +9,7 @@
 block discarded – undo
9 9
  *
10 10
  * This just contains the constants in the ref10/base.h file
11 11
  */
12
-class ParagonIE_Sodium_Core32_Curve25519_H extends ParagonIE_Sodium_Core32_Util
13
-{
12
+class ParagonIE_Sodium_Core32_Curve25519_H extends ParagonIE_Sodium_Core32_Util {
14 13
     /**
15 14
      * See: libsodium's crypto_core/curve25519/ref10/base.h
16 15
      *
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/P3.php 3 patches
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_Curve25519_Ge_P3', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,57 +9,57 @@  discard block
 block discarded – undo
9 9
  */
10 10
 class ParagonIE_Sodium_Core32_Curve25519_Ge_P3
11 11
 {
12
-    /**
13
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14
-     */
15
-    public $X;
12
+	/**
13
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14
+	 */
15
+	public $X;
16 16
 
17
-    /**
18
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
19
-     */
20
-    public $Y;
17
+	/**
18
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
19
+	 */
20
+	public $Y;
21 21
 
22
-    /**
23
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
24
-     */
25
-    public $Z;
22
+	/**
23
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
24
+	 */
25
+	public $Z;
26 26
 
27
-    /**
28
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
29
-     */
30
-    public $T;
27
+	/**
28
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
29
+	 */
30
+	public $T;
31 31
 
32
-    /**
33
-     * ParagonIE_Sodium_Core32_Curve25519_Ge_P3 constructor.
34
-     *
35
-     * @internal You should not use this directly from another application
36
-     *
37
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $x
38
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $y
39
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $z
40
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $t
41
-     */
42
-    public function __construct(
43
-        ParagonIE_Sodium_Core32_Curve25519_Fe $x = null,
44
-        ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
45
-        ParagonIE_Sodium_Core32_Curve25519_Fe $z = null,
46
-        ParagonIE_Sodium_Core32_Curve25519_Fe $t = null
47
-    ) {
48
-        if ($x === null) {
49
-            $x = new ParagonIE_Sodium_Core32_Curve25519_Fe();
50
-        }
51
-        $this->X = $x;
52
-        if ($y === null) {
53
-            $y = new ParagonIE_Sodium_Core32_Curve25519_Fe();
54
-        }
55
-        $this->Y = $y;
56
-        if ($z === null) {
57
-            $z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
58
-        }
59
-        $this->Z = $z;
60
-        if ($t === null) {
61
-            $t = new ParagonIE_Sodium_Core32_Curve25519_Fe();
62
-        }
63
-        $this->T = $t;
64
-    }
32
+	/**
33
+	 * ParagonIE_Sodium_Core32_Curve25519_Ge_P3 constructor.
34
+	 *
35
+	 * @internal You should not use this directly from another application
36
+	 *
37
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $x
38
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $y
39
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $z
40
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $t
41
+	 */
42
+	public function __construct(
43
+		ParagonIE_Sodium_Core32_Curve25519_Fe $x = null,
44
+		ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
45
+		ParagonIE_Sodium_Core32_Curve25519_Fe $z = null,
46
+		ParagonIE_Sodium_Core32_Curve25519_Fe $t = null
47
+	) {
48
+		if ($x === null) {
49
+			$x = new ParagonIE_Sodium_Core32_Curve25519_Fe();
50
+		}
51
+		$this->X = $x;
52
+		if ($y === null) {
53
+			$y = new ParagonIE_Sodium_Core32_Curve25519_Fe();
54
+		}
55
+		$this->Y = $y;
56
+		if ($z === null) {
57
+			$z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
58
+		}
59
+		$this->Z = $z;
60
+		if ($t === null) {
61
+			$t = new ParagonIE_Sodium_Core32_Curve25519_Fe();
62
+		}
63
+		$this->T = $t;
64
+	}
65 65
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_P3', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Curve25519_Ge_P3', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -45,19 +45,19 @@  discard block
 block discarded – undo
45 45
         ParagonIE_Sodium_Core32_Curve25519_Fe $z = null,
46 46
         ParagonIE_Sodium_Core32_Curve25519_Fe $t = null
47 47
     ) {
48
-        if ($x === null) {
48
+        if ( $x === null ) {
49 49
             $x = new ParagonIE_Sodium_Core32_Curve25519_Fe();
50 50
         }
51 51
         $this->X = $x;
52
-        if ($y === null) {
52
+        if ( $y === null ) {
53 53
             $y = new ParagonIE_Sodium_Core32_Curve25519_Fe();
54 54
         }
55 55
         $this->Y = $y;
56
-        if ($z === null) {
56
+        if ( $z === null ) {
57 57
             $z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
58 58
         }
59 59
         $this->Z = $z;
60
-        if ($t === null) {
60
+        if ( $t === null ) {
61 61
             $t = new ParagonIE_Sodium_Core32_Curve25519_Fe();
62 62
         }
63 63
         $this->T = $t;
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_Curve25519_Ge_P3
9 9
  */
10
-class ParagonIE_Sodium_Core32_Curve25519_Ge_P3
11
-{
10
+class ParagonIE_Sodium_Core32_Curve25519_Ge_P3 {
12 11
     /**
13 12
      * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14 13
      */
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/P2.php 3 patches
Indentation   +40 added lines, -40 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_Ge_P2', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,46 +9,46 @@  discard block
 block discarded – undo
9 9
  */
10 10
 class ParagonIE_Sodium_Core32_Curve25519_Ge_P2
11 11
 {
12
-    /**
13
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14
-     */
15
-    public $X;
12
+	/**
13
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14
+	 */
15
+	public $X;
16 16
 
17
-    /**
18
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
19
-     */
20
-    public $Y;
17
+	/**
18
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
19
+	 */
20
+	public $Y;
21 21
 
22
-    /**
23
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
24
-     */
25
-    public $Z;
22
+	/**
23
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
24
+	 */
25
+	public $Z;
26 26
 
27
-    /**
28
-     * ParagonIE_Sodium_Core32_Curve25519_Ge_P2 constructor.
29
-     *
30
-     * @internal You should not use this directly from another application
31
-     *
32
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $x
33
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $y
34
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $z
35
-     */
36
-    public function __construct(
37
-        ParagonIE_Sodium_Core32_Curve25519_Fe $x = null,
38
-        ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
39
-        ParagonIE_Sodium_Core32_Curve25519_Fe $z = null
40
-    ) {
41
-        if ($x === null) {
42
-            $x = new ParagonIE_Sodium_Core32_Curve25519_Fe();
43
-        }
44
-        $this->X = $x;
45
-        if ($y === null) {
46
-            $y = new ParagonIE_Sodium_Core32_Curve25519_Fe();
47
-        }
48
-        $this->Y = $y;
49
-        if ($z === null) {
50
-            $z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
51
-        }
52
-        $this->Z = $z;
53
-    }
27
+	/**
28
+	 * ParagonIE_Sodium_Core32_Curve25519_Ge_P2 constructor.
29
+	 *
30
+	 * @internal You should not use this directly from another application
31
+	 *
32
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $x
33
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $y
34
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $z
35
+	 */
36
+	public function __construct(
37
+		ParagonIE_Sodium_Core32_Curve25519_Fe $x = null,
38
+		ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
39
+		ParagonIE_Sodium_Core32_Curve25519_Fe $z = null
40
+	) {
41
+		if ($x === null) {
42
+			$x = new ParagonIE_Sodium_Core32_Curve25519_Fe();
43
+		}
44
+		$this->X = $x;
45
+		if ($y === null) {
46
+			$y = new ParagonIE_Sodium_Core32_Curve25519_Fe();
47
+		}
48
+		$this->Y = $y;
49
+		if ($z === null) {
50
+			$z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
51
+		}
52
+		$this->Z = $z;
53
+	}
54 54
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_P2', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Curve25519_Ge_P2', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -38,15 +38,15 @@  discard block
 block discarded – undo
38 38
         ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
39 39
         ParagonIE_Sodium_Core32_Curve25519_Fe $z = null
40 40
     ) {
41
-        if ($x === null) {
41
+        if ( $x === null ) {
42 42
             $x = new ParagonIE_Sodium_Core32_Curve25519_Fe();
43 43
         }
44 44
         $this->X = $x;
45
-        if ($y === null) {
45
+        if ( $y === null ) {
46 46
             $y = new ParagonIE_Sodium_Core32_Curve25519_Fe();
47 47
         }
48 48
         $this->Y = $y;
49
-        if ($z === null) {
49
+        if ( $z === null ) {
50 50
             $z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
51 51
         }
52 52
         $this->Z = $z;
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_Curve25519_Ge_P2
9 9
  */
10
-class ParagonIE_Sodium_Core32_Curve25519_Ge_P2
11
-{
10
+class ParagonIE_Sodium_Core32_Curve25519_Ge_P2 {
12 11
     /**
13 12
      * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14 13
      */
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/P1p1.php 3 patches
Indentation   +53 added lines, -53 removed lines patch added patch discarded remove patch
@@ -1,67 +1,67 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 /**
7 7
  * Class ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
8 8
  */
9 9
 class ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
10 10
 {
11
-    /**
12
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
13
-     */
14
-    public $X;
11
+	/**
12
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
13
+	 */
14
+	public $X;
15 15
 
16
-    /**
17
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
18
-     */
19
-    public $Y;
16
+	/**
17
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
18
+	 */
19
+	public $Y;
20 20
 
21
-    /**
22
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
23
-     */
24
-    public $Z;
21
+	/**
22
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
23
+	 */
24
+	public $Z;
25 25
 
26
-    /**
27
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
28
-     */
29
-    public $T;
26
+	/**
27
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
28
+	 */
29
+	public $T;
30 30
 
31
-    /**
32
-     * ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 constructor.
33
-     *
34
-     * @internal You should not use this directly from another application
35
-     *
36
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $x
37
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $y
38
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $z
39
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $t
40
-     *
41
-     * @throws SodiumException
42
-     * @throws TypeError
43
-     */
44
-    public function __construct(
45
-        ParagonIE_Sodium_Core32_Curve25519_Fe $x = null,
46
-        ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
47
-        ParagonIE_Sodium_Core32_Curve25519_Fe $z = null,
48
-        ParagonIE_Sodium_Core32_Curve25519_Fe $t = null
49
-    ) {
50
-        if ($x === null) {
51
-            $x = ParagonIE_Sodium_Core32_Curve25519::fe_0();
52
-        }
53
-        $this->X = $x;
54
-        if ($y === null) {
55
-            $y = ParagonIE_Sodium_Core32_Curve25519::fe_0();
56
-        }
57
-        $this->Y = $y;
58
-        if ($z === null) {
59
-            $z = ParagonIE_Sodium_Core32_Curve25519::fe_0();
60
-        }
61
-        $this->Z = $z;
62
-        if ($t === null) {
63
-            $t = ParagonIE_Sodium_Core32_Curve25519::fe_0();
64
-        }
65
-        $this->T = $t;
66
-    }
31
+	/**
32
+	 * ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 constructor.
33
+	 *
34
+	 * @internal You should not use this directly from another application
35
+	 *
36
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $x
37
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $y
38
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $z
39
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $t
40
+	 *
41
+	 * @throws SodiumException
42
+	 * @throws TypeError
43
+	 */
44
+	public function __construct(
45
+		ParagonIE_Sodium_Core32_Curve25519_Fe $x = null,
46
+		ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
47
+		ParagonIE_Sodium_Core32_Curve25519_Fe $z = null,
48
+		ParagonIE_Sodium_Core32_Curve25519_Fe $t = null
49
+	) {
50
+		if ($x === null) {
51
+			$x = ParagonIE_Sodium_Core32_Curve25519::fe_0();
52
+		}
53
+		$this->X = $x;
54
+		if ($y === null) {
55
+			$y = ParagonIE_Sodium_Core32_Curve25519::fe_0();
56
+		}
57
+		$this->Y = $y;
58
+		if ($z === null) {
59
+			$z = ParagonIE_Sodium_Core32_Curve25519::fe_0();
60
+		}
61
+		$this->Z = $z;
62
+		if ($t === null) {
63
+			$t = ParagonIE_Sodium_Core32_Curve25519::fe_0();
64
+		}
65
+		$this->T = $t;
66
+	}
67 67
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1', false ) ) {
4 4
     return;
5 5
 }
6 6
 /**
@@ -47,19 +47,19 @@  discard block
 block discarded – undo
47 47
         ParagonIE_Sodium_Core32_Curve25519_Fe $z = null,
48 48
         ParagonIE_Sodium_Core32_Curve25519_Fe $t = null
49 49
     ) {
50
-        if ($x === null) {
50
+        if ( $x === null ) {
51 51
             $x = ParagonIE_Sodium_Core32_Curve25519::fe_0();
52 52
         }
53 53
         $this->X = $x;
54
-        if ($y === null) {
54
+        if ( $y === null ) {
55 55
             $y = ParagonIE_Sodium_Core32_Curve25519::fe_0();
56 56
         }
57 57
         $this->Y = $y;
58
-        if ($z === null) {
58
+        if ( $z === null ) {
59 59
             $z = ParagonIE_Sodium_Core32_Curve25519::fe_0();
60 60
         }
61 61
         $this->Z = $z;
62
-        if ($t === null) {
62
+        if ( $t === null ) {
63 63
             $t = ParagonIE_Sodium_Core32_Curve25519::fe_0();
64 64
         }
65 65
         $this->T = $t;
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -6,8 +6,7 @@
 block discarded – undo
6 6
 /**
7 7
  * Class ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
8 8
  */
9
-class ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
10
-{
9
+class ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 {
11 10
     /**
12 11
      * @var ParagonIE_Sodium_Core32_Curve25519_Fe
13 12
      */
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/Cached.php 3 patches
Indentation   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -2,64 +2,64 @@
 block discarded – undo
2 2
 
3 3
 
4 4
 if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_Cached', false)) {
5
-    return;
5
+	return;
6 6
 }
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_Curve25519_Ge_Cached
9 9
  */
10 10
 class ParagonIE_Sodium_Core32_Curve25519_Ge_Cached
11 11
 {
12
-    /**
13
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14
-     */
15
-    public $YplusX;
12
+	/**
13
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14
+	 */
15
+	public $YplusX;
16 16
 
17
-    /**
18
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
19
-     */
20
-    public $YminusX;
17
+	/**
18
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
19
+	 */
20
+	public $YminusX;
21 21
 
22
-    /**
23
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
24
-     */
25
-    public $Z;
22
+	/**
23
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
24
+	 */
25
+	public $Z;
26 26
 
27
-    /**
28
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
29
-     */
30
-    public $T2d;
27
+	/**
28
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
29
+	 */
30
+	public $T2d;
31 31
 
32
-    /**
33
-     * ParagonIE_Sodium_Core32_Curve25519_Ge_Cached constructor.
34
-     *
35
-     * @internal You should not use this directly from another application
36
-     *
37
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $YplusX
38
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $YminusX
39
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $Z
40
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $T2d
41
-     */
42
-    public function __construct(
43
-        ParagonIE_Sodium_Core32_Curve25519_Fe $YplusX = null,
44
-        ParagonIE_Sodium_Core32_Curve25519_Fe $YminusX = null,
45
-        ParagonIE_Sodium_Core32_Curve25519_Fe $Z = null,
46
-        ParagonIE_Sodium_Core32_Curve25519_Fe $T2d = null
47
-    ) {
48
-        if ($YplusX === null) {
49
-            $YplusX = new ParagonIE_Sodium_Core32_Curve25519_Fe();
50
-        }
51
-        $this->YplusX = $YplusX;
52
-        if ($YminusX === null) {
53
-            $YminusX = new ParagonIE_Sodium_Core32_Curve25519_Fe();
54
-        }
55
-        $this->YminusX = $YminusX;
56
-        if ($Z === null) {
57
-            $Z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
58
-        }
59
-        $this->Z = $Z;
60
-        if ($T2d === null) {
61
-            $T2d = new ParagonIE_Sodium_Core32_Curve25519_Fe();
62
-        }
63
-        $this->T2d = $T2d;
64
-    }
32
+	/**
33
+	 * ParagonIE_Sodium_Core32_Curve25519_Ge_Cached constructor.
34
+	 *
35
+	 * @internal You should not use this directly from another application
36
+	 *
37
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $YplusX
38
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $YminusX
39
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $Z
40
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $T2d
41
+	 */
42
+	public function __construct(
43
+		ParagonIE_Sodium_Core32_Curve25519_Fe $YplusX = null,
44
+		ParagonIE_Sodium_Core32_Curve25519_Fe $YminusX = null,
45
+		ParagonIE_Sodium_Core32_Curve25519_Fe $Z = null,
46
+		ParagonIE_Sodium_Core32_Curve25519_Fe $T2d = null
47
+	) {
48
+		if ($YplusX === null) {
49
+			$YplusX = new ParagonIE_Sodium_Core32_Curve25519_Fe();
50
+		}
51
+		$this->YplusX = $YplusX;
52
+		if ($YminusX === null) {
53
+			$YminusX = new ParagonIE_Sodium_Core32_Curve25519_Fe();
54
+		}
55
+		$this->YminusX = $YminusX;
56
+		if ($Z === null) {
57
+			$Z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
58
+		}
59
+		$this->Z = $Z;
60
+		if ($T2d === null) {
61
+			$T2d = new ParagonIE_Sodium_Core32_Curve25519_Fe();
62
+		}
63
+		$this->T2d = $T2d;
64
+	}
65 65
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 
4
-if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_Cached', false)) {
4
+if ( class_exists( 'ParagonIE_Sodium_Core32_Curve25519_Ge_Cached', false ) ) {
5 5
     return;
6 6
 }
7 7
 /**
@@ -45,19 +45,19 @@  discard block
 block discarded – undo
45 45
         ParagonIE_Sodium_Core32_Curve25519_Fe $Z = null,
46 46
         ParagonIE_Sodium_Core32_Curve25519_Fe $T2d = null
47 47
     ) {
48
-        if ($YplusX === null) {
48
+        if ( $YplusX === null ) {
49 49
             $YplusX = new ParagonIE_Sodium_Core32_Curve25519_Fe();
50 50
         }
51 51
         $this->YplusX = $YplusX;
52
-        if ($YminusX === null) {
52
+        if ( $YminusX === null ) {
53 53
             $YminusX = new ParagonIE_Sodium_Core32_Curve25519_Fe();
54 54
         }
55 55
         $this->YminusX = $YminusX;
56
-        if ($Z === null) {
56
+        if ( $Z === null ) {
57 57
             $Z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
58 58
         }
59 59
         $this->Z = $Z;
60
-        if ($T2d === null) {
60
+        if ( $T2d === null ) {
61 61
             $T2d = new ParagonIE_Sodium_Core32_Curve25519_Fe();
62 62
         }
63 63
         $this->T2d = $T2d;
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_Curve25519_Ge_Cached
9 9
  */
10
-class ParagonIE_Sodium_Core32_Curve25519_Ge_Cached
11
-{
10
+class ParagonIE_Sodium_Core32_Curve25519_Ge_Cached {
12 11
     /**
13 12
      * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14 13
      */
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/Precomp.php 3 patches
Indentation   +42 added lines, -42 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_Ge_Precomp', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,48 +9,48 @@  discard block
 block discarded – undo
9 9
  */
10 10
 class ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
11 11
 {
12
-    /**
13
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14
-     */
15
-    public $yplusx;
12
+	/**
13
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14
+	 */
15
+	public $yplusx;
16 16
 
17
-    /**
18
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
19
-     */
20
-    public $yminusx;
17
+	/**
18
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
19
+	 */
20
+	public $yminusx;
21 21
 
22
-    /**
23
-     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
24
-     */
25
-    public $xy2d;
22
+	/**
23
+	 * @var ParagonIE_Sodium_Core32_Curve25519_Fe
24
+	 */
25
+	public $xy2d;
26 26
 
27
-    /**
28
-     * ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp constructor.
29
-     *
30
-     * @internal You should not use this directly from another application
31
-     *
32
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $yplusx
33
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $yminusx
34
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $xy2d
35
-     * @throws SodiumException
36
-     * @throws TypeError
37
-     */
38
-    public function __construct(
39
-        ParagonIE_Sodium_Core32_Curve25519_Fe $yplusx = null,
40
-        ParagonIE_Sodium_Core32_Curve25519_Fe $yminusx = null,
41
-        ParagonIE_Sodium_Core32_Curve25519_Fe $xy2d = null
42
-    ) {
43
-        if ($yplusx === null) {
44
-            $yplusx = ParagonIE_Sodium_Core32_Curve25519::fe_0();
45
-        }
46
-        $this->yplusx = $yplusx;
47
-        if ($yminusx === null) {
48
-            $yminusx = ParagonIE_Sodium_Core32_Curve25519::fe_0();
49
-        }
50
-        $this->yminusx = $yminusx;
51
-        if ($xy2d === null) {
52
-            $xy2d = ParagonIE_Sodium_Core32_Curve25519::fe_0();
53
-        }
54
-        $this->xy2d = $xy2d;
55
-    }
27
+	/**
28
+	 * ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp constructor.
29
+	 *
30
+	 * @internal You should not use this directly from another application
31
+	 *
32
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $yplusx
33
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $yminusx
34
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $xy2d
35
+	 * @throws SodiumException
36
+	 * @throws TypeError
37
+	 */
38
+	public function __construct(
39
+		ParagonIE_Sodium_Core32_Curve25519_Fe $yplusx = null,
40
+		ParagonIE_Sodium_Core32_Curve25519_Fe $yminusx = null,
41
+		ParagonIE_Sodium_Core32_Curve25519_Fe $xy2d = null
42
+	) {
43
+		if ($yplusx === null) {
44
+			$yplusx = ParagonIE_Sodium_Core32_Curve25519::fe_0();
45
+		}
46
+		$this->yplusx = $yplusx;
47
+		if ($yminusx === null) {
48
+			$yminusx = ParagonIE_Sodium_Core32_Curve25519::fe_0();
49
+		}
50
+		$this->yminusx = $yminusx;
51
+		if ($xy2d === null) {
52
+			$xy2d = ParagonIE_Sodium_Core32_Curve25519::fe_0();
53
+		}
54
+		$this->xy2d = $xy2d;
55
+	}
56 56
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -40,15 +40,15 @@  discard block
 block discarded – undo
40 40
         ParagonIE_Sodium_Core32_Curve25519_Fe $yminusx = null,
41 41
         ParagonIE_Sodium_Core32_Curve25519_Fe $xy2d = null
42 42
     ) {
43
-        if ($yplusx === null) {
43
+        if ( $yplusx === null ) {
44 44
             $yplusx = ParagonIE_Sodium_Core32_Curve25519::fe_0();
45 45
         }
46 46
         $this->yplusx = $yplusx;
47
-        if ($yminusx === null) {
47
+        if ( $yminusx === null ) {
48 48
             $yminusx = ParagonIE_Sodium_Core32_Curve25519::fe_0();
49 49
         }
50 50
         $this->yminusx = $yminusx;
51
-        if ($xy2d === null) {
51
+        if ( $xy2d === null ) {
52 52
             $xy2d = ParagonIE_Sodium_Core32_Curve25519::fe_0();
53 53
         }
54 54
         $this->xy2d = $xy2d;
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
9 9
  */
10
-class ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
11
-{
10
+class ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp {
12 11
     /**
13 12
      * @var ParagonIE_Sodium_Core32_Curve25519_Fe
14 13
      */
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/Curve25519.php 3 patches
Indentation   +3179 added lines, -3179 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', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -15,3182 +15,3182 @@  discard block
 block discarded – undo
15 15
  */
16 16
 abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core32_Curve25519_H
17 17
 {
18
-    /**
19
-     * Get a field element of size 10 with a value of 0
20
-     *
21
-     * @internal You should not use this directly from another application
22
-     *
23
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
24
-     * @throws SodiumException
25
-     * @throws TypeError
26
-     */
27
-    public static function fe_0()
28
-    {
29
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
30
-            array(
31
-                new ParagonIE_Sodium_Core32_Int32(),
32
-                new ParagonIE_Sodium_Core32_Int32(),
33
-                new ParagonIE_Sodium_Core32_Int32(),
34
-                new ParagonIE_Sodium_Core32_Int32(),
35
-                new ParagonIE_Sodium_Core32_Int32(),
36
-                new ParagonIE_Sodium_Core32_Int32(),
37
-                new ParagonIE_Sodium_Core32_Int32(),
38
-                new ParagonIE_Sodium_Core32_Int32(),
39
-                new ParagonIE_Sodium_Core32_Int32(),
40
-                new ParagonIE_Sodium_Core32_Int32()
41
-            )
42
-        );
43
-    }
44
-
45
-    /**
46
-     * Get a field element of size 10 with a value of 1
47
-     *
48
-     * @internal You should not use this directly from another application
49
-     *
50
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
51
-     * @throws SodiumException
52
-     * @throws TypeError
53
-     */
54
-    public static function fe_1()
55
-    {
56
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
57
-            array(
58
-                ParagonIE_Sodium_Core32_Int32::fromInt(1),
59
-                new ParagonIE_Sodium_Core32_Int32(),
60
-                new ParagonIE_Sodium_Core32_Int32(),
61
-                new ParagonIE_Sodium_Core32_Int32(),
62
-                new ParagonIE_Sodium_Core32_Int32(),
63
-                new ParagonIE_Sodium_Core32_Int32(),
64
-                new ParagonIE_Sodium_Core32_Int32(),
65
-                new ParagonIE_Sodium_Core32_Int32(),
66
-                new ParagonIE_Sodium_Core32_Int32(),
67
-                new ParagonIE_Sodium_Core32_Int32()
68
-            )
69
-        );
70
-    }
71
-
72
-    /**
73
-     * Add two field elements.
74
-     *
75
-     * @internal You should not use this directly from another application
76
-     *
77
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
78
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
79
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
80
-     * @throws SodiumException
81
-     * @throws TypeError
82
-     * @psalm-suppress MixedAssignment
83
-     * @psalm-suppress MixedMethodCall
84
-     */
85
-    public static function fe_add(
86
-        ParagonIE_Sodium_Core32_Curve25519_Fe $f,
87
-        ParagonIE_Sodium_Core32_Curve25519_Fe $g
88
-    ) {
89
-        $arr = array();
90
-        for ($i = 0; $i < 10; ++$i) {
91
-            $arr[$i] = $f[$i]->addInt32($g[$i]);
92
-        }
93
-        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $arr */
94
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($arr);
95
-    }
96
-
97
-    /**
98
-     * Constant-time conditional move.
99
-     *
100
-     * @internal You should not use this directly from another application
101
-     *
102
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
103
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
104
-     * @param int $b
105
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
106
-     * @throws SodiumException
107
-     * @throws TypeError
108
-     * @psalm-suppress MixedAssignment
109
-     * @psalm-suppress MixedMethodCall
110
-     */
111
-    public static function fe_cmov(
112
-        ParagonIE_Sodium_Core32_Curve25519_Fe $f,
113
-        ParagonIE_Sodium_Core32_Curve25519_Fe $g,
114
-        $b = 0
115
-    ) {
116
-        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
117
-        $h = array();
118
-        for ($i = 0; $i < 10; ++$i) {
119
-            if (!($f[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
120
-                throw new TypeError('Expected Int32');
121
-            }
122
-            if (!($g[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
123
-                throw new TypeError('Expected Int32');
124
-            }
125
-            $h[$i] = $f[$i]->xorInt32(
126
-                $f[$i]->xorInt32($g[$i])->mask($b)
127
-            );
128
-        }
129
-        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
130
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h);
131
-    }
132
-
133
-    /**
134
-     * Create a copy of a field element.
135
-     *
136
-     * @internal You should not use this directly from another application
137
-     *
138
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
139
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
140
-     */
141
-    public static function fe_copy(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
142
-    {
143
-        $h = clone $f;
144
-        return $h;
145
-    }
146
-
147
-    /**
148
-     * Give: 32-byte string.
149
-     * Receive: A field element object to use for internal calculations.
150
-     *
151
-     * @internal You should not use this directly from another application
152
-     *
153
-     * @param string $s
154
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
155
-     * @throws RangeException
156
-     * @throws SodiumException
157
-     * @throws TypeError
158
-     * @psalm-suppress MixedMethodCall
159
-     */
160
-    public static function fe_frombytes($s)
161
-    {
162
-        if (self::strlen($s) !== 32) {
163
-            throw new RangeException('Expected a 32-byte string.');
164
-        }
165
-        /** @var ParagonIE_Sodium_Core32_Int32 $h0 */
166
-        $h0 = ParagonIE_Sodium_Core32_Int32::fromInt(
167
-            self::load_4($s)
168
-        );
169
-        /** @var ParagonIE_Sodium_Core32_Int32 $h1 */
170
-        $h1 = ParagonIE_Sodium_Core32_Int32::fromInt(
171
-            self::load_3(self::substr($s, 4, 3)) << 6
172
-        );
173
-        /** @var ParagonIE_Sodium_Core32_Int32 $h2 */
174
-        $h2 = ParagonIE_Sodium_Core32_Int32::fromInt(
175
-            self::load_3(self::substr($s, 7, 3)) << 5
176
-        );
177
-        /** @var ParagonIE_Sodium_Core32_Int32 $h3 */
178
-        $h3 = ParagonIE_Sodium_Core32_Int32::fromInt(
179
-            self::load_3(self::substr($s, 10, 3)) << 3
180
-        );
181
-        /** @var ParagonIE_Sodium_Core32_Int32 $h4 */
182
-        $h4 = ParagonIE_Sodium_Core32_Int32::fromInt(
183
-            self::load_3(self::substr($s, 13, 3)) << 2
184
-        );
185
-        /** @var ParagonIE_Sodium_Core32_Int32 $h5 */
186
-        $h5 = ParagonIE_Sodium_Core32_Int32::fromInt(
187
-            self::load_4(self::substr($s, 16, 4))
188
-        );
189
-        /** @var ParagonIE_Sodium_Core32_Int32 $h6 */
190
-        $h6 = ParagonIE_Sodium_Core32_Int32::fromInt(
191
-            self::load_3(self::substr($s, 20, 3)) << 7
192
-        );
193
-        /** @var ParagonIE_Sodium_Core32_Int32 $h7 */
194
-        $h7 = ParagonIE_Sodium_Core32_Int32::fromInt(
195
-            self::load_3(self::substr($s, 23, 3)) << 5
196
-        );
197
-        /** @var ParagonIE_Sodium_Core32_Int32 $h8 */
198
-        $h8 = ParagonIE_Sodium_Core32_Int32::fromInt(
199
-            self::load_3(self::substr($s, 26, 3)) << 4
200
-        );
201
-        /** @var ParagonIE_Sodium_Core32_Int32 $h9 */
202
-        $h9 = ParagonIE_Sodium_Core32_Int32::fromInt(
203
-            (self::load_3(self::substr($s, 29, 3)) & 8388607) << 2
204
-        );
205
-
206
-        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
207
-        $h0 = $h0->addInt32($carry9->mulInt(19, 5));
208
-        $h9 = $h9->subInt32($carry9->shiftLeft(25));
209
-
210
-        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
211
-        $h2 = $h2->addInt32($carry1);
212
-        $h1 = $h1->subInt32($carry1->shiftLeft(25));
213
-
214
-        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
215
-        $h4 = $h4->addInt32($carry3);
216
-        $h3 = $h3->subInt32($carry3->shiftLeft(25));
217
-
218
-        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
219
-        $h6 = $h6->addInt32($carry5);
220
-        $h5 = $h5->subInt32($carry5->shiftLeft(25));
221
-
222
-        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
223
-        $h8 = $h8->addInt32($carry7);
224
-        $h7 = $h7->subInt32($carry7->shiftLeft(25));
225
-
226
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
227
-        $h1 = $h1->addInt32($carry0);
228
-        $h0 = $h0->subInt32($carry0->shiftLeft(26));
229
-
230
-        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
231
-        $h3 = $h3->addInt32($carry2);
232
-        $h2 = $h2->subInt32($carry2->shiftLeft(26));
233
-
234
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
235
-        $h5 = $h5->addInt32($carry4);
236
-        $h4 = $h4->subInt32($carry4->shiftLeft(26));
237
-
238
-        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
239
-        $h7 = $h7->addInt32($carry6);
240
-        $h6 = $h6->subInt32($carry6->shiftLeft(26));
241
-
242
-        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
243
-        $h9 = $h9->addInt32($carry8);
244
-        $h8 = $h8->subInt32($carry8->shiftLeft(26));
245
-
246
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
247
-            array($h0, $h1, $h2,$h3, $h4, $h5, $h6, $h7, $h8, $h9)
248
-        );
249
-    }
250
-
251
-    /**
252
-     * Convert a field element to a byte string.
253
-     *
254
-     * @internal You should not use this directly from another application
255
-     *
256
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $h
257
-     * @return string
258
-     * @throws SodiumException
259
-     * @throws TypeError
260
-     * @psalm-suppress MixedAssignment
261
-     * @psalm-suppress MixedMethodCall
262
-     */
263
-    public static function fe_tobytes(ParagonIE_Sodium_Core32_Curve25519_Fe $h)
264
-    {
265
-        /**
266
-         * @var ParagonIE_Sodium_Core32_Int64[] $f
267
-         * @var ParagonIE_Sodium_Core32_Int64 $q
268
-         */
269
-        $f = array();
270
-
271
-        for ($i = 0; $i < 10; ++$i) {
272
-            $f[$i] = $h[$i]->toInt64();
273
-        }
274
-
275
-        $q = $f[9]->mulInt(19, 5)->addInt(1 << 14)->shiftRight(25)
276
-            ->addInt64($f[0])->shiftRight(26)
277
-            ->addInt64($f[1])->shiftRight(25)
278
-            ->addInt64($f[2])->shiftRight(26)
279
-            ->addInt64($f[3])->shiftRight(25)
280
-            ->addInt64($f[4])->shiftRight(26)
281
-            ->addInt64($f[5])->shiftRight(25)
282
-            ->addInt64($f[6])->shiftRight(26)
283
-            ->addInt64($f[7])->shiftRight(25)
284
-            ->addInt64($f[8])->shiftRight(26)
285
-            ->addInt64($f[9])->shiftRight(25);
286
-
287
-        $f[0] = $f[0]->addInt64($q->mulInt(19, 5));
288
-
289
-        $carry0 = $f[0]->shiftRight(26);
290
-        $f[1] = $f[1]->addInt64($carry0);
291
-        $f[0] = $f[0]->subInt64($carry0->shiftLeft(26));
292
-
293
-        $carry1 = $f[1]->shiftRight(25);
294
-        $f[2] = $f[2]->addInt64($carry1);
295
-        $f[1] = $f[1]->subInt64($carry1->shiftLeft(25));
296
-
297
-        $carry2 = $f[2]->shiftRight(26);
298
-        $f[3] = $f[3]->addInt64($carry2);
299
-        $f[2] = $f[2]->subInt64($carry2->shiftLeft(26));
300
-
301
-        $carry3 = $f[3]->shiftRight(25);
302
-        $f[4] = $f[4]->addInt64($carry3);
303
-        $f[3] = $f[3]->subInt64($carry3->shiftLeft(25));
304
-
305
-        $carry4 = $f[4]->shiftRight(26);
306
-        $f[5] = $f[5]->addInt64($carry4);
307
-        $f[4] = $f[4]->subInt64($carry4->shiftLeft(26));
308
-
309
-        $carry5 = $f[5]->shiftRight(25);
310
-        $f[6] = $f[6]->addInt64($carry5);
311
-        $f[5] = $f[5]->subInt64($carry5->shiftLeft(25));
312
-
313
-        $carry6 = $f[6]->shiftRight(26);
314
-        $f[7] = $f[7]->addInt64($carry6);
315
-        $f[6] = $f[6]->subInt64($carry6->shiftLeft(26));
316
-
317
-        $carry7 = $f[7]->shiftRight(25);
318
-        $f[8] = $f[8]->addInt64($carry7);
319
-        $f[7] = $f[7]->subInt64($carry7->shiftLeft(25));
320
-
321
-        $carry8 = $f[8]->shiftRight(26);
322
-        $f[9] = $f[9]->addInt64($carry8);
323
-        $f[8] = $f[8]->subInt64($carry8->shiftLeft(26));
324
-
325
-        $carry9 = $f[9]->shiftRight(25);
326
-        $f[9] = $f[9]->subInt64($carry9->shiftLeft(25));
327
-
328
-        /** @var int $h0 */
329
-        $h0 = $f[0]->toInt32()->toInt();
330
-        /** @var int $h1 */
331
-        $h1 = $f[1]->toInt32()->toInt();
332
-        /** @var int $h2 */
333
-        $h2 = $f[2]->toInt32()->toInt();
334
-        /** @var int $h3 */
335
-        $h3 = $f[3]->toInt32()->toInt();
336
-        /** @var int $h4 */
337
-        $h4 = $f[4]->toInt32()->toInt();
338
-        /** @var int $h5 */
339
-        $h5 = $f[5]->toInt32()->toInt();
340
-        /** @var int $h6 */
341
-        $h6 = $f[6]->toInt32()->toInt();
342
-        /** @var int $h7 */
343
-        $h7 = $f[7]->toInt32()->toInt();
344
-        /** @var int $h8 */
345
-        $h8 = $f[8]->toInt32()->toInt();
346
-        /** @var int $h9 */
347
-        $h9 = $f[9]->toInt32()->toInt();
348
-
349
-        /**
350
-         * @var array<int, int>
351
-         */
352
-        $s = array(
353
-            (int) (($h0 >> 0) & 0xff),
354
-            (int) (($h0 >> 8) & 0xff),
355
-            (int) (($h0 >> 16) & 0xff),
356
-            (int) ((($h0 >> 24) | ($h1 << 2)) & 0xff),
357
-            (int) (($h1 >> 6) & 0xff),
358
-            (int) (($h1 >> 14) & 0xff),
359
-            (int) ((($h1 >> 22) | ($h2 << 3)) & 0xff),
360
-            (int) (($h2 >> 5) & 0xff),
361
-            (int) (($h2 >> 13) & 0xff),
362
-            (int) ((($h2 >> 21) | ($h3 << 5)) & 0xff),
363
-            (int) (($h3 >> 3) & 0xff),
364
-            (int) (($h3 >> 11) & 0xff),
365
-            (int) ((($h3 >> 19) | ($h4 << 6)) & 0xff),
366
-            (int) (($h4 >> 2) & 0xff),
367
-            (int) (($h4 >> 10) & 0xff),
368
-            (int) (($h4 >> 18) & 0xff),
369
-            (int) (($h5 >> 0) & 0xff),
370
-            (int) (($h5 >> 8) & 0xff),
371
-            (int) (($h5 >> 16) & 0xff),
372
-            (int) ((($h5 >> 24) | ($h6 << 1)) & 0xff),
373
-            (int) (($h6 >> 7) & 0xff),
374
-            (int) (($h6 >> 15) & 0xff),
375
-            (int) ((($h6 >> 23) | ($h7 << 3)) & 0xff),
376
-            (int) (($h7 >> 5) & 0xff),
377
-            (int) (($h7 >> 13) & 0xff),
378
-            (int) ((($h7 >> 21) | ($h8 << 4)) & 0xff),
379
-            (int) (($h8 >> 4) & 0xff),
380
-            (int) (($h8 >> 12) & 0xff),
381
-            (int) ((($h8 >> 20) | ($h9 << 6)) & 0xff),
382
-            (int) (($h9 >> 2) & 0xff),
383
-            (int) (($h9 >> 10) & 0xff),
384
-            (int) (($h9 >> 18) & 0xff)
385
-        );
386
-        return self::intArrayToString($s);
387
-    }
388
-
389
-    /**
390
-     * Is a field element negative? (1 = yes, 0 = no. Used in calculations.)
391
-     *
392
-     * @internal You should not use this directly from another application
393
-     *
394
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
395
-     * @return int
396
-     * @throws SodiumException
397
-     * @throws TypeError
398
-     */
399
-    public static function fe_isnegative(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
400
-    {
401
-        $str = self::fe_tobytes($f);
402
-        return (int) (self::chrToInt($str[0]) & 1);
403
-    }
404
-
405
-    /**
406
-     * Returns 0 if this field element results in all NUL bytes.
407
-     *
408
-     * @internal You should not use this directly from another application
409
-     *
410
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
411
-     * @return bool
412
-     * @throws SodiumException
413
-     * @throws TypeError
414
-     */
415
-    public static function fe_isnonzero(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
416
-    {
417
-        static $zero;
418
-        if ($zero === null) {
419
-            $zero = str_repeat("\x00", 32);
420
-        }
421
-        /** @var string $str */
422
-        $str = self::fe_tobytes($f);
423
-        /** @var string $zero */
424
-        return !self::verify_32($str, $zero);
425
-    }
426
-
427
-    /**
428
-     * Multiply two field elements
429
-     *
430
-     * h = f * g
431
-     *
432
-     * @internal You should not use this directly from another application
433
-     *
434
-     * @security Is multiplication a source of timing leaks? If so, can we do
435
-     *           anything to prevent that from happening?
436
-     *
437
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
438
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
439
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
440
-     * @throws SodiumException
441
-     * @throws TypeError
442
-     */
443
-    public static function fe_mul(
444
-        ParagonIE_Sodium_Core32_Curve25519_Fe $f,
445
-        ParagonIE_Sodium_Core32_Curve25519_Fe $g
446
-    ) {
447
-        /**
448
-         * @var ParagonIE_Sodium_Core32_Int32[] $f
449
-         * @var ParagonIE_Sodium_Core32_Int32[] $g
450
-         * @var ParagonIE_Sodium_Core32_Int64 $f0
451
-         * @var ParagonIE_Sodium_Core32_Int64 $f1
452
-         * @var ParagonIE_Sodium_Core32_Int64 $f2
453
-         * @var ParagonIE_Sodium_Core32_Int64 $f3
454
-         * @var ParagonIE_Sodium_Core32_Int64 $f4
455
-         * @var ParagonIE_Sodium_Core32_Int64 $f5
456
-         * @var ParagonIE_Sodium_Core32_Int64 $f6
457
-         * @var ParagonIE_Sodium_Core32_Int64 $f7
458
-         * @var ParagonIE_Sodium_Core32_Int64 $f8
459
-         * @var ParagonIE_Sodium_Core32_Int64 $f9
460
-         * @var ParagonIE_Sodium_Core32_Int64 $g0
461
-         * @var ParagonIE_Sodium_Core32_Int64 $g1
462
-         * @var ParagonIE_Sodium_Core32_Int64 $g2
463
-         * @var ParagonIE_Sodium_Core32_Int64 $g3
464
-         * @var ParagonIE_Sodium_Core32_Int64 $g4
465
-         * @var ParagonIE_Sodium_Core32_Int64 $g5
466
-         * @var ParagonIE_Sodium_Core32_Int64 $g6
467
-         * @var ParagonIE_Sodium_Core32_Int64 $g7
468
-         * @var ParagonIE_Sodium_Core32_Int64 $g8
469
-         * @var ParagonIE_Sodium_Core32_Int64 $g9
470
-         */
471
-        $f0 = $f[0]->toInt64();
472
-        $f1 = $f[1]->toInt64();
473
-        $f2 = $f[2]->toInt64();
474
-        $f3 = $f[3]->toInt64();
475
-        $f4 = $f[4]->toInt64();
476
-        $f5 = $f[5]->toInt64();
477
-        $f6 = $f[6]->toInt64();
478
-        $f7 = $f[7]->toInt64();
479
-        $f8 = $f[8]->toInt64();
480
-        $f9 = $f[9]->toInt64();
481
-        $g0 = $g[0]->toInt64();
482
-        $g1 = $g[1]->toInt64();
483
-        $g2 = $g[2]->toInt64();
484
-        $g3 = $g[3]->toInt64();
485
-        $g4 = $g[4]->toInt64();
486
-        $g5 = $g[5]->toInt64();
487
-        $g6 = $g[6]->toInt64();
488
-        $g7 = $g[7]->toInt64();
489
-        $g8 = $g[8]->toInt64();
490
-        $g9 = $g[9]->toInt64();
491
-        $g1_19 = $g1->mulInt(19, 5); /* 2^4 <= 19 <= 2^5, but we only want 5 bits */
492
-        $g2_19 = $g2->mulInt(19, 5);
493
-        $g3_19 = $g3->mulInt(19, 5);
494
-        $g4_19 = $g4->mulInt(19, 5);
495
-        $g5_19 = $g5->mulInt(19, 5);
496
-        $g6_19 = $g6->mulInt(19, 5);
497
-        $g7_19 = $g7->mulInt(19, 5);
498
-        $g8_19 = $g8->mulInt(19, 5);
499
-        $g9_19 = $g9->mulInt(19, 5);
500
-        /** @var ParagonIE_Sodium_Core32_Int64 $f1_2 */
501
-        $f1_2 = $f1->shiftLeft(1);
502
-        /** @var ParagonIE_Sodium_Core32_Int64 $f3_2 */
503
-        $f3_2 = $f3->shiftLeft(1);
504
-        /** @var ParagonIE_Sodium_Core32_Int64 $f5_2 */
505
-        $f5_2 = $f5->shiftLeft(1);
506
-        /** @var ParagonIE_Sodium_Core32_Int64 $f7_2 */
507
-        $f7_2 = $f7->shiftLeft(1);
508
-        /** @var ParagonIE_Sodium_Core32_Int64 $f9_2 */
509
-        $f9_2 = $f9->shiftLeft(1);
510
-        $f0g0    = $f0->mulInt64($g0, 27);
511
-        $f0g1    = $f0->mulInt64($g1, 27);
512
-        $f0g2    = $f0->mulInt64($g2, 27);
513
-        $f0g3    = $f0->mulInt64($g3, 27);
514
-        $f0g4    = $f0->mulInt64($g4, 27);
515
-        $f0g5    = $f0->mulInt64($g5, 27);
516
-        $f0g6    = $f0->mulInt64($g6, 27);
517
-        $f0g7    = $f0->mulInt64($g7, 27);
518
-        $f0g8    = $f0->mulInt64($g8, 27);
519
-        $f0g9    = $f0->mulInt64($g9, 27);
520
-        $f1g0    = $f1->mulInt64($g0, 27);
521
-        $f1g1_2  = $f1_2->mulInt64($g1, 27);
522
-        $f1g2    = $f1->mulInt64($g2, 27);
523
-        $f1g3_2  = $f1_2->mulInt64($g3, 27);
524
-        $f1g4    = $f1->mulInt64($g4, 30);
525
-        $f1g5_2  = $f1_2->mulInt64($g5, 30);
526
-        $f1g6    = $f1->mulInt64($g6, 30);
527
-        $f1g7_2  = $f1_2->mulInt64($g7, 30);
528
-        $f1g8    = $f1->mulInt64($g8, 30);
529
-        $f1g9_38 = $g9_19->mulInt64($f1_2, 30);
530
-        $f2g0    = $f2->mulInt64($g0, 30);
531
-        $f2g1    = $f2->mulInt64($g1, 29);
532
-        $f2g2    = $f2->mulInt64($g2, 30);
533
-        $f2g3    = $f2->mulInt64($g3, 29);
534
-        $f2g4    = $f2->mulInt64($g4, 30);
535
-        $f2g5    = $f2->mulInt64($g5, 29);
536
-        $f2g6    = $f2->mulInt64($g6, 30);
537
-        $f2g7    = $f2->mulInt64($g7, 29);
538
-        $f2g8_19 = $g8_19->mulInt64($f2, 30);
539
-        $f2g9_19 = $g9_19->mulInt64($f2, 30);
540
-        $f3g0    = $f3->mulInt64($g0, 30);
541
-        $f3g1_2  = $f3_2->mulInt64($g1, 30);
542
-        $f3g2    = $f3->mulInt64($g2, 30);
543
-        $f3g3_2  = $f3_2->mulInt64($g3, 30);
544
-        $f3g4    = $f3->mulInt64($g4, 30);
545
-        $f3g5_2  = $f3_2->mulInt64($g5, 30);
546
-        $f3g6    = $f3->mulInt64($g6, 30);
547
-        $f3g7_38 = $g7_19->mulInt64($f3_2, 30);
548
-        $f3g8_19 = $g8_19->mulInt64($f3, 30);
549
-        $f3g9_38 = $g9_19->mulInt64($f3_2, 30);
550
-        $f4g0    = $f4->mulInt64($g0, 30);
551
-        $f4g1    = $f4->mulInt64($g1, 30);
552
-        $f4g2    = $f4->mulInt64($g2, 30);
553
-        $f4g3    = $f4->mulInt64($g3, 30);
554
-        $f4g4    = $f4->mulInt64($g4, 30);
555
-        $f4g5    = $f4->mulInt64($g5, 30);
556
-        $f4g6_19 = $g6_19->mulInt64($f4, 30);
557
-        $f4g7_19 = $g7_19->mulInt64($f4, 30);
558
-        $f4g8_19 = $g8_19->mulInt64($f4, 30);
559
-        $f4g9_19 = $g9_19->mulInt64($f4, 30);
560
-        $f5g0    = $f5->mulInt64($g0, 30);
561
-        $f5g1_2  = $f5_2->mulInt64($g1, 30);
562
-        $f5g2    = $f5->mulInt64($g2, 30);
563
-        $f5g3_2  = $f5_2->mulInt64($g3, 30);
564
-        $f5g4    = $f5->mulInt64($g4, 30);
565
-        $f5g5_38 = $g5_19->mulInt64($f5_2, 30);
566
-        $f5g6_19 = $g6_19->mulInt64($f5, 30);
567
-        $f5g7_38 = $g7_19->mulInt64($f5_2, 30);
568
-        $f5g8_19 = $g8_19->mulInt64($f5, 30);
569
-        $f5g9_38 = $g9_19->mulInt64($f5_2, 30);
570
-        $f6g0    = $f6->mulInt64($g0, 30);
571
-        $f6g1    = $f6->mulInt64($g1, 30);
572
-        $f6g2    = $f6->mulInt64($g2, 30);
573
-        $f6g3    = $f6->mulInt64($g3, 30);
574
-        $f6g4_19 = $g4_19->mulInt64($f6, 30);
575
-        $f6g5_19 = $g5_19->mulInt64($f6, 30);
576
-        $f6g6_19 = $g6_19->mulInt64($f6, 30);
577
-        $f6g7_19 = $g7_19->mulInt64($f6, 30);
578
-        $f6g8_19 = $g8_19->mulInt64($f6, 30);
579
-        $f6g9_19 = $g9_19->mulInt64($f6, 30);
580
-        $f7g0    = $f7->mulInt64($g0, 30);
581
-        $f7g1_2  = $g1->mulInt64($f7_2, 30);
582
-        $f7g2    = $f7->mulInt64($g2, 30);
583
-        $f7g3_38 = $g3_19->mulInt64($f7_2, 30);
584
-        $f7g4_19 = $g4_19->mulInt64($f7, 30);
585
-        $f7g5_38 = $g5_19->mulInt64($f7_2, 30);
586
-        $f7g6_19 = $g6_19->mulInt64($f7, 30);
587
-        $f7g7_38 = $g7_19->mulInt64($f7_2, 30);
588
-        $f7g8_19 = $g8_19->mulInt64($f7, 30);
589
-        $f7g9_38 = $g9_19->mulInt64($f7_2, 30);
590
-        $f8g0    = $f8->mulInt64($g0, 30);
591
-        $f8g1    = $f8->mulInt64($g1, 29);
592
-        $f8g2_19 = $g2_19->mulInt64($f8, 30);
593
-        $f8g3_19 = $g3_19->mulInt64($f8, 30);
594
-        $f8g4_19 = $g4_19->mulInt64($f8, 30);
595
-        $f8g5_19 = $g5_19->mulInt64($f8, 30);
596
-        $f8g6_19 = $g6_19->mulInt64($f8, 30);
597
-        $f8g7_19 = $g7_19->mulInt64($f8, 30);
598
-        $f8g8_19 = $g8_19->mulInt64($f8, 30);
599
-        $f8g9_19 = $g9_19->mulInt64($f8, 30);
600
-        $f9g0    = $f9->mulInt64($g0, 30);
601
-        $f9g1_38 = $g1_19->mulInt64($f9_2, 30);
602
-        $f9g2_19 = $g2_19->mulInt64($f9, 30);
603
-        $f9g3_38 = $g3_19->mulInt64($f9_2, 30);
604
-        $f9g4_19 = $g4_19->mulInt64($f9, 30);
605
-        $f9g5_38 = $g5_19->mulInt64($f9_2, 30);
606
-        $f9g6_19 = $g6_19->mulInt64($f9, 30);
607
-        $f9g7_38 = $g7_19->mulInt64($f9_2, 30);
608
-        $f9g8_19 = $g8_19->mulInt64($f9, 30);
609
-        $f9g9_38 = $g9_19->mulInt64($f9_2, 30);
610
-
611
-        // $h0 = $f0g0 + $f1g9_38 + $f2g8_19 + $f3g7_38 + $f4g6_19 + $f5g5_38 + $f6g4_19 + $f7g3_38 + $f8g2_19 + $f9g1_38;
612
-        $h0 = $f0g0->addInt64($f1g9_38)->addInt64($f2g8_19)->addInt64($f3g7_38)
613
-            ->addInt64($f4g6_19)->addInt64($f5g5_38)->addInt64($f6g4_19)
614
-            ->addInt64($f7g3_38)->addInt64($f8g2_19)->addInt64($f9g1_38);
615
-
616
-        // $h1 = $f0g1 + $f1g0    + $f2g9_19 + $f3g8_19 + $f4g7_19 + $f5g6_19 + $f6g5_19 + $f7g4_19 + $f8g3_19 + $f9g2_19;
617
-        $h1 = $f0g1->addInt64($f1g0)->addInt64($f2g9_19)->addInt64($f3g8_19)
618
-            ->addInt64($f4g7_19)->addInt64($f5g6_19)->addInt64($f6g5_19)
619
-            ->addInt64($f7g4_19)->addInt64($f8g3_19)->addInt64($f9g2_19);
620
-
621
-        // $h2 = $f0g2 + $f1g1_2  + $f2g0    + $f3g9_38 + $f4g8_19 + $f5g7_38 + $f6g6_19 + $f7g5_38 + $f8g4_19 + $f9g3_38;
622
-        $h2 = $f0g2->addInt64($f1g1_2)->addInt64($f2g0)->addInt64($f3g9_38)
623
-            ->addInt64($f4g8_19)->addInt64($f5g7_38)->addInt64($f6g6_19)
624
-            ->addInt64($f7g5_38)->addInt64($f8g4_19)->addInt64($f9g3_38);
625
-
626
-        // $h3 = $f0g3 + $f1g2    + $f2g1    + $f3g0    + $f4g9_19 + $f5g8_19 + $f6g7_19 + $f7g6_19 + $f8g5_19 + $f9g4_19;
627
-        $h3 = $f0g3->addInt64($f1g2)->addInt64($f2g1)->addInt64($f3g0)
628
-            ->addInt64($f4g9_19)->addInt64($f5g8_19)->addInt64($f6g7_19)
629
-            ->addInt64($f7g6_19)->addInt64($f8g5_19)->addInt64($f9g4_19);
630
-
631
-        // $h4 = $f0g4 + $f1g3_2  + $f2g2    + $f3g1_2  + $f4g0    + $f5g9_38 + $f6g8_19 + $f7g7_38 + $f8g6_19 + $f9g5_38;
632
-        $h4 = $f0g4->addInt64($f1g3_2)->addInt64($f2g2)->addInt64($f3g1_2)
633
-            ->addInt64($f4g0)->addInt64($f5g9_38)->addInt64($f6g8_19)
634
-            ->addInt64($f7g7_38)->addInt64($f8g6_19)->addInt64($f9g5_38);
635
-
636
-        // $h5 = $f0g5 + $f1g4    + $f2g3    + $f3g2    + $f4g1    + $f5g0    + $f6g9_19 + $f7g8_19 + $f8g7_19 + $f9g6_19;
637
-        $h5 = $f0g5->addInt64($f1g4)->addInt64($f2g3)->addInt64($f3g2)
638
-            ->addInt64($f4g1)->addInt64($f5g0)->addInt64($f6g9_19)
639
-            ->addInt64($f7g8_19)->addInt64($f8g7_19)->addInt64($f9g6_19);
640
-
641
-        // $h6 = $f0g6 + $f1g5_2  + $f2g4    + $f3g3_2  + $f4g2    + $f5g1_2  + $f6g0    + $f7g9_38 + $f8g8_19 + $f9g7_38;
642
-        $h6 = $f0g6->addInt64($f1g5_2)->addInt64($f2g4)->addInt64($f3g3_2)
643
-            ->addInt64($f4g2)->addInt64($f5g1_2)->addInt64($f6g0)
644
-            ->addInt64($f7g9_38)->addInt64($f8g8_19)->addInt64($f9g7_38);
645
-
646
-        // $h7 = $f0g7 + $f1g6    + $f2g5    + $f3g4    + $f4g3    + $f5g2    + $f6g1    + $f7g0    + $f8g9_19 + $f9g8_19;
647
-        $h7 = $f0g7->addInt64($f1g6)->addInt64($f2g5)->addInt64($f3g4)
648
-            ->addInt64($f4g3)->addInt64($f5g2)->addInt64($f6g1)
649
-            ->addInt64($f7g0)->addInt64($f8g9_19)->addInt64($f9g8_19);
650
-
651
-        // $h8 = $f0g8 + $f1g7_2  + $f2g6    + $f3g5_2  + $f4g4    + $f5g3_2  + $f6g2    + $f7g1_2  + $f8g0    + $f9g9_38;
652
-        $h8 = $f0g8->addInt64($f1g7_2)->addInt64($f2g6)->addInt64($f3g5_2)
653
-            ->addInt64($f4g4)->addInt64($f5g3_2)->addInt64($f6g2)
654
-            ->addInt64($f7g1_2)->addInt64($f8g0)->addInt64($f9g9_38);
655
-
656
-        // $h9 = $f0g9 + $f1g8    + $f2g7    + $f3g6    + $f4g5    + $f5g4    + $f6g3    + $f7g2    + $f8g1    + $f9g0   ;
657
-        $h9 = $f0g9->addInt64($f1g8)->addInt64($f2g7)->addInt64($f3g6)
658
-            ->addInt64($f4g5)->addInt64($f5g4)->addInt64($f6g3)
659
-            ->addInt64($f7g2)->addInt64($f8g1)->addInt64($f9g0);
660
-
661
-        /**
662
-         * @var ParagonIE_Sodium_Core32_Int64 $h0
663
-         * @var ParagonIE_Sodium_Core32_Int64 $h1
664
-         * @var ParagonIE_Sodium_Core32_Int64 $h2
665
-         * @var ParagonIE_Sodium_Core32_Int64 $h3
666
-         * @var ParagonIE_Sodium_Core32_Int64 $h4
667
-         * @var ParagonIE_Sodium_Core32_Int64 $h5
668
-         * @var ParagonIE_Sodium_Core32_Int64 $h6
669
-         * @var ParagonIE_Sodium_Core32_Int64 $h7
670
-         * @var ParagonIE_Sodium_Core32_Int64 $h8
671
-         * @var ParagonIE_Sodium_Core32_Int64 $h9
672
-         * @var ParagonIE_Sodium_Core32_Int64 $carry0
673
-         * @var ParagonIE_Sodium_Core32_Int64 $carry1
674
-         * @var ParagonIE_Sodium_Core32_Int64 $carry2
675
-         * @var ParagonIE_Sodium_Core32_Int64 $carry3
676
-         * @var ParagonIE_Sodium_Core32_Int64 $carry4
677
-         * @var ParagonIE_Sodium_Core32_Int64 $carry5
678
-         * @var ParagonIE_Sodium_Core32_Int64 $carry6
679
-         * @var ParagonIE_Sodium_Core32_Int64 $carry7
680
-         * @var ParagonIE_Sodium_Core32_Int64 $carry8
681
-         * @var ParagonIE_Sodium_Core32_Int64 $carry9
682
-         */
683
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
684
-        $h1 = $h1->addInt64($carry0);
685
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
686
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
687
-        $h5 = $h5->addInt64($carry4);
688
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
689
-
690
-        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
691
-        $h2 = $h2->addInt64($carry1);
692
-        $h1 = $h1->subInt64($carry1->shiftLeft(25));
693
-        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
694
-        $h6 = $h6->addInt64($carry5);
695
-        $h5 = $h5->subInt64($carry5->shiftLeft(25));
696
-
697
-        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
698
-        $h3 = $h3->addInt64($carry2);
699
-        $h2 = $h2->subInt64($carry2->shiftLeft(26));
700
-        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
701
-        $h7 = $h7->addInt64($carry6);
702
-        $h6 = $h6->subInt64($carry6->shiftLeft(26));
703
-
704
-        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
705
-        $h4 = $h4->addInt64($carry3);
706
-        $h3 = $h3->subInt64($carry3->shiftLeft(25));
707
-        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
708
-        $h8 = $h8->addInt64($carry7);
709
-        $h7 = $h7->subInt64($carry7->shiftLeft(25));
710
-
711
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
712
-        $h5 = $h5->addInt64($carry4);
713
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
714
-        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
715
-        $h9 = $h9->addInt64($carry8);
716
-        $h8 = $h8->subInt64($carry8->shiftLeft(26));
717
-
718
-        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
719
-        $h0 = $h0->addInt64($carry9->mulInt(19, 5));
720
-        $h9 = $h9->subInt64($carry9->shiftLeft(25));
721
-
722
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
723
-        $h1 = $h1->addInt64($carry0);
724
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
725
-
726
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
727
-            array(
728
-                $h0->toInt32(),
729
-                $h1->toInt32(),
730
-                $h2->toInt32(),
731
-                $h3->toInt32(),
732
-                $h4->toInt32(),
733
-                $h5->toInt32(),
734
-                $h6->toInt32(),
735
-                $h7->toInt32(),
736
-                $h8->toInt32(),
737
-                $h9->toInt32()
738
-            )
739
-        );
740
-    }
741
-
742
-    /**
743
-     * Get the negative values for each piece of the field element.
744
-     *
745
-     * h = -f
746
-     *
747
-     * @internal You should not use this directly from another application
748
-     *
749
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
750
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
751
-     * @psalm-suppress MixedAssignment
752
-     * @psalm-suppress MixedMethodCall
753
-     */
754
-    public static function fe_neg(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
755
-    {
756
-        $h = new ParagonIE_Sodium_Core32_Curve25519_Fe();
757
-        for ($i = 0; $i < 10; ++$i) {
758
-            $h[$i] = $h[$i]->subInt32($f[$i]);
759
-        }
760
-        return $h;
761
-    }
762
-
763
-    /**
764
-     * Square a field element
765
-     *
766
-     * h = f * f
767
-     *
768
-     * @internal You should not use this directly from another application
769
-     *
770
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
771
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
772
-     * @throws SodiumException
773
-     * @throws TypeError
774
-     * @psalm-suppress MixedMethodCall
775
-     */
776
-    public static function fe_sq(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
777
-    {
778
-        /** @var ParagonIE_Sodium_Core32_Int64 $f0 */
779
-        $f0 = $f[0]->toInt64();
780
-        /** @var ParagonIE_Sodium_Core32_Int64 $f1 */
781
-        $f1 = $f[1]->toInt64();
782
-        /** @var ParagonIE_Sodium_Core32_Int64 $f2 */
783
-        $f2 = $f[2]->toInt64();
784
-        /** @var ParagonIE_Sodium_Core32_Int64 $f3 */
785
-        $f3 = $f[3]->toInt64();
786
-        /** @var ParagonIE_Sodium_Core32_Int64 $f4 */
787
-        $f4 = $f[4]->toInt64();
788
-        /** @var ParagonIE_Sodium_Core32_Int64 $f5 */
789
-        $f5 = $f[5]->toInt64();
790
-        /** @var ParagonIE_Sodium_Core32_Int64 $f6 */
791
-        $f6 = $f[6]->toInt64();
792
-        /** @var ParagonIE_Sodium_Core32_Int64 $f7 */
793
-        $f7 = $f[7]->toInt64();
794
-        /** @var ParagonIE_Sodium_Core32_Int64 $f8 */
795
-        $f8 = $f[8]->toInt64();
796
-        /** @var ParagonIE_Sodium_Core32_Int64 $f9 */
797
-        $f9 = $f[9]->toInt64();
798
-
799
-        /** @var ParagonIE_Sodium_Core32_Int64 $f0_2 */
800
-        $f0_2 = $f0->shiftLeft(1);
801
-        $f1_2 = $f1->shiftLeft(1);
802
-        $f2_2 = $f2->shiftLeft(1);
803
-        $f3_2 = $f3->shiftLeft(1);
804
-        $f4_2 = $f4->shiftLeft(1);
805
-        $f5_2 = $f5->shiftLeft(1);
806
-        $f6_2 = $f6->shiftLeft(1);
807
-        $f7_2 = $f7->shiftLeft(1);
808
-        $f5_38 = $f5->mulInt(38, 6);
809
-        $f6_19 = $f6->mulInt(19, 5);
810
-        $f7_38 = $f7->mulInt(38, 6);
811
-        $f8_19 = $f8->mulInt(19, 5);
812
-        $f9_38 = $f9->mulInt(38, 6);
813
-        /** @var ParagonIE_Sodium_Core32_Int64 $f0f0*/
814
-        $f0f0    = $f0->mulInt64($f0, 28);
815
-        $f0f1_2  = $f0_2->mulInt64($f1, 28);
816
-        $f0f2_2 =  $f0_2->mulInt64($f2, 28);
817
-        $f0f3_2 =  $f0_2->mulInt64($f3, 28);
818
-        $f0f4_2 =  $f0_2->mulInt64($f4, 28);
819
-        $f0f5_2 =  $f0_2->mulInt64($f5, 28);
820
-        $f0f6_2 =  $f0_2->mulInt64($f6, 28);
821
-        $f0f7_2 =  $f0_2->mulInt64($f7, 28);
822
-        $f0f8_2 =  $f0_2->mulInt64($f8, 28);
823
-        $f0f9_2 =  $f0_2->mulInt64($f9, 28);
824
-
825
-        $f1f1_2 = $f1_2->mulInt64($f1, 28);
826
-        $f1f2_2 = $f1_2->mulInt64($f2, 28);
827
-        $f1f3_4 = $f1_2->mulInt64($f3_2, 28);
828
-        $f1f4_2 = $f1_2->mulInt64($f4, 28);
829
-        $f1f5_4 = $f1_2->mulInt64($f5_2, 30);
830
-        $f1f6_2 = $f1_2->mulInt64($f6, 28);
831
-        $f1f7_4 = $f1_2->mulInt64($f7_2, 28);
832
-        $f1f8_2 = $f1_2->mulInt64($f8, 28);
833
-        $f1f9_76 = $f9_38->mulInt64($f1_2, 30);
834
-
835
-        $f2f2 = $f2->mulInt64($f2, 28);
836
-        $f2f3_2 = $f2_2->mulInt64($f3, 28);
837
-        $f2f4_2 = $f2_2->mulInt64($f4, 28);
838
-        $f2f5_2 = $f2_2->mulInt64($f5, 28);
839
-        $f2f6_2 = $f2_2->mulInt64($f6, 28);
840
-        $f2f7_2 = $f2_2->mulInt64($f7, 28);
841
-        $f2f8_38 = $f8_19->mulInt64($f2_2, 30);
842
-        $f2f9_38 = $f9_38->mulInt64($f2, 30);
843
-
844
-        $f3f3_2 = $f3_2->mulInt64($f3, 28);
845
-        $f3f4_2 = $f3_2->mulInt64($f4, 28);
846
-        $f3f5_4 = $f3_2->mulInt64($f5_2, 30);
847
-        $f3f6_2 = $f3_2->mulInt64($f6, 28);
848
-        $f3f7_76 = $f7_38->mulInt64($f3_2, 30);
849
-        $f3f8_38 = $f8_19->mulInt64($f3_2, 30);
850
-        $f3f9_76 = $f9_38->mulInt64($f3_2, 30);
851
-
852
-        $f4f4 = $f4->mulInt64($f4, 28);
853
-        $f4f5_2 = $f4_2->mulInt64($f5, 28);
854
-        $f4f6_38 = $f6_19->mulInt64($f4_2, 30);
855
-        $f4f7_38 = $f7_38->mulInt64($f4, 30);
856
-        $f4f8_38 = $f8_19->mulInt64($f4_2, 30);
857
-        $f4f9_38 = $f9_38->mulInt64($f4, 30);
858
-
859
-        $f5f5_38 = $f5_38->mulInt64($f5, 30);
860
-        $f5f6_38 = $f6_19->mulInt64($f5_2, 30);
861
-        $f5f7_76 = $f7_38->mulInt64($f5_2, 30);
862
-        $f5f8_38 = $f8_19->mulInt64($f5_2, 30);
863
-        $f5f9_76 = $f9_38->mulInt64($f5_2, 30);
864
-
865
-        $f6f6_19 = $f6_19->mulInt64($f6, 30);
866
-        $f6f7_38 = $f7_38->mulInt64($f6, 30);
867
-        $f6f8_38 = $f8_19->mulInt64($f6_2, 30);
868
-        $f6f9_38 = $f9_38->mulInt64($f6, 30);
869
-
870
-        $f7f7_38 = $f7_38->mulInt64($f7, 28);
871
-        $f7f8_38 = $f8_19->mulInt64($f7_2, 30);
872
-        $f7f9_76 = $f9_38->mulInt64($f7_2, 30);
873
-
874
-        $f8f8_19 = $f8_19->mulInt64($f8, 30);
875
-        $f8f9_38 = $f9_38->mulInt64($f8, 30);
876
-
877
-        $f9f9_38 = $f9_38->mulInt64($f9, 28);
878
-
879
-        $h0 = $f0f0->addInt64($f1f9_76)->addInt64($f2f8_38)->addInt64($f3f7_76)->addInt64($f4f6_38)->addInt64($f5f5_38);
880
-        $h1 = $f0f1_2->addInt64($f2f9_38)->addInt64($f3f8_38)->addInt64($f4f7_38)->addInt64($f5f6_38);
881
-        $h2 = $f0f2_2->addInt64($f1f1_2)->addInt64($f3f9_76)->addInt64($f4f8_38)->addInt64($f5f7_76)->addInt64($f6f6_19);
882
-        $h3 = $f0f3_2->addInt64($f1f2_2)->addInt64($f4f9_38)->addInt64($f5f8_38)->addInt64($f6f7_38);
883
-        $h4 = $f0f4_2->addInt64($f1f3_4)->addInt64($f2f2)->addInt64($f5f9_76)->addInt64($f6f8_38)->addInt64($f7f7_38);
884
-        $h5 = $f0f5_2->addInt64($f1f4_2)->addInt64($f2f3_2)->addInt64($f6f9_38)->addInt64($f7f8_38);
885
-        $h6 = $f0f6_2->addInt64($f1f5_4)->addInt64($f2f4_2)->addInt64($f3f3_2)->addInt64($f7f9_76)->addInt64($f8f8_19);
886
-        $h7 = $f0f7_2->addInt64($f1f6_2)->addInt64($f2f5_2)->addInt64($f3f4_2)->addInt64($f8f9_38);
887
-        $h8 = $f0f8_2->addInt64($f1f7_4)->addInt64($f2f6_2)->addInt64($f3f5_4)->addInt64($f4f4)->addInt64($f9f9_38);
888
-        $h9 = $f0f9_2->addInt64($f1f8_2)->addInt64($f2f7_2)->addInt64($f3f6_2)->addInt64($f4f5_2);
889
-
890
-        /**
891
-         * @var ParagonIE_Sodium_Core32_Int64 $h0
892
-         * @var ParagonIE_Sodium_Core32_Int64 $h1
893
-         * @var ParagonIE_Sodium_Core32_Int64 $h2
894
-         * @var ParagonIE_Sodium_Core32_Int64 $h3
895
-         * @var ParagonIE_Sodium_Core32_Int64 $h4
896
-         * @var ParagonIE_Sodium_Core32_Int64 $h5
897
-         * @var ParagonIE_Sodium_Core32_Int64 $h6
898
-         * @var ParagonIE_Sodium_Core32_Int64 $h7
899
-         * @var ParagonIE_Sodium_Core32_Int64 $h8
900
-         * @var ParagonIE_Sodium_Core32_Int64 $h9
901
-         */
902
-
903
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
904
-        $h1 = $h1->addInt64($carry0);
905
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
906
-
907
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
908
-        $h5 = $h5->addInt64($carry4);
909
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
910
-
911
-        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
912
-        $h2 = $h2->addInt64($carry1);
913
-        $h1 = $h1->subInt64($carry1->shiftLeft(25));
914
-
915
-        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
916
-        $h6 = $h6->addInt64($carry5);
917
-        $h5 = $h5->subInt64($carry5->shiftLeft(25));
918
-
919
-        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
920
-        $h3 = $h3->addInt64($carry2);
921
-        $h2 = $h2->subInt64($carry2->shiftLeft(26));
922
-
923
-        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
924
-        $h7 = $h7->addInt64($carry6);
925
-        $h6 = $h6->subInt64($carry6->shiftLeft(26));
926
-
927
-        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
928
-        $h4 = $h4->addInt64($carry3);
929
-        $h3 = $h3->subInt64($carry3->shiftLeft(25));
930
-
931
-        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
932
-        $h8 = $h8->addInt64($carry7);
933
-        $h7 = $h7->subInt64($carry7->shiftLeft(25));
934
-
935
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
936
-        $h5 = $h5->addInt64($carry4);
937
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
938
-
939
-        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
940
-        $h9 = $h9->addInt64($carry8);
941
-        $h8 = $h8->subInt64($carry8->shiftLeft(26));
942
-
943
-        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
944
-        $h0 = $h0->addInt64($carry9->mulInt(19, 5));
945
-        $h9 = $h9->subInt64($carry9->shiftLeft(25));
946
-
947
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
948
-        $h1 = $h1->addInt64($carry0);
949
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
950
-
951
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
952
-            array(
953
-                $h0->toInt32(),
954
-                $h1->toInt32(),
955
-                $h2->toInt32(),
956
-                $h3->toInt32(),
957
-                $h4->toInt32(),
958
-                $h5->toInt32(),
959
-                $h6->toInt32(),
960
-                $h7->toInt32(),
961
-                $h8->toInt32(),
962
-                $h9->toInt32()
963
-            )
964
-        );
965
-    }
966
-
967
-    /**
968
-     * Square and double a field element
969
-     *
970
-     * h = 2 * f * f
971
-     *
972
-     * @internal You should not use this directly from another application
973
-     *
974
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
975
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
976
-     * @throws SodiumException
977
-     * @throws TypeError
978
-     * @psalm-suppress MixedMethodCall
979
-     */
980
-    public static function fe_sq2(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
981
-    {
982
-        /** @var ParagonIE_Sodium_Core32_Int64 $f0 */
983
-        $f0 = $f[0]->toInt64();
984
-        /** @var ParagonIE_Sodium_Core32_Int64 $f1 */
985
-        $f1 = $f[1]->toInt64();
986
-        /** @var ParagonIE_Sodium_Core32_Int64 $f2 */
987
-        $f2 = $f[2]->toInt64();
988
-        /** @var ParagonIE_Sodium_Core32_Int64 $f3 */
989
-        $f3 = $f[3]->toInt64();
990
-        /** @var ParagonIE_Sodium_Core32_Int64 $f4 */
991
-        $f4 = $f[4]->toInt64();
992
-        /** @var ParagonIE_Sodium_Core32_Int64 $f5 */
993
-        $f5 = $f[5]->toInt64();
994
-        /** @var ParagonIE_Sodium_Core32_Int64 $f6 */
995
-        $f6 = $f[6]->toInt64();
996
-        /** @var ParagonIE_Sodium_Core32_Int64 $f7 */
997
-        $f7 = $f[7]->toInt64();
998
-        /** @var ParagonIE_Sodium_Core32_Int64 $f8 */
999
-        $f8 = $f[8]->toInt64();
1000
-        /** @var ParagonIE_Sodium_Core32_Int64 $f9 */
1001
-        $f9 = $f[9]->toInt64();
1002
-
1003
-        $f0_2 = $f0->shiftLeft(1);
1004
-        $f1_2 = $f1->shiftLeft(1);
1005
-        $f2_2 = $f2->shiftLeft(1);
1006
-        $f3_2 = $f3->shiftLeft(1);
1007
-        $f4_2 = $f4->shiftLeft(1);
1008
-        $f5_2 = $f5->shiftLeft(1);
1009
-        $f6_2 = $f6->shiftLeft(1);
1010
-        $f7_2 = $f7->shiftLeft(1);
1011
-        $f5_38 = $f5->mulInt(38, 6); /* 1.959375*2^30 */
1012
-        $f6_19 = $f6->mulInt(19, 5); /* 1.959375*2^30 */
1013
-        $f7_38 = $f7->mulInt(38, 6); /* 1.959375*2^30 */
1014
-        $f8_19 = $f8->mulInt(19, 5); /* 1.959375*2^30 */
1015
-        $f9_38 = $f9->mulInt(38, 6); /* 1.959375*2^30 */
1016
-        $f0f0 = $f0->mulInt64($f0, 28);
1017
-        $f0f1_2 = $f0_2->mulInt64($f1, 28);
1018
-        $f0f2_2 = $f0_2->mulInt64($f2, 28);
1019
-        $f0f3_2 = $f0_2->mulInt64($f3, 28);
1020
-        $f0f4_2 = $f0_2->mulInt64($f4, 28);
1021
-        $f0f5_2 = $f0_2->mulInt64($f5, 28);
1022
-        $f0f6_2 = $f0_2->mulInt64($f6, 28);
1023
-        $f0f7_2 = $f0_2->mulInt64($f7, 28);
1024
-        $f0f8_2 = $f0_2->mulInt64($f8, 28);
1025
-        $f0f9_2 = $f0_2->mulInt64($f9, 28);
1026
-        $f1f1_2 = $f1_2->mulInt64($f1, 28);
1027
-        $f1f2_2 = $f1_2->mulInt64($f2, 28);
1028
-        $f1f3_4 = $f1_2->mulInt64($f3_2, 29);
1029
-        $f1f4_2 = $f1_2->mulInt64($f4, 28);
1030
-        $f1f5_4 = $f1_2->mulInt64($f5_2, 29);
1031
-        $f1f6_2 = $f1_2->mulInt64($f6, 28);
1032
-        $f1f7_4 = $f1_2->mulInt64($f7_2, 29);
1033
-        $f1f8_2 = $f1_2->mulInt64($f8, 28);
1034
-        $f1f9_76 = $f9_38->mulInt64($f1_2, 29);
1035
-        $f2f2 = $f2->mulInt64($f2, 28);
1036
-        $f2f3_2 = $f2_2->mulInt64($f3, 28);
1037
-        $f2f4_2 = $f2_2->mulInt64($f4, 28);
1038
-        $f2f5_2 = $f2_2->mulInt64($f5, 28);
1039
-        $f2f6_2 = $f2_2->mulInt64($f6, 28);
1040
-        $f2f7_2 = $f2_2->mulInt64($f7, 28);
1041
-        $f2f8_38 = $f8_19->mulInt64($f2_2, 29);
1042
-        $f2f9_38 = $f9_38->mulInt64($f2, 29);
1043
-        $f3f3_2 = $f3_2->mulInt64($f3, 28);
1044
-        $f3f4_2 = $f3_2->mulInt64($f4, 28);
1045
-        $f3f5_4 = $f3_2->mulInt64($f5_2, 28);
1046
-        $f3f6_2 = $f3_2->mulInt64($f6, 28);
1047
-        $f3f7_76 = $f7_38->mulInt64($f3_2, 29);
1048
-        $f3f8_38 = $f8_19->mulInt64($f3_2, 29);
1049
-        $f3f9_76 = $f9_38->mulInt64($f3_2, 29);
1050
-        $f4f4 = $f4->mulInt64($f4, 28);
1051
-        $f4f5_2 = $f4_2->mulInt64($f5, 28);
1052
-        $f4f6_38 = $f6_19->mulInt64($f4_2, 29);
1053
-        $f4f7_38 = $f7_38->mulInt64($f4, 29);
1054
-        $f4f8_38 = $f8_19->mulInt64($f4_2, 29);
1055
-        $f4f9_38 = $f9_38->mulInt64($f4, 29);
1056
-        $f5f5_38 = $f5_38->mulInt64($f5, 29);
1057
-        $f5f6_38 = $f6_19->mulInt64($f5_2, 29);
1058
-        $f5f7_76 = $f7_38->mulInt64($f5_2, 29);
1059
-        $f5f8_38 = $f8_19->mulInt64($f5_2, 29);
1060
-        $f5f9_76 = $f9_38->mulInt64($f5_2, 29);
1061
-        $f6f6_19 = $f6_19->mulInt64($f6, 29);
1062
-        $f6f7_38 = $f7_38->mulInt64($f6, 29);
1063
-        $f6f8_38 = $f8_19->mulInt64($f6_2, 29);
1064
-        $f6f9_38 = $f9_38->mulInt64($f6, 29);
1065
-        $f7f7_38 = $f7_38->mulInt64($f7, 29);
1066
-        $f7f8_38 = $f8_19->mulInt64($f7_2, 29);
1067
-        $f7f9_76 = $f9_38->mulInt64($f7_2, 29);
1068
-        $f8f8_19 = $f8_19->mulInt64($f8, 29);
1069
-        $f8f9_38 = $f9_38->mulInt64($f8, 29);
1070
-        $f9f9_38 = $f9_38->mulInt64($f9, 29);
1071
-
1072
-        $h0 = $f0f0->addInt64($f1f9_76)->addInt64($f2f8_38)->addInt64($f3f7_76)->addInt64($f4f6_38)->addInt64($f5f5_38);
1073
-        $h1 = $f0f1_2->addInt64($f2f9_38)->addInt64($f3f8_38)->addInt64($f4f7_38)->addInt64($f5f6_38);
1074
-        $h2 = $f0f2_2->addInt64($f1f1_2)->addInt64($f3f9_76)->addInt64($f4f8_38)->addInt64($f5f7_76)->addInt64($f6f6_19);
1075
-        $h3 = $f0f3_2->addInt64($f1f2_2)->addInt64($f4f9_38)->addInt64($f5f8_38)->addInt64($f6f7_38);
1076
-        $h4 = $f0f4_2->addInt64($f1f3_4)->addInt64($f2f2)->addInt64($f5f9_76)->addInt64($f6f8_38)->addInt64($f7f7_38);
1077
-        $h5 = $f0f5_2->addInt64($f1f4_2)->addInt64($f2f3_2)->addInt64($f6f9_38)->addInt64($f7f8_38);
1078
-        $h6 = $f0f6_2->addInt64($f1f5_4)->addInt64($f2f4_2)->addInt64($f3f3_2)->addInt64($f7f9_76)->addInt64($f8f8_19);
1079
-        $h7 = $f0f7_2->addInt64($f1f6_2)->addInt64($f2f5_2)->addInt64($f3f4_2)->addInt64($f8f9_38);
1080
-        $h8 = $f0f8_2->addInt64($f1f7_4)->addInt64($f2f6_2)->addInt64($f3f5_4)->addInt64($f4f4)->addInt64($f9f9_38);
1081
-        $h9 = $f0f9_2->addInt64($f1f8_2)->addInt64($f2f7_2)->addInt64($f3f6_2)->addInt64($f4f5_2);
1082
-
1083
-        /**
1084
-         * @var ParagonIE_Sodium_Core32_Int64 $h0
1085
-         * @var ParagonIE_Sodium_Core32_Int64 $h1
1086
-         * @var ParagonIE_Sodium_Core32_Int64 $h2
1087
-         * @var ParagonIE_Sodium_Core32_Int64 $h3
1088
-         * @var ParagonIE_Sodium_Core32_Int64 $h4
1089
-         * @var ParagonIE_Sodium_Core32_Int64 $h5
1090
-         * @var ParagonIE_Sodium_Core32_Int64 $h6
1091
-         * @var ParagonIE_Sodium_Core32_Int64 $h7
1092
-         * @var ParagonIE_Sodium_Core32_Int64 $h8
1093
-         * @var ParagonIE_Sodium_Core32_Int64 $h9
1094
-         */
1095
-        $h0 = $h0->shiftLeft(1);
1096
-        $h1 = $h1->shiftLeft(1);
1097
-        $h2 = $h2->shiftLeft(1);
1098
-        $h3 = $h3->shiftLeft(1);
1099
-        $h4 = $h4->shiftLeft(1);
1100
-        $h5 = $h5->shiftLeft(1);
1101
-        $h6 = $h6->shiftLeft(1);
1102
-        $h7 = $h7->shiftLeft(1);
1103
-        $h8 = $h8->shiftLeft(1);
1104
-        $h9 = $h9->shiftLeft(1);
1105
-
1106
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
1107
-        $h1 = $h1->addInt64($carry0);
1108
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
1109
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
1110
-        $h5 = $h5->addInt64($carry4);
1111
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
1112
-
1113
-        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
1114
-        $h2 = $h2->addInt64($carry1);
1115
-        $h1 = $h1->subInt64($carry1->shiftLeft(25));
1116
-        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
1117
-        $h6 = $h6->addInt64($carry5);
1118
-        $h5 = $h5->subInt64($carry5->shiftLeft(25));
1119
-
1120
-        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
1121
-        $h3 = $h3->addInt64($carry2);
1122
-        $h2 = $h2->subInt64($carry2->shiftLeft(26));
1123
-        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
1124
-        $h7 = $h7->addInt64($carry6);
1125
-        $h6 = $h6->subInt64($carry6->shiftLeft(26));
1126
-
1127
-        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
1128
-        $h4 = $h4->addInt64($carry3);
1129
-        $h3 = $h3->subInt64($carry3->shiftLeft(25));
1130
-        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
1131
-        $h8 = $h8->addInt64($carry7);
1132
-        $h7 = $h7->subInt64($carry7->shiftLeft(25));
1133
-
1134
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
1135
-        $h5 = $h5->addInt64($carry4);
1136
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
1137
-        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
1138
-        $h9 = $h9->addInt64($carry8);
1139
-        $h8 = $h8->subInt64($carry8->shiftLeft(26));
1140
-
1141
-        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
1142
-        $h0 = $h0->addInt64($carry9->mulInt(19, 5));
1143
-        $h9 = $h9->subInt64($carry9->shiftLeft(25));
1144
-
1145
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
1146
-        $h1 = $h1->addInt64($carry0);
1147
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
1148
-
1149
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1150
-            array(
1151
-                $h0->toInt32(),
1152
-                $h1->toInt32(),
1153
-                $h2->toInt32(),
1154
-                $h3->toInt32(),
1155
-                $h4->toInt32(),
1156
-                $h5->toInt32(),
1157
-                $h6->toInt32(),
1158
-                $h7->toInt32(),
1159
-                $h8->toInt32(),
1160
-                $h9->toInt32()
1161
-            )
1162
-        );
1163
-    }
1164
-
1165
-    /**
1166
-     * @internal You should not use this directly from another application
1167
-     *
1168
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $Z
1169
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
1170
-     * @throws SodiumException
1171
-     * @throws TypeError
1172
-     */
1173
-    public static function fe_invert(ParagonIE_Sodium_Core32_Curve25519_Fe $Z)
1174
-    {
1175
-        $z = clone $Z;
1176
-        $t0 = self::fe_sq($z);
1177
-        $t1 = self::fe_sq($t0);
1178
-        $t1 = self::fe_sq($t1);
1179
-        $t1 = self::fe_mul($z, $t1);
1180
-        $t0 = self::fe_mul($t0, $t1);
1181
-        $t2 = self::fe_sq($t0);
1182
-        $t1 = self::fe_mul($t1, $t2);
1183
-        $t2 = self::fe_sq($t1);
1184
-        for ($i = 1; $i < 5; ++$i) {
1185
-            $t2 = self::fe_sq($t2);
1186
-        }
1187
-        $t1 = self::fe_mul($t2, $t1);
1188
-        $t2 = self::fe_sq($t1);
1189
-        for ($i = 1; $i < 10; ++$i) {
1190
-            $t2 = self::fe_sq($t2);
1191
-        }
1192
-        $t2 = self::fe_mul($t2, $t1);
1193
-        $t3 = self::fe_sq($t2);
1194
-        for ($i = 1; $i < 20; ++$i) {
1195
-            $t3 = self::fe_sq($t3);
1196
-        }
1197
-        $t2 = self::fe_mul($t3, $t2);
1198
-        $t2 = self::fe_sq($t2);
1199
-        for ($i = 1; $i < 10; ++$i) {
1200
-            $t2 = self::fe_sq($t2);
1201
-        }
1202
-        $t1 = self::fe_mul($t2, $t1);
1203
-        $t2 = self::fe_sq($t1);
1204
-        for ($i = 1; $i < 50; ++$i) {
1205
-            $t2 = self::fe_sq($t2);
1206
-        }
1207
-        $t2 = self::fe_mul($t2, $t1);
1208
-        $t3 = self::fe_sq($t2);
1209
-        for ($i = 1; $i < 100; ++$i) {
1210
-            $t3 = self::fe_sq($t3);
1211
-        }
1212
-        $t2 = self::fe_mul($t3, $t2);
1213
-        $t2 = self::fe_sq($t2);
1214
-        for ($i = 1; $i < 50; ++$i) {
1215
-            $t2 = self::fe_sq($t2);
1216
-        }
1217
-        $t1 = self::fe_mul($t2, $t1);
1218
-        $t1 = self::fe_sq($t1);
1219
-        for ($i = 1; $i < 5; ++$i) {
1220
-            $t1 = self::fe_sq($t1);
1221
-        }
1222
-        return self::fe_mul($t1, $t0);
1223
-    }
1224
-
1225
-    /**
1226
-     * @internal You should not use this directly from another application
1227
-     *
1228
-     * @ref https://github.com/jedisct1/libsodium/blob/68564326e1e9dc57ef03746f85734232d20ca6fb/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1054-L1106
1229
-     *
1230
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $z
1231
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
1232
-     * @throws SodiumException
1233
-     * @throws TypeError
1234
-     */
1235
-    public static function fe_pow22523(ParagonIE_Sodium_Core32_Curve25519_Fe $z)
1236
-    {
1237
-        # fe_sq(t0, z);
1238
-        # fe_sq(t1, t0);
1239
-        # fe_sq(t1, t1);
1240
-        # fe_mul(t1, z, t1);
1241
-        # fe_mul(t0, t0, t1);
1242
-        # fe_sq(t0, t0);
1243
-        # fe_mul(t0, t1, t0);
1244
-        # fe_sq(t1, t0);
1245
-        $t0 = self::fe_sq($z);
1246
-        $t1 = self::fe_sq($t0);
1247
-        $t1 = self::fe_sq($t1);
1248
-        $t1 = self::fe_mul($z, $t1);
1249
-        $t0 = self::fe_mul($t0, $t1);
1250
-        $t0 = self::fe_sq($t0);
1251
-        $t0 = self::fe_mul($t1, $t0);
1252
-        $t1 = self::fe_sq($t0);
1253
-
1254
-        # for (i = 1; i < 5; ++i) {
1255
-        #     fe_sq(t1, t1);
1256
-        # }
1257
-        for ($i = 1; $i < 5; ++$i) {
1258
-            $t1 = self::fe_sq($t1);
1259
-        }
1260
-
1261
-        # fe_mul(t0, t1, t0);
1262
-        # fe_sq(t1, t0);
1263
-        $t0 = self::fe_mul($t1, $t0);
1264
-        $t1 = self::fe_sq($t0);
1265
-
1266
-        # for (i = 1; i < 10; ++i) {
1267
-        #     fe_sq(t1, t1);
1268
-        # }
1269
-        for ($i = 1; $i < 10; ++$i) {
1270
-            $t1 = self::fe_sq($t1);
1271
-        }
1272
-
1273
-        # fe_mul(t1, t1, t0);
1274
-        # fe_sq(t2, t1);
1275
-        $t1 = self::fe_mul($t1, $t0);
1276
-        $t2 = self::fe_sq($t1);
1277
-
1278
-        # for (i = 1; i < 20; ++i) {
1279
-        #     fe_sq(t2, t2);
1280
-        # }
1281
-        for ($i = 1; $i < 20; ++$i) {
1282
-            $t2 = self::fe_sq($t2);
1283
-        }
1284
-
1285
-        # fe_mul(t1, t2, t1);
1286
-        # fe_sq(t1, t1);
1287
-        $t1 = self::fe_mul($t2, $t1);
1288
-        $t1 = self::fe_sq($t1);
1289
-
1290
-        # for (i = 1; i < 10; ++i) {
1291
-        #     fe_sq(t1, t1);
1292
-        # }
1293
-        for ($i = 1; $i < 10; ++$i) {
1294
-            $t1 = self::fe_sq($t1);
1295
-        }
1296
-
1297
-        # fe_mul(t0, t1, t0);
1298
-        # fe_sq(t1, t0);
1299
-        $t0 = self::fe_mul($t1, $t0);
1300
-        $t1 = self::fe_sq($t0);
1301
-
1302
-        # for (i = 1; i < 50; ++i) {
1303
-        #     fe_sq(t1, t1);
1304
-        # }
1305
-        for ($i = 1; $i < 50; ++$i) {
1306
-            $t1 = self::fe_sq($t1);
1307
-        }
1308
-
1309
-        # fe_mul(t1, t1, t0);
1310
-        # fe_sq(t2, t1);
1311
-        $t1 = self::fe_mul($t1, $t0);
1312
-        $t2 = self::fe_sq($t1);
1313
-
1314
-        # for (i = 1; i < 100; ++i) {
1315
-        #     fe_sq(t2, t2);
1316
-        # }
1317
-        for ($i = 1; $i < 100; ++$i) {
1318
-            $t2 = self::fe_sq($t2);
1319
-        }
1320
-
1321
-        # fe_mul(t1, t2, t1);
1322
-        # fe_sq(t1, t1);
1323
-        $t1 = self::fe_mul($t2, $t1);
1324
-        $t1 = self::fe_sq($t1);
1325
-
1326
-        # for (i = 1; i < 50; ++i) {
1327
-        #     fe_sq(t1, t1);
1328
-        # }
1329
-        for ($i = 1; $i < 50; ++$i) {
1330
-            $t1 = self::fe_sq($t1);
1331
-        }
1332
-
1333
-        # fe_mul(t0, t1, t0);
1334
-        # fe_sq(t0, t0);
1335
-        # fe_sq(t0, t0);
1336
-        # fe_mul(out, t0, z);
1337
-        $t0 = self::fe_mul($t1, $t0);
1338
-        $t0 = self::fe_sq($t0);
1339
-        $t0 = self::fe_sq($t0);
1340
-        return self::fe_mul($t0, $z);
1341
-    }
1342
-
1343
-    /**
1344
-     * Subtract two field elements.
1345
-     *
1346
-     * h = f - g
1347
-     *
1348
-     * Preconditions:
1349
-     * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
1350
-     * |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
1351
-     *
1352
-     * Postconditions:
1353
-     * |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
1354
-     *
1355
-     * @internal You should not use this directly from another application
1356
-     *
1357
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
1358
-     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
1359
-     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
1360
-     * @throws SodiumException
1361
-     * @throws TypeError
1362
-     * @psalm-suppress MixedMethodCall
1363
-     * @psalm-suppress MixedTypeCoercion
1364
-     */
1365
-    public static function fe_sub(ParagonIE_Sodium_Core32_Curve25519_Fe $f, ParagonIE_Sodium_Core32_Curve25519_Fe $g)
1366
-    {
1367
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1368
-            array(
1369
-                $f[0]->subInt32($g[0]),
1370
-                $f[1]->subInt32($g[1]),
1371
-                $f[2]->subInt32($g[2]),
1372
-                $f[3]->subInt32($g[3]),
1373
-                $f[4]->subInt32($g[4]),
1374
-                $f[5]->subInt32($g[5]),
1375
-                $f[6]->subInt32($g[6]),
1376
-                $f[7]->subInt32($g[7]),
1377
-                $f[8]->subInt32($g[8]),
1378
-                $f[9]->subInt32($g[9])
1379
-            )
1380
-        );
1381
-    }
1382
-
1383
-    /**
1384
-     * Add two group elements.
1385
-     *
1386
-     * r = p + q
1387
-     *
1388
-     * @internal You should not use this directly from another application
1389
-     *
1390
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1391
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
1392
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1393
-     * @throws SodiumException
1394
-     * @throws TypeError
1395
-     */
1396
-    public static function ge_add(
1397
-        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
1398
-        ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
1399
-    ) {
1400
-        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1401
-        $r->X = self::fe_add($p->Y, $p->X);
1402
-        $r->Y = self::fe_sub($p->Y, $p->X);
1403
-        $r->Z = self::fe_mul($r->X, $q->YplusX);
1404
-        $r->Y = self::fe_mul($r->Y, $q->YminusX);
1405
-        $r->T = self::fe_mul($q->T2d, $p->T);
1406
-        $r->X = self::fe_mul($p->Z, $q->Z);
1407
-        $t0   = self::fe_add($r->X, $r->X);
1408
-        $r->X = self::fe_sub($r->Z, $r->Y);
1409
-        $r->Y = self::fe_add($r->Z, $r->Y);
1410
-        $r->Z = self::fe_add($t0, $r->T);
1411
-        $r->T = self::fe_sub($t0, $r->T);
1412
-        return $r;
1413
-    }
1414
-
1415
-    /**
1416
-     * @internal You should not use this directly from another application
1417
-     *
1418
-     * @ref https://github.com/jedisct1/libsodium/blob/157c4a80c13b117608aeae12178b2d38825f9f8f/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1185-L1215
1419
-     * @param string $a
1420
-     * @return array<int, mixed>
1421
-     * @throws SodiumException
1422
-     * @throws TypeError
1423
-     * @psalm-suppress MixedArrayOffset
1424
-     */
1425
-    public static function slide($a)
1426
-    {
1427
-        if (self::strlen($a) < 256) {
1428
-            if (self::strlen($a) < 16) {
1429
-                $a = str_pad($a, 256, '0', STR_PAD_RIGHT);
1430
-            }
1431
-        }
1432
-        /** @var array<int, int> $r */
1433
-        $r = array();
1434
-        for ($i = 0; $i < 256; ++$i) {
1435
-            $r[$i] = (int) (1 &
1436
-                (
1437
-                    self::chrToInt($a[$i >> 3])
1438
-                        >>
1439
-                    ($i & 7)
1440
-                )
1441
-            );
1442
-        }
1443
-
1444
-        for ($i = 0;$i < 256;++$i) {
1445
-            if ($r[$i]) {
1446
-                for ($b = 1;$b <= 6 && $i + $b < 256;++$b) {
1447
-                    if ($r[$i + $b]) {
1448
-                        if ($r[$i] + ($r[$i + $b] << $b) <= 15) {
1449
-                            $r[$i] += $r[$i + $b] << $b;
1450
-                            $r[$i + $b] = 0;
1451
-                        } elseif ($r[$i] - ($r[$i + $b] << $b) >= -15) {
1452
-                            $r[$i] -= $r[$i + $b] << $b;
1453
-                            for ($k = $i + $b; $k < 256; ++$k) {
1454
-                                if (!$r[$k]) {
1455
-                                    $r[$k] = 1;
1456
-                                    break;
1457
-                                }
1458
-                                $r[$k] = 0;
1459
-                            }
1460
-                        } else {
1461
-                            break;
1462
-                        }
1463
-                    }
1464
-                }
1465
-            }
1466
-        }
1467
-        return $r;
1468
-    }
1469
-
1470
-    /**
1471
-     * @internal You should not use this directly from another application
1472
-     *
1473
-     * @param string $s
1474
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
1475
-     * @throws SodiumException
1476
-     * @throws TypeError
1477
-     */
1478
-    public static function ge_frombytes_negate_vartime($s)
1479
-    {
1480
-        static $d = null;
1481
-        if (!$d) {
1482
-            /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
1483
-            $d = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1484
-                array(
1485
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[0]),
1486
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[1]),
1487
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[2]),
1488
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[3]),
1489
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[4]),
1490
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[5]),
1491
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[6]),
1492
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[7]),
1493
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[8]),
1494
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[9])
1495
-                )
1496
-            );
1497
-        }
1498
-
1499
-        # fe_frombytes(h->Y,s);
1500
-        # fe_1(h->Z);
1501
-        $h = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3(
1502
-            self::fe_0(),
1503
-            self::fe_frombytes($s),
1504
-            self::fe_1()
1505
-        );
1506
-
1507
-        # fe_sq(u,h->Y);
1508
-        # fe_mul(v,u,d);
1509
-        # fe_sub(u,u,h->Z);       /* u = y^2-1 */
1510
-        # fe_add(v,v,h->Z);       /* v = dy^2+1 */
1511
-        $u = self::fe_sq($h->Y);
1512
-        /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
1513
-        $v = self::fe_mul($u, $d);
1514
-        $u = self::fe_sub($u, $h->Z); /* u =  y^2 - 1 */
1515
-        $v = self::fe_add($v, $h->Z); /* v = dy^2 + 1 */
1516
-
1517
-        # fe_sq(v3,v);
1518
-        # fe_mul(v3,v3,v);        /* v3 = v^3 */
1519
-        # fe_sq(h->X,v3);
1520
-        # fe_mul(h->X,h->X,v);
1521
-        # fe_mul(h->X,h->X,u);    /* x = uv^7 */
1522
-        $v3 = self::fe_sq($v);
1523
-        $v3 = self::fe_mul($v3, $v); /* v3 = v^3 */
1524
-        $h->X = self::fe_sq($v3);
1525
-        $h->X = self::fe_mul($h->X, $v);
1526
-        $h->X = self::fe_mul($h->X, $u); /* x = uv^7 */
1527
-
1528
-        # fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */
1529
-        # fe_mul(h->X,h->X,v3);
1530
-        # fe_mul(h->X,h->X,u);    /* x = uv^3(uv^7)^((q-5)/8) */
1531
-        $h->X = self::fe_pow22523($h->X); /* x = (uv^7)^((q-5)/8) */
1532
-        $h->X = self::fe_mul($h->X, $v3);
1533
-        $h->X = self::fe_mul($h->X, $u); /* x = uv^3(uv^7)^((q-5)/8) */
1534
-
1535
-        # fe_sq(vxx,h->X);
1536
-        # fe_mul(vxx,vxx,v);
1537
-        # fe_sub(check,vxx,u);    /* vx^2-u */
1538
-        $vxx = self::fe_sq($h->X);
1539
-        $vxx = self::fe_mul($vxx, $v);
1540
-        $check = self::fe_sub($vxx, $u); /* vx^2 - u */
1541
-
1542
-        # if (fe_isnonzero(check)) {
1543
-        #     fe_add(check,vxx,u);  /* vx^2+u */
1544
-        #     if (fe_isnonzero(check)) {
1545
-        #         return -1;
1546
-        #     }
1547
-        #     fe_mul(h->X,h->X,sqrtm1);
1548
-        # }
1549
-        if (self::fe_isnonzero($check)) {
1550
-            $check = self::fe_add($vxx, $u); /* vx^2 + u */
1551
-            if (self::fe_isnonzero($check)) {
1552
-                throw new RangeException('Internal check failed.');
1553
-            }
1554
-            $h->X = self::fe_mul(
1555
-                $h->X,
1556
-                ParagonIE_Sodium_Core32_Curve25519_Fe::fromIntArray(self::$sqrtm1)
1557
-            );
1558
-        }
1559
-
1560
-        # if (fe_isnegative(h->X) == (s[31] >> 7)) {
1561
-        #     fe_neg(h->X,h->X);
1562
-        # }
1563
-        $i = self::chrToInt($s[31]);
1564
-        if (self::fe_isnegative($h->X) === ($i >> 7)) {
1565
-            $h->X = self::fe_neg($h->X);
1566
-        }
1567
-
1568
-        # fe_mul(h->T,h->X,h->Y);
1569
-        $h->T = self::fe_mul($h->X, $h->Y);
1570
-        return $h;
1571
-    }
1572
-
1573
-    /**
1574
-     * @internal You should not use this directly from another application
1575
-     *
1576
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R
1577
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1578
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
1579
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1580
-     * @throws SodiumException
1581
-     * @throws TypeError
1582
-     */
1583
-    public static function ge_madd(
1584
-        ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R,
1585
-        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
1586
-        ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
1587
-    ) {
1588
-        $r = clone $R;
1589
-        $r->X = self::fe_add($p->Y, $p->X);
1590
-        $r->Y = self::fe_sub($p->Y, $p->X);
1591
-        $r->Z = self::fe_mul($r->X, $q->yplusx);
1592
-        $r->Y = self::fe_mul($r->Y, $q->yminusx);
1593
-        $r->T = self::fe_mul($q->xy2d, $p->T);
1594
-        $t0 = self::fe_add(clone $p->Z, clone $p->Z);
1595
-        $r->X = self::fe_sub($r->Z, $r->Y);
1596
-        $r->Y = self::fe_add($r->Z, $r->Y);
1597
-        $r->Z = self::fe_add($t0, $r->T);
1598
-        $r->T = self::fe_sub($t0, $r->T);
1599
-
1600
-        return $r;
1601
-    }
1602
-
1603
-    /**
1604
-     * @internal You should not use this directly from another application
1605
-     *
1606
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R
1607
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1608
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
1609
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1610
-     * @throws SodiumException
1611
-     * @throws TypeError
1612
-     */
1613
-    public static function ge_msub(
1614
-        ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R,
1615
-        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
1616
-        ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
1617
-    ) {
1618
-        $r = clone $R;
1619
-
1620
-        $r->X = self::fe_add($p->Y, $p->X);
1621
-        $r->Y = self::fe_sub($p->Y, $p->X);
1622
-        $r->Z = self::fe_mul($r->X, $q->yminusx);
1623
-        $r->Y = self::fe_mul($r->Y, $q->yplusx);
1624
-        $r->T = self::fe_mul($q->xy2d, $p->T);
1625
-        $t0 = self::fe_add($p->Z, $p->Z);
1626
-        $r->X = self::fe_sub($r->Z, $r->Y);
1627
-        $r->Y = self::fe_add($r->Z, $r->Y);
1628
-        $r->Z = self::fe_sub($t0, $r->T);
1629
-        $r->T = self::fe_add($t0, $r->T);
1630
-
1631
-        return $r;
1632
-    }
1633
-
1634
-    /**
1635
-     * @internal You should not use this directly from another application
1636
-     *
1637
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p
1638
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
1639
-     * @throws SodiumException
1640
-     * @throws TypeError
1641
-     */
1642
-    public static function ge_p1p1_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
1643
-    {
1644
-        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P2();
1645
-        $r->X = self::fe_mul($p->X, $p->T);
1646
-        $r->Y = self::fe_mul($p->Y, $p->Z);
1647
-        $r->Z = self::fe_mul($p->Z, $p->T);
1648
-        return $r;
1649
-    }
1650
-
1651
-    /**
1652
-     * @internal You should not use this directly from another application
1653
-     *
1654
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p
1655
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
1656
-     * @throws SodiumException
1657
-     * @throws TypeError
1658
-     */
1659
-    public static function ge_p1p1_to_p3(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
1660
-    {
1661
-        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3();
1662
-        $r->X = self::fe_mul($p->X, $p->T);
1663
-        $r->Y = self::fe_mul($p->Y, $p->Z);
1664
-        $r->Z = self::fe_mul($p->Z, $p->T);
1665
-        $r->T = self::fe_mul($p->X, $p->Y);
1666
-        return $r;
1667
-    }
1668
-
1669
-    /**
1670
-     * @internal You should not use this directly from another application
1671
-     *
1672
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
1673
-     * @throws SodiumException
1674
-     * @throws TypeError
1675
-     */
1676
-    public static function ge_p2_0()
1677
-    {
1678
-        return new ParagonIE_Sodium_Core32_Curve25519_Ge_P2(
1679
-            self::fe_0(),
1680
-            self::fe_1(),
1681
-            self::fe_1()
1682
-        );
1683
-    }
1684
-
1685
-    /**
1686
-     * @internal You should not use this directly from another application
1687
-     *
1688
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p
1689
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1690
-     * @throws SodiumException
1691
-     * @throws TypeError
1692
-     */
1693
-    public static function ge_p2_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p)
1694
-    {
1695
-        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1696
-
1697
-        $r->X = self::fe_sq($p->X);
1698
-        $r->Z = self::fe_sq($p->Y);
1699
-        $r->T = self::fe_sq2($p->Z);
1700
-        $r->Y = self::fe_add($p->X, $p->Y);
1701
-        $t0   = self::fe_sq($r->Y);
1702
-        $r->Y = self::fe_add($r->Z, $r->X);
1703
-        $r->Z = self::fe_sub($r->Z, $r->X);
1704
-        $r->X = self::fe_sub($t0, $r->Y);
1705
-        $r->T = self::fe_sub($r->T, $r->Z);
1706
-
1707
-        return $r;
1708
-    }
1709
-
1710
-    /**
1711
-     * @internal You should not use this directly from another application
1712
-     *
1713
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
1714
-     * @throws SodiumException
1715
-     * @throws TypeError
1716
-     */
1717
-    public static function ge_p3_0()
1718
-    {
1719
-        return new ParagonIE_Sodium_Core32_Curve25519_Ge_P3(
1720
-            self::fe_0(),
1721
-            self::fe_1(),
1722
-            self::fe_1(),
1723
-            self::fe_0()
1724
-        );
1725
-    }
1726
-
1727
-    /**
1728
-     * @internal You should not use this directly from another application
1729
-     *
1730
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1731
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Cached
1732
-     * @throws SodiumException
1733
-     * @throws TypeError
1734
-     */
1735
-    public static function ge_p3_to_cached(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1736
-    {
1737
-        static $d2 = null;
1738
-        if ($d2 === null) {
1739
-            $d2 = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1740
-                array(
1741
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[0]),
1742
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[1]),
1743
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[2]),
1744
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[3]),
1745
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[4]),
1746
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[5]),
1747
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[6]),
1748
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[7]),
1749
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[8]),
1750
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[9])
1751
-                )
1752
-            );
1753
-        }
1754
-        /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d2 */
1755
-        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_Cached();
1756
-        $r->YplusX = self::fe_add($p->Y, $p->X);
1757
-        $r->YminusX = self::fe_sub($p->Y, $p->X);
1758
-        $r->Z = self::fe_copy($p->Z);
1759
-        $r->T2d = self::fe_mul($p->T, $d2);
1760
-        return $r;
1761
-    }
1762
-
1763
-    /**
1764
-     * @internal You should not use this directly from another application
1765
-     *
1766
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1767
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
1768
-     */
1769
-    public static function ge_p3_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1770
-    {
1771
-        return new ParagonIE_Sodium_Core32_Curve25519_Ge_P2(
1772
-            $p->X,
1773
-            $p->Y,
1774
-            $p->Z
1775
-        );
1776
-    }
1777
-
1778
-    /**
1779
-     * @internal You should not use this directly from another application
1780
-     *
1781
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h
1782
-     * @return string
1783
-     * @throws SodiumException
1784
-     * @throws TypeError
1785
-     */
1786
-    public static function ge_p3_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h)
1787
-    {
1788
-        $recip = self::fe_invert($h->Z);
1789
-        $x = self::fe_mul($h->X, $recip);
1790
-        $y = self::fe_mul($h->Y, $recip);
1791
-        $s = self::fe_tobytes($y);
1792
-        $s[31] = self::intToChr(
1793
-            self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
1794
-        );
1795
-        return $s;
1796
-    }
1797
-
1798
-    /**
1799
-     * @internal You should not use this directly from another application
1800
-     *
1801
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1802
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1803
-     * @throws SodiumException
1804
-     * @throws TypeError
1805
-     */
1806
-    public static function ge_p3_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1807
-    {
1808
-        $q = self::ge_p3_to_p2($p);
1809
-        return self::ge_p2_dbl($q);
1810
-    }
1811
-
1812
-    /**
1813
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
1814
-     * @throws SodiumException
1815
-     * @throws TypeError
1816
-     */
1817
-    public static function ge_precomp_0()
1818
-    {
1819
-        return new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1820
-            self::fe_1(),
1821
-            self::fe_1(),
1822
-            self::fe_0()
1823
-        );
1824
-    }
1825
-
1826
-    /**
1827
-     * @internal You should not use this directly from another application
1828
-     *
1829
-     * @param int $b
1830
-     * @param int $c
1831
-     * @return int
1832
-     * @psalm-suppress MixedReturnStatement
1833
-     */
1834
-    public static function equal($b, $c)
1835
-    {
1836
-        return (int) ((($b ^ $c) - 1 & 0xffffffff) >> 31);
1837
-    }
1838
-
1839
-    /**
1840
-     * @internal You should not use this directly from another application
1841
-     *
1842
-     * @param string|int $char
1843
-     * @return int (1 = yes, 0 = no)
1844
-     * @throws SodiumException
1845
-     * @throws TypeError
1846
-     */
1847
-    public static function negative($char)
1848
-    {
1849
-        if (is_int($char)) {
1850
-            return $char < 0 ? 1 : 0;
1851
-        }
1852
-        /** @var string $char */
1853
-        /** @var int $x */
1854
-        $x = self::chrToInt(self::substr($char, 0, 1));
1855
-        return (int) ($x >> 31);
1856
-    }
1857
-
1858
-    /**
1859
-     * Conditional move
1860
-     *
1861
-     * @internal You should not use this directly from another application
1862
-     *
1863
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $t
1864
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $u
1865
-     * @param int $b
1866
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
1867
-     * @throws SodiumException
1868
-     * @throws TypeError
1869
-     */
1870
-    public static function cmov(
1871
-        ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $t,
1872
-        ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $u,
1873
-        $b
1874
-    ) {
1875
-        if (!is_int($b)) {
1876
-            throw new InvalidArgumentException('Expected an integer.');
1877
-        }
1878
-        return new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1879
-            self::fe_cmov($t->yplusx, $u->yplusx, $b),
1880
-            self::fe_cmov($t->yminusx, $u->yminusx, $b),
1881
-            self::fe_cmov($t->xy2d, $u->xy2d, $b)
1882
-        );
1883
-    }
1884
-
1885
-    /**
1886
-     * @internal You should not use this directly from another application
1887
-     *
1888
-     * @param int $pos
1889
-     * @param int $b
1890
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
1891
-     * @throws SodiumException
1892
-     * @throws TypeError
1893
-     * @psalm-suppress MixedArrayAccess
1894
-     * @psalm-suppress MixedArrayOffset
1895
-     * @psalm-suppress MixedArgument
1896
-     */
1897
-    public static function ge_select($pos = 0, $b = 0)
1898
-    {
1899
-        static $base = null;
1900
-        if ($base === null) {
1901
-            $base = array();
1902
-            foreach (self::$base as $i => $bas) {
1903
-                for ($j = 0; $j < 8; ++$j) {
1904
-                    $base[$i][$j] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1905
-                        ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1906
-                            array(
1907
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][0]),
1908
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][1]),
1909
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][2]),
1910
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][3]),
1911
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][4]),
1912
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][5]),
1913
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][6]),
1914
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][7]),
1915
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][8]),
1916
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][9])
1917
-                            )
1918
-                        ),
1919
-                        ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1920
-                            array(
1921
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][0]),
1922
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][1]),
1923
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][2]),
1924
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][3]),
1925
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][4]),
1926
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][5]),
1927
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][6]),
1928
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][7]),
1929
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][8]),
1930
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][9])
1931
-                            )
1932
-                        ),
1933
-                        ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1934
-                            array(
1935
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][0]),
1936
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][1]),
1937
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][2]),
1938
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][3]),
1939
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][4]),
1940
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][5]),
1941
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][6]),
1942
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][7]),
1943
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][8]),
1944
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][9])
1945
-                            )
1946
-                        )
1947
-                    );
1948
-                }
1949
-            }
1950
-        }
1951
-        if (!is_int($pos)) {
1952
-            throw new InvalidArgumentException('Position must be an integer');
1953
-        }
1954
-        if ($pos < 0 || $pos > 31) {
1955
-            throw new RangeException('Position is out of range [0, 31]');
1956
-        }
1957
-
1958
-        $bnegative = self::negative($b);
1959
-        /** @var int $babs */
1960
-        $babs = $b - (((-$bnegative) & $b) << 1);
1961
-
1962
-        $t = self::ge_precomp_0();
1963
-        for ($i = 0; $i < 8; ++$i) {
1964
-            $t = self::cmov(
1965
-                $t,
1966
-                $base[$pos][$i],
1967
-                self::equal($babs, $i + 1)
1968
-            );
1969
-        }
1970
-        $minusT = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1971
-            self::fe_copy($t->yminusx),
1972
-            self::fe_copy($t->yplusx),
1973
-            self::fe_neg($t->xy2d)
1974
-        );
1975
-        return self::cmov($t, $minusT, -$bnegative);
1976
-    }
1977
-
1978
-    /**
1979
-     * Subtract two group elements.
1980
-     *
1981
-     * r = p - q
1982
-     *
1983
-     * @internal You should not use this directly from another application
1984
-     *
1985
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1986
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
1987
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1988
-     * @throws SodiumException
1989
-     * @throws TypeError
1990
-     */
1991
-    public static function ge_sub(
1992
-        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
1993
-        ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
1994
-    ) {
1995
-        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1996
-
1997
-        $r->X = self::fe_add($p->Y, $p->X);
1998
-        $r->Y = self::fe_sub($p->Y, $p->X);
1999
-        $r->Z = self::fe_mul($r->X, $q->YminusX);
2000
-        $r->Y = self::fe_mul($r->Y, $q->YplusX);
2001
-        $r->T = self::fe_mul($q->T2d, $p->T);
2002
-        $r->X = self::fe_mul($p->Z, $q->Z);
2003
-        $t0 = self::fe_add($r->X, $r->X);
2004
-        $r->X = self::fe_sub($r->Z, $r->Y);
2005
-        $r->Y = self::fe_add($r->Z, $r->Y);
2006
-        $r->Z = self::fe_sub($t0, $r->T);
2007
-        $r->T = self::fe_add($t0, $r->T);
2008
-
2009
-        return $r;
2010
-    }
2011
-
2012
-    /**
2013
-     * Convert a group element to a byte string.
2014
-     *
2015
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h
2016
-     * @return string
2017
-     * @throws SodiumException
2018
-     * @throws TypeError
2019
-     */
2020
-    public static function ge_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h)
2021
-    {
2022
-        $recip = self::fe_invert($h->Z);
2023
-        $x = self::fe_mul($h->X, $recip);
2024
-        $y = self::fe_mul($h->Y, $recip);
2025
-        $s = self::fe_tobytes($y);
2026
-        $s[31] = self::intToChr(
2027
-            self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
2028
-        );
2029
-        return $s;
2030
-    }
2031
-
2032
-    /**
2033
-     * @internal You should not use this directly from another application
2034
-     *
2035
-     * @param string $a
2036
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A
2037
-     * @param string $b
2038
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
2039
-     * @throws SodiumException
2040
-     * @throws TypeError
2041
-     * @psalm-suppress MixedArrayAccess
2042
-     */
2043
-    public static function ge_double_scalarmult_vartime(
2044
-        $a,
2045
-        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A,
2046
-        $b
2047
-    ) {
2048
-        /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Cached> $Ai */
2049
-        $Ai = array();
2050
-
2051
-        static $Bi = array();
2052
-        /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp> $Bi */
2053
-        if (!$Bi) {
2054
-            for ($i = 0; $i < 8; ++$i) {
2055
-                $Bi[$i] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
2056
-                    ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
2057
-                        array(
2058
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][0]),
2059
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][1]),
2060
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][2]),
2061
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][3]),
2062
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][4]),
2063
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][5]),
2064
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][6]),
2065
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][7]),
2066
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][8]),
2067
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][9])
2068
-                        )
2069
-                    ),
2070
-                    ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
2071
-                        array(
2072
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][0]),
2073
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][1]),
2074
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][2]),
2075
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][3]),
2076
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][4]),
2077
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][5]),
2078
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][6]),
2079
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][7]),
2080
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][8]),
2081
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][9])
2082
-                        )
2083
-                    ),
2084
-                    ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
2085
-                        array(
2086
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][0]),
2087
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][1]),
2088
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][2]),
2089
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][3]),
2090
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][4]),
2091
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][5]),
2092
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][6]),
2093
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][7]),
2094
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][8]),
2095
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][9])
2096
-                        )
2097
-                    )
2098
-                );
2099
-            }
2100
-        }
2101
-
2102
-        for ($i = 0; $i < 8; ++$i) {
2103
-            $Ai[$i] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Cached(
2104
-                self::fe_0(),
2105
-                self::fe_0(),
2106
-                self::fe_0(),
2107
-                self::fe_0()
2108
-            );
2109
-        }
2110
-        /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Cached> $Ai */
2111
-
2112
-        # slide(aslide,a);
2113
-        # slide(bslide,b);
2114
-        /** @var array<int, int> $aslide */
2115
-        $aslide = self::slide($a);
2116
-        /** @var array<int, int> $bslide */
2117
-        $bslide = self::slide($b);
2118
-
2119
-        # ge_p3_to_cached(&Ai[0],A);
2120
-        # ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);
2121
-        $Ai[0] = self::ge_p3_to_cached($A);
2122
-        $t = self::ge_p3_dbl($A);
2123
-        $A2 = self::ge_p1p1_to_p3($t);
2124
-
2125
-        # ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u);
2126
-        # ge_add(&t,&A2,&Ai[1]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[2],&u);
2127
-        # ge_add(&t,&A2,&Ai[2]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[3],&u);
2128
-        # ge_add(&t,&A2,&Ai[3]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[4],&u);
2129
-        # ge_add(&t,&A2,&Ai[4]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[5],&u);
2130
-        # ge_add(&t,&A2,&Ai[5]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[6],&u);
2131
-        # ge_add(&t,&A2,&Ai[6]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[7],&u);
2132
-        for ($i = 0; $i < 7; ++$i) {
2133
-            $t = self::ge_add($A2, $Ai[$i]);
2134
-            $u = self::ge_p1p1_to_p3($t);
2135
-            $Ai[$i + 1] = self::ge_p3_to_cached($u);
2136
-        }
2137
-
2138
-        # ge_p2_0(r);
2139
-        $r = self::ge_p2_0();
2140
-
2141
-        # for (i = 255;i >= 0;--i) {
2142
-        #     if (aslide[i] || bslide[i]) break;
2143
-        # }
2144
-        $i = 255;
2145
-        for (; $i >= 0; --$i) {
2146
-            if ($aslide[$i] || $bslide[$i]) {
2147
-                break;
2148
-            }
2149
-        }
2150
-
2151
-        # for (;i >= 0;--i) {
2152
-        for (; $i >= 0; --$i) {
2153
-            # ge_p2_dbl(&t,r);
2154
-            $t = self::ge_p2_dbl($r);
2155
-
2156
-            # if (aslide[i] > 0) {
2157
-            if ($aslide[$i] > 0) {
2158
-                # ge_p1p1_to_p3(&u,&t);
2159
-                # ge_add(&t,&u,&Ai[aslide[i]/2]);
2160
-                $u = self::ge_p1p1_to_p3($t);
2161
-                $t = self::ge_add(
2162
-                    $u,
2163
-                    $Ai[(int) floor($aslide[$i] / 2)]
2164
-                );
2165
-                # } else if (aslide[i] < 0) {
2166
-            } elseif ($aslide[$i] < 0) {
2167
-                # ge_p1p1_to_p3(&u,&t);
2168
-                # ge_sub(&t,&u,&Ai[(-aslide[i])/2]);
2169
-                $u = self::ge_p1p1_to_p3($t);
2170
-                $t = self::ge_sub(
2171
-                    $u,
2172
-                    $Ai[(int) floor(-$aslide[$i] / 2)]
2173
-                );
2174
-            }
2175
-            /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp> $Bi */
2176
-
2177
-            # if (bslide[i] > 0) {
2178
-            if ($bslide[$i] > 0) {
2179
-                # ge_p1p1_to_p3(&u,&t);
2180
-                # ge_madd(&t,&u,&Bi[bslide[i]/2]);
2181
-                $u = self::ge_p1p1_to_p3($t);
2182
-                /** @var int $index */
2183
-                $index = (int) floor($bslide[$i] / 2);
2184
-                /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $thisB */
2185
-                $thisB = $Bi[$index];
2186
-                $t = self::ge_madd($t, $u, $thisB);
2187
-                # } else if (bslide[i] < 0) {
2188
-            } elseif ($bslide[$i] < 0) {
2189
-                # ge_p1p1_to_p3(&u,&t);
2190
-                # ge_msub(&t,&u,&Bi[(-bslide[i])/2]);
2191
-                $u = self::ge_p1p1_to_p3($t);
2192
-
2193
-                /** @var int $index */
2194
-                $index = (int) floor(-$bslide[$i] / 2);
2195
-
2196
-                /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $thisB */
2197
-                $thisB = $Bi[$index];
2198
-                $t = self::ge_msub($t, $u, $thisB);
2199
-            }
2200
-            # ge_p1p1_to_p2(r,&t);
2201
-            $r = self::ge_p1p1_to_p2($t);
2202
-        }
2203
-        return $r;
2204
-    }
2205
-
2206
-    /**
2207
-     * @internal You should not use this directly from another application
2208
-     *
2209
-     * @param string $a
2210
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
2211
-     * @psalm-suppress MixedAssignment
2212
-     * @psalm-suppress MixedOperand
2213
-     * @throws SodiumException
2214
-     * @throws TypeError
2215
-     */
2216
-    public static function ge_scalarmult_base($a)
2217
-    {
2218
-        /** @var array<int, int> $e */
2219
-        $e = array();
2220
-        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
2221
-
2222
-        for ($i = 0; $i < 32; ++$i) {
2223
-            /** @var int $dbl */
2224
-            $dbl = (int) $i << 1;
2225
-            $e[$dbl] = (int) self::chrToInt($a[$i]) & 15;
2226
-            $e[$dbl + 1] = (int) (self::chrToInt($a[$i]) >> 4) & 15;
2227
-        }
2228
-
2229
-        /** @var int $carry */
2230
-        $carry = 0;
2231
-        for ($i = 0; $i < 63; ++$i) {
2232
-            $e[$i] += $carry;
2233
-            /** @var int $carry */
2234
-            $carry = $e[$i] + 8;
2235
-            /** @var int $carry */
2236
-            $carry >>= 4;
2237
-            $e[$i] -= $carry << 4;
2238
-        }
2239
-
2240
-        /** @var array<int, int> $e */
2241
-        $e[63] += (int) $carry;
2242
-
2243
-        $h = self::ge_p3_0();
2244
-
2245
-        for ($i = 1; $i < 64; $i += 2) {
2246
-            $t = self::ge_select((int) floor($i / 2), (int) $e[$i]);
2247
-            $r = self::ge_madd($r, $h, $t);
2248
-            $h = self::ge_p1p1_to_p3($r);
2249
-        }
2250
-
2251
-        $r = self::ge_p3_dbl($h);
2252
-
2253
-        $s = self::ge_p1p1_to_p2($r);
2254
-        $r = self::ge_p2_dbl($s);
2255
-        $s = self::ge_p1p1_to_p2($r);
2256
-        $r = self::ge_p2_dbl($s);
2257
-        $s = self::ge_p1p1_to_p2($r);
2258
-        $r = self::ge_p2_dbl($s);
2259
-
2260
-        $h = self::ge_p1p1_to_p3($r);
2261
-
2262
-        for ($i = 0; $i < 64; $i += 2) {
2263
-            $t = self::ge_select($i >> 1, (int) $e[$i]);
2264
-            $r = self::ge_madd($r, $h, $t);
2265
-            $h = self::ge_p1p1_to_p3($r);
2266
-        }
2267
-        return $h;
2268
-    }
2269
-
2270
-    /**
2271
-     * Calculates (ab + c) mod l
2272
-     * where l = 2^252 + 27742317777372353535851937790883648493
2273
-     *
2274
-     * @internal You should not use this directly from another application
2275
-     *
2276
-     * @param string $a
2277
-     * @param string $b
2278
-     * @param string $c
2279
-     * @return string
2280
-     * @throws SodiumException
2281
-     * @throws TypeError
2282
-     */
2283
-    public static function sc_muladd($a, $b, $c)
2284
-    {
2285
-        $a0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 0, 3)));
2286
-        $a1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 2, 4)) >> 5));
2287
-        $a2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 5, 3)) >> 2));
2288
-        $a3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 7, 4)) >> 7));
2289
-        $a4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 10, 4)) >> 4));
2290
-        $a5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 13, 3)) >> 1));
2291
-        $a6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 15, 4)) >> 6));
2292
-        $a7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 18, 3)) >> 3));
2293
-        $a8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 21, 3)));
2294
-        $a9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 23, 4)) >> 5));
2295
-        $a10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 26, 3)) >> 2));
2296
-        $a11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($a, 28, 4)) >> 7));
2297
-        $b0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 0, 3)));
2298
-        $b1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 2, 4)) >> 5));
2299
-        $b2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 5, 3)) >> 2));
2300
-        $b3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 7, 4)) >> 7));
2301
-        $b4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 10, 4)) >> 4));
2302
-        $b5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 13, 3)) >> 1));
2303
-        $b6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 15, 4)) >> 6));
2304
-        $b7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 18, 3)) >> 3));
2305
-        $b8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 21, 3)));
2306
-        $b9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 23, 4)) >> 5));
2307
-        $b10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 26, 3)) >> 2));
2308
-        $b11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($b, 28, 4)) >> 7));
2309
-        $c0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 0, 3)));
2310
-        $c1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 2, 4)) >> 5));
2311
-        $c2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 5, 3)) >> 2));
2312
-        $c3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 7, 4)) >> 7));
2313
-        $c4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 10, 4)) >> 4));
2314
-        $c5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 13, 3)) >> 1));
2315
-        $c6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 15, 4)) >> 6));
2316
-        $c7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 18, 3)) >> 3));
2317
-        $c8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 21, 3)));
2318
-        $c9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 23, 4)) >> 5));
2319
-        $c10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 26, 3)) >> 2));
2320
-        $c11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($c, 28, 4)) >> 7));
2321
-
2322
-        /* Can't really avoid the pyramid here: */
2323
-        /**
2324
-         * @var ParagonIE_Sodium_Core32_Int64 $s0
2325
-         * @var ParagonIE_Sodium_Core32_Int64 $s1
2326
-         * @var ParagonIE_Sodium_Core32_Int64 $s2
2327
-         * @var ParagonIE_Sodium_Core32_Int64 $s3
2328
-         * @var ParagonIE_Sodium_Core32_Int64 $s4
2329
-         * @var ParagonIE_Sodium_Core32_Int64 $s5
2330
-         * @var ParagonIE_Sodium_Core32_Int64 $s6
2331
-         * @var ParagonIE_Sodium_Core32_Int64 $s7
2332
-         * @var ParagonIE_Sodium_Core32_Int64 $s8
2333
-         * @var ParagonIE_Sodium_Core32_Int64 $s9
2334
-         * @var ParagonIE_Sodium_Core32_Int64 $s10
2335
-         * @var ParagonIE_Sodium_Core32_Int64 $s11
2336
-         * @var ParagonIE_Sodium_Core32_Int64 $s12
2337
-         * @var ParagonIE_Sodium_Core32_Int64 $s13
2338
-         * @var ParagonIE_Sodium_Core32_Int64 $s14
2339
-         * @var ParagonIE_Sodium_Core32_Int64 $s15
2340
-         * @var ParagonIE_Sodium_Core32_Int64 $s16
2341
-         * @var ParagonIE_Sodium_Core32_Int64 $s17
2342
-         * @var ParagonIE_Sodium_Core32_Int64 $s18
2343
-         * @var ParagonIE_Sodium_Core32_Int64 $s19
2344
-         * @var ParagonIE_Sodium_Core32_Int64 $s20
2345
-         * @var ParagonIE_Sodium_Core32_Int64 $s21
2346
-         * @var ParagonIE_Sodium_Core32_Int64 $s22
2347
-         * @var ParagonIE_Sodium_Core32_Int64 $s23
2348
-         */
2349
-
2350
-        $s0 = $c0->addInt64($a0->mulInt64($b0, 24));
2351
-        $s1 = $c1->addInt64($a0->mulInt64($b1, 24))->addInt64($a1->mulInt64($b0, 24));
2352
-        $s2 = $c2->addInt64($a0->mulInt64($b2, 24))->addInt64($a1->mulInt64($b1, 24))->addInt64($a2->mulInt64($b0, 24));
2353
-        $s3 = $c3->addInt64($a0->mulInt64($b3, 24))->addInt64($a1->mulInt64($b2, 24))->addInt64($a2->mulInt64($b1, 24))
2354
-                 ->addInt64($a3->mulInt64($b0, 24));
2355
-        $s4 = $c4->addInt64($a0->mulInt64($b4, 24))->addInt64($a1->mulInt64($b3, 24))->addInt64($a2->mulInt64($b2, 24))
2356
-                 ->addInt64($a3->mulInt64($b1, 24))->addInt64($a4->mulInt64($b0, 24));
2357
-        $s5 = $c5->addInt64($a0->mulInt64($b5, 24))->addInt64($a1->mulInt64($b4, 24))->addInt64($a2->mulInt64($b3, 24))
2358
-                 ->addInt64($a3->mulInt64($b2, 24))->addInt64($a4->mulInt64($b1, 24))->addInt64($a5->mulInt64($b0, 24));
2359
-        $s6 = $c6->addInt64($a0->mulInt64($b6, 24))->addInt64($a1->mulInt64($b5, 24))->addInt64($a2->mulInt64($b4, 24))
2360
-                 ->addInt64($a3->mulInt64($b3, 24))->addInt64($a4->mulInt64($b2, 24))->addInt64($a5->mulInt64($b1, 24))
2361
-                 ->addInt64($a6->mulInt64($b0, 24));
2362
-        $s7 = $c7->addInt64($a0->mulInt64($b7, 24))->addInt64($a1->mulInt64($b6, 24))->addInt64($a2->mulInt64($b5, 24))
2363
-                 ->addInt64($a3->mulInt64($b4, 24))->addInt64($a4->mulInt64($b3, 24))->addInt64($a5->mulInt64($b2, 24))
2364
-                 ->addInt64($a6->mulInt64($b1, 24))->addInt64($a7->mulInt64($b0, 24));
2365
-        $s8 = $c8->addInt64($a0->mulInt64($b8, 24))->addInt64($a1->mulInt64($b7, 24))->addInt64($a2->mulInt64($b6, 24))
2366
-                 ->addInt64($a3->mulInt64($b5, 24))->addInt64($a4->mulInt64($b4, 24))->addInt64($a5->mulInt64($b3, 24))
2367
-                 ->addInt64($a6->mulInt64($b2, 24))->addInt64($a7->mulInt64($b1, 24))->addInt64($a8->mulInt64($b0, 24));
2368
-        $s9 = $c9->addInt64($a0->mulInt64($b9, 24))->addInt64($a1->mulInt64($b8, 24))->addInt64($a2->mulInt64($b7, 24))
2369
-                 ->addInt64($a3->mulInt64($b6, 24))->addInt64($a4->mulInt64($b5, 24))->addInt64($a5->mulInt64($b4, 24))
2370
-                 ->addInt64($a6->mulInt64($b3, 24))->addInt64($a7->mulInt64($b2, 24))->addInt64($a8->mulInt64($b1, 24))
2371
-                 ->addInt64($a9->mulInt64($b0, 24));
2372
-        $s10 = $c10->addInt64($a0->mulInt64($b10, 24))->addInt64($a1->mulInt64($b9, 24))->addInt64($a2->mulInt64($b8, 24))
2373
-                   ->addInt64($a3->mulInt64($b7, 24))->addInt64($a4->mulInt64($b6, 24))->addInt64($a5->mulInt64($b5, 24))
2374
-                   ->addInt64($a6->mulInt64($b4, 24))->addInt64($a7->mulInt64($b3, 24))->addInt64($a8->mulInt64($b2, 24))
2375
-                   ->addInt64($a9->mulInt64($b1, 24))->addInt64($a10->mulInt64($b0, 24));
2376
-        $s11 = $c11->addInt64($a0->mulInt64($b11, 24))->addInt64($a1->mulInt64($b10, 24))->addInt64($a2->mulInt64($b9, 24))
2377
-                   ->addInt64($a3->mulInt64($b8, 24))->addInt64($a4->mulInt64($b7, 24))->addInt64($a5->mulInt64($b6, 24))
2378
-                   ->addInt64($a6->mulInt64($b5, 24))->addInt64($a7->mulInt64($b4, 24))->addInt64($a8->mulInt64($b3, 24))
2379
-                   ->addInt64($a9->mulInt64($b2, 24))->addInt64($a10->mulInt64($b1, 24))->addInt64($a11->mulInt64($b0, 24));
2380
-        $s12 = $a1->mulInt64($b11, 24)->addInt64($a2->mulInt64($b10, 24))->addInt64($a3->mulInt64($b9, 24))
2381
-                  ->addInt64($a4->mulInt64($b8, 24))->addInt64($a5->mulInt64($b7, 24))->addInt64($a6->mulInt64($b6, 24))
2382
-                  ->addInt64($a7->mulInt64($b5, 24))->addInt64($a8->mulInt64($b4, 24))->addInt64($a9->mulInt64($b3, 24))
2383
-                  ->addInt64($a10->mulInt64($b2, 24))->addInt64($a11->mulInt64($b1, 24));
2384
-        $s13 = $a2->mulInt64($b11, 24)->addInt64($a3->mulInt64($b10, 24))->addInt64($a4->mulInt64($b9, 24))
2385
-                  ->addInt64($a5->mulInt64($b8, 24))->addInt64($a6->mulInt64($b7, 24))->addInt64($a7->mulInt64($b6, 24))
2386
-                  ->addInt64($a8->mulInt64($b5, 24))->addInt64($a9->mulInt64($b4, 24))->addInt64($a10->mulInt64($b3, 24))
2387
-                  ->addInt64($a11->mulInt64($b2, 24));
2388
-        $s14 = $a3->mulInt64($b11, 24)->addInt64($a4->mulInt64($b10, 24))->addInt64($a5->mulInt64($b9, 24))
2389
-                  ->addInt64($a6->mulInt64($b8, 24))->addInt64($a7->mulInt64($b7, 24))->addInt64($a8->mulInt64($b6, 24))
2390
-                  ->addInt64($a9->mulInt64($b5, 24))->addInt64($a10->mulInt64($b4, 24))->addInt64($a11->mulInt64($b3, 24));
2391
-        $s15 = $a4->mulInt64($b11, 24)->addInt64($a5->mulInt64($b10, 24))->addInt64($a6->mulInt64($b9, 24))
2392
-                  ->addInt64($a7->mulInt64($b8, 24))->addInt64($a8->mulInt64($b7, 24))->addInt64($a9->mulInt64($b6, 24))
2393
-                  ->addInt64($a10->mulInt64($b5, 24))->addInt64($a11->mulInt64($b4, 24));
2394
-        $s16 = $a5->mulInt64($b11, 24)->addInt64($a6->mulInt64($b10, 24))->addInt64($a7->mulInt64($b9, 24))
2395
-                  ->addInt64($a8->mulInt64($b8, 24))->addInt64($a9->mulInt64($b7, 24))->addInt64($a10->mulInt64($b6, 24))
2396
-                  ->addInt64($a11->mulInt64($b5, 24));
2397
-        $s17 = $a6->mulInt64($b11, 24)->addInt64($a7->mulInt64($b10, 24))->addInt64($a8->mulInt64($b9, 24))
2398
-                  ->addInt64($a9->mulInt64($b8, 24))->addInt64($a10->mulInt64($b7, 24))->addInt64($a11->mulInt64($b6, 24));
2399
-        $s18 = $a7->mulInt64($b11, 24)->addInt64($a8->mulInt64($b10, 24))->addInt64($a9->mulInt64($b9, 24))
2400
-                  ->addInt64($a10->mulInt64($b8, 24))->addInt64($a11->mulInt64($b7, 24));
2401
-        $s19 = $a8->mulInt64($b11, 24)->addInt64($a9->mulInt64($b10, 24))->addInt64($a10->mulInt64($b9, 24))
2402
-                  ->addInt64($a11->mulInt64($b8, 24));
2403
-        $s20 = $a9->mulInt64($b11, 24)->addInt64($a10->mulInt64($b10, 24))->addInt64($a11->mulInt64($b9, 24));
2404
-        $s21 = $a10->mulInt64($b11, 24)->addInt64($a11->mulInt64($b10, 24));
2405
-        $s22 = $a11->mulInt64($b11, 24);
2406
-        $s23 = new ParagonIE_Sodium_Core32_Int64();
2407
-
2408
-        $carry0 = $s0->addInt(1 << 20)->shiftRight(21);
2409
-        $s1 = $s1->addInt64($carry0);
2410
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2411
-        $carry2 = $s2->addInt(1 << 20)->shiftRight(21);
2412
-        $s3 = $s3->addInt64($carry2);
2413
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2414
-        $carry4 = $s4->addInt(1 << 20)->shiftRight(21);
2415
-        $s5 = $s5->addInt64($carry4);
2416
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2417
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2418
-        $s7 = $s7->addInt64($carry6);
2419
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2420
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2421
-        $s9 = $s9->addInt64($carry8);
2422
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2423
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2424
-        $s11 = $s11->addInt64($carry10);
2425
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2426
-        $carry12 = $s12->addInt(1 << 20)->shiftRight(21);
2427
-        $s13 = $s13->addInt64($carry12);
2428
-        $s12 = $s12->subInt64($carry12->shiftLeft(21));
2429
-        $carry14 = $s14->addInt(1 << 20)->shiftRight(21);
2430
-        $s15 = $s15->addInt64($carry14);
2431
-        $s14 = $s14->subInt64($carry14->shiftLeft(21));
2432
-        $carry16 = $s16->addInt(1 << 20)->shiftRight(21);
2433
-        $s17 = $s17->addInt64($carry16);
2434
-        $s16 = $s16->subInt64($carry16->shiftLeft(21));
2435
-        $carry18 = $s18->addInt(1 << 20)->shiftRight(21);
2436
-        $s19 = $s19->addInt64($carry18);
2437
-        $s18 = $s18->subInt64($carry18->shiftLeft(21));
2438
-        $carry20 = $s20->addInt(1 << 20)->shiftRight(21);
2439
-        $s21 = $s21->addInt64($carry20);
2440
-        $s20 = $s20->subInt64($carry20->shiftLeft(21));
2441
-        $carry22 = $s22->addInt(1 << 20)->shiftRight(21);
2442
-        $s23 = $s23->addInt64($carry22);
2443
-        $s22 = $s22->subInt64($carry22->shiftLeft(21));
2444
-
2445
-        $carry1 = $s1->addInt(1 << 20)->shiftRight(21);
2446
-        $s2 = $s2->addInt64($carry1);
2447
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2448
-        $carry3 = $s3->addInt(1 << 20)->shiftRight(21);
2449
-        $s4 = $s4->addInt64($carry3);
2450
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2451
-        $carry5 = $s5->addInt(1 << 20)->shiftRight(21);
2452
-        $s6 = $s6->addInt64($carry5);
2453
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2454
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2455
-        $s8 = $s8->addInt64($carry7);
2456
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2457
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2458
-        $s10 = $s10->addInt64($carry9);
2459
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2460
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2461
-        $s12 = $s12->addInt64($carry11);
2462
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2463
-        $carry13 = $s13->addInt(1 << 20)->shiftRight(21);
2464
-        $s14 = $s14->addInt64($carry13);
2465
-        $s13 = $s13->subInt64($carry13->shiftLeft(21));
2466
-        $carry15 = $s15->addInt(1 << 20)->shiftRight(21);
2467
-        $s16 = $s16->addInt64($carry15);
2468
-        $s15 = $s15->subInt64($carry15->shiftLeft(21));
2469
-        $carry17 = $s17->addInt(1 << 20)->shiftRight(21);
2470
-        $s18 = $s18->addInt64($carry17);
2471
-        $s17 = $s17->subInt64($carry17->shiftLeft(21));
2472
-        $carry19 = $s19->addInt(1 << 20)->shiftRight(21);
2473
-        $s20 = $s20->addInt64($carry19);
2474
-        $s19 = $s19->subInt64($carry19->shiftLeft(21));
2475
-        $carry21 = $s21->addInt(1 << 20)->shiftRight(21);
2476
-        $s22 = $s22->addInt64($carry21);
2477
-        $s21 = $s21->subInt64($carry21->shiftLeft(21));
2478
-
2479
-        $s11 = $s11->addInt64($s23->mulInt(666643, 20));
2480
-        $s12 = $s12->addInt64($s23->mulInt(470296, 19));
2481
-        $s13 = $s13->addInt64($s23->mulInt(654183, 20));
2482
-        $s14 = $s14->subInt64($s23->mulInt(997805, 20));
2483
-        $s15 = $s15->addInt64($s23->mulInt(136657, 18));
2484
-        $s16 = $s16->subInt64($s23->mulInt(683901, 20));
2485
-
2486
-        $s10 = $s10->addInt64($s22->mulInt(666643, 20));
2487
-        $s11 = $s11->addInt64($s22->mulInt(470296, 19));
2488
-        $s12 = $s12->addInt64($s22->mulInt(654183, 20));
2489
-        $s13 = $s13->subInt64($s22->mulInt(997805, 20));
2490
-        $s14 = $s14->addInt64($s22->mulInt(136657, 18));
2491
-        $s15 = $s15->subInt64($s22->mulInt(683901, 20));
2492
-
2493
-        $s9  =  $s9->addInt64($s21->mulInt(666643, 20));
2494
-        $s10 = $s10->addInt64($s21->mulInt(470296, 19));
2495
-        $s11 = $s11->addInt64($s21->mulInt(654183, 20));
2496
-        $s12 = $s12->subInt64($s21->mulInt(997805, 20));
2497
-        $s13 = $s13->addInt64($s21->mulInt(136657, 18));
2498
-        $s14 = $s14->subInt64($s21->mulInt(683901, 20));
2499
-
2500
-        $s8  =  $s8->addInt64($s20->mulInt(666643, 20));
2501
-        $s9  =  $s9->addInt64($s20->mulInt(470296, 19));
2502
-        $s10 = $s10->addInt64($s20->mulInt(654183, 20));
2503
-        $s11 = $s11->subInt64($s20->mulInt(997805, 20));
2504
-        $s12 = $s12->addInt64($s20->mulInt(136657, 18));
2505
-        $s13 = $s13->subInt64($s20->mulInt(683901, 20));
2506
-
2507
-        $s7  =  $s7->addInt64($s19->mulInt(666643, 20));
2508
-        $s8  =  $s8->addInt64($s19->mulInt(470296, 19));
2509
-        $s9  =  $s9->addInt64($s19->mulInt(654183, 20));
2510
-        $s10 = $s10->subInt64($s19->mulInt(997805, 20));
2511
-        $s11 = $s11->addInt64($s19->mulInt(136657, 18));
2512
-        $s12 = $s12->subInt64($s19->mulInt(683901, 20));
2513
-
2514
-        $s6  =  $s6->addInt64($s18->mulInt(666643, 20));
2515
-        $s7  =  $s7->addInt64($s18->mulInt(470296, 19));
2516
-        $s8  =  $s8->addInt64($s18->mulInt(654183, 20));
2517
-        $s9  =  $s9->subInt64($s18->mulInt(997805, 20));
2518
-        $s10 = $s10->addInt64($s18->mulInt(136657, 18));
2519
-        $s11 = $s11->subInt64($s18->mulInt(683901, 20));
2520
-
2521
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2522
-        $s7 = $s7->addInt64($carry6);
2523
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2524
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2525
-        $s9 = $s9->addInt64($carry8);
2526
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2527
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2528
-        $s11 = $s11->addInt64($carry10);
2529
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2530
-        $carry12 = $s12->addInt(1 << 20)->shiftRight(21);
2531
-        $s13 = $s13->addInt64($carry12);
2532
-        $s12 = $s12->subInt64($carry12->shiftLeft(21));
2533
-        $carry14 = $s14->addInt(1 << 20)->shiftRight(21);
2534
-        $s15 = $s15->addInt64($carry14);
2535
-        $s14 = $s14->subInt64($carry14->shiftLeft(21));
2536
-        $carry16 = $s16->addInt(1 << 20)->shiftRight(21);
2537
-        $s17 = $s17->addInt64($carry16);
2538
-        $s16 = $s16->subInt64($carry16->shiftLeft(21));
2539
-
2540
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2541
-        $s8 = $s8->addInt64($carry7);
2542
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2543
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2544
-        $s10 = $s10->addInt64($carry9);
2545
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2546
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2547
-        $s12 = $s12->addInt64($carry11);
2548
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2549
-        $carry13 = $s13->addInt(1 << 20)->shiftRight(21);
2550
-        $s14 = $s14->addInt64($carry13);
2551
-        $s13 = $s13->subInt64($carry13->shiftLeft(21));
2552
-        $carry15 = $s15->addInt(1 << 20)->shiftRight(21);
2553
-        $s16 = $s16->addInt64($carry15);
2554
-        $s15 = $s15->subInt64($carry15->shiftLeft(21));
2555
-
2556
-        $s5  =  $s5->addInt64($s17->mulInt(666643, 20));
2557
-        $s6  =  $s6->addInt64($s17->mulInt(470296, 19));
2558
-        $s7  =  $s7->addInt64($s17->mulInt(654183, 20));
2559
-        $s8  =  $s8->subInt64($s17->mulInt(997805, 20));
2560
-        $s9  =  $s9->addInt64($s17->mulInt(136657, 18));
2561
-        $s10 = $s10->subInt64($s17->mulInt(683901, 20));
2562
-
2563
-        $s4  =  $s4->addInt64($s16->mulInt(666643, 20));
2564
-        $s5  =  $s5->addInt64($s16->mulInt(470296, 19));
2565
-        $s6  =  $s6->addInt64($s16->mulInt(654183, 20));
2566
-        $s7  =  $s7->subInt64($s16->mulInt(997805, 20));
2567
-        $s8  =  $s8->addInt64($s16->mulInt(136657, 18));
2568
-        $s9  =  $s9->subInt64($s16->mulInt(683901, 20));
2569
-
2570
-        $s3  =  $s3->addInt64($s15->mulInt(666643, 20));
2571
-        $s4  =  $s4->addInt64($s15->mulInt(470296, 19));
2572
-        $s5  =  $s5->addInt64($s15->mulInt(654183, 20));
2573
-        $s6  =  $s6->subInt64($s15->mulInt(997805, 20));
2574
-        $s7  =  $s7->addInt64($s15->mulInt(136657, 18));
2575
-        $s8  =  $s8->subInt64($s15->mulInt(683901, 20));
2576
-
2577
-        $s2  =  $s2->addInt64($s14->mulInt(666643, 20));
2578
-        $s3  =  $s3->addInt64($s14->mulInt(470296, 19));
2579
-        $s4  =  $s4->addInt64($s14->mulInt(654183, 20));
2580
-        $s5  =  $s5->subInt64($s14->mulInt(997805, 20));
2581
-        $s6  =  $s6->addInt64($s14->mulInt(136657, 18));
2582
-        $s7  =  $s7->subInt64($s14->mulInt(683901, 20));
2583
-
2584
-        $s1  =  $s1->addInt64($s13->mulInt(666643, 20));
2585
-        $s2  =  $s2->addInt64($s13->mulInt(470296, 19));
2586
-        $s3  =  $s3->addInt64($s13->mulInt(654183, 20));
2587
-        $s4  =  $s4->subInt64($s13->mulInt(997805, 20));
2588
-        $s5  =  $s5->addInt64($s13->mulInt(136657, 18));
2589
-        $s6  =  $s6->subInt64($s13->mulInt(683901, 20));
2590
-
2591
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2592
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2593
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2594
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2595
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2596
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2597
-        $s12 = new ParagonIE_Sodium_Core32_Int64();
2598
-
2599
-        $carry0 = $s0->addInt(1 << 20)->shiftRight(21);
2600
-        $s1 = $s1->addInt64($carry0);
2601
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2602
-        $carry2 = $s2->addInt(1 << 20)->shiftRight(21);
2603
-        $s3 = $s3->addInt64($carry2);
2604
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2605
-        $carry4 = $s4->addInt(1 << 20)->shiftRight(21);
2606
-        $s5 = $s5->addInt64($carry4);
2607
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2608
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2609
-        $s7 = $s7->addInt64($carry6);
2610
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2611
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2612
-        $s9 = $s9->addInt64($carry8);
2613
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2614
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2615
-        $s11 = $s11->addInt64($carry10);
2616
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2617
-
2618
-        $carry1 = $s1->addInt(1 << 20)->shiftRight(21);
2619
-        $s2 = $s2->addInt64($carry1);
2620
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2621
-        $carry3 = $s3->addInt(1 << 20)->shiftRight(21);
2622
-        $s4 = $s4->addInt64($carry3);
2623
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2624
-        $carry5 = $s5->addInt(1 << 20)->shiftRight(21);
2625
-        $s6 = $s6->addInt64($carry5);
2626
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2627
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2628
-        $s8 = $s8->addInt64($carry7);
2629
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2630
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2631
-        $s10 = $s10->addInt64($carry9);
2632
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2633
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2634
-        $s12 = $s12->addInt64($carry11);
2635
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2636
-
2637
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2638
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2639
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2640
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2641
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2642
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2643
-        $s12 = new ParagonIE_Sodium_Core32_Int64();
2644
-
2645
-        $carry0 = $s0->shiftRight(21);
2646
-        $s1 = $s1->addInt64($carry0);
2647
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2648
-        $carry1 = $s1->shiftRight(21);
2649
-        $s2 = $s2->addInt64($carry1);
2650
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2651
-        $carry2 = $s2->shiftRight(21);
2652
-        $s3 = $s3->addInt64($carry2);
2653
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2654
-        $carry3 = $s3->shiftRight(21);
2655
-        $s4 = $s4->addInt64($carry3);
2656
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2657
-        $carry4 = $s4->shiftRight(21);
2658
-        $s5 = $s5->addInt64($carry4);
2659
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2660
-        $carry5 = $s5->shiftRight(21);
2661
-        $s6 = $s6->addInt64($carry5);
2662
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2663
-        $carry6 = $s6->shiftRight(21);
2664
-        $s7 = $s7->addInt64($carry6);
2665
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2666
-        $carry7 = $s7->shiftRight(21);
2667
-        $s8 = $s8->addInt64($carry7);
2668
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2669
-        $carry8 = $s8->shiftRight(21);
2670
-        $s9 = $s9->addInt64($carry8);
2671
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2672
-        $carry9 = $s9->shiftRight(21);
2673
-        $s10 = $s10->addInt64($carry9);
2674
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2675
-        $carry10 = $s10->shiftRight(21);
2676
-        $s11 = $s11->addInt64($carry10);
2677
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2678
-        $carry11 = $s11->shiftRight(21);
2679
-        $s12 = $s12->addInt64($carry11);
2680
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2681
-
2682
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2683
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2684
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2685
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2686
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2687
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2688
-
2689
-        $carry0 = $s0->shiftRight(21);
2690
-        $s1 = $s1->addInt64($carry0);
2691
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2692
-        $carry1 = $s1->shiftRight(21);
2693
-        $s2 = $s2->addInt64($carry1);
2694
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2695
-        $carry2 = $s2->shiftRight(21);
2696
-        $s3 = $s3->addInt64($carry2);
2697
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2698
-        $carry3 = $s3->shiftRight(21);
2699
-        $s4 = $s4->addInt64($carry3);
2700
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2701
-        $carry4 = $s4->shiftRight(21);
2702
-        $s5 = $s5->addInt64($carry4);
2703
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2704
-        $carry5 = $s5->shiftRight(21);
2705
-        $s6 = $s6->addInt64($carry5);
2706
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2707
-        $carry6 = $s6->shiftRight(21);
2708
-        $s7 = $s7->addInt64($carry6);
2709
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2710
-        $carry7 = $s7->shiftRight(21);
2711
-        $s8 = $s8->addInt64($carry7);
2712
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2713
-        $carry8 = $s10->shiftRight(21);
2714
-        $s9 = $s9->addInt64($carry8);
2715
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2716
-        $carry9 = $s9->shiftRight(21);
2717
-        $s10 = $s10->addInt64($carry9);
2718
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2719
-        $carry10 = $s10->shiftRight(21);
2720
-        $s11 = $s11->addInt64($carry10);
2721
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2722
-
2723
-        $S0  =  $s0->toInt();
2724
-        $S1  =  $s1->toInt();
2725
-        $S2  =  $s2->toInt();
2726
-        $S3  =  $s3->toInt();
2727
-        $S4  =  $s4->toInt();
2728
-        $S5  =  $s5->toInt();
2729
-        $S6  =  $s6->toInt();
2730
-        $S7  =  $s7->toInt();
2731
-        $S8  =  $s8->toInt();
2732
-        $S9  =  $s9->toInt();
2733
-        $S10 = $s10->toInt();
2734
-        $S11 = $s11->toInt();
2735
-
2736
-        /**
2737
-         * @var array<int, int>
2738
-         */
2739
-        $arr = array(
2740
-            (int) (0xff & ($S0 >> 0)),
2741
-            (int) (0xff & ($S0 >> 8)),
2742
-            (int) (0xff & (($S0 >> 16) | ($S1 << 5))),
2743
-            (int) (0xff & ($S1 >> 3)),
2744
-            (int) (0xff & ($S1 >> 11)),
2745
-            (int) (0xff & (($S1 >> 19) | ($S2 << 2))),
2746
-            (int) (0xff & ($S2 >> 6)),
2747
-            (int) (0xff & (($S2 >> 14) | ($S3 << 7))),
2748
-            (int) (0xff & ($S3 >> 1)),
2749
-            (int) (0xff & ($S3 >> 9)),
2750
-            (int) (0xff & (($S3 >> 17) | ($S4 << 4))),
2751
-            (int) (0xff & ($S4 >> 4)),
2752
-            (int) (0xff & ($S4 >> 12)),
2753
-            (int) (0xff & (($S4 >> 20) | ($S5 << 1))),
2754
-            (int) (0xff & ($S5 >> 7)),
2755
-            (int) (0xff & (($S5 >> 15) | ($S6 << 6))),
2756
-            (int) (0xff & ($S6 >> 2)),
2757
-            (int) (0xff & ($S6 >> 10)),
2758
-            (int) (0xff & (($S6 >> 18) | ($S7 << 3))),
2759
-            (int) (0xff & ($S7 >> 5)),
2760
-            (int) (0xff & ($S7 >> 13)),
2761
-            (int) (0xff & ($S8 >> 0)),
2762
-            (int) (0xff & ($S8 >> 8)),
2763
-            (int) (0xff & (($S8 >> 16) | ($S9 << 5))),
2764
-            (int) (0xff & ($S9 >> 3)),
2765
-            (int) (0xff & ($S9 >> 11)),
2766
-            (int) (0xff & (($S9 >> 19) | ($S10 << 2))),
2767
-            (int) (0xff & ($S10 >> 6)),
2768
-            (int) (0xff & (($S10 >> 14) | ($S11 << 7))),
2769
-            (int) (0xff & ($S11 >> 1)),
2770
-            (int) (0xff & ($S11 >> 9)),
2771
-            (int) (0xff & ($S11 >> 17))
2772
-        );
2773
-        return self::intArrayToString($arr);
2774
-    }
2775
-
2776
-    /**
2777
-     * @internal You should not use this directly from another application
2778
-     *
2779
-     * @param string $s
2780
-     * @return string
2781
-     * @throws SodiumException
2782
-     * @throws TypeError
2783
-     */
2784
-    public static function sc_reduce($s)
2785
-    {
2786
-        /**
2787
-         * @var ParagonIE_Sodium_Core32_Int64 $s0
2788
-         * @var ParagonIE_Sodium_Core32_Int64 $s1
2789
-         * @var ParagonIE_Sodium_Core32_Int64 $s2
2790
-         * @var ParagonIE_Sodium_Core32_Int64 $s3
2791
-         * @var ParagonIE_Sodium_Core32_Int64 $s4
2792
-         * @var ParagonIE_Sodium_Core32_Int64 $s5
2793
-         * @var ParagonIE_Sodium_Core32_Int64 $s6
2794
-         * @var ParagonIE_Sodium_Core32_Int64 $s7
2795
-         * @var ParagonIE_Sodium_Core32_Int64 $s8
2796
-         * @var ParagonIE_Sodium_Core32_Int64 $s9
2797
-         * @var ParagonIE_Sodium_Core32_Int64 $s10
2798
-         * @var ParagonIE_Sodium_Core32_Int64 $s11
2799
-         * @var ParagonIE_Sodium_Core32_Int64 $s12
2800
-         * @var ParagonIE_Sodium_Core32_Int64 $s13
2801
-         * @var ParagonIE_Sodium_Core32_Int64 $s14
2802
-         * @var ParagonIE_Sodium_Core32_Int64 $s15
2803
-         * @var ParagonIE_Sodium_Core32_Int64 $s16
2804
-         * @var ParagonIE_Sodium_Core32_Int64 $s17
2805
-         * @var ParagonIE_Sodium_Core32_Int64 $s18
2806
-         * @var ParagonIE_Sodium_Core32_Int64 $s19
2807
-         * @var ParagonIE_Sodium_Core32_Int64 $s20
2808
-         * @var ParagonIE_Sodium_Core32_Int64 $s21
2809
-         * @var ParagonIE_Sodium_Core32_Int64 $s22
2810
-         * @var ParagonIE_Sodium_Core32_Int64 $s23
2811
-         */
2812
-        $s0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 0, 3)));
2813
-        $s1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 2, 4)) >> 5));
2814
-        $s2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 5, 3)) >> 2));
2815
-        $s3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 7, 4)) >> 7));
2816
-        $s4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 10, 4)) >> 4));
2817
-        $s5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 13, 3)) >> 1));
2818
-        $s6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 15, 4)) >> 6));
2819
-        $s7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 18, 4)) >> 3));
2820
-        $s8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 21, 3)));
2821
-        $s9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 23, 4)) >> 5));
2822
-        $s10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 26, 3)) >> 2));
2823
-        $s11 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 28, 4)) >> 7));
2824
-        $s12 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 31, 4)) >> 4));
2825
-        $s13 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 34, 3)) >> 1));
2826
-        $s14 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 36, 4)) >> 6));
2827
-        $s15 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 39, 4)) >> 3));
2828
-        $s16 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 42, 3)));
2829
-        $s17 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 44, 4)) >> 5));
2830
-        $s18 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 47, 3)) >> 2));
2831
-        $s19 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 49, 4)) >> 7));
2832
-        $s20 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 52, 4)) >> 4));
2833
-        $s21 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 55, 3)) >> 1));
2834
-        $s22 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 57, 4)) >> 6));
2835
-        $s23 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($s, 60, 4)) >> 3));
2836
-
2837
-        $s11 = $s11->addInt64($s23->mulInt(666643, 20));
2838
-        $s12 = $s12->addInt64($s23->mulInt(470296, 19));
2839
-        $s13 = $s13->addInt64($s23->mulInt(654183, 20));
2840
-        $s14 = $s14->subInt64($s23->mulInt(997805, 20));
2841
-        $s15 = $s15->addInt64($s23->mulInt(136657, 18));
2842
-        $s16 = $s16->subInt64($s23->mulInt(683901, 20));
2843
-
2844
-        $s10 = $s10->addInt64($s22->mulInt(666643, 20));
2845
-        $s11 = $s11->addInt64($s22->mulInt(470296, 19));
2846
-        $s12 = $s12->addInt64($s22->mulInt(654183, 20));
2847
-        $s13 = $s13->subInt64($s22->mulInt(997805, 20));
2848
-        $s14 = $s14->addInt64($s22->mulInt(136657, 18));
2849
-        $s15 = $s15->subInt64($s22->mulInt(683901, 20));
2850
-
2851
-        $s9  =  $s9->addInt64($s21->mulInt(666643, 20));
2852
-        $s10 = $s10->addInt64($s21->mulInt(470296, 19));
2853
-        $s11 = $s11->addInt64($s21->mulInt(654183, 20));
2854
-        $s12 = $s12->subInt64($s21->mulInt(997805, 20));
2855
-        $s13 = $s13->addInt64($s21->mulInt(136657, 18));
2856
-        $s14 = $s14->subInt64($s21->mulInt(683901, 20));
2857
-
2858
-        $s8  =  $s8->addInt64($s20->mulInt(666643, 20));
2859
-        $s9  =  $s9->addInt64($s20->mulInt(470296, 19));
2860
-        $s10 = $s10->addInt64($s20->mulInt(654183, 20));
2861
-        $s11 = $s11->subInt64($s20->mulInt(997805, 20));
2862
-        $s12 = $s12->addInt64($s20->mulInt(136657, 18));
2863
-        $s13 = $s13->subInt64($s20->mulInt(683901, 20));
2864
-
2865
-        $s7  =  $s7->addInt64($s19->mulInt(666643, 20));
2866
-        $s8  =  $s8->addInt64($s19->mulInt(470296, 19));
2867
-        $s9  =  $s9->addInt64($s19->mulInt(654183, 20));
2868
-        $s10 = $s10->subInt64($s19->mulInt(997805, 20));
2869
-        $s11 = $s11->addInt64($s19->mulInt(136657, 18));
2870
-        $s12 = $s12->subInt64($s19->mulInt(683901, 20));
2871
-
2872
-        $s6  =  $s6->addInt64($s18->mulInt(666643, 20));
2873
-        $s7  =  $s7->addInt64($s18->mulInt(470296, 19));
2874
-        $s8  =  $s8->addInt64($s18->mulInt(654183, 20));
2875
-        $s9  =  $s9->subInt64($s18->mulInt(997805, 20));
2876
-        $s10 = $s10->addInt64($s18->mulInt(136657, 18));
2877
-        $s11 = $s11->subInt64($s18->mulInt(683901, 20));
2878
-
2879
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2880
-        $s7 = $s7->addInt64($carry6);
2881
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2882
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2883
-        $s9 = $s9->addInt64($carry8);
2884
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2885
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2886
-        $s11 = $s11->addInt64($carry10);
2887
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2888
-        $carry12 = $s12->addInt(1 << 20)->shiftRight(21);
2889
-        $s13 = $s13->addInt64($carry12);
2890
-        $s12 = $s12->subInt64($carry12->shiftLeft(21));
2891
-        $carry14 = $s14->addInt(1 << 20)->shiftRight(21);
2892
-        $s15 = $s15->addInt64($carry14);
2893
-        $s14 = $s14->subInt64($carry14->shiftLeft(21));
2894
-        $carry16 = $s16->addInt(1 << 20)->shiftRight(21);
2895
-        $s17 = $s17->addInt64($carry16);
2896
-        $s16 = $s16->subInt64($carry16->shiftLeft(21));
2897
-
2898
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2899
-        $s8 = $s8->addInt64($carry7);
2900
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2901
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2902
-        $s10 = $s10->addInt64($carry9);
2903
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2904
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2905
-        $s12 = $s12->addInt64($carry11);
2906
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2907
-        $carry13 = $s13->addInt(1 << 20)->shiftRight(21);
2908
-        $s14 = $s14->addInt64($carry13);
2909
-        $s13 = $s13->subInt64($carry13->shiftLeft(21));
2910
-        $carry15 = $s15->addInt(1 << 20)->shiftRight(21);
2911
-        $s16 = $s16->addInt64($carry15);
2912
-        $s15 = $s15->subInt64($carry15->shiftLeft(21));
2913
-
2914
-        $s5  =  $s5->addInt64($s17->mulInt(666643, 20));
2915
-        $s6  =  $s6->addInt64($s17->mulInt(470296, 19));
2916
-        $s7  =  $s7->addInt64($s17->mulInt(654183, 20));
2917
-        $s8  =  $s8->subInt64($s17->mulInt(997805, 20));
2918
-        $s9  =  $s9->addInt64($s17->mulInt(136657, 18));
2919
-        $s10 = $s10->subInt64($s17->mulInt(683901, 20));
2920
-
2921
-        $s4  =  $s4->addInt64($s16->mulInt(666643, 20));
2922
-        $s5  =  $s5->addInt64($s16->mulInt(470296, 19));
2923
-        $s6  =  $s6->addInt64($s16->mulInt(654183, 20));
2924
-        $s7  =  $s7->subInt64($s16->mulInt(997805, 20));
2925
-        $s8  =  $s8->addInt64($s16->mulInt(136657, 18));
2926
-        $s9  =  $s9->subInt64($s16->mulInt(683901, 20));
2927
-
2928
-        $s3  =  $s3->addInt64($s15->mulInt(666643, 20));
2929
-        $s4  =  $s4->addInt64($s15->mulInt(470296, 19));
2930
-        $s5  =  $s5->addInt64($s15->mulInt(654183, 20));
2931
-        $s6  =  $s6->subInt64($s15->mulInt(997805, 20));
2932
-        $s7  =  $s7->addInt64($s15->mulInt(136657, 18));
2933
-        $s8  =  $s8->subInt64($s15->mulInt(683901, 20));
2934
-
2935
-        $s2  =  $s2->addInt64($s14->mulInt(666643, 20));
2936
-        $s3  =  $s3->addInt64($s14->mulInt(470296, 19));
2937
-        $s4  =  $s4->addInt64($s14->mulInt(654183, 20));
2938
-        $s5  =  $s5->subInt64($s14->mulInt(997805, 20));
2939
-        $s6  =  $s6->addInt64($s14->mulInt(136657, 18));
2940
-        $s7  =  $s7->subInt64($s14->mulInt(683901, 20));
2941
-
2942
-        $s1  =  $s1->addInt64($s13->mulInt(666643, 20));
2943
-        $s2  =  $s2->addInt64($s13->mulInt(470296, 19));
2944
-        $s3  =  $s3->addInt64($s13->mulInt(654183, 20));
2945
-        $s4  =  $s4->subInt64($s13->mulInt(997805, 20));
2946
-        $s5  =  $s5->addInt64($s13->mulInt(136657, 18));
2947
-        $s6  =  $s6->subInt64($s13->mulInt(683901, 20));
2948
-
2949
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2950
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2951
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2952
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2953
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2954
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2955
-        $s12 = new ParagonIE_Sodium_Core32_Int64();
2956
-
2957
-        $carry0 = $s0->addInt(1 << 20)->shiftRight(21);
2958
-        $s1 = $s1->addInt64($carry0);
2959
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2960
-        $carry2 = $s2->addInt(1 << 20)->shiftRight(21);
2961
-        $s3 = $s3->addInt64($carry2);
2962
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2963
-        $carry4 = $s4->addInt(1 << 20)->shiftRight(21);
2964
-        $s5 = $s5->addInt64($carry4);
2965
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2966
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2967
-        $s7 = $s7->addInt64($carry6);
2968
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2969
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2970
-        $s9 = $s9->addInt64($carry8);
2971
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2972
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2973
-        $s11 = $s11->addInt64($carry10);
2974
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2975
-        $carry1 = $s1->addInt(1 << 20)->shiftRight(21);
2976
-        $s2 = $s2->addInt64($carry1);
2977
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2978
-        $carry3 = $s3->addInt(1 << 20)->shiftRight(21);
2979
-        $s4 = $s4->addInt64($carry3);
2980
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2981
-        $carry5 = $s5->addInt(1 << 20)->shiftRight(21);
2982
-        $s6 = $s6->addInt64($carry5);
2983
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2984
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2985
-        $s8 = $s8->addInt64($carry7);
2986
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2987
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2988
-        $s10 = $s10->addInt64($carry9);
2989
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2990
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2991
-        $s12 = $s12->addInt64($carry11);
2992
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2993
-
2994
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2995
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2996
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2997
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2998
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2999
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
3000
-        $s12 = new ParagonIE_Sodium_Core32_Int64();
3001
-
3002
-        $carry0 = $s0->shiftRight(21);
3003
-        $s1 = $s1->addInt64($carry0);
3004
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
3005
-        $carry1 = $s1->shiftRight(21);
3006
-        $s2 = $s2->addInt64($carry1);
3007
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
3008
-        $carry2 = $s2->shiftRight(21);
3009
-        $s3 = $s3->addInt64($carry2);
3010
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
3011
-        $carry3 = $s3->shiftRight(21);
3012
-        $s4 = $s4->addInt64($carry3);
3013
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
3014
-        $carry4 = $s4->shiftRight(21);
3015
-        $s5 = $s5->addInt64($carry4);
3016
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
3017
-        $carry5 = $s5->shiftRight(21);
3018
-        $s6 = $s6->addInt64($carry5);
3019
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
3020
-        $carry6 = $s6->shiftRight(21);
3021
-        $s7 = $s7->addInt64($carry6);
3022
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
3023
-        $carry7 = $s7->shiftRight(21);
3024
-        $s8 = $s8->addInt64($carry7);
3025
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
3026
-        $carry8 = $s8->shiftRight(21);
3027
-        $s9 = $s9->addInt64($carry8);
3028
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
3029
-        $carry9 = $s9->shiftRight(21);
3030
-        $s10 = $s10->addInt64($carry9);
3031
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
3032
-        $carry10 = $s10->shiftRight(21);
3033
-        $s11 = $s11->addInt64($carry10);
3034
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
3035
-        $carry11 = $s11->shiftRight(21);
3036
-        $s12 = $s12->addInt64($carry11);
3037
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
3038
-
3039
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
3040
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
3041
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
3042
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
3043
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
3044
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
3045
-
3046
-        $carry0 = $s0->shiftRight(21);
3047
-        $s1 = $s1->addInt64($carry0);
3048
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
3049
-        $carry1 = $s1->shiftRight(21);
3050
-        $s2 = $s2->addInt64($carry1);
3051
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
3052
-        $carry2 = $s2->shiftRight(21);
3053
-        $s3 = $s3->addInt64($carry2);
3054
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
3055
-        $carry3 = $s3->shiftRight(21);
3056
-        $s4 = $s4->addInt64($carry3);
3057
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
3058
-        $carry4 = $s4->shiftRight(21);
3059
-        $s5 = $s5->addInt64($carry4);
3060
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
3061
-        $carry5 = $s5->shiftRight(21);
3062
-        $s6 = $s6->addInt64($carry5);
3063
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
3064
-        $carry6 = $s6->shiftRight(21);
3065
-        $s7 = $s7->addInt64($carry6);
3066
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
3067
-        $carry7 = $s7->shiftRight(21);
3068
-        $s8 = $s8->addInt64($carry7);
3069
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
3070
-        $carry8 = $s8->shiftRight(21);
3071
-        $s9 = $s9->addInt64($carry8);
3072
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
3073
-        $carry9 = $s9->shiftRight(21);
3074
-        $s10 = $s10->addInt64($carry9);
3075
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
3076
-        $carry10 = $s10->shiftRight(21);
3077
-        $s11 = $s11->addInt64($carry10);
3078
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
3079
-
3080
-        $S0 = $s0->toInt32()->toInt();
3081
-        $S1 = $s1->toInt32()->toInt();
3082
-        $S2 = $s2->toInt32()->toInt();
3083
-        $S3 = $s3->toInt32()->toInt();
3084
-        $S4 = $s4->toInt32()->toInt();
3085
-        $S5 = $s5->toInt32()->toInt();
3086
-        $S6 = $s6->toInt32()->toInt();
3087
-        $S7 = $s7->toInt32()->toInt();
3088
-        $S8 = $s8->toInt32()->toInt();
3089
-        $S9 = $s9->toInt32()->toInt();
3090
-        $S10 = $s10->toInt32()->toInt();
3091
-        $S11 = $s11->toInt32()->toInt();
3092
-
3093
-        /**
3094
-         * @var array<int, int>
3095
-         */
3096
-        $arr = array(
3097
-            (int) ($S0 >> 0),
3098
-            (int) ($S0 >> 8),
3099
-            (int) (($S0 >> 16) | ($S1 << 5)),
3100
-            (int) ($S1 >> 3),
3101
-            (int) ($S1 >> 11),
3102
-            (int) (($S1 >> 19) | ($S2 << 2)),
3103
-            (int) ($S2 >> 6),
3104
-            (int) (($S2 >> 14) | ($S3 << 7)),
3105
-            (int) ($S3 >> 1),
3106
-            (int) ($S3 >> 9),
3107
-            (int) (($S3 >> 17) | ($S4 << 4)),
3108
-            (int) ($S4 >> 4),
3109
-            (int) ($S4 >> 12),
3110
-            (int) (($S4 >> 20) | ($S5 << 1)),
3111
-            (int) ($S5 >> 7),
3112
-            (int) (($S5 >> 15) | ($S6 << 6)),
3113
-            (int) ($S6 >> 2),
3114
-            (int) ($S6 >> 10),
3115
-            (int) (($S6 >> 18) | ($S7 << 3)),
3116
-            (int) ($S7 >> 5),
3117
-            (int) ($S7 >> 13),
3118
-            (int) ($S8 >> 0),
3119
-            (int) ($S8 >> 8),
3120
-            (int) (($S8 >> 16) | ($S9 << 5)),
3121
-            (int) ($S9 >> 3),
3122
-            (int) ($S9 >> 11),
3123
-            (int) (($S9 >> 19) | ($S10 << 2)),
3124
-            (int) ($S10 >> 6),
3125
-            (int) (($S10 >> 14) | ($S11 << 7)),
3126
-            (int) ($S11 >> 1),
3127
-            (int) ($S11 >> 9),
3128
-            (int) $S11 >> 17
3129
-        );
3130
-        return self::intArrayToString($arr);
3131
-    }
3132
-
3133
-    /**
3134
-     * multiply by the order of the main subgroup l = 2^252+27742317777372353535851937790883648493
3135
-     *
3136
-     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A
3137
-     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
3138
-     * @throws SodiumException
3139
-     * @throws TypeError
3140
-     */
3141
-    public static function ge_mul_l(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A)
3142
-    {
3143
-        /** @var array<int, int> $aslide */
3144
-        $aslide = array(
3145
-            13, 0, 0, 0, 0, -1, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0,
3146
-            0, 0, 0, -3, 0, 0, 0, 0, -13, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 3, 0,
3147
-            0, 0, 0, -13, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0,
3148
-            0, 0, 11, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -1,
3149
-            0, 0, 0, 0, 3, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0,
3150
-            0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 5, 0, 0, 0, 0,
3151
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3152
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3153
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3154
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3155
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3156
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
3157
-        );
3158
-
3159
-        /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Cached> $Ai size 8 */
3160
-        $Ai = array();
3161
-
3162
-        # ge_p3_to_cached(&Ai[0], A);
3163
-        $Ai[0] = self::ge_p3_to_cached($A);
3164
-        # ge_p3_dbl(&t, A);
3165
-        $t = self::ge_p3_dbl($A);
3166
-        # ge_p1p1_to_p3(&A2, &t);
3167
-        $A2 = self::ge_p1p1_to_p3($t);
3168
-
3169
-        for ($i = 1; $i < 8; ++$i) {
3170
-            # ge_add(&t, &A2, &Ai[0]);
3171
-            $t = self::ge_add($A2, $Ai[$i - 1]);
3172
-            # ge_p1p1_to_p3(&u, &t);
3173
-            $u = self::ge_p1p1_to_p3($t);
3174
-            # ge_p3_to_cached(&Ai[i], &u);
3175
-            $Ai[$i] = self::ge_p3_to_cached($u);
3176
-        }
3177
-
3178
-        $r = self::ge_p3_0();
3179
-        for ($i = 252; $i >= 0; --$i) {
3180
-            $t = self::ge_p3_dbl($r);
3181
-            if ($aslide[$i] > 0) {
3182
-                # ge_p1p1_to_p3(&u, &t);
3183
-                $u = self::ge_p1p1_to_p3($t);
3184
-                # ge_add(&t, &u, &Ai[aslide[i] / 2]);
3185
-                $t = self::ge_add($u, $Ai[(int)($aslide[$i] / 2)]);
3186
-            } elseif ($aslide[$i] < 0) {
3187
-                # ge_p1p1_to_p3(&u, &t);
3188
-                $u = self::ge_p1p1_to_p3($t);
3189
-                # ge_sub(&t, &u, &Ai[(-aslide[i]) / 2]);
3190
-                $t = self::ge_sub($u, $Ai[(int)(-$aslide[$i] / 2)]);
3191
-            }
3192
-        }
3193
-        # ge_p1p1_to_p3(r, &t);
3194
-        return self::ge_p1p1_to_p3($t);
3195
-    }
18
+	/**
19
+	 * Get a field element of size 10 with a value of 0
20
+	 *
21
+	 * @internal You should not use this directly from another application
22
+	 *
23
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
24
+	 * @throws SodiumException
25
+	 * @throws TypeError
26
+	 */
27
+	public static function fe_0()
28
+	{
29
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
30
+			array(
31
+				new ParagonIE_Sodium_Core32_Int32(),
32
+				new ParagonIE_Sodium_Core32_Int32(),
33
+				new ParagonIE_Sodium_Core32_Int32(),
34
+				new ParagonIE_Sodium_Core32_Int32(),
35
+				new ParagonIE_Sodium_Core32_Int32(),
36
+				new ParagonIE_Sodium_Core32_Int32(),
37
+				new ParagonIE_Sodium_Core32_Int32(),
38
+				new ParagonIE_Sodium_Core32_Int32(),
39
+				new ParagonIE_Sodium_Core32_Int32(),
40
+				new ParagonIE_Sodium_Core32_Int32()
41
+			)
42
+		);
43
+	}
44
+
45
+	/**
46
+	 * Get a field element of size 10 with a value of 1
47
+	 *
48
+	 * @internal You should not use this directly from another application
49
+	 *
50
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
51
+	 * @throws SodiumException
52
+	 * @throws TypeError
53
+	 */
54
+	public static function fe_1()
55
+	{
56
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
57
+			array(
58
+				ParagonIE_Sodium_Core32_Int32::fromInt(1),
59
+				new ParagonIE_Sodium_Core32_Int32(),
60
+				new ParagonIE_Sodium_Core32_Int32(),
61
+				new ParagonIE_Sodium_Core32_Int32(),
62
+				new ParagonIE_Sodium_Core32_Int32(),
63
+				new ParagonIE_Sodium_Core32_Int32(),
64
+				new ParagonIE_Sodium_Core32_Int32(),
65
+				new ParagonIE_Sodium_Core32_Int32(),
66
+				new ParagonIE_Sodium_Core32_Int32(),
67
+				new ParagonIE_Sodium_Core32_Int32()
68
+			)
69
+		);
70
+	}
71
+
72
+	/**
73
+	 * Add two field elements.
74
+	 *
75
+	 * @internal You should not use this directly from another application
76
+	 *
77
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
78
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
79
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
80
+	 * @throws SodiumException
81
+	 * @throws TypeError
82
+	 * @psalm-suppress MixedAssignment
83
+	 * @psalm-suppress MixedMethodCall
84
+	 */
85
+	public static function fe_add(
86
+		ParagonIE_Sodium_Core32_Curve25519_Fe $f,
87
+		ParagonIE_Sodium_Core32_Curve25519_Fe $g
88
+	) {
89
+		$arr = array();
90
+		for ($i = 0; $i < 10; ++$i) {
91
+			$arr[$i] = $f[$i]->addInt32($g[$i]);
92
+		}
93
+		/** @var array<int, ParagonIE_Sodium_Core32_Int32> $arr */
94
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($arr);
95
+	}
96
+
97
+	/**
98
+	 * Constant-time conditional move.
99
+	 *
100
+	 * @internal You should not use this directly from another application
101
+	 *
102
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
103
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
104
+	 * @param int $b
105
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
106
+	 * @throws SodiumException
107
+	 * @throws TypeError
108
+	 * @psalm-suppress MixedAssignment
109
+	 * @psalm-suppress MixedMethodCall
110
+	 */
111
+	public static function fe_cmov(
112
+		ParagonIE_Sodium_Core32_Curve25519_Fe $f,
113
+		ParagonIE_Sodium_Core32_Curve25519_Fe $g,
114
+		$b = 0
115
+	) {
116
+		/** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
117
+		$h = array();
118
+		for ($i = 0; $i < 10; ++$i) {
119
+			if (!($f[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
120
+				throw new TypeError('Expected Int32');
121
+			}
122
+			if (!($g[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
123
+				throw new TypeError('Expected Int32');
124
+			}
125
+			$h[$i] = $f[$i]->xorInt32(
126
+				$f[$i]->xorInt32($g[$i])->mask($b)
127
+			);
128
+		}
129
+		/** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
130
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h);
131
+	}
132
+
133
+	/**
134
+	 * Create a copy of a field element.
135
+	 *
136
+	 * @internal You should not use this directly from another application
137
+	 *
138
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
139
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
140
+	 */
141
+	public static function fe_copy(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
142
+	{
143
+		$h = clone $f;
144
+		return $h;
145
+	}
146
+
147
+	/**
148
+	 * Give: 32-byte string.
149
+	 * Receive: A field element object to use for internal calculations.
150
+	 *
151
+	 * @internal You should not use this directly from another application
152
+	 *
153
+	 * @param string $s
154
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
155
+	 * @throws RangeException
156
+	 * @throws SodiumException
157
+	 * @throws TypeError
158
+	 * @psalm-suppress MixedMethodCall
159
+	 */
160
+	public static function fe_frombytes($s)
161
+	{
162
+		if (self::strlen($s) !== 32) {
163
+			throw new RangeException('Expected a 32-byte string.');
164
+		}
165
+		/** @var ParagonIE_Sodium_Core32_Int32 $h0 */
166
+		$h0 = ParagonIE_Sodium_Core32_Int32::fromInt(
167
+			self::load_4($s)
168
+		);
169
+		/** @var ParagonIE_Sodium_Core32_Int32 $h1 */
170
+		$h1 = ParagonIE_Sodium_Core32_Int32::fromInt(
171
+			self::load_3(self::substr($s, 4, 3)) << 6
172
+		);
173
+		/** @var ParagonIE_Sodium_Core32_Int32 $h2 */
174
+		$h2 = ParagonIE_Sodium_Core32_Int32::fromInt(
175
+			self::load_3(self::substr($s, 7, 3)) << 5
176
+		);
177
+		/** @var ParagonIE_Sodium_Core32_Int32 $h3 */
178
+		$h3 = ParagonIE_Sodium_Core32_Int32::fromInt(
179
+			self::load_3(self::substr($s, 10, 3)) << 3
180
+		);
181
+		/** @var ParagonIE_Sodium_Core32_Int32 $h4 */
182
+		$h4 = ParagonIE_Sodium_Core32_Int32::fromInt(
183
+			self::load_3(self::substr($s, 13, 3)) << 2
184
+		);
185
+		/** @var ParagonIE_Sodium_Core32_Int32 $h5 */
186
+		$h5 = ParagonIE_Sodium_Core32_Int32::fromInt(
187
+			self::load_4(self::substr($s, 16, 4))
188
+		);
189
+		/** @var ParagonIE_Sodium_Core32_Int32 $h6 */
190
+		$h6 = ParagonIE_Sodium_Core32_Int32::fromInt(
191
+			self::load_3(self::substr($s, 20, 3)) << 7
192
+		);
193
+		/** @var ParagonIE_Sodium_Core32_Int32 $h7 */
194
+		$h7 = ParagonIE_Sodium_Core32_Int32::fromInt(
195
+			self::load_3(self::substr($s, 23, 3)) << 5
196
+		);
197
+		/** @var ParagonIE_Sodium_Core32_Int32 $h8 */
198
+		$h8 = ParagonIE_Sodium_Core32_Int32::fromInt(
199
+			self::load_3(self::substr($s, 26, 3)) << 4
200
+		);
201
+		/** @var ParagonIE_Sodium_Core32_Int32 $h9 */
202
+		$h9 = ParagonIE_Sodium_Core32_Int32::fromInt(
203
+			(self::load_3(self::substr($s, 29, 3)) & 8388607) << 2
204
+		);
205
+
206
+		$carry9 = $h9->addInt(1 << 24)->shiftRight(25);
207
+		$h0 = $h0->addInt32($carry9->mulInt(19, 5));
208
+		$h9 = $h9->subInt32($carry9->shiftLeft(25));
209
+
210
+		$carry1 = $h1->addInt(1 << 24)->shiftRight(25);
211
+		$h2 = $h2->addInt32($carry1);
212
+		$h1 = $h1->subInt32($carry1->shiftLeft(25));
213
+
214
+		$carry3 = $h3->addInt(1 << 24)->shiftRight(25);
215
+		$h4 = $h4->addInt32($carry3);
216
+		$h3 = $h3->subInt32($carry3->shiftLeft(25));
217
+
218
+		$carry5 = $h5->addInt(1 << 24)->shiftRight(25);
219
+		$h6 = $h6->addInt32($carry5);
220
+		$h5 = $h5->subInt32($carry5->shiftLeft(25));
221
+
222
+		$carry7 = $h7->addInt(1 << 24)->shiftRight(25);
223
+		$h8 = $h8->addInt32($carry7);
224
+		$h7 = $h7->subInt32($carry7->shiftLeft(25));
225
+
226
+		$carry0 = $h0->addInt(1 << 25)->shiftRight(26);
227
+		$h1 = $h1->addInt32($carry0);
228
+		$h0 = $h0->subInt32($carry0->shiftLeft(26));
229
+
230
+		$carry2 = $h2->addInt(1 << 25)->shiftRight(26);
231
+		$h3 = $h3->addInt32($carry2);
232
+		$h2 = $h2->subInt32($carry2->shiftLeft(26));
233
+
234
+		$carry4 = $h4->addInt(1 << 25)->shiftRight(26);
235
+		$h5 = $h5->addInt32($carry4);
236
+		$h4 = $h4->subInt32($carry4->shiftLeft(26));
237
+
238
+		$carry6 = $h6->addInt(1 << 25)->shiftRight(26);
239
+		$h7 = $h7->addInt32($carry6);
240
+		$h6 = $h6->subInt32($carry6->shiftLeft(26));
241
+
242
+		$carry8 = $h8->addInt(1 << 25)->shiftRight(26);
243
+		$h9 = $h9->addInt32($carry8);
244
+		$h8 = $h8->subInt32($carry8->shiftLeft(26));
245
+
246
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
247
+			array($h0, $h1, $h2,$h3, $h4, $h5, $h6, $h7, $h8, $h9)
248
+		);
249
+	}
250
+
251
+	/**
252
+	 * Convert a field element to a byte string.
253
+	 *
254
+	 * @internal You should not use this directly from another application
255
+	 *
256
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $h
257
+	 * @return string
258
+	 * @throws SodiumException
259
+	 * @throws TypeError
260
+	 * @psalm-suppress MixedAssignment
261
+	 * @psalm-suppress MixedMethodCall
262
+	 */
263
+	public static function fe_tobytes(ParagonIE_Sodium_Core32_Curve25519_Fe $h)
264
+	{
265
+		/**
266
+		 * @var ParagonIE_Sodium_Core32_Int64[] $f
267
+		 * @var ParagonIE_Sodium_Core32_Int64 $q
268
+		 */
269
+		$f = array();
270
+
271
+		for ($i = 0; $i < 10; ++$i) {
272
+			$f[$i] = $h[$i]->toInt64();
273
+		}
274
+
275
+		$q = $f[9]->mulInt(19, 5)->addInt(1 << 14)->shiftRight(25)
276
+			->addInt64($f[0])->shiftRight(26)
277
+			->addInt64($f[1])->shiftRight(25)
278
+			->addInt64($f[2])->shiftRight(26)
279
+			->addInt64($f[3])->shiftRight(25)
280
+			->addInt64($f[4])->shiftRight(26)
281
+			->addInt64($f[5])->shiftRight(25)
282
+			->addInt64($f[6])->shiftRight(26)
283
+			->addInt64($f[7])->shiftRight(25)
284
+			->addInt64($f[8])->shiftRight(26)
285
+			->addInt64($f[9])->shiftRight(25);
286
+
287
+		$f[0] = $f[0]->addInt64($q->mulInt(19, 5));
288
+
289
+		$carry0 = $f[0]->shiftRight(26);
290
+		$f[1] = $f[1]->addInt64($carry0);
291
+		$f[0] = $f[0]->subInt64($carry0->shiftLeft(26));
292
+
293
+		$carry1 = $f[1]->shiftRight(25);
294
+		$f[2] = $f[2]->addInt64($carry1);
295
+		$f[1] = $f[1]->subInt64($carry1->shiftLeft(25));
296
+
297
+		$carry2 = $f[2]->shiftRight(26);
298
+		$f[3] = $f[3]->addInt64($carry2);
299
+		$f[2] = $f[2]->subInt64($carry2->shiftLeft(26));
300
+
301
+		$carry3 = $f[3]->shiftRight(25);
302
+		$f[4] = $f[4]->addInt64($carry3);
303
+		$f[3] = $f[3]->subInt64($carry3->shiftLeft(25));
304
+
305
+		$carry4 = $f[4]->shiftRight(26);
306
+		$f[5] = $f[5]->addInt64($carry4);
307
+		$f[4] = $f[4]->subInt64($carry4->shiftLeft(26));
308
+
309
+		$carry5 = $f[5]->shiftRight(25);
310
+		$f[6] = $f[6]->addInt64($carry5);
311
+		$f[5] = $f[5]->subInt64($carry5->shiftLeft(25));
312
+
313
+		$carry6 = $f[6]->shiftRight(26);
314
+		$f[7] = $f[7]->addInt64($carry6);
315
+		$f[6] = $f[6]->subInt64($carry6->shiftLeft(26));
316
+
317
+		$carry7 = $f[7]->shiftRight(25);
318
+		$f[8] = $f[8]->addInt64($carry7);
319
+		$f[7] = $f[7]->subInt64($carry7->shiftLeft(25));
320
+
321
+		$carry8 = $f[8]->shiftRight(26);
322
+		$f[9] = $f[9]->addInt64($carry8);
323
+		$f[8] = $f[8]->subInt64($carry8->shiftLeft(26));
324
+
325
+		$carry9 = $f[9]->shiftRight(25);
326
+		$f[9] = $f[9]->subInt64($carry9->shiftLeft(25));
327
+
328
+		/** @var int $h0 */
329
+		$h0 = $f[0]->toInt32()->toInt();
330
+		/** @var int $h1 */
331
+		$h1 = $f[1]->toInt32()->toInt();
332
+		/** @var int $h2 */
333
+		$h2 = $f[2]->toInt32()->toInt();
334
+		/** @var int $h3 */
335
+		$h3 = $f[3]->toInt32()->toInt();
336
+		/** @var int $h4 */
337
+		$h4 = $f[4]->toInt32()->toInt();
338
+		/** @var int $h5 */
339
+		$h5 = $f[5]->toInt32()->toInt();
340
+		/** @var int $h6 */
341
+		$h6 = $f[6]->toInt32()->toInt();
342
+		/** @var int $h7 */
343
+		$h7 = $f[7]->toInt32()->toInt();
344
+		/** @var int $h8 */
345
+		$h8 = $f[8]->toInt32()->toInt();
346
+		/** @var int $h9 */
347
+		$h9 = $f[9]->toInt32()->toInt();
348
+
349
+		/**
350
+		 * @var array<int, int>
351
+		 */
352
+		$s = array(
353
+			(int) (($h0 >> 0) & 0xff),
354
+			(int) (($h0 >> 8) & 0xff),
355
+			(int) (($h0 >> 16) & 0xff),
356
+			(int) ((($h0 >> 24) | ($h1 << 2)) & 0xff),
357
+			(int) (($h1 >> 6) & 0xff),
358
+			(int) (($h1 >> 14) & 0xff),
359
+			(int) ((($h1 >> 22) | ($h2 << 3)) & 0xff),
360
+			(int) (($h2 >> 5) & 0xff),
361
+			(int) (($h2 >> 13) & 0xff),
362
+			(int) ((($h2 >> 21) | ($h3 << 5)) & 0xff),
363
+			(int) (($h3 >> 3) & 0xff),
364
+			(int) (($h3 >> 11) & 0xff),
365
+			(int) ((($h3 >> 19) | ($h4 << 6)) & 0xff),
366
+			(int) (($h4 >> 2) & 0xff),
367
+			(int) (($h4 >> 10) & 0xff),
368
+			(int) (($h4 >> 18) & 0xff),
369
+			(int) (($h5 >> 0) & 0xff),
370
+			(int) (($h5 >> 8) & 0xff),
371
+			(int) (($h5 >> 16) & 0xff),
372
+			(int) ((($h5 >> 24) | ($h6 << 1)) & 0xff),
373
+			(int) (($h6 >> 7) & 0xff),
374
+			(int) (($h6 >> 15) & 0xff),
375
+			(int) ((($h6 >> 23) | ($h7 << 3)) & 0xff),
376
+			(int) (($h7 >> 5) & 0xff),
377
+			(int) (($h7 >> 13) & 0xff),
378
+			(int) ((($h7 >> 21) | ($h8 << 4)) & 0xff),
379
+			(int) (($h8 >> 4) & 0xff),
380
+			(int) (($h8 >> 12) & 0xff),
381
+			(int) ((($h8 >> 20) | ($h9 << 6)) & 0xff),
382
+			(int) (($h9 >> 2) & 0xff),
383
+			(int) (($h9 >> 10) & 0xff),
384
+			(int) (($h9 >> 18) & 0xff)
385
+		);
386
+		return self::intArrayToString($s);
387
+	}
388
+
389
+	/**
390
+	 * Is a field element negative? (1 = yes, 0 = no. Used in calculations.)
391
+	 *
392
+	 * @internal You should not use this directly from another application
393
+	 *
394
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
395
+	 * @return int
396
+	 * @throws SodiumException
397
+	 * @throws TypeError
398
+	 */
399
+	public static function fe_isnegative(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
400
+	{
401
+		$str = self::fe_tobytes($f);
402
+		return (int) (self::chrToInt($str[0]) & 1);
403
+	}
404
+
405
+	/**
406
+	 * Returns 0 if this field element results in all NUL bytes.
407
+	 *
408
+	 * @internal You should not use this directly from another application
409
+	 *
410
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
411
+	 * @return bool
412
+	 * @throws SodiumException
413
+	 * @throws TypeError
414
+	 */
415
+	public static function fe_isnonzero(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
416
+	{
417
+		static $zero;
418
+		if ($zero === null) {
419
+			$zero = str_repeat("\x00", 32);
420
+		}
421
+		/** @var string $str */
422
+		$str = self::fe_tobytes($f);
423
+		/** @var string $zero */
424
+		return !self::verify_32($str, $zero);
425
+	}
426
+
427
+	/**
428
+	 * Multiply two field elements
429
+	 *
430
+	 * h = f * g
431
+	 *
432
+	 * @internal You should not use this directly from another application
433
+	 *
434
+	 * @security Is multiplication a source of timing leaks? If so, can we do
435
+	 *           anything to prevent that from happening?
436
+	 *
437
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
438
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
439
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
440
+	 * @throws SodiumException
441
+	 * @throws TypeError
442
+	 */
443
+	public static function fe_mul(
444
+		ParagonIE_Sodium_Core32_Curve25519_Fe $f,
445
+		ParagonIE_Sodium_Core32_Curve25519_Fe $g
446
+	) {
447
+		/**
448
+		 * @var ParagonIE_Sodium_Core32_Int32[] $f
449
+		 * @var ParagonIE_Sodium_Core32_Int32[] $g
450
+		 * @var ParagonIE_Sodium_Core32_Int64 $f0
451
+		 * @var ParagonIE_Sodium_Core32_Int64 $f1
452
+		 * @var ParagonIE_Sodium_Core32_Int64 $f2
453
+		 * @var ParagonIE_Sodium_Core32_Int64 $f3
454
+		 * @var ParagonIE_Sodium_Core32_Int64 $f4
455
+		 * @var ParagonIE_Sodium_Core32_Int64 $f5
456
+		 * @var ParagonIE_Sodium_Core32_Int64 $f6
457
+		 * @var ParagonIE_Sodium_Core32_Int64 $f7
458
+		 * @var ParagonIE_Sodium_Core32_Int64 $f8
459
+		 * @var ParagonIE_Sodium_Core32_Int64 $f9
460
+		 * @var ParagonIE_Sodium_Core32_Int64 $g0
461
+		 * @var ParagonIE_Sodium_Core32_Int64 $g1
462
+		 * @var ParagonIE_Sodium_Core32_Int64 $g2
463
+		 * @var ParagonIE_Sodium_Core32_Int64 $g3
464
+		 * @var ParagonIE_Sodium_Core32_Int64 $g4
465
+		 * @var ParagonIE_Sodium_Core32_Int64 $g5
466
+		 * @var ParagonIE_Sodium_Core32_Int64 $g6
467
+		 * @var ParagonIE_Sodium_Core32_Int64 $g7
468
+		 * @var ParagonIE_Sodium_Core32_Int64 $g8
469
+		 * @var ParagonIE_Sodium_Core32_Int64 $g9
470
+		 */
471
+		$f0 = $f[0]->toInt64();
472
+		$f1 = $f[1]->toInt64();
473
+		$f2 = $f[2]->toInt64();
474
+		$f3 = $f[3]->toInt64();
475
+		$f4 = $f[4]->toInt64();
476
+		$f5 = $f[5]->toInt64();
477
+		$f6 = $f[6]->toInt64();
478
+		$f7 = $f[7]->toInt64();
479
+		$f8 = $f[8]->toInt64();
480
+		$f9 = $f[9]->toInt64();
481
+		$g0 = $g[0]->toInt64();
482
+		$g1 = $g[1]->toInt64();
483
+		$g2 = $g[2]->toInt64();
484
+		$g3 = $g[3]->toInt64();
485
+		$g4 = $g[4]->toInt64();
486
+		$g5 = $g[5]->toInt64();
487
+		$g6 = $g[6]->toInt64();
488
+		$g7 = $g[7]->toInt64();
489
+		$g8 = $g[8]->toInt64();
490
+		$g9 = $g[9]->toInt64();
491
+		$g1_19 = $g1->mulInt(19, 5); /* 2^4 <= 19 <= 2^5, but we only want 5 bits */
492
+		$g2_19 = $g2->mulInt(19, 5);
493
+		$g3_19 = $g3->mulInt(19, 5);
494
+		$g4_19 = $g4->mulInt(19, 5);
495
+		$g5_19 = $g5->mulInt(19, 5);
496
+		$g6_19 = $g6->mulInt(19, 5);
497
+		$g7_19 = $g7->mulInt(19, 5);
498
+		$g8_19 = $g8->mulInt(19, 5);
499
+		$g9_19 = $g9->mulInt(19, 5);
500
+		/** @var ParagonIE_Sodium_Core32_Int64 $f1_2 */
501
+		$f1_2 = $f1->shiftLeft(1);
502
+		/** @var ParagonIE_Sodium_Core32_Int64 $f3_2 */
503
+		$f3_2 = $f3->shiftLeft(1);
504
+		/** @var ParagonIE_Sodium_Core32_Int64 $f5_2 */
505
+		$f5_2 = $f5->shiftLeft(1);
506
+		/** @var ParagonIE_Sodium_Core32_Int64 $f7_2 */
507
+		$f7_2 = $f7->shiftLeft(1);
508
+		/** @var ParagonIE_Sodium_Core32_Int64 $f9_2 */
509
+		$f9_2 = $f9->shiftLeft(1);
510
+		$f0g0    = $f0->mulInt64($g0, 27);
511
+		$f0g1    = $f0->mulInt64($g1, 27);
512
+		$f0g2    = $f0->mulInt64($g2, 27);
513
+		$f0g3    = $f0->mulInt64($g3, 27);
514
+		$f0g4    = $f0->mulInt64($g4, 27);
515
+		$f0g5    = $f0->mulInt64($g5, 27);
516
+		$f0g6    = $f0->mulInt64($g6, 27);
517
+		$f0g7    = $f0->mulInt64($g7, 27);
518
+		$f0g8    = $f0->mulInt64($g8, 27);
519
+		$f0g9    = $f0->mulInt64($g9, 27);
520
+		$f1g0    = $f1->mulInt64($g0, 27);
521
+		$f1g1_2  = $f1_2->mulInt64($g1, 27);
522
+		$f1g2    = $f1->mulInt64($g2, 27);
523
+		$f1g3_2  = $f1_2->mulInt64($g3, 27);
524
+		$f1g4    = $f1->mulInt64($g4, 30);
525
+		$f1g5_2  = $f1_2->mulInt64($g5, 30);
526
+		$f1g6    = $f1->mulInt64($g6, 30);
527
+		$f1g7_2  = $f1_2->mulInt64($g7, 30);
528
+		$f1g8    = $f1->mulInt64($g8, 30);
529
+		$f1g9_38 = $g9_19->mulInt64($f1_2, 30);
530
+		$f2g0    = $f2->mulInt64($g0, 30);
531
+		$f2g1    = $f2->mulInt64($g1, 29);
532
+		$f2g2    = $f2->mulInt64($g2, 30);
533
+		$f2g3    = $f2->mulInt64($g3, 29);
534
+		$f2g4    = $f2->mulInt64($g4, 30);
535
+		$f2g5    = $f2->mulInt64($g5, 29);
536
+		$f2g6    = $f2->mulInt64($g6, 30);
537
+		$f2g7    = $f2->mulInt64($g7, 29);
538
+		$f2g8_19 = $g8_19->mulInt64($f2, 30);
539
+		$f2g9_19 = $g9_19->mulInt64($f2, 30);
540
+		$f3g0    = $f3->mulInt64($g0, 30);
541
+		$f3g1_2  = $f3_2->mulInt64($g1, 30);
542
+		$f3g2    = $f3->mulInt64($g2, 30);
543
+		$f3g3_2  = $f3_2->mulInt64($g3, 30);
544
+		$f3g4    = $f3->mulInt64($g4, 30);
545
+		$f3g5_2  = $f3_2->mulInt64($g5, 30);
546
+		$f3g6    = $f3->mulInt64($g6, 30);
547
+		$f3g7_38 = $g7_19->mulInt64($f3_2, 30);
548
+		$f3g8_19 = $g8_19->mulInt64($f3, 30);
549
+		$f3g9_38 = $g9_19->mulInt64($f3_2, 30);
550
+		$f4g0    = $f4->mulInt64($g0, 30);
551
+		$f4g1    = $f4->mulInt64($g1, 30);
552
+		$f4g2    = $f4->mulInt64($g2, 30);
553
+		$f4g3    = $f4->mulInt64($g3, 30);
554
+		$f4g4    = $f4->mulInt64($g4, 30);
555
+		$f4g5    = $f4->mulInt64($g5, 30);
556
+		$f4g6_19 = $g6_19->mulInt64($f4, 30);
557
+		$f4g7_19 = $g7_19->mulInt64($f4, 30);
558
+		$f4g8_19 = $g8_19->mulInt64($f4, 30);
559
+		$f4g9_19 = $g9_19->mulInt64($f4, 30);
560
+		$f5g0    = $f5->mulInt64($g0, 30);
561
+		$f5g1_2  = $f5_2->mulInt64($g1, 30);
562
+		$f5g2    = $f5->mulInt64($g2, 30);
563
+		$f5g3_2  = $f5_2->mulInt64($g3, 30);
564
+		$f5g4    = $f5->mulInt64($g4, 30);
565
+		$f5g5_38 = $g5_19->mulInt64($f5_2, 30);
566
+		$f5g6_19 = $g6_19->mulInt64($f5, 30);
567
+		$f5g7_38 = $g7_19->mulInt64($f5_2, 30);
568
+		$f5g8_19 = $g8_19->mulInt64($f5, 30);
569
+		$f5g9_38 = $g9_19->mulInt64($f5_2, 30);
570
+		$f6g0    = $f6->mulInt64($g0, 30);
571
+		$f6g1    = $f6->mulInt64($g1, 30);
572
+		$f6g2    = $f6->mulInt64($g2, 30);
573
+		$f6g3    = $f6->mulInt64($g3, 30);
574
+		$f6g4_19 = $g4_19->mulInt64($f6, 30);
575
+		$f6g5_19 = $g5_19->mulInt64($f6, 30);
576
+		$f6g6_19 = $g6_19->mulInt64($f6, 30);
577
+		$f6g7_19 = $g7_19->mulInt64($f6, 30);
578
+		$f6g8_19 = $g8_19->mulInt64($f6, 30);
579
+		$f6g9_19 = $g9_19->mulInt64($f6, 30);
580
+		$f7g0    = $f7->mulInt64($g0, 30);
581
+		$f7g1_2  = $g1->mulInt64($f7_2, 30);
582
+		$f7g2    = $f7->mulInt64($g2, 30);
583
+		$f7g3_38 = $g3_19->mulInt64($f7_2, 30);
584
+		$f7g4_19 = $g4_19->mulInt64($f7, 30);
585
+		$f7g5_38 = $g5_19->mulInt64($f7_2, 30);
586
+		$f7g6_19 = $g6_19->mulInt64($f7, 30);
587
+		$f7g7_38 = $g7_19->mulInt64($f7_2, 30);
588
+		$f7g8_19 = $g8_19->mulInt64($f7, 30);
589
+		$f7g9_38 = $g9_19->mulInt64($f7_2, 30);
590
+		$f8g0    = $f8->mulInt64($g0, 30);
591
+		$f8g1    = $f8->mulInt64($g1, 29);
592
+		$f8g2_19 = $g2_19->mulInt64($f8, 30);
593
+		$f8g3_19 = $g3_19->mulInt64($f8, 30);
594
+		$f8g4_19 = $g4_19->mulInt64($f8, 30);
595
+		$f8g5_19 = $g5_19->mulInt64($f8, 30);
596
+		$f8g6_19 = $g6_19->mulInt64($f8, 30);
597
+		$f8g7_19 = $g7_19->mulInt64($f8, 30);
598
+		$f8g8_19 = $g8_19->mulInt64($f8, 30);
599
+		$f8g9_19 = $g9_19->mulInt64($f8, 30);
600
+		$f9g0    = $f9->mulInt64($g0, 30);
601
+		$f9g1_38 = $g1_19->mulInt64($f9_2, 30);
602
+		$f9g2_19 = $g2_19->mulInt64($f9, 30);
603
+		$f9g3_38 = $g3_19->mulInt64($f9_2, 30);
604
+		$f9g4_19 = $g4_19->mulInt64($f9, 30);
605
+		$f9g5_38 = $g5_19->mulInt64($f9_2, 30);
606
+		$f9g6_19 = $g6_19->mulInt64($f9, 30);
607
+		$f9g7_38 = $g7_19->mulInt64($f9_2, 30);
608
+		$f9g8_19 = $g8_19->mulInt64($f9, 30);
609
+		$f9g9_38 = $g9_19->mulInt64($f9_2, 30);
610
+
611
+		// $h0 = $f0g0 + $f1g9_38 + $f2g8_19 + $f3g7_38 + $f4g6_19 + $f5g5_38 + $f6g4_19 + $f7g3_38 + $f8g2_19 + $f9g1_38;
612
+		$h0 = $f0g0->addInt64($f1g9_38)->addInt64($f2g8_19)->addInt64($f3g7_38)
613
+			->addInt64($f4g6_19)->addInt64($f5g5_38)->addInt64($f6g4_19)
614
+			->addInt64($f7g3_38)->addInt64($f8g2_19)->addInt64($f9g1_38);
615
+
616
+		// $h1 = $f0g1 + $f1g0    + $f2g9_19 + $f3g8_19 + $f4g7_19 + $f5g6_19 + $f6g5_19 + $f7g4_19 + $f8g3_19 + $f9g2_19;
617
+		$h1 = $f0g1->addInt64($f1g0)->addInt64($f2g9_19)->addInt64($f3g8_19)
618
+			->addInt64($f4g7_19)->addInt64($f5g6_19)->addInt64($f6g5_19)
619
+			->addInt64($f7g4_19)->addInt64($f8g3_19)->addInt64($f9g2_19);
620
+
621
+		// $h2 = $f0g2 + $f1g1_2  + $f2g0    + $f3g9_38 + $f4g8_19 + $f5g7_38 + $f6g6_19 + $f7g5_38 + $f8g4_19 + $f9g3_38;
622
+		$h2 = $f0g2->addInt64($f1g1_2)->addInt64($f2g0)->addInt64($f3g9_38)
623
+			->addInt64($f4g8_19)->addInt64($f5g7_38)->addInt64($f6g6_19)
624
+			->addInt64($f7g5_38)->addInt64($f8g4_19)->addInt64($f9g3_38);
625
+
626
+		// $h3 = $f0g3 + $f1g2    + $f2g1    + $f3g0    + $f4g9_19 + $f5g8_19 + $f6g7_19 + $f7g6_19 + $f8g5_19 + $f9g4_19;
627
+		$h3 = $f0g3->addInt64($f1g2)->addInt64($f2g1)->addInt64($f3g0)
628
+			->addInt64($f4g9_19)->addInt64($f5g8_19)->addInt64($f6g7_19)
629
+			->addInt64($f7g6_19)->addInt64($f8g5_19)->addInt64($f9g4_19);
630
+
631
+		// $h4 = $f0g4 + $f1g3_2  + $f2g2    + $f3g1_2  + $f4g0    + $f5g9_38 + $f6g8_19 + $f7g7_38 + $f8g6_19 + $f9g5_38;
632
+		$h4 = $f0g4->addInt64($f1g3_2)->addInt64($f2g2)->addInt64($f3g1_2)
633
+			->addInt64($f4g0)->addInt64($f5g9_38)->addInt64($f6g8_19)
634
+			->addInt64($f7g7_38)->addInt64($f8g6_19)->addInt64($f9g5_38);
635
+
636
+		// $h5 = $f0g5 + $f1g4    + $f2g3    + $f3g2    + $f4g1    + $f5g0    + $f6g9_19 + $f7g8_19 + $f8g7_19 + $f9g6_19;
637
+		$h5 = $f0g5->addInt64($f1g4)->addInt64($f2g3)->addInt64($f3g2)
638
+			->addInt64($f4g1)->addInt64($f5g0)->addInt64($f6g9_19)
639
+			->addInt64($f7g8_19)->addInt64($f8g7_19)->addInt64($f9g6_19);
640
+
641
+		// $h6 = $f0g6 + $f1g5_2  + $f2g4    + $f3g3_2  + $f4g2    + $f5g1_2  + $f6g0    + $f7g9_38 + $f8g8_19 + $f9g7_38;
642
+		$h6 = $f0g6->addInt64($f1g5_2)->addInt64($f2g4)->addInt64($f3g3_2)
643
+			->addInt64($f4g2)->addInt64($f5g1_2)->addInt64($f6g0)
644
+			->addInt64($f7g9_38)->addInt64($f8g8_19)->addInt64($f9g7_38);
645
+
646
+		// $h7 = $f0g7 + $f1g6    + $f2g5    + $f3g4    + $f4g3    + $f5g2    + $f6g1    + $f7g0    + $f8g9_19 + $f9g8_19;
647
+		$h7 = $f0g7->addInt64($f1g6)->addInt64($f2g5)->addInt64($f3g4)
648
+			->addInt64($f4g3)->addInt64($f5g2)->addInt64($f6g1)
649
+			->addInt64($f7g0)->addInt64($f8g9_19)->addInt64($f9g8_19);
650
+
651
+		// $h8 = $f0g8 + $f1g7_2  + $f2g6    + $f3g5_2  + $f4g4    + $f5g3_2  + $f6g2    + $f7g1_2  + $f8g0    + $f9g9_38;
652
+		$h8 = $f0g8->addInt64($f1g7_2)->addInt64($f2g6)->addInt64($f3g5_2)
653
+			->addInt64($f4g4)->addInt64($f5g3_2)->addInt64($f6g2)
654
+			->addInt64($f7g1_2)->addInt64($f8g0)->addInt64($f9g9_38);
655
+
656
+		// $h9 = $f0g9 + $f1g8    + $f2g7    + $f3g6    + $f4g5    + $f5g4    + $f6g3    + $f7g2    + $f8g1    + $f9g0   ;
657
+		$h9 = $f0g9->addInt64($f1g8)->addInt64($f2g7)->addInt64($f3g6)
658
+			->addInt64($f4g5)->addInt64($f5g4)->addInt64($f6g3)
659
+			->addInt64($f7g2)->addInt64($f8g1)->addInt64($f9g0);
660
+
661
+		/**
662
+		 * @var ParagonIE_Sodium_Core32_Int64 $h0
663
+		 * @var ParagonIE_Sodium_Core32_Int64 $h1
664
+		 * @var ParagonIE_Sodium_Core32_Int64 $h2
665
+		 * @var ParagonIE_Sodium_Core32_Int64 $h3
666
+		 * @var ParagonIE_Sodium_Core32_Int64 $h4
667
+		 * @var ParagonIE_Sodium_Core32_Int64 $h5
668
+		 * @var ParagonIE_Sodium_Core32_Int64 $h6
669
+		 * @var ParagonIE_Sodium_Core32_Int64 $h7
670
+		 * @var ParagonIE_Sodium_Core32_Int64 $h8
671
+		 * @var ParagonIE_Sodium_Core32_Int64 $h9
672
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry0
673
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry1
674
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry2
675
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry3
676
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry4
677
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry5
678
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry6
679
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry7
680
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry8
681
+		 * @var ParagonIE_Sodium_Core32_Int64 $carry9
682
+		 */
683
+		$carry0 = $h0->addInt(1 << 25)->shiftRight(26);
684
+		$h1 = $h1->addInt64($carry0);
685
+		$h0 = $h0->subInt64($carry0->shiftLeft(26));
686
+		$carry4 = $h4->addInt(1 << 25)->shiftRight(26);
687
+		$h5 = $h5->addInt64($carry4);
688
+		$h4 = $h4->subInt64($carry4->shiftLeft(26));
689
+
690
+		$carry1 = $h1->addInt(1 << 24)->shiftRight(25);
691
+		$h2 = $h2->addInt64($carry1);
692
+		$h1 = $h1->subInt64($carry1->shiftLeft(25));
693
+		$carry5 = $h5->addInt(1 << 24)->shiftRight(25);
694
+		$h6 = $h6->addInt64($carry5);
695
+		$h5 = $h5->subInt64($carry5->shiftLeft(25));
696
+
697
+		$carry2 = $h2->addInt(1 << 25)->shiftRight(26);
698
+		$h3 = $h3->addInt64($carry2);
699
+		$h2 = $h2->subInt64($carry2->shiftLeft(26));
700
+		$carry6 = $h6->addInt(1 << 25)->shiftRight(26);
701
+		$h7 = $h7->addInt64($carry6);
702
+		$h6 = $h6->subInt64($carry6->shiftLeft(26));
703
+
704
+		$carry3 = $h3->addInt(1 << 24)->shiftRight(25);
705
+		$h4 = $h4->addInt64($carry3);
706
+		$h3 = $h3->subInt64($carry3->shiftLeft(25));
707
+		$carry7 = $h7->addInt(1 << 24)->shiftRight(25);
708
+		$h8 = $h8->addInt64($carry7);
709
+		$h7 = $h7->subInt64($carry7->shiftLeft(25));
710
+
711
+		$carry4 = $h4->addInt(1 << 25)->shiftRight(26);
712
+		$h5 = $h5->addInt64($carry4);
713
+		$h4 = $h4->subInt64($carry4->shiftLeft(26));
714
+		$carry8 = $h8->addInt(1 << 25)->shiftRight(26);
715
+		$h9 = $h9->addInt64($carry8);
716
+		$h8 = $h8->subInt64($carry8->shiftLeft(26));
717
+
718
+		$carry9 = $h9->addInt(1 << 24)->shiftRight(25);
719
+		$h0 = $h0->addInt64($carry9->mulInt(19, 5));
720
+		$h9 = $h9->subInt64($carry9->shiftLeft(25));
721
+
722
+		$carry0 = $h0->addInt(1 << 25)->shiftRight(26);
723
+		$h1 = $h1->addInt64($carry0);
724
+		$h0 = $h0->subInt64($carry0->shiftLeft(26));
725
+
726
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
727
+			array(
728
+				$h0->toInt32(),
729
+				$h1->toInt32(),
730
+				$h2->toInt32(),
731
+				$h3->toInt32(),
732
+				$h4->toInt32(),
733
+				$h5->toInt32(),
734
+				$h6->toInt32(),
735
+				$h7->toInt32(),
736
+				$h8->toInt32(),
737
+				$h9->toInt32()
738
+			)
739
+		);
740
+	}
741
+
742
+	/**
743
+	 * Get the negative values for each piece of the field element.
744
+	 *
745
+	 * h = -f
746
+	 *
747
+	 * @internal You should not use this directly from another application
748
+	 *
749
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
750
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
751
+	 * @psalm-suppress MixedAssignment
752
+	 * @psalm-suppress MixedMethodCall
753
+	 */
754
+	public static function fe_neg(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
755
+	{
756
+		$h = new ParagonIE_Sodium_Core32_Curve25519_Fe();
757
+		for ($i = 0; $i < 10; ++$i) {
758
+			$h[$i] = $h[$i]->subInt32($f[$i]);
759
+		}
760
+		return $h;
761
+	}
762
+
763
+	/**
764
+	 * Square a field element
765
+	 *
766
+	 * h = f * f
767
+	 *
768
+	 * @internal You should not use this directly from another application
769
+	 *
770
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
771
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
772
+	 * @throws SodiumException
773
+	 * @throws TypeError
774
+	 * @psalm-suppress MixedMethodCall
775
+	 */
776
+	public static function fe_sq(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
777
+	{
778
+		/** @var ParagonIE_Sodium_Core32_Int64 $f0 */
779
+		$f0 = $f[0]->toInt64();
780
+		/** @var ParagonIE_Sodium_Core32_Int64 $f1 */
781
+		$f1 = $f[1]->toInt64();
782
+		/** @var ParagonIE_Sodium_Core32_Int64 $f2 */
783
+		$f2 = $f[2]->toInt64();
784
+		/** @var ParagonIE_Sodium_Core32_Int64 $f3 */
785
+		$f3 = $f[3]->toInt64();
786
+		/** @var ParagonIE_Sodium_Core32_Int64 $f4 */
787
+		$f4 = $f[4]->toInt64();
788
+		/** @var ParagonIE_Sodium_Core32_Int64 $f5 */
789
+		$f5 = $f[5]->toInt64();
790
+		/** @var ParagonIE_Sodium_Core32_Int64 $f6 */
791
+		$f6 = $f[6]->toInt64();
792
+		/** @var ParagonIE_Sodium_Core32_Int64 $f7 */
793
+		$f7 = $f[7]->toInt64();
794
+		/** @var ParagonIE_Sodium_Core32_Int64 $f8 */
795
+		$f8 = $f[8]->toInt64();
796
+		/** @var ParagonIE_Sodium_Core32_Int64 $f9 */
797
+		$f9 = $f[9]->toInt64();
798
+
799
+		/** @var ParagonIE_Sodium_Core32_Int64 $f0_2 */
800
+		$f0_2 = $f0->shiftLeft(1);
801
+		$f1_2 = $f1->shiftLeft(1);
802
+		$f2_2 = $f2->shiftLeft(1);
803
+		$f3_2 = $f3->shiftLeft(1);
804
+		$f4_2 = $f4->shiftLeft(1);
805
+		$f5_2 = $f5->shiftLeft(1);
806
+		$f6_2 = $f6->shiftLeft(1);
807
+		$f7_2 = $f7->shiftLeft(1);
808
+		$f5_38 = $f5->mulInt(38, 6);
809
+		$f6_19 = $f6->mulInt(19, 5);
810
+		$f7_38 = $f7->mulInt(38, 6);
811
+		$f8_19 = $f8->mulInt(19, 5);
812
+		$f9_38 = $f9->mulInt(38, 6);
813
+		/** @var ParagonIE_Sodium_Core32_Int64 $f0f0*/
814
+		$f0f0    = $f0->mulInt64($f0, 28);
815
+		$f0f1_2  = $f0_2->mulInt64($f1, 28);
816
+		$f0f2_2 =  $f0_2->mulInt64($f2, 28);
817
+		$f0f3_2 =  $f0_2->mulInt64($f3, 28);
818
+		$f0f4_2 =  $f0_2->mulInt64($f4, 28);
819
+		$f0f5_2 =  $f0_2->mulInt64($f5, 28);
820
+		$f0f6_2 =  $f0_2->mulInt64($f6, 28);
821
+		$f0f7_2 =  $f0_2->mulInt64($f7, 28);
822
+		$f0f8_2 =  $f0_2->mulInt64($f8, 28);
823
+		$f0f9_2 =  $f0_2->mulInt64($f9, 28);
824
+
825
+		$f1f1_2 = $f1_2->mulInt64($f1, 28);
826
+		$f1f2_2 = $f1_2->mulInt64($f2, 28);
827
+		$f1f3_4 = $f1_2->mulInt64($f3_2, 28);
828
+		$f1f4_2 = $f1_2->mulInt64($f4, 28);
829
+		$f1f5_4 = $f1_2->mulInt64($f5_2, 30);
830
+		$f1f6_2 = $f1_2->mulInt64($f6, 28);
831
+		$f1f7_4 = $f1_2->mulInt64($f7_2, 28);
832
+		$f1f8_2 = $f1_2->mulInt64($f8, 28);
833
+		$f1f9_76 = $f9_38->mulInt64($f1_2, 30);
834
+
835
+		$f2f2 = $f2->mulInt64($f2, 28);
836
+		$f2f3_2 = $f2_2->mulInt64($f3, 28);
837
+		$f2f4_2 = $f2_2->mulInt64($f4, 28);
838
+		$f2f5_2 = $f2_2->mulInt64($f5, 28);
839
+		$f2f6_2 = $f2_2->mulInt64($f6, 28);
840
+		$f2f7_2 = $f2_2->mulInt64($f7, 28);
841
+		$f2f8_38 = $f8_19->mulInt64($f2_2, 30);
842
+		$f2f9_38 = $f9_38->mulInt64($f2, 30);
843
+
844
+		$f3f3_2 = $f3_2->mulInt64($f3, 28);
845
+		$f3f4_2 = $f3_2->mulInt64($f4, 28);
846
+		$f3f5_4 = $f3_2->mulInt64($f5_2, 30);
847
+		$f3f6_2 = $f3_2->mulInt64($f6, 28);
848
+		$f3f7_76 = $f7_38->mulInt64($f3_2, 30);
849
+		$f3f8_38 = $f8_19->mulInt64($f3_2, 30);
850
+		$f3f9_76 = $f9_38->mulInt64($f3_2, 30);
851
+
852
+		$f4f4 = $f4->mulInt64($f4, 28);
853
+		$f4f5_2 = $f4_2->mulInt64($f5, 28);
854
+		$f4f6_38 = $f6_19->mulInt64($f4_2, 30);
855
+		$f4f7_38 = $f7_38->mulInt64($f4, 30);
856
+		$f4f8_38 = $f8_19->mulInt64($f4_2, 30);
857
+		$f4f9_38 = $f9_38->mulInt64($f4, 30);
858
+
859
+		$f5f5_38 = $f5_38->mulInt64($f5, 30);
860
+		$f5f6_38 = $f6_19->mulInt64($f5_2, 30);
861
+		$f5f7_76 = $f7_38->mulInt64($f5_2, 30);
862
+		$f5f8_38 = $f8_19->mulInt64($f5_2, 30);
863
+		$f5f9_76 = $f9_38->mulInt64($f5_2, 30);
864
+
865
+		$f6f6_19 = $f6_19->mulInt64($f6, 30);
866
+		$f6f7_38 = $f7_38->mulInt64($f6, 30);
867
+		$f6f8_38 = $f8_19->mulInt64($f6_2, 30);
868
+		$f6f9_38 = $f9_38->mulInt64($f6, 30);
869
+
870
+		$f7f7_38 = $f7_38->mulInt64($f7, 28);
871
+		$f7f8_38 = $f8_19->mulInt64($f7_2, 30);
872
+		$f7f9_76 = $f9_38->mulInt64($f7_2, 30);
873
+
874
+		$f8f8_19 = $f8_19->mulInt64($f8, 30);
875
+		$f8f9_38 = $f9_38->mulInt64($f8, 30);
876
+
877
+		$f9f9_38 = $f9_38->mulInt64($f9, 28);
878
+
879
+		$h0 = $f0f0->addInt64($f1f9_76)->addInt64($f2f8_38)->addInt64($f3f7_76)->addInt64($f4f6_38)->addInt64($f5f5_38);
880
+		$h1 = $f0f1_2->addInt64($f2f9_38)->addInt64($f3f8_38)->addInt64($f4f7_38)->addInt64($f5f6_38);
881
+		$h2 = $f0f2_2->addInt64($f1f1_2)->addInt64($f3f9_76)->addInt64($f4f8_38)->addInt64($f5f7_76)->addInt64($f6f6_19);
882
+		$h3 = $f0f3_2->addInt64($f1f2_2)->addInt64($f4f9_38)->addInt64($f5f8_38)->addInt64($f6f7_38);
883
+		$h4 = $f0f4_2->addInt64($f1f3_4)->addInt64($f2f2)->addInt64($f5f9_76)->addInt64($f6f8_38)->addInt64($f7f7_38);
884
+		$h5 = $f0f5_2->addInt64($f1f4_2)->addInt64($f2f3_2)->addInt64($f6f9_38)->addInt64($f7f8_38);
885
+		$h6 = $f0f6_2->addInt64($f1f5_4)->addInt64($f2f4_2)->addInt64($f3f3_2)->addInt64($f7f9_76)->addInt64($f8f8_19);
886
+		$h7 = $f0f7_2->addInt64($f1f6_2)->addInt64($f2f5_2)->addInt64($f3f4_2)->addInt64($f8f9_38);
887
+		$h8 = $f0f8_2->addInt64($f1f7_4)->addInt64($f2f6_2)->addInt64($f3f5_4)->addInt64($f4f4)->addInt64($f9f9_38);
888
+		$h9 = $f0f9_2->addInt64($f1f8_2)->addInt64($f2f7_2)->addInt64($f3f6_2)->addInt64($f4f5_2);
889
+
890
+		/**
891
+		 * @var ParagonIE_Sodium_Core32_Int64 $h0
892
+		 * @var ParagonIE_Sodium_Core32_Int64 $h1
893
+		 * @var ParagonIE_Sodium_Core32_Int64 $h2
894
+		 * @var ParagonIE_Sodium_Core32_Int64 $h3
895
+		 * @var ParagonIE_Sodium_Core32_Int64 $h4
896
+		 * @var ParagonIE_Sodium_Core32_Int64 $h5
897
+		 * @var ParagonIE_Sodium_Core32_Int64 $h6
898
+		 * @var ParagonIE_Sodium_Core32_Int64 $h7
899
+		 * @var ParagonIE_Sodium_Core32_Int64 $h8
900
+		 * @var ParagonIE_Sodium_Core32_Int64 $h9
901
+		 */
902
+
903
+		$carry0 = $h0->addInt(1 << 25)->shiftRight(26);
904
+		$h1 = $h1->addInt64($carry0);
905
+		$h0 = $h0->subInt64($carry0->shiftLeft(26));
906
+
907
+		$carry4 = $h4->addInt(1 << 25)->shiftRight(26);
908
+		$h5 = $h5->addInt64($carry4);
909
+		$h4 = $h4->subInt64($carry4->shiftLeft(26));
910
+
911
+		$carry1 = $h1->addInt(1 << 24)->shiftRight(25);
912
+		$h2 = $h2->addInt64($carry1);
913
+		$h1 = $h1->subInt64($carry1->shiftLeft(25));
914
+
915
+		$carry5 = $h5->addInt(1 << 24)->shiftRight(25);
916
+		$h6 = $h6->addInt64($carry5);
917
+		$h5 = $h5->subInt64($carry5->shiftLeft(25));
918
+
919
+		$carry2 = $h2->addInt(1 << 25)->shiftRight(26);
920
+		$h3 = $h3->addInt64($carry2);
921
+		$h2 = $h2->subInt64($carry2->shiftLeft(26));
922
+
923
+		$carry6 = $h6->addInt(1 << 25)->shiftRight(26);
924
+		$h7 = $h7->addInt64($carry6);
925
+		$h6 = $h6->subInt64($carry6->shiftLeft(26));
926
+
927
+		$carry3 = $h3->addInt(1 << 24)->shiftRight(25);
928
+		$h4 = $h4->addInt64($carry3);
929
+		$h3 = $h3->subInt64($carry3->shiftLeft(25));
930
+
931
+		$carry7 = $h7->addInt(1 << 24)->shiftRight(25);
932
+		$h8 = $h8->addInt64($carry7);
933
+		$h7 = $h7->subInt64($carry7->shiftLeft(25));
934
+
935
+		$carry4 = $h4->addInt(1 << 25)->shiftRight(26);
936
+		$h5 = $h5->addInt64($carry4);
937
+		$h4 = $h4->subInt64($carry4->shiftLeft(26));
938
+
939
+		$carry8 = $h8->addInt(1 << 25)->shiftRight(26);
940
+		$h9 = $h9->addInt64($carry8);
941
+		$h8 = $h8->subInt64($carry8->shiftLeft(26));
942
+
943
+		$carry9 = $h9->addInt(1 << 24)->shiftRight(25);
944
+		$h0 = $h0->addInt64($carry9->mulInt(19, 5));
945
+		$h9 = $h9->subInt64($carry9->shiftLeft(25));
946
+
947
+		$carry0 = $h0->addInt(1 << 25)->shiftRight(26);
948
+		$h1 = $h1->addInt64($carry0);
949
+		$h0 = $h0->subInt64($carry0->shiftLeft(26));
950
+
951
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
952
+			array(
953
+				$h0->toInt32(),
954
+				$h1->toInt32(),
955
+				$h2->toInt32(),
956
+				$h3->toInt32(),
957
+				$h4->toInt32(),
958
+				$h5->toInt32(),
959
+				$h6->toInt32(),
960
+				$h7->toInt32(),
961
+				$h8->toInt32(),
962
+				$h9->toInt32()
963
+			)
964
+		);
965
+	}
966
+
967
+	/**
968
+	 * Square and double a field element
969
+	 *
970
+	 * h = 2 * f * f
971
+	 *
972
+	 * @internal You should not use this directly from another application
973
+	 *
974
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
975
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
976
+	 * @throws SodiumException
977
+	 * @throws TypeError
978
+	 * @psalm-suppress MixedMethodCall
979
+	 */
980
+	public static function fe_sq2(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
981
+	{
982
+		/** @var ParagonIE_Sodium_Core32_Int64 $f0 */
983
+		$f0 = $f[0]->toInt64();
984
+		/** @var ParagonIE_Sodium_Core32_Int64 $f1 */
985
+		$f1 = $f[1]->toInt64();
986
+		/** @var ParagonIE_Sodium_Core32_Int64 $f2 */
987
+		$f2 = $f[2]->toInt64();
988
+		/** @var ParagonIE_Sodium_Core32_Int64 $f3 */
989
+		$f3 = $f[3]->toInt64();
990
+		/** @var ParagonIE_Sodium_Core32_Int64 $f4 */
991
+		$f4 = $f[4]->toInt64();
992
+		/** @var ParagonIE_Sodium_Core32_Int64 $f5 */
993
+		$f5 = $f[5]->toInt64();
994
+		/** @var ParagonIE_Sodium_Core32_Int64 $f6 */
995
+		$f6 = $f[6]->toInt64();
996
+		/** @var ParagonIE_Sodium_Core32_Int64 $f7 */
997
+		$f7 = $f[7]->toInt64();
998
+		/** @var ParagonIE_Sodium_Core32_Int64 $f8 */
999
+		$f8 = $f[8]->toInt64();
1000
+		/** @var ParagonIE_Sodium_Core32_Int64 $f9 */
1001
+		$f9 = $f[9]->toInt64();
1002
+
1003
+		$f0_2 = $f0->shiftLeft(1);
1004
+		$f1_2 = $f1->shiftLeft(1);
1005
+		$f2_2 = $f2->shiftLeft(1);
1006
+		$f3_2 = $f3->shiftLeft(1);
1007
+		$f4_2 = $f4->shiftLeft(1);
1008
+		$f5_2 = $f5->shiftLeft(1);
1009
+		$f6_2 = $f6->shiftLeft(1);
1010
+		$f7_2 = $f7->shiftLeft(1);
1011
+		$f5_38 = $f5->mulInt(38, 6); /* 1.959375*2^30 */
1012
+		$f6_19 = $f6->mulInt(19, 5); /* 1.959375*2^30 */
1013
+		$f7_38 = $f7->mulInt(38, 6); /* 1.959375*2^30 */
1014
+		$f8_19 = $f8->mulInt(19, 5); /* 1.959375*2^30 */
1015
+		$f9_38 = $f9->mulInt(38, 6); /* 1.959375*2^30 */
1016
+		$f0f0 = $f0->mulInt64($f0, 28);
1017
+		$f0f1_2 = $f0_2->mulInt64($f1, 28);
1018
+		$f0f2_2 = $f0_2->mulInt64($f2, 28);
1019
+		$f0f3_2 = $f0_2->mulInt64($f3, 28);
1020
+		$f0f4_2 = $f0_2->mulInt64($f4, 28);
1021
+		$f0f5_2 = $f0_2->mulInt64($f5, 28);
1022
+		$f0f6_2 = $f0_2->mulInt64($f6, 28);
1023
+		$f0f7_2 = $f0_2->mulInt64($f7, 28);
1024
+		$f0f8_2 = $f0_2->mulInt64($f8, 28);
1025
+		$f0f9_2 = $f0_2->mulInt64($f9, 28);
1026
+		$f1f1_2 = $f1_2->mulInt64($f1, 28);
1027
+		$f1f2_2 = $f1_2->mulInt64($f2, 28);
1028
+		$f1f3_4 = $f1_2->mulInt64($f3_2, 29);
1029
+		$f1f4_2 = $f1_2->mulInt64($f4, 28);
1030
+		$f1f5_4 = $f1_2->mulInt64($f5_2, 29);
1031
+		$f1f6_2 = $f1_2->mulInt64($f6, 28);
1032
+		$f1f7_4 = $f1_2->mulInt64($f7_2, 29);
1033
+		$f1f8_2 = $f1_2->mulInt64($f8, 28);
1034
+		$f1f9_76 = $f9_38->mulInt64($f1_2, 29);
1035
+		$f2f2 = $f2->mulInt64($f2, 28);
1036
+		$f2f3_2 = $f2_2->mulInt64($f3, 28);
1037
+		$f2f4_2 = $f2_2->mulInt64($f4, 28);
1038
+		$f2f5_2 = $f2_2->mulInt64($f5, 28);
1039
+		$f2f6_2 = $f2_2->mulInt64($f6, 28);
1040
+		$f2f7_2 = $f2_2->mulInt64($f7, 28);
1041
+		$f2f8_38 = $f8_19->mulInt64($f2_2, 29);
1042
+		$f2f9_38 = $f9_38->mulInt64($f2, 29);
1043
+		$f3f3_2 = $f3_2->mulInt64($f3, 28);
1044
+		$f3f4_2 = $f3_2->mulInt64($f4, 28);
1045
+		$f3f5_4 = $f3_2->mulInt64($f5_2, 28);
1046
+		$f3f6_2 = $f3_2->mulInt64($f6, 28);
1047
+		$f3f7_76 = $f7_38->mulInt64($f3_2, 29);
1048
+		$f3f8_38 = $f8_19->mulInt64($f3_2, 29);
1049
+		$f3f9_76 = $f9_38->mulInt64($f3_2, 29);
1050
+		$f4f4 = $f4->mulInt64($f4, 28);
1051
+		$f4f5_2 = $f4_2->mulInt64($f5, 28);
1052
+		$f4f6_38 = $f6_19->mulInt64($f4_2, 29);
1053
+		$f4f7_38 = $f7_38->mulInt64($f4, 29);
1054
+		$f4f8_38 = $f8_19->mulInt64($f4_2, 29);
1055
+		$f4f9_38 = $f9_38->mulInt64($f4, 29);
1056
+		$f5f5_38 = $f5_38->mulInt64($f5, 29);
1057
+		$f5f6_38 = $f6_19->mulInt64($f5_2, 29);
1058
+		$f5f7_76 = $f7_38->mulInt64($f5_2, 29);
1059
+		$f5f8_38 = $f8_19->mulInt64($f5_2, 29);
1060
+		$f5f9_76 = $f9_38->mulInt64($f5_2, 29);
1061
+		$f6f6_19 = $f6_19->mulInt64($f6, 29);
1062
+		$f6f7_38 = $f7_38->mulInt64($f6, 29);
1063
+		$f6f8_38 = $f8_19->mulInt64($f6_2, 29);
1064
+		$f6f9_38 = $f9_38->mulInt64($f6, 29);
1065
+		$f7f7_38 = $f7_38->mulInt64($f7, 29);
1066
+		$f7f8_38 = $f8_19->mulInt64($f7_2, 29);
1067
+		$f7f9_76 = $f9_38->mulInt64($f7_2, 29);
1068
+		$f8f8_19 = $f8_19->mulInt64($f8, 29);
1069
+		$f8f9_38 = $f9_38->mulInt64($f8, 29);
1070
+		$f9f9_38 = $f9_38->mulInt64($f9, 29);
1071
+
1072
+		$h0 = $f0f0->addInt64($f1f9_76)->addInt64($f2f8_38)->addInt64($f3f7_76)->addInt64($f4f6_38)->addInt64($f5f5_38);
1073
+		$h1 = $f0f1_2->addInt64($f2f9_38)->addInt64($f3f8_38)->addInt64($f4f7_38)->addInt64($f5f6_38);
1074
+		$h2 = $f0f2_2->addInt64($f1f1_2)->addInt64($f3f9_76)->addInt64($f4f8_38)->addInt64($f5f7_76)->addInt64($f6f6_19);
1075
+		$h3 = $f0f3_2->addInt64($f1f2_2)->addInt64($f4f9_38)->addInt64($f5f8_38)->addInt64($f6f7_38);
1076
+		$h4 = $f0f4_2->addInt64($f1f3_4)->addInt64($f2f2)->addInt64($f5f9_76)->addInt64($f6f8_38)->addInt64($f7f7_38);
1077
+		$h5 = $f0f5_2->addInt64($f1f4_2)->addInt64($f2f3_2)->addInt64($f6f9_38)->addInt64($f7f8_38);
1078
+		$h6 = $f0f6_2->addInt64($f1f5_4)->addInt64($f2f4_2)->addInt64($f3f3_2)->addInt64($f7f9_76)->addInt64($f8f8_19);
1079
+		$h7 = $f0f7_2->addInt64($f1f6_2)->addInt64($f2f5_2)->addInt64($f3f4_2)->addInt64($f8f9_38);
1080
+		$h8 = $f0f8_2->addInt64($f1f7_4)->addInt64($f2f6_2)->addInt64($f3f5_4)->addInt64($f4f4)->addInt64($f9f9_38);
1081
+		$h9 = $f0f9_2->addInt64($f1f8_2)->addInt64($f2f7_2)->addInt64($f3f6_2)->addInt64($f4f5_2);
1082
+
1083
+		/**
1084
+		 * @var ParagonIE_Sodium_Core32_Int64 $h0
1085
+		 * @var ParagonIE_Sodium_Core32_Int64 $h1
1086
+		 * @var ParagonIE_Sodium_Core32_Int64 $h2
1087
+		 * @var ParagonIE_Sodium_Core32_Int64 $h3
1088
+		 * @var ParagonIE_Sodium_Core32_Int64 $h4
1089
+		 * @var ParagonIE_Sodium_Core32_Int64 $h5
1090
+		 * @var ParagonIE_Sodium_Core32_Int64 $h6
1091
+		 * @var ParagonIE_Sodium_Core32_Int64 $h7
1092
+		 * @var ParagonIE_Sodium_Core32_Int64 $h8
1093
+		 * @var ParagonIE_Sodium_Core32_Int64 $h9
1094
+		 */
1095
+		$h0 = $h0->shiftLeft(1);
1096
+		$h1 = $h1->shiftLeft(1);
1097
+		$h2 = $h2->shiftLeft(1);
1098
+		$h3 = $h3->shiftLeft(1);
1099
+		$h4 = $h4->shiftLeft(1);
1100
+		$h5 = $h5->shiftLeft(1);
1101
+		$h6 = $h6->shiftLeft(1);
1102
+		$h7 = $h7->shiftLeft(1);
1103
+		$h8 = $h8->shiftLeft(1);
1104
+		$h9 = $h9->shiftLeft(1);
1105
+
1106
+		$carry0 = $h0->addInt(1 << 25)->shiftRight(26);
1107
+		$h1 = $h1->addInt64($carry0);
1108
+		$h0 = $h0->subInt64($carry0->shiftLeft(26));
1109
+		$carry4 = $h4->addInt(1 << 25)->shiftRight(26);
1110
+		$h5 = $h5->addInt64($carry4);
1111
+		$h4 = $h4->subInt64($carry4->shiftLeft(26));
1112
+
1113
+		$carry1 = $h1->addInt(1 << 24)->shiftRight(25);
1114
+		$h2 = $h2->addInt64($carry1);
1115
+		$h1 = $h1->subInt64($carry1->shiftLeft(25));
1116
+		$carry5 = $h5->addInt(1 << 24)->shiftRight(25);
1117
+		$h6 = $h6->addInt64($carry5);
1118
+		$h5 = $h5->subInt64($carry5->shiftLeft(25));
1119
+
1120
+		$carry2 = $h2->addInt(1 << 25)->shiftRight(26);
1121
+		$h3 = $h3->addInt64($carry2);
1122
+		$h2 = $h2->subInt64($carry2->shiftLeft(26));
1123
+		$carry6 = $h6->addInt(1 << 25)->shiftRight(26);
1124
+		$h7 = $h7->addInt64($carry6);
1125
+		$h6 = $h6->subInt64($carry6->shiftLeft(26));
1126
+
1127
+		$carry3 = $h3->addInt(1 << 24)->shiftRight(25);
1128
+		$h4 = $h4->addInt64($carry3);
1129
+		$h3 = $h3->subInt64($carry3->shiftLeft(25));
1130
+		$carry7 = $h7->addInt(1 << 24)->shiftRight(25);
1131
+		$h8 = $h8->addInt64($carry7);
1132
+		$h7 = $h7->subInt64($carry7->shiftLeft(25));
1133
+
1134
+		$carry4 = $h4->addInt(1 << 25)->shiftRight(26);
1135
+		$h5 = $h5->addInt64($carry4);
1136
+		$h4 = $h4->subInt64($carry4->shiftLeft(26));
1137
+		$carry8 = $h8->addInt(1 << 25)->shiftRight(26);
1138
+		$h9 = $h9->addInt64($carry8);
1139
+		$h8 = $h8->subInt64($carry8->shiftLeft(26));
1140
+
1141
+		$carry9 = $h9->addInt(1 << 24)->shiftRight(25);
1142
+		$h0 = $h0->addInt64($carry9->mulInt(19, 5));
1143
+		$h9 = $h9->subInt64($carry9->shiftLeft(25));
1144
+
1145
+		$carry0 = $h0->addInt(1 << 25)->shiftRight(26);
1146
+		$h1 = $h1->addInt64($carry0);
1147
+		$h0 = $h0->subInt64($carry0->shiftLeft(26));
1148
+
1149
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1150
+			array(
1151
+				$h0->toInt32(),
1152
+				$h1->toInt32(),
1153
+				$h2->toInt32(),
1154
+				$h3->toInt32(),
1155
+				$h4->toInt32(),
1156
+				$h5->toInt32(),
1157
+				$h6->toInt32(),
1158
+				$h7->toInt32(),
1159
+				$h8->toInt32(),
1160
+				$h9->toInt32()
1161
+			)
1162
+		);
1163
+	}
1164
+
1165
+	/**
1166
+	 * @internal You should not use this directly from another application
1167
+	 *
1168
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $Z
1169
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
1170
+	 * @throws SodiumException
1171
+	 * @throws TypeError
1172
+	 */
1173
+	public static function fe_invert(ParagonIE_Sodium_Core32_Curve25519_Fe $Z)
1174
+	{
1175
+		$z = clone $Z;
1176
+		$t0 = self::fe_sq($z);
1177
+		$t1 = self::fe_sq($t0);
1178
+		$t1 = self::fe_sq($t1);
1179
+		$t1 = self::fe_mul($z, $t1);
1180
+		$t0 = self::fe_mul($t0, $t1);
1181
+		$t2 = self::fe_sq($t0);
1182
+		$t1 = self::fe_mul($t1, $t2);
1183
+		$t2 = self::fe_sq($t1);
1184
+		for ($i = 1; $i < 5; ++$i) {
1185
+			$t2 = self::fe_sq($t2);
1186
+		}
1187
+		$t1 = self::fe_mul($t2, $t1);
1188
+		$t2 = self::fe_sq($t1);
1189
+		for ($i = 1; $i < 10; ++$i) {
1190
+			$t2 = self::fe_sq($t2);
1191
+		}
1192
+		$t2 = self::fe_mul($t2, $t1);
1193
+		$t3 = self::fe_sq($t2);
1194
+		for ($i = 1; $i < 20; ++$i) {
1195
+			$t3 = self::fe_sq($t3);
1196
+		}
1197
+		$t2 = self::fe_mul($t3, $t2);
1198
+		$t2 = self::fe_sq($t2);
1199
+		for ($i = 1; $i < 10; ++$i) {
1200
+			$t2 = self::fe_sq($t2);
1201
+		}
1202
+		$t1 = self::fe_mul($t2, $t1);
1203
+		$t2 = self::fe_sq($t1);
1204
+		for ($i = 1; $i < 50; ++$i) {
1205
+			$t2 = self::fe_sq($t2);
1206
+		}
1207
+		$t2 = self::fe_mul($t2, $t1);
1208
+		$t3 = self::fe_sq($t2);
1209
+		for ($i = 1; $i < 100; ++$i) {
1210
+			$t3 = self::fe_sq($t3);
1211
+		}
1212
+		$t2 = self::fe_mul($t3, $t2);
1213
+		$t2 = self::fe_sq($t2);
1214
+		for ($i = 1; $i < 50; ++$i) {
1215
+			$t2 = self::fe_sq($t2);
1216
+		}
1217
+		$t1 = self::fe_mul($t2, $t1);
1218
+		$t1 = self::fe_sq($t1);
1219
+		for ($i = 1; $i < 5; ++$i) {
1220
+			$t1 = self::fe_sq($t1);
1221
+		}
1222
+		return self::fe_mul($t1, $t0);
1223
+	}
1224
+
1225
+	/**
1226
+	 * @internal You should not use this directly from another application
1227
+	 *
1228
+	 * @ref https://github.com/jedisct1/libsodium/blob/68564326e1e9dc57ef03746f85734232d20ca6fb/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1054-L1106
1229
+	 *
1230
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $z
1231
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
1232
+	 * @throws SodiumException
1233
+	 * @throws TypeError
1234
+	 */
1235
+	public static function fe_pow22523(ParagonIE_Sodium_Core32_Curve25519_Fe $z)
1236
+	{
1237
+		# fe_sq(t0, z);
1238
+		# fe_sq(t1, t0);
1239
+		# fe_sq(t1, t1);
1240
+		# fe_mul(t1, z, t1);
1241
+		# fe_mul(t0, t0, t1);
1242
+		# fe_sq(t0, t0);
1243
+		# fe_mul(t0, t1, t0);
1244
+		# fe_sq(t1, t0);
1245
+		$t0 = self::fe_sq($z);
1246
+		$t1 = self::fe_sq($t0);
1247
+		$t1 = self::fe_sq($t1);
1248
+		$t1 = self::fe_mul($z, $t1);
1249
+		$t0 = self::fe_mul($t0, $t1);
1250
+		$t0 = self::fe_sq($t0);
1251
+		$t0 = self::fe_mul($t1, $t0);
1252
+		$t1 = self::fe_sq($t0);
1253
+
1254
+		# for (i = 1; i < 5; ++i) {
1255
+		#     fe_sq(t1, t1);
1256
+		# }
1257
+		for ($i = 1; $i < 5; ++$i) {
1258
+			$t1 = self::fe_sq($t1);
1259
+		}
1260
+
1261
+		# fe_mul(t0, t1, t0);
1262
+		# fe_sq(t1, t0);
1263
+		$t0 = self::fe_mul($t1, $t0);
1264
+		$t1 = self::fe_sq($t0);
1265
+
1266
+		# for (i = 1; i < 10; ++i) {
1267
+		#     fe_sq(t1, t1);
1268
+		# }
1269
+		for ($i = 1; $i < 10; ++$i) {
1270
+			$t1 = self::fe_sq($t1);
1271
+		}
1272
+
1273
+		# fe_mul(t1, t1, t0);
1274
+		# fe_sq(t2, t1);
1275
+		$t1 = self::fe_mul($t1, $t0);
1276
+		$t2 = self::fe_sq($t1);
1277
+
1278
+		# for (i = 1; i < 20; ++i) {
1279
+		#     fe_sq(t2, t2);
1280
+		# }
1281
+		for ($i = 1; $i < 20; ++$i) {
1282
+			$t2 = self::fe_sq($t2);
1283
+		}
1284
+
1285
+		# fe_mul(t1, t2, t1);
1286
+		# fe_sq(t1, t1);
1287
+		$t1 = self::fe_mul($t2, $t1);
1288
+		$t1 = self::fe_sq($t1);
1289
+
1290
+		# for (i = 1; i < 10; ++i) {
1291
+		#     fe_sq(t1, t1);
1292
+		# }
1293
+		for ($i = 1; $i < 10; ++$i) {
1294
+			$t1 = self::fe_sq($t1);
1295
+		}
1296
+
1297
+		# fe_mul(t0, t1, t0);
1298
+		# fe_sq(t1, t0);
1299
+		$t0 = self::fe_mul($t1, $t0);
1300
+		$t1 = self::fe_sq($t0);
1301
+
1302
+		# for (i = 1; i < 50; ++i) {
1303
+		#     fe_sq(t1, t1);
1304
+		# }
1305
+		for ($i = 1; $i < 50; ++$i) {
1306
+			$t1 = self::fe_sq($t1);
1307
+		}
1308
+
1309
+		# fe_mul(t1, t1, t0);
1310
+		# fe_sq(t2, t1);
1311
+		$t1 = self::fe_mul($t1, $t0);
1312
+		$t2 = self::fe_sq($t1);
1313
+
1314
+		# for (i = 1; i < 100; ++i) {
1315
+		#     fe_sq(t2, t2);
1316
+		# }
1317
+		for ($i = 1; $i < 100; ++$i) {
1318
+			$t2 = self::fe_sq($t2);
1319
+		}
1320
+
1321
+		# fe_mul(t1, t2, t1);
1322
+		# fe_sq(t1, t1);
1323
+		$t1 = self::fe_mul($t2, $t1);
1324
+		$t1 = self::fe_sq($t1);
1325
+
1326
+		# for (i = 1; i < 50; ++i) {
1327
+		#     fe_sq(t1, t1);
1328
+		# }
1329
+		for ($i = 1; $i < 50; ++$i) {
1330
+			$t1 = self::fe_sq($t1);
1331
+		}
1332
+
1333
+		# fe_mul(t0, t1, t0);
1334
+		# fe_sq(t0, t0);
1335
+		# fe_sq(t0, t0);
1336
+		# fe_mul(out, t0, z);
1337
+		$t0 = self::fe_mul($t1, $t0);
1338
+		$t0 = self::fe_sq($t0);
1339
+		$t0 = self::fe_sq($t0);
1340
+		return self::fe_mul($t0, $z);
1341
+	}
1342
+
1343
+	/**
1344
+	 * Subtract two field elements.
1345
+	 *
1346
+	 * h = f - g
1347
+	 *
1348
+	 * Preconditions:
1349
+	 * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
1350
+	 * |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
1351
+	 *
1352
+	 * Postconditions:
1353
+	 * |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
1354
+	 *
1355
+	 * @internal You should not use this directly from another application
1356
+	 *
1357
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
1358
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
1359
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Fe
1360
+	 * @throws SodiumException
1361
+	 * @throws TypeError
1362
+	 * @psalm-suppress MixedMethodCall
1363
+	 * @psalm-suppress MixedTypeCoercion
1364
+	 */
1365
+	public static function fe_sub(ParagonIE_Sodium_Core32_Curve25519_Fe $f, ParagonIE_Sodium_Core32_Curve25519_Fe $g)
1366
+	{
1367
+		return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1368
+			array(
1369
+				$f[0]->subInt32($g[0]),
1370
+				$f[1]->subInt32($g[1]),
1371
+				$f[2]->subInt32($g[2]),
1372
+				$f[3]->subInt32($g[3]),
1373
+				$f[4]->subInt32($g[4]),
1374
+				$f[5]->subInt32($g[5]),
1375
+				$f[6]->subInt32($g[6]),
1376
+				$f[7]->subInt32($g[7]),
1377
+				$f[8]->subInt32($g[8]),
1378
+				$f[9]->subInt32($g[9])
1379
+			)
1380
+		);
1381
+	}
1382
+
1383
+	/**
1384
+	 * Add two group elements.
1385
+	 *
1386
+	 * r = p + q
1387
+	 *
1388
+	 * @internal You should not use this directly from another application
1389
+	 *
1390
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1391
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
1392
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1393
+	 * @throws SodiumException
1394
+	 * @throws TypeError
1395
+	 */
1396
+	public static function ge_add(
1397
+		ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
1398
+		ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
1399
+	) {
1400
+		$r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1401
+		$r->X = self::fe_add($p->Y, $p->X);
1402
+		$r->Y = self::fe_sub($p->Y, $p->X);
1403
+		$r->Z = self::fe_mul($r->X, $q->YplusX);
1404
+		$r->Y = self::fe_mul($r->Y, $q->YminusX);
1405
+		$r->T = self::fe_mul($q->T2d, $p->T);
1406
+		$r->X = self::fe_mul($p->Z, $q->Z);
1407
+		$t0   = self::fe_add($r->X, $r->X);
1408
+		$r->X = self::fe_sub($r->Z, $r->Y);
1409
+		$r->Y = self::fe_add($r->Z, $r->Y);
1410
+		$r->Z = self::fe_add($t0, $r->T);
1411
+		$r->T = self::fe_sub($t0, $r->T);
1412
+		return $r;
1413
+	}
1414
+
1415
+	/**
1416
+	 * @internal You should not use this directly from another application
1417
+	 *
1418
+	 * @ref https://github.com/jedisct1/libsodium/blob/157c4a80c13b117608aeae12178b2d38825f9f8f/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1185-L1215
1419
+	 * @param string $a
1420
+	 * @return array<int, mixed>
1421
+	 * @throws SodiumException
1422
+	 * @throws TypeError
1423
+	 * @psalm-suppress MixedArrayOffset
1424
+	 */
1425
+	public static function slide($a)
1426
+	{
1427
+		if (self::strlen($a) < 256) {
1428
+			if (self::strlen($a) < 16) {
1429
+				$a = str_pad($a, 256, '0', STR_PAD_RIGHT);
1430
+			}
1431
+		}
1432
+		/** @var array<int, int> $r */
1433
+		$r = array();
1434
+		for ($i = 0; $i < 256; ++$i) {
1435
+			$r[$i] = (int) (1 &
1436
+				(
1437
+					self::chrToInt($a[$i >> 3])
1438
+						>>
1439
+					($i & 7)
1440
+				)
1441
+			);
1442
+		}
1443
+
1444
+		for ($i = 0;$i < 256;++$i) {
1445
+			if ($r[$i]) {
1446
+				for ($b = 1;$b <= 6 && $i + $b < 256;++$b) {
1447
+					if ($r[$i + $b]) {
1448
+						if ($r[$i] + ($r[$i + $b] << $b) <= 15) {
1449
+							$r[$i] += $r[$i + $b] << $b;
1450
+							$r[$i + $b] = 0;
1451
+						} elseif ($r[$i] - ($r[$i + $b] << $b) >= -15) {
1452
+							$r[$i] -= $r[$i + $b] << $b;
1453
+							for ($k = $i + $b; $k < 256; ++$k) {
1454
+								if (!$r[$k]) {
1455
+									$r[$k] = 1;
1456
+									break;
1457
+								}
1458
+								$r[$k] = 0;
1459
+							}
1460
+						} else {
1461
+							break;
1462
+						}
1463
+					}
1464
+				}
1465
+			}
1466
+		}
1467
+		return $r;
1468
+	}
1469
+
1470
+	/**
1471
+	 * @internal You should not use this directly from another application
1472
+	 *
1473
+	 * @param string $s
1474
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
1475
+	 * @throws SodiumException
1476
+	 * @throws TypeError
1477
+	 */
1478
+	public static function ge_frombytes_negate_vartime($s)
1479
+	{
1480
+		static $d = null;
1481
+		if (!$d) {
1482
+			/** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
1483
+			$d = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1484
+				array(
1485
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[0]),
1486
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[1]),
1487
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[2]),
1488
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[3]),
1489
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[4]),
1490
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[5]),
1491
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[6]),
1492
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[7]),
1493
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[8]),
1494
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[9])
1495
+				)
1496
+			);
1497
+		}
1498
+
1499
+		# fe_frombytes(h->Y,s);
1500
+		# fe_1(h->Z);
1501
+		$h = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3(
1502
+			self::fe_0(),
1503
+			self::fe_frombytes($s),
1504
+			self::fe_1()
1505
+		);
1506
+
1507
+		# fe_sq(u,h->Y);
1508
+		# fe_mul(v,u,d);
1509
+		# fe_sub(u,u,h->Z);       /* u = y^2-1 */
1510
+		# fe_add(v,v,h->Z);       /* v = dy^2+1 */
1511
+		$u = self::fe_sq($h->Y);
1512
+		/** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
1513
+		$v = self::fe_mul($u, $d);
1514
+		$u = self::fe_sub($u, $h->Z); /* u =  y^2 - 1 */
1515
+		$v = self::fe_add($v, $h->Z); /* v = dy^2 + 1 */
1516
+
1517
+		# fe_sq(v3,v);
1518
+		# fe_mul(v3,v3,v);        /* v3 = v^3 */
1519
+		# fe_sq(h->X,v3);
1520
+		# fe_mul(h->X,h->X,v);
1521
+		# fe_mul(h->X,h->X,u);    /* x = uv^7 */
1522
+		$v3 = self::fe_sq($v);
1523
+		$v3 = self::fe_mul($v3, $v); /* v3 = v^3 */
1524
+		$h->X = self::fe_sq($v3);
1525
+		$h->X = self::fe_mul($h->X, $v);
1526
+		$h->X = self::fe_mul($h->X, $u); /* x = uv^7 */
1527
+
1528
+		# fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */
1529
+		# fe_mul(h->X,h->X,v3);
1530
+		# fe_mul(h->X,h->X,u);    /* x = uv^3(uv^7)^((q-5)/8) */
1531
+		$h->X = self::fe_pow22523($h->X); /* x = (uv^7)^((q-5)/8) */
1532
+		$h->X = self::fe_mul($h->X, $v3);
1533
+		$h->X = self::fe_mul($h->X, $u); /* x = uv^3(uv^7)^((q-5)/8) */
1534
+
1535
+		# fe_sq(vxx,h->X);
1536
+		# fe_mul(vxx,vxx,v);
1537
+		# fe_sub(check,vxx,u);    /* vx^2-u */
1538
+		$vxx = self::fe_sq($h->X);
1539
+		$vxx = self::fe_mul($vxx, $v);
1540
+		$check = self::fe_sub($vxx, $u); /* vx^2 - u */
1541
+
1542
+		# if (fe_isnonzero(check)) {
1543
+		#     fe_add(check,vxx,u);  /* vx^2+u */
1544
+		#     if (fe_isnonzero(check)) {
1545
+		#         return -1;
1546
+		#     }
1547
+		#     fe_mul(h->X,h->X,sqrtm1);
1548
+		# }
1549
+		if (self::fe_isnonzero($check)) {
1550
+			$check = self::fe_add($vxx, $u); /* vx^2 + u */
1551
+			if (self::fe_isnonzero($check)) {
1552
+				throw new RangeException('Internal check failed.');
1553
+			}
1554
+			$h->X = self::fe_mul(
1555
+				$h->X,
1556
+				ParagonIE_Sodium_Core32_Curve25519_Fe::fromIntArray(self::$sqrtm1)
1557
+			);
1558
+		}
1559
+
1560
+		# if (fe_isnegative(h->X) == (s[31] >> 7)) {
1561
+		#     fe_neg(h->X,h->X);
1562
+		# }
1563
+		$i = self::chrToInt($s[31]);
1564
+		if (self::fe_isnegative($h->X) === ($i >> 7)) {
1565
+			$h->X = self::fe_neg($h->X);
1566
+		}
1567
+
1568
+		# fe_mul(h->T,h->X,h->Y);
1569
+		$h->T = self::fe_mul($h->X, $h->Y);
1570
+		return $h;
1571
+	}
1572
+
1573
+	/**
1574
+	 * @internal You should not use this directly from another application
1575
+	 *
1576
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R
1577
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1578
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
1579
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1580
+	 * @throws SodiumException
1581
+	 * @throws TypeError
1582
+	 */
1583
+	public static function ge_madd(
1584
+		ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R,
1585
+		ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
1586
+		ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
1587
+	) {
1588
+		$r = clone $R;
1589
+		$r->X = self::fe_add($p->Y, $p->X);
1590
+		$r->Y = self::fe_sub($p->Y, $p->X);
1591
+		$r->Z = self::fe_mul($r->X, $q->yplusx);
1592
+		$r->Y = self::fe_mul($r->Y, $q->yminusx);
1593
+		$r->T = self::fe_mul($q->xy2d, $p->T);
1594
+		$t0 = self::fe_add(clone $p->Z, clone $p->Z);
1595
+		$r->X = self::fe_sub($r->Z, $r->Y);
1596
+		$r->Y = self::fe_add($r->Z, $r->Y);
1597
+		$r->Z = self::fe_add($t0, $r->T);
1598
+		$r->T = self::fe_sub($t0, $r->T);
1599
+
1600
+		return $r;
1601
+	}
1602
+
1603
+	/**
1604
+	 * @internal You should not use this directly from another application
1605
+	 *
1606
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R
1607
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1608
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
1609
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1610
+	 * @throws SodiumException
1611
+	 * @throws TypeError
1612
+	 */
1613
+	public static function ge_msub(
1614
+		ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R,
1615
+		ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
1616
+		ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
1617
+	) {
1618
+		$r = clone $R;
1619
+
1620
+		$r->X = self::fe_add($p->Y, $p->X);
1621
+		$r->Y = self::fe_sub($p->Y, $p->X);
1622
+		$r->Z = self::fe_mul($r->X, $q->yminusx);
1623
+		$r->Y = self::fe_mul($r->Y, $q->yplusx);
1624
+		$r->T = self::fe_mul($q->xy2d, $p->T);
1625
+		$t0 = self::fe_add($p->Z, $p->Z);
1626
+		$r->X = self::fe_sub($r->Z, $r->Y);
1627
+		$r->Y = self::fe_add($r->Z, $r->Y);
1628
+		$r->Z = self::fe_sub($t0, $r->T);
1629
+		$r->T = self::fe_add($t0, $r->T);
1630
+
1631
+		return $r;
1632
+	}
1633
+
1634
+	/**
1635
+	 * @internal You should not use this directly from another application
1636
+	 *
1637
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p
1638
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
1639
+	 * @throws SodiumException
1640
+	 * @throws TypeError
1641
+	 */
1642
+	public static function ge_p1p1_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
1643
+	{
1644
+		$r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P2();
1645
+		$r->X = self::fe_mul($p->X, $p->T);
1646
+		$r->Y = self::fe_mul($p->Y, $p->Z);
1647
+		$r->Z = self::fe_mul($p->Z, $p->T);
1648
+		return $r;
1649
+	}
1650
+
1651
+	/**
1652
+	 * @internal You should not use this directly from another application
1653
+	 *
1654
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p
1655
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
1656
+	 * @throws SodiumException
1657
+	 * @throws TypeError
1658
+	 */
1659
+	public static function ge_p1p1_to_p3(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
1660
+	{
1661
+		$r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3();
1662
+		$r->X = self::fe_mul($p->X, $p->T);
1663
+		$r->Y = self::fe_mul($p->Y, $p->Z);
1664
+		$r->Z = self::fe_mul($p->Z, $p->T);
1665
+		$r->T = self::fe_mul($p->X, $p->Y);
1666
+		return $r;
1667
+	}
1668
+
1669
+	/**
1670
+	 * @internal You should not use this directly from another application
1671
+	 *
1672
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
1673
+	 * @throws SodiumException
1674
+	 * @throws TypeError
1675
+	 */
1676
+	public static function ge_p2_0()
1677
+	{
1678
+		return new ParagonIE_Sodium_Core32_Curve25519_Ge_P2(
1679
+			self::fe_0(),
1680
+			self::fe_1(),
1681
+			self::fe_1()
1682
+		);
1683
+	}
1684
+
1685
+	/**
1686
+	 * @internal You should not use this directly from another application
1687
+	 *
1688
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p
1689
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1690
+	 * @throws SodiumException
1691
+	 * @throws TypeError
1692
+	 */
1693
+	public static function ge_p2_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p)
1694
+	{
1695
+		$r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1696
+
1697
+		$r->X = self::fe_sq($p->X);
1698
+		$r->Z = self::fe_sq($p->Y);
1699
+		$r->T = self::fe_sq2($p->Z);
1700
+		$r->Y = self::fe_add($p->X, $p->Y);
1701
+		$t0   = self::fe_sq($r->Y);
1702
+		$r->Y = self::fe_add($r->Z, $r->X);
1703
+		$r->Z = self::fe_sub($r->Z, $r->X);
1704
+		$r->X = self::fe_sub($t0, $r->Y);
1705
+		$r->T = self::fe_sub($r->T, $r->Z);
1706
+
1707
+		return $r;
1708
+	}
1709
+
1710
+	/**
1711
+	 * @internal You should not use this directly from another application
1712
+	 *
1713
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
1714
+	 * @throws SodiumException
1715
+	 * @throws TypeError
1716
+	 */
1717
+	public static function ge_p3_0()
1718
+	{
1719
+		return new ParagonIE_Sodium_Core32_Curve25519_Ge_P3(
1720
+			self::fe_0(),
1721
+			self::fe_1(),
1722
+			self::fe_1(),
1723
+			self::fe_0()
1724
+		);
1725
+	}
1726
+
1727
+	/**
1728
+	 * @internal You should not use this directly from another application
1729
+	 *
1730
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1731
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Cached
1732
+	 * @throws SodiumException
1733
+	 * @throws TypeError
1734
+	 */
1735
+	public static function ge_p3_to_cached(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1736
+	{
1737
+		static $d2 = null;
1738
+		if ($d2 === null) {
1739
+			$d2 = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1740
+				array(
1741
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[0]),
1742
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[1]),
1743
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[2]),
1744
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[3]),
1745
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[4]),
1746
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[5]),
1747
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[6]),
1748
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[7]),
1749
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[8]),
1750
+					ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[9])
1751
+				)
1752
+			);
1753
+		}
1754
+		/** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d2 */
1755
+		$r = new ParagonIE_Sodium_Core32_Curve25519_Ge_Cached();
1756
+		$r->YplusX = self::fe_add($p->Y, $p->X);
1757
+		$r->YminusX = self::fe_sub($p->Y, $p->X);
1758
+		$r->Z = self::fe_copy($p->Z);
1759
+		$r->T2d = self::fe_mul($p->T, $d2);
1760
+		return $r;
1761
+	}
1762
+
1763
+	/**
1764
+	 * @internal You should not use this directly from another application
1765
+	 *
1766
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1767
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
1768
+	 */
1769
+	public static function ge_p3_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1770
+	{
1771
+		return new ParagonIE_Sodium_Core32_Curve25519_Ge_P2(
1772
+			$p->X,
1773
+			$p->Y,
1774
+			$p->Z
1775
+		);
1776
+	}
1777
+
1778
+	/**
1779
+	 * @internal You should not use this directly from another application
1780
+	 *
1781
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h
1782
+	 * @return string
1783
+	 * @throws SodiumException
1784
+	 * @throws TypeError
1785
+	 */
1786
+	public static function ge_p3_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h)
1787
+	{
1788
+		$recip = self::fe_invert($h->Z);
1789
+		$x = self::fe_mul($h->X, $recip);
1790
+		$y = self::fe_mul($h->Y, $recip);
1791
+		$s = self::fe_tobytes($y);
1792
+		$s[31] = self::intToChr(
1793
+			self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
1794
+		);
1795
+		return $s;
1796
+	}
1797
+
1798
+	/**
1799
+	 * @internal You should not use this directly from another application
1800
+	 *
1801
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1802
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1803
+	 * @throws SodiumException
1804
+	 * @throws TypeError
1805
+	 */
1806
+	public static function ge_p3_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1807
+	{
1808
+		$q = self::ge_p3_to_p2($p);
1809
+		return self::ge_p2_dbl($q);
1810
+	}
1811
+
1812
+	/**
1813
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
1814
+	 * @throws SodiumException
1815
+	 * @throws TypeError
1816
+	 */
1817
+	public static function ge_precomp_0()
1818
+	{
1819
+		return new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1820
+			self::fe_1(),
1821
+			self::fe_1(),
1822
+			self::fe_0()
1823
+		);
1824
+	}
1825
+
1826
+	/**
1827
+	 * @internal You should not use this directly from another application
1828
+	 *
1829
+	 * @param int $b
1830
+	 * @param int $c
1831
+	 * @return int
1832
+	 * @psalm-suppress MixedReturnStatement
1833
+	 */
1834
+	public static function equal($b, $c)
1835
+	{
1836
+		return (int) ((($b ^ $c) - 1 & 0xffffffff) >> 31);
1837
+	}
1838
+
1839
+	/**
1840
+	 * @internal You should not use this directly from another application
1841
+	 *
1842
+	 * @param string|int $char
1843
+	 * @return int (1 = yes, 0 = no)
1844
+	 * @throws SodiumException
1845
+	 * @throws TypeError
1846
+	 */
1847
+	public static function negative($char)
1848
+	{
1849
+		if (is_int($char)) {
1850
+			return $char < 0 ? 1 : 0;
1851
+		}
1852
+		/** @var string $char */
1853
+		/** @var int $x */
1854
+		$x = self::chrToInt(self::substr($char, 0, 1));
1855
+		return (int) ($x >> 31);
1856
+	}
1857
+
1858
+	/**
1859
+	 * Conditional move
1860
+	 *
1861
+	 * @internal You should not use this directly from another application
1862
+	 *
1863
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $t
1864
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $u
1865
+	 * @param int $b
1866
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
1867
+	 * @throws SodiumException
1868
+	 * @throws TypeError
1869
+	 */
1870
+	public static function cmov(
1871
+		ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $t,
1872
+		ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $u,
1873
+		$b
1874
+	) {
1875
+		if (!is_int($b)) {
1876
+			throw new InvalidArgumentException('Expected an integer.');
1877
+		}
1878
+		return new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1879
+			self::fe_cmov($t->yplusx, $u->yplusx, $b),
1880
+			self::fe_cmov($t->yminusx, $u->yminusx, $b),
1881
+			self::fe_cmov($t->xy2d, $u->xy2d, $b)
1882
+		);
1883
+	}
1884
+
1885
+	/**
1886
+	 * @internal You should not use this directly from another application
1887
+	 *
1888
+	 * @param int $pos
1889
+	 * @param int $b
1890
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
1891
+	 * @throws SodiumException
1892
+	 * @throws TypeError
1893
+	 * @psalm-suppress MixedArrayAccess
1894
+	 * @psalm-suppress MixedArrayOffset
1895
+	 * @psalm-suppress MixedArgument
1896
+	 */
1897
+	public static function ge_select($pos = 0, $b = 0)
1898
+	{
1899
+		static $base = null;
1900
+		if ($base === null) {
1901
+			$base = array();
1902
+			foreach (self::$base as $i => $bas) {
1903
+				for ($j = 0; $j < 8; ++$j) {
1904
+					$base[$i][$j] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1905
+						ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1906
+							array(
1907
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][0]),
1908
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][1]),
1909
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][2]),
1910
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][3]),
1911
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][4]),
1912
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][5]),
1913
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][6]),
1914
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][7]),
1915
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][8]),
1916
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][9])
1917
+							)
1918
+						),
1919
+						ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1920
+							array(
1921
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][0]),
1922
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][1]),
1923
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][2]),
1924
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][3]),
1925
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][4]),
1926
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][5]),
1927
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][6]),
1928
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][7]),
1929
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][8]),
1930
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][9])
1931
+							)
1932
+						),
1933
+						ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1934
+							array(
1935
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][0]),
1936
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][1]),
1937
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][2]),
1938
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][3]),
1939
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][4]),
1940
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][5]),
1941
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][6]),
1942
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][7]),
1943
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][8]),
1944
+								ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][9])
1945
+							)
1946
+						)
1947
+					);
1948
+				}
1949
+			}
1950
+		}
1951
+		if (!is_int($pos)) {
1952
+			throw new InvalidArgumentException('Position must be an integer');
1953
+		}
1954
+		if ($pos < 0 || $pos > 31) {
1955
+			throw new RangeException('Position is out of range [0, 31]');
1956
+		}
1957
+
1958
+		$bnegative = self::negative($b);
1959
+		/** @var int $babs */
1960
+		$babs = $b - (((-$bnegative) & $b) << 1);
1961
+
1962
+		$t = self::ge_precomp_0();
1963
+		for ($i = 0; $i < 8; ++$i) {
1964
+			$t = self::cmov(
1965
+				$t,
1966
+				$base[$pos][$i],
1967
+				self::equal($babs, $i + 1)
1968
+			);
1969
+		}
1970
+		$minusT = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1971
+			self::fe_copy($t->yminusx),
1972
+			self::fe_copy($t->yplusx),
1973
+			self::fe_neg($t->xy2d)
1974
+		);
1975
+		return self::cmov($t, $minusT, -$bnegative);
1976
+	}
1977
+
1978
+	/**
1979
+	 * Subtract two group elements.
1980
+	 *
1981
+	 * r = p - q
1982
+	 *
1983
+	 * @internal You should not use this directly from another application
1984
+	 *
1985
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1986
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
1987
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
1988
+	 * @throws SodiumException
1989
+	 * @throws TypeError
1990
+	 */
1991
+	public static function ge_sub(
1992
+		ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
1993
+		ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
1994
+	) {
1995
+		$r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1996
+
1997
+		$r->X = self::fe_add($p->Y, $p->X);
1998
+		$r->Y = self::fe_sub($p->Y, $p->X);
1999
+		$r->Z = self::fe_mul($r->X, $q->YminusX);
2000
+		$r->Y = self::fe_mul($r->Y, $q->YplusX);
2001
+		$r->T = self::fe_mul($q->T2d, $p->T);
2002
+		$r->X = self::fe_mul($p->Z, $q->Z);
2003
+		$t0 = self::fe_add($r->X, $r->X);
2004
+		$r->X = self::fe_sub($r->Z, $r->Y);
2005
+		$r->Y = self::fe_add($r->Z, $r->Y);
2006
+		$r->Z = self::fe_sub($t0, $r->T);
2007
+		$r->T = self::fe_add($t0, $r->T);
2008
+
2009
+		return $r;
2010
+	}
2011
+
2012
+	/**
2013
+	 * Convert a group element to a byte string.
2014
+	 *
2015
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h
2016
+	 * @return string
2017
+	 * @throws SodiumException
2018
+	 * @throws TypeError
2019
+	 */
2020
+	public static function ge_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h)
2021
+	{
2022
+		$recip = self::fe_invert($h->Z);
2023
+		$x = self::fe_mul($h->X, $recip);
2024
+		$y = self::fe_mul($h->Y, $recip);
2025
+		$s = self::fe_tobytes($y);
2026
+		$s[31] = self::intToChr(
2027
+			self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
2028
+		);
2029
+		return $s;
2030
+	}
2031
+
2032
+	/**
2033
+	 * @internal You should not use this directly from another application
2034
+	 *
2035
+	 * @param string $a
2036
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A
2037
+	 * @param string $b
2038
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
2039
+	 * @throws SodiumException
2040
+	 * @throws TypeError
2041
+	 * @psalm-suppress MixedArrayAccess
2042
+	 */
2043
+	public static function ge_double_scalarmult_vartime(
2044
+		$a,
2045
+		ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A,
2046
+		$b
2047
+	) {
2048
+		/** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Cached> $Ai */
2049
+		$Ai = array();
2050
+
2051
+		static $Bi = array();
2052
+		/** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp> $Bi */
2053
+		if (!$Bi) {
2054
+			for ($i = 0; $i < 8; ++$i) {
2055
+				$Bi[$i] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
2056
+					ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
2057
+						array(
2058
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][0]),
2059
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][1]),
2060
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][2]),
2061
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][3]),
2062
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][4]),
2063
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][5]),
2064
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][6]),
2065
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][7]),
2066
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][8]),
2067
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][9])
2068
+						)
2069
+					),
2070
+					ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
2071
+						array(
2072
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][0]),
2073
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][1]),
2074
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][2]),
2075
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][3]),
2076
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][4]),
2077
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][5]),
2078
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][6]),
2079
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][7]),
2080
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][8]),
2081
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][9])
2082
+						)
2083
+					),
2084
+					ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
2085
+						array(
2086
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][0]),
2087
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][1]),
2088
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][2]),
2089
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][3]),
2090
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][4]),
2091
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][5]),
2092
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][6]),
2093
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][7]),
2094
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][8]),
2095
+							ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][9])
2096
+						)
2097
+					)
2098
+				);
2099
+			}
2100
+		}
2101
+
2102
+		for ($i = 0; $i < 8; ++$i) {
2103
+			$Ai[$i] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Cached(
2104
+				self::fe_0(),
2105
+				self::fe_0(),
2106
+				self::fe_0(),
2107
+				self::fe_0()
2108
+			);
2109
+		}
2110
+		/** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Cached> $Ai */
2111
+
2112
+		# slide(aslide,a);
2113
+		# slide(bslide,b);
2114
+		/** @var array<int, int> $aslide */
2115
+		$aslide = self::slide($a);
2116
+		/** @var array<int, int> $bslide */
2117
+		$bslide = self::slide($b);
2118
+
2119
+		# ge_p3_to_cached(&Ai[0],A);
2120
+		# ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);
2121
+		$Ai[0] = self::ge_p3_to_cached($A);
2122
+		$t = self::ge_p3_dbl($A);
2123
+		$A2 = self::ge_p1p1_to_p3($t);
2124
+
2125
+		# ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u);
2126
+		# ge_add(&t,&A2,&Ai[1]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[2],&u);
2127
+		# ge_add(&t,&A2,&Ai[2]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[3],&u);
2128
+		# ge_add(&t,&A2,&Ai[3]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[4],&u);
2129
+		# ge_add(&t,&A2,&Ai[4]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[5],&u);
2130
+		# ge_add(&t,&A2,&Ai[5]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[6],&u);
2131
+		# ge_add(&t,&A2,&Ai[6]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[7],&u);
2132
+		for ($i = 0; $i < 7; ++$i) {
2133
+			$t = self::ge_add($A2, $Ai[$i]);
2134
+			$u = self::ge_p1p1_to_p3($t);
2135
+			$Ai[$i + 1] = self::ge_p3_to_cached($u);
2136
+		}
2137
+
2138
+		# ge_p2_0(r);
2139
+		$r = self::ge_p2_0();
2140
+
2141
+		# for (i = 255;i >= 0;--i) {
2142
+		#     if (aslide[i] || bslide[i]) break;
2143
+		# }
2144
+		$i = 255;
2145
+		for (; $i >= 0; --$i) {
2146
+			if ($aslide[$i] || $bslide[$i]) {
2147
+				break;
2148
+			}
2149
+		}
2150
+
2151
+		# for (;i >= 0;--i) {
2152
+		for (; $i >= 0; --$i) {
2153
+			# ge_p2_dbl(&t,r);
2154
+			$t = self::ge_p2_dbl($r);
2155
+
2156
+			# if (aslide[i] > 0) {
2157
+			if ($aslide[$i] > 0) {
2158
+				# ge_p1p1_to_p3(&u,&t);
2159
+				# ge_add(&t,&u,&Ai[aslide[i]/2]);
2160
+				$u = self::ge_p1p1_to_p3($t);
2161
+				$t = self::ge_add(
2162
+					$u,
2163
+					$Ai[(int) floor($aslide[$i] / 2)]
2164
+				);
2165
+				# } else if (aslide[i] < 0) {
2166
+			} elseif ($aslide[$i] < 0) {
2167
+				# ge_p1p1_to_p3(&u,&t);
2168
+				# ge_sub(&t,&u,&Ai[(-aslide[i])/2]);
2169
+				$u = self::ge_p1p1_to_p3($t);
2170
+				$t = self::ge_sub(
2171
+					$u,
2172
+					$Ai[(int) floor(-$aslide[$i] / 2)]
2173
+				);
2174
+			}
2175
+			/** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp> $Bi */
2176
+
2177
+			# if (bslide[i] > 0) {
2178
+			if ($bslide[$i] > 0) {
2179
+				# ge_p1p1_to_p3(&u,&t);
2180
+				# ge_madd(&t,&u,&Bi[bslide[i]/2]);
2181
+				$u = self::ge_p1p1_to_p3($t);
2182
+				/** @var int $index */
2183
+				$index = (int) floor($bslide[$i] / 2);
2184
+				/** @var ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $thisB */
2185
+				$thisB = $Bi[$index];
2186
+				$t = self::ge_madd($t, $u, $thisB);
2187
+				# } else if (bslide[i] < 0) {
2188
+			} elseif ($bslide[$i] < 0) {
2189
+				# ge_p1p1_to_p3(&u,&t);
2190
+				# ge_msub(&t,&u,&Bi[(-bslide[i])/2]);
2191
+				$u = self::ge_p1p1_to_p3($t);
2192
+
2193
+				/** @var int $index */
2194
+				$index = (int) floor(-$bslide[$i] / 2);
2195
+
2196
+				/** @var ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $thisB */
2197
+				$thisB = $Bi[$index];
2198
+				$t = self::ge_msub($t, $u, $thisB);
2199
+			}
2200
+			# ge_p1p1_to_p2(r,&t);
2201
+			$r = self::ge_p1p1_to_p2($t);
2202
+		}
2203
+		return $r;
2204
+	}
2205
+
2206
+	/**
2207
+	 * @internal You should not use this directly from another application
2208
+	 *
2209
+	 * @param string $a
2210
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
2211
+	 * @psalm-suppress MixedAssignment
2212
+	 * @psalm-suppress MixedOperand
2213
+	 * @throws SodiumException
2214
+	 * @throws TypeError
2215
+	 */
2216
+	public static function ge_scalarmult_base($a)
2217
+	{
2218
+		/** @var array<int, int> $e */
2219
+		$e = array();
2220
+		$r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
2221
+
2222
+		for ($i = 0; $i < 32; ++$i) {
2223
+			/** @var int $dbl */
2224
+			$dbl = (int) $i << 1;
2225
+			$e[$dbl] = (int) self::chrToInt($a[$i]) & 15;
2226
+			$e[$dbl + 1] = (int) (self::chrToInt($a[$i]) >> 4) & 15;
2227
+		}
2228
+
2229
+		/** @var int $carry */
2230
+		$carry = 0;
2231
+		for ($i = 0; $i < 63; ++$i) {
2232
+			$e[$i] += $carry;
2233
+			/** @var int $carry */
2234
+			$carry = $e[$i] + 8;
2235
+			/** @var int $carry */
2236
+			$carry >>= 4;
2237
+			$e[$i] -= $carry << 4;
2238
+		}
2239
+
2240
+		/** @var array<int, int> $e */
2241
+		$e[63] += (int) $carry;
2242
+
2243
+		$h = self::ge_p3_0();
2244
+
2245
+		for ($i = 1; $i < 64; $i += 2) {
2246
+			$t = self::ge_select((int) floor($i / 2), (int) $e[$i]);
2247
+			$r = self::ge_madd($r, $h, $t);
2248
+			$h = self::ge_p1p1_to_p3($r);
2249
+		}
2250
+
2251
+		$r = self::ge_p3_dbl($h);
2252
+
2253
+		$s = self::ge_p1p1_to_p2($r);
2254
+		$r = self::ge_p2_dbl($s);
2255
+		$s = self::ge_p1p1_to_p2($r);
2256
+		$r = self::ge_p2_dbl($s);
2257
+		$s = self::ge_p1p1_to_p2($r);
2258
+		$r = self::ge_p2_dbl($s);
2259
+
2260
+		$h = self::ge_p1p1_to_p3($r);
2261
+
2262
+		for ($i = 0; $i < 64; $i += 2) {
2263
+			$t = self::ge_select($i >> 1, (int) $e[$i]);
2264
+			$r = self::ge_madd($r, $h, $t);
2265
+			$h = self::ge_p1p1_to_p3($r);
2266
+		}
2267
+		return $h;
2268
+	}
2269
+
2270
+	/**
2271
+	 * Calculates (ab + c) mod l
2272
+	 * where l = 2^252 + 27742317777372353535851937790883648493
2273
+	 *
2274
+	 * @internal You should not use this directly from another application
2275
+	 *
2276
+	 * @param string $a
2277
+	 * @param string $b
2278
+	 * @param string $c
2279
+	 * @return string
2280
+	 * @throws SodiumException
2281
+	 * @throws TypeError
2282
+	 */
2283
+	public static function sc_muladd($a, $b, $c)
2284
+	{
2285
+		$a0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 0, 3)));
2286
+		$a1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 2, 4)) >> 5));
2287
+		$a2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 5, 3)) >> 2));
2288
+		$a3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 7, 4)) >> 7));
2289
+		$a4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 10, 4)) >> 4));
2290
+		$a5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 13, 3)) >> 1));
2291
+		$a6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 15, 4)) >> 6));
2292
+		$a7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 18, 3)) >> 3));
2293
+		$a8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 21, 3)));
2294
+		$a9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 23, 4)) >> 5));
2295
+		$a10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 26, 3)) >> 2));
2296
+		$a11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($a, 28, 4)) >> 7));
2297
+		$b0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 0, 3)));
2298
+		$b1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 2, 4)) >> 5));
2299
+		$b2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 5, 3)) >> 2));
2300
+		$b3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 7, 4)) >> 7));
2301
+		$b4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 10, 4)) >> 4));
2302
+		$b5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 13, 3)) >> 1));
2303
+		$b6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 15, 4)) >> 6));
2304
+		$b7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 18, 3)) >> 3));
2305
+		$b8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 21, 3)));
2306
+		$b9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 23, 4)) >> 5));
2307
+		$b10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 26, 3)) >> 2));
2308
+		$b11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($b, 28, 4)) >> 7));
2309
+		$c0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 0, 3)));
2310
+		$c1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 2, 4)) >> 5));
2311
+		$c2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 5, 3)) >> 2));
2312
+		$c3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 7, 4)) >> 7));
2313
+		$c4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 10, 4)) >> 4));
2314
+		$c5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 13, 3)) >> 1));
2315
+		$c6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 15, 4)) >> 6));
2316
+		$c7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 18, 3)) >> 3));
2317
+		$c8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 21, 3)));
2318
+		$c9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 23, 4)) >> 5));
2319
+		$c10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 26, 3)) >> 2));
2320
+		$c11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($c, 28, 4)) >> 7));
2321
+
2322
+		/* Can't really avoid the pyramid here: */
2323
+		/**
2324
+		 * @var ParagonIE_Sodium_Core32_Int64 $s0
2325
+		 * @var ParagonIE_Sodium_Core32_Int64 $s1
2326
+		 * @var ParagonIE_Sodium_Core32_Int64 $s2
2327
+		 * @var ParagonIE_Sodium_Core32_Int64 $s3
2328
+		 * @var ParagonIE_Sodium_Core32_Int64 $s4
2329
+		 * @var ParagonIE_Sodium_Core32_Int64 $s5
2330
+		 * @var ParagonIE_Sodium_Core32_Int64 $s6
2331
+		 * @var ParagonIE_Sodium_Core32_Int64 $s7
2332
+		 * @var ParagonIE_Sodium_Core32_Int64 $s8
2333
+		 * @var ParagonIE_Sodium_Core32_Int64 $s9
2334
+		 * @var ParagonIE_Sodium_Core32_Int64 $s10
2335
+		 * @var ParagonIE_Sodium_Core32_Int64 $s11
2336
+		 * @var ParagonIE_Sodium_Core32_Int64 $s12
2337
+		 * @var ParagonIE_Sodium_Core32_Int64 $s13
2338
+		 * @var ParagonIE_Sodium_Core32_Int64 $s14
2339
+		 * @var ParagonIE_Sodium_Core32_Int64 $s15
2340
+		 * @var ParagonIE_Sodium_Core32_Int64 $s16
2341
+		 * @var ParagonIE_Sodium_Core32_Int64 $s17
2342
+		 * @var ParagonIE_Sodium_Core32_Int64 $s18
2343
+		 * @var ParagonIE_Sodium_Core32_Int64 $s19
2344
+		 * @var ParagonIE_Sodium_Core32_Int64 $s20
2345
+		 * @var ParagonIE_Sodium_Core32_Int64 $s21
2346
+		 * @var ParagonIE_Sodium_Core32_Int64 $s22
2347
+		 * @var ParagonIE_Sodium_Core32_Int64 $s23
2348
+		 */
2349
+
2350
+		$s0 = $c0->addInt64($a0->mulInt64($b0, 24));
2351
+		$s1 = $c1->addInt64($a0->mulInt64($b1, 24))->addInt64($a1->mulInt64($b0, 24));
2352
+		$s2 = $c2->addInt64($a0->mulInt64($b2, 24))->addInt64($a1->mulInt64($b1, 24))->addInt64($a2->mulInt64($b0, 24));
2353
+		$s3 = $c3->addInt64($a0->mulInt64($b3, 24))->addInt64($a1->mulInt64($b2, 24))->addInt64($a2->mulInt64($b1, 24))
2354
+				 ->addInt64($a3->mulInt64($b0, 24));
2355
+		$s4 = $c4->addInt64($a0->mulInt64($b4, 24))->addInt64($a1->mulInt64($b3, 24))->addInt64($a2->mulInt64($b2, 24))
2356
+				 ->addInt64($a3->mulInt64($b1, 24))->addInt64($a4->mulInt64($b0, 24));
2357
+		$s5 = $c5->addInt64($a0->mulInt64($b5, 24))->addInt64($a1->mulInt64($b4, 24))->addInt64($a2->mulInt64($b3, 24))
2358
+				 ->addInt64($a3->mulInt64($b2, 24))->addInt64($a4->mulInt64($b1, 24))->addInt64($a5->mulInt64($b0, 24));
2359
+		$s6 = $c6->addInt64($a0->mulInt64($b6, 24))->addInt64($a1->mulInt64($b5, 24))->addInt64($a2->mulInt64($b4, 24))
2360
+				 ->addInt64($a3->mulInt64($b3, 24))->addInt64($a4->mulInt64($b2, 24))->addInt64($a5->mulInt64($b1, 24))
2361
+				 ->addInt64($a6->mulInt64($b0, 24));
2362
+		$s7 = $c7->addInt64($a0->mulInt64($b7, 24))->addInt64($a1->mulInt64($b6, 24))->addInt64($a2->mulInt64($b5, 24))
2363
+				 ->addInt64($a3->mulInt64($b4, 24))->addInt64($a4->mulInt64($b3, 24))->addInt64($a5->mulInt64($b2, 24))
2364
+				 ->addInt64($a6->mulInt64($b1, 24))->addInt64($a7->mulInt64($b0, 24));
2365
+		$s8 = $c8->addInt64($a0->mulInt64($b8, 24))->addInt64($a1->mulInt64($b7, 24))->addInt64($a2->mulInt64($b6, 24))
2366
+				 ->addInt64($a3->mulInt64($b5, 24))->addInt64($a4->mulInt64($b4, 24))->addInt64($a5->mulInt64($b3, 24))
2367
+				 ->addInt64($a6->mulInt64($b2, 24))->addInt64($a7->mulInt64($b1, 24))->addInt64($a8->mulInt64($b0, 24));
2368
+		$s9 = $c9->addInt64($a0->mulInt64($b9, 24))->addInt64($a1->mulInt64($b8, 24))->addInt64($a2->mulInt64($b7, 24))
2369
+				 ->addInt64($a3->mulInt64($b6, 24))->addInt64($a4->mulInt64($b5, 24))->addInt64($a5->mulInt64($b4, 24))
2370
+				 ->addInt64($a6->mulInt64($b3, 24))->addInt64($a7->mulInt64($b2, 24))->addInt64($a8->mulInt64($b1, 24))
2371
+				 ->addInt64($a9->mulInt64($b0, 24));
2372
+		$s10 = $c10->addInt64($a0->mulInt64($b10, 24))->addInt64($a1->mulInt64($b9, 24))->addInt64($a2->mulInt64($b8, 24))
2373
+				   ->addInt64($a3->mulInt64($b7, 24))->addInt64($a4->mulInt64($b6, 24))->addInt64($a5->mulInt64($b5, 24))
2374
+				   ->addInt64($a6->mulInt64($b4, 24))->addInt64($a7->mulInt64($b3, 24))->addInt64($a8->mulInt64($b2, 24))
2375
+				   ->addInt64($a9->mulInt64($b1, 24))->addInt64($a10->mulInt64($b0, 24));
2376
+		$s11 = $c11->addInt64($a0->mulInt64($b11, 24))->addInt64($a1->mulInt64($b10, 24))->addInt64($a2->mulInt64($b9, 24))
2377
+				   ->addInt64($a3->mulInt64($b8, 24))->addInt64($a4->mulInt64($b7, 24))->addInt64($a5->mulInt64($b6, 24))
2378
+				   ->addInt64($a6->mulInt64($b5, 24))->addInt64($a7->mulInt64($b4, 24))->addInt64($a8->mulInt64($b3, 24))
2379
+				   ->addInt64($a9->mulInt64($b2, 24))->addInt64($a10->mulInt64($b1, 24))->addInt64($a11->mulInt64($b0, 24));
2380
+		$s12 = $a1->mulInt64($b11, 24)->addInt64($a2->mulInt64($b10, 24))->addInt64($a3->mulInt64($b9, 24))
2381
+				  ->addInt64($a4->mulInt64($b8, 24))->addInt64($a5->mulInt64($b7, 24))->addInt64($a6->mulInt64($b6, 24))
2382
+				  ->addInt64($a7->mulInt64($b5, 24))->addInt64($a8->mulInt64($b4, 24))->addInt64($a9->mulInt64($b3, 24))
2383
+				  ->addInt64($a10->mulInt64($b2, 24))->addInt64($a11->mulInt64($b1, 24));
2384
+		$s13 = $a2->mulInt64($b11, 24)->addInt64($a3->mulInt64($b10, 24))->addInt64($a4->mulInt64($b9, 24))
2385
+				  ->addInt64($a5->mulInt64($b8, 24))->addInt64($a6->mulInt64($b7, 24))->addInt64($a7->mulInt64($b6, 24))
2386
+				  ->addInt64($a8->mulInt64($b5, 24))->addInt64($a9->mulInt64($b4, 24))->addInt64($a10->mulInt64($b3, 24))
2387
+				  ->addInt64($a11->mulInt64($b2, 24));
2388
+		$s14 = $a3->mulInt64($b11, 24)->addInt64($a4->mulInt64($b10, 24))->addInt64($a5->mulInt64($b9, 24))
2389
+				  ->addInt64($a6->mulInt64($b8, 24))->addInt64($a7->mulInt64($b7, 24))->addInt64($a8->mulInt64($b6, 24))
2390
+				  ->addInt64($a9->mulInt64($b5, 24))->addInt64($a10->mulInt64($b4, 24))->addInt64($a11->mulInt64($b3, 24));
2391
+		$s15 = $a4->mulInt64($b11, 24)->addInt64($a5->mulInt64($b10, 24))->addInt64($a6->mulInt64($b9, 24))
2392
+				  ->addInt64($a7->mulInt64($b8, 24))->addInt64($a8->mulInt64($b7, 24))->addInt64($a9->mulInt64($b6, 24))
2393
+				  ->addInt64($a10->mulInt64($b5, 24))->addInt64($a11->mulInt64($b4, 24));
2394
+		$s16 = $a5->mulInt64($b11, 24)->addInt64($a6->mulInt64($b10, 24))->addInt64($a7->mulInt64($b9, 24))
2395
+				  ->addInt64($a8->mulInt64($b8, 24))->addInt64($a9->mulInt64($b7, 24))->addInt64($a10->mulInt64($b6, 24))
2396
+				  ->addInt64($a11->mulInt64($b5, 24));
2397
+		$s17 = $a6->mulInt64($b11, 24)->addInt64($a7->mulInt64($b10, 24))->addInt64($a8->mulInt64($b9, 24))
2398
+				  ->addInt64($a9->mulInt64($b8, 24))->addInt64($a10->mulInt64($b7, 24))->addInt64($a11->mulInt64($b6, 24));
2399
+		$s18 = $a7->mulInt64($b11, 24)->addInt64($a8->mulInt64($b10, 24))->addInt64($a9->mulInt64($b9, 24))
2400
+				  ->addInt64($a10->mulInt64($b8, 24))->addInt64($a11->mulInt64($b7, 24));
2401
+		$s19 = $a8->mulInt64($b11, 24)->addInt64($a9->mulInt64($b10, 24))->addInt64($a10->mulInt64($b9, 24))
2402
+				  ->addInt64($a11->mulInt64($b8, 24));
2403
+		$s20 = $a9->mulInt64($b11, 24)->addInt64($a10->mulInt64($b10, 24))->addInt64($a11->mulInt64($b9, 24));
2404
+		$s21 = $a10->mulInt64($b11, 24)->addInt64($a11->mulInt64($b10, 24));
2405
+		$s22 = $a11->mulInt64($b11, 24);
2406
+		$s23 = new ParagonIE_Sodium_Core32_Int64();
2407
+
2408
+		$carry0 = $s0->addInt(1 << 20)->shiftRight(21);
2409
+		$s1 = $s1->addInt64($carry0);
2410
+		$s0 = $s0->subInt64($carry0->shiftLeft(21));
2411
+		$carry2 = $s2->addInt(1 << 20)->shiftRight(21);
2412
+		$s3 = $s3->addInt64($carry2);
2413
+		$s2 = $s2->subInt64($carry2->shiftLeft(21));
2414
+		$carry4 = $s4->addInt(1 << 20)->shiftRight(21);
2415
+		$s5 = $s5->addInt64($carry4);
2416
+		$s4 = $s4->subInt64($carry4->shiftLeft(21));
2417
+		$carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2418
+		$s7 = $s7->addInt64($carry6);
2419
+		$s6 = $s6->subInt64($carry6->shiftLeft(21));
2420
+		$carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2421
+		$s9 = $s9->addInt64($carry8);
2422
+		$s8 = $s8->subInt64($carry8->shiftLeft(21));
2423
+		$carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2424
+		$s11 = $s11->addInt64($carry10);
2425
+		$s10 = $s10->subInt64($carry10->shiftLeft(21));
2426
+		$carry12 = $s12->addInt(1 << 20)->shiftRight(21);
2427
+		$s13 = $s13->addInt64($carry12);
2428
+		$s12 = $s12->subInt64($carry12->shiftLeft(21));
2429
+		$carry14 = $s14->addInt(1 << 20)->shiftRight(21);
2430
+		$s15 = $s15->addInt64($carry14);
2431
+		$s14 = $s14->subInt64($carry14->shiftLeft(21));
2432
+		$carry16 = $s16->addInt(1 << 20)->shiftRight(21);
2433
+		$s17 = $s17->addInt64($carry16);
2434
+		$s16 = $s16->subInt64($carry16->shiftLeft(21));
2435
+		$carry18 = $s18->addInt(1 << 20)->shiftRight(21);
2436
+		$s19 = $s19->addInt64($carry18);
2437
+		$s18 = $s18->subInt64($carry18->shiftLeft(21));
2438
+		$carry20 = $s20->addInt(1 << 20)->shiftRight(21);
2439
+		$s21 = $s21->addInt64($carry20);
2440
+		$s20 = $s20->subInt64($carry20->shiftLeft(21));
2441
+		$carry22 = $s22->addInt(1 << 20)->shiftRight(21);
2442
+		$s23 = $s23->addInt64($carry22);
2443
+		$s22 = $s22->subInt64($carry22->shiftLeft(21));
2444
+
2445
+		$carry1 = $s1->addInt(1 << 20)->shiftRight(21);
2446
+		$s2 = $s2->addInt64($carry1);
2447
+		$s1 = $s1->subInt64($carry1->shiftLeft(21));
2448
+		$carry3 = $s3->addInt(1 << 20)->shiftRight(21);
2449
+		$s4 = $s4->addInt64($carry3);
2450
+		$s3 = $s3->subInt64($carry3->shiftLeft(21));
2451
+		$carry5 = $s5->addInt(1 << 20)->shiftRight(21);
2452
+		$s6 = $s6->addInt64($carry5);
2453
+		$s5 = $s5->subInt64($carry5->shiftLeft(21));
2454
+		$carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2455
+		$s8 = $s8->addInt64($carry7);
2456
+		$s7 = $s7->subInt64($carry7->shiftLeft(21));
2457
+		$carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2458
+		$s10 = $s10->addInt64($carry9);
2459
+		$s9 = $s9->subInt64($carry9->shiftLeft(21));
2460
+		$carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2461
+		$s12 = $s12->addInt64($carry11);
2462
+		$s11 = $s11->subInt64($carry11->shiftLeft(21));
2463
+		$carry13 = $s13->addInt(1 << 20)->shiftRight(21);
2464
+		$s14 = $s14->addInt64($carry13);
2465
+		$s13 = $s13->subInt64($carry13->shiftLeft(21));
2466
+		$carry15 = $s15->addInt(1 << 20)->shiftRight(21);
2467
+		$s16 = $s16->addInt64($carry15);
2468
+		$s15 = $s15->subInt64($carry15->shiftLeft(21));
2469
+		$carry17 = $s17->addInt(1 << 20)->shiftRight(21);
2470
+		$s18 = $s18->addInt64($carry17);
2471
+		$s17 = $s17->subInt64($carry17->shiftLeft(21));
2472
+		$carry19 = $s19->addInt(1 << 20)->shiftRight(21);
2473
+		$s20 = $s20->addInt64($carry19);
2474
+		$s19 = $s19->subInt64($carry19->shiftLeft(21));
2475
+		$carry21 = $s21->addInt(1 << 20)->shiftRight(21);
2476
+		$s22 = $s22->addInt64($carry21);
2477
+		$s21 = $s21->subInt64($carry21->shiftLeft(21));
2478
+
2479
+		$s11 = $s11->addInt64($s23->mulInt(666643, 20));
2480
+		$s12 = $s12->addInt64($s23->mulInt(470296, 19));
2481
+		$s13 = $s13->addInt64($s23->mulInt(654183, 20));
2482
+		$s14 = $s14->subInt64($s23->mulInt(997805, 20));
2483
+		$s15 = $s15->addInt64($s23->mulInt(136657, 18));
2484
+		$s16 = $s16->subInt64($s23->mulInt(683901, 20));
2485
+
2486
+		$s10 = $s10->addInt64($s22->mulInt(666643, 20));
2487
+		$s11 = $s11->addInt64($s22->mulInt(470296, 19));
2488
+		$s12 = $s12->addInt64($s22->mulInt(654183, 20));
2489
+		$s13 = $s13->subInt64($s22->mulInt(997805, 20));
2490
+		$s14 = $s14->addInt64($s22->mulInt(136657, 18));
2491
+		$s15 = $s15->subInt64($s22->mulInt(683901, 20));
2492
+
2493
+		$s9  =  $s9->addInt64($s21->mulInt(666643, 20));
2494
+		$s10 = $s10->addInt64($s21->mulInt(470296, 19));
2495
+		$s11 = $s11->addInt64($s21->mulInt(654183, 20));
2496
+		$s12 = $s12->subInt64($s21->mulInt(997805, 20));
2497
+		$s13 = $s13->addInt64($s21->mulInt(136657, 18));
2498
+		$s14 = $s14->subInt64($s21->mulInt(683901, 20));
2499
+
2500
+		$s8  =  $s8->addInt64($s20->mulInt(666643, 20));
2501
+		$s9  =  $s9->addInt64($s20->mulInt(470296, 19));
2502
+		$s10 = $s10->addInt64($s20->mulInt(654183, 20));
2503
+		$s11 = $s11->subInt64($s20->mulInt(997805, 20));
2504
+		$s12 = $s12->addInt64($s20->mulInt(136657, 18));
2505
+		$s13 = $s13->subInt64($s20->mulInt(683901, 20));
2506
+
2507
+		$s7  =  $s7->addInt64($s19->mulInt(666643, 20));
2508
+		$s8  =  $s8->addInt64($s19->mulInt(470296, 19));
2509
+		$s9  =  $s9->addInt64($s19->mulInt(654183, 20));
2510
+		$s10 = $s10->subInt64($s19->mulInt(997805, 20));
2511
+		$s11 = $s11->addInt64($s19->mulInt(136657, 18));
2512
+		$s12 = $s12->subInt64($s19->mulInt(683901, 20));
2513
+
2514
+		$s6  =  $s6->addInt64($s18->mulInt(666643, 20));
2515
+		$s7  =  $s7->addInt64($s18->mulInt(470296, 19));
2516
+		$s8  =  $s8->addInt64($s18->mulInt(654183, 20));
2517
+		$s9  =  $s9->subInt64($s18->mulInt(997805, 20));
2518
+		$s10 = $s10->addInt64($s18->mulInt(136657, 18));
2519
+		$s11 = $s11->subInt64($s18->mulInt(683901, 20));
2520
+
2521
+		$carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2522
+		$s7 = $s7->addInt64($carry6);
2523
+		$s6 = $s6->subInt64($carry6->shiftLeft(21));
2524
+		$carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2525
+		$s9 = $s9->addInt64($carry8);
2526
+		$s8 = $s8->subInt64($carry8->shiftLeft(21));
2527
+		$carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2528
+		$s11 = $s11->addInt64($carry10);
2529
+		$s10 = $s10->subInt64($carry10->shiftLeft(21));
2530
+		$carry12 = $s12->addInt(1 << 20)->shiftRight(21);
2531
+		$s13 = $s13->addInt64($carry12);
2532
+		$s12 = $s12->subInt64($carry12->shiftLeft(21));
2533
+		$carry14 = $s14->addInt(1 << 20)->shiftRight(21);
2534
+		$s15 = $s15->addInt64($carry14);
2535
+		$s14 = $s14->subInt64($carry14->shiftLeft(21));
2536
+		$carry16 = $s16->addInt(1 << 20)->shiftRight(21);
2537
+		$s17 = $s17->addInt64($carry16);
2538
+		$s16 = $s16->subInt64($carry16->shiftLeft(21));
2539
+
2540
+		$carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2541
+		$s8 = $s8->addInt64($carry7);
2542
+		$s7 = $s7->subInt64($carry7->shiftLeft(21));
2543
+		$carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2544
+		$s10 = $s10->addInt64($carry9);
2545
+		$s9 = $s9->subInt64($carry9->shiftLeft(21));
2546
+		$carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2547
+		$s12 = $s12->addInt64($carry11);
2548
+		$s11 = $s11->subInt64($carry11->shiftLeft(21));
2549
+		$carry13 = $s13->addInt(1 << 20)->shiftRight(21);
2550
+		$s14 = $s14->addInt64($carry13);
2551
+		$s13 = $s13->subInt64($carry13->shiftLeft(21));
2552
+		$carry15 = $s15->addInt(1 << 20)->shiftRight(21);
2553
+		$s16 = $s16->addInt64($carry15);
2554
+		$s15 = $s15->subInt64($carry15->shiftLeft(21));
2555
+
2556
+		$s5  =  $s5->addInt64($s17->mulInt(666643, 20));
2557
+		$s6  =  $s6->addInt64($s17->mulInt(470296, 19));
2558
+		$s7  =  $s7->addInt64($s17->mulInt(654183, 20));
2559
+		$s8  =  $s8->subInt64($s17->mulInt(997805, 20));
2560
+		$s9  =  $s9->addInt64($s17->mulInt(136657, 18));
2561
+		$s10 = $s10->subInt64($s17->mulInt(683901, 20));
2562
+
2563
+		$s4  =  $s4->addInt64($s16->mulInt(666643, 20));
2564
+		$s5  =  $s5->addInt64($s16->mulInt(470296, 19));
2565
+		$s6  =  $s6->addInt64($s16->mulInt(654183, 20));
2566
+		$s7  =  $s7->subInt64($s16->mulInt(997805, 20));
2567
+		$s8  =  $s8->addInt64($s16->mulInt(136657, 18));
2568
+		$s9  =  $s9->subInt64($s16->mulInt(683901, 20));
2569
+
2570
+		$s3  =  $s3->addInt64($s15->mulInt(666643, 20));
2571
+		$s4  =  $s4->addInt64($s15->mulInt(470296, 19));
2572
+		$s5  =  $s5->addInt64($s15->mulInt(654183, 20));
2573
+		$s6  =  $s6->subInt64($s15->mulInt(997805, 20));
2574
+		$s7  =  $s7->addInt64($s15->mulInt(136657, 18));
2575
+		$s8  =  $s8->subInt64($s15->mulInt(683901, 20));
2576
+
2577
+		$s2  =  $s2->addInt64($s14->mulInt(666643, 20));
2578
+		$s3  =  $s3->addInt64($s14->mulInt(470296, 19));
2579
+		$s4  =  $s4->addInt64($s14->mulInt(654183, 20));
2580
+		$s5  =  $s5->subInt64($s14->mulInt(997805, 20));
2581
+		$s6  =  $s6->addInt64($s14->mulInt(136657, 18));
2582
+		$s7  =  $s7->subInt64($s14->mulInt(683901, 20));
2583
+
2584
+		$s1  =  $s1->addInt64($s13->mulInt(666643, 20));
2585
+		$s2  =  $s2->addInt64($s13->mulInt(470296, 19));
2586
+		$s3  =  $s3->addInt64($s13->mulInt(654183, 20));
2587
+		$s4  =  $s4->subInt64($s13->mulInt(997805, 20));
2588
+		$s5  =  $s5->addInt64($s13->mulInt(136657, 18));
2589
+		$s6  =  $s6->subInt64($s13->mulInt(683901, 20));
2590
+
2591
+		$s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2592
+		$s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2593
+		$s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2594
+		$s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2595
+		$s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2596
+		$s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2597
+		$s12 = new ParagonIE_Sodium_Core32_Int64();
2598
+
2599
+		$carry0 = $s0->addInt(1 << 20)->shiftRight(21);
2600
+		$s1 = $s1->addInt64($carry0);
2601
+		$s0 = $s0->subInt64($carry0->shiftLeft(21));
2602
+		$carry2 = $s2->addInt(1 << 20)->shiftRight(21);
2603
+		$s3 = $s3->addInt64($carry2);
2604
+		$s2 = $s2->subInt64($carry2->shiftLeft(21));
2605
+		$carry4 = $s4->addInt(1 << 20)->shiftRight(21);
2606
+		$s5 = $s5->addInt64($carry4);
2607
+		$s4 = $s4->subInt64($carry4->shiftLeft(21));
2608
+		$carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2609
+		$s7 = $s7->addInt64($carry6);
2610
+		$s6 = $s6->subInt64($carry6->shiftLeft(21));
2611
+		$carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2612
+		$s9 = $s9->addInt64($carry8);
2613
+		$s8 = $s8->subInt64($carry8->shiftLeft(21));
2614
+		$carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2615
+		$s11 = $s11->addInt64($carry10);
2616
+		$s10 = $s10->subInt64($carry10->shiftLeft(21));
2617
+
2618
+		$carry1 = $s1->addInt(1 << 20)->shiftRight(21);
2619
+		$s2 = $s2->addInt64($carry1);
2620
+		$s1 = $s1->subInt64($carry1->shiftLeft(21));
2621
+		$carry3 = $s3->addInt(1 << 20)->shiftRight(21);
2622
+		$s4 = $s4->addInt64($carry3);
2623
+		$s3 = $s3->subInt64($carry3->shiftLeft(21));
2624
+		$carry5 = $s5->addInt(1 << 20)->shiftRight(21);
2625
+		$s6 = $s6->addInt64($carry5);
2626
+		$s5 = $s5->subInt64($carry5->shiftLeft(21));
2627
+		$carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2628
+		$s8 = $s8->addInt64($carry7);
2629
+		$s7 = $s7->subInt64($carry7->shiftLeft(21));
2630
+		$carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2631
+		$s10 = $s10->addInt64($carry9);
2632
+		$s9 = $s9->subInt64($carry9->shiftLeft(21));
2633
+		$carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2634
+		$s12 = $s12->addInt64($carry11);
2635
+		$s11 = $s11->subInt64($carry11->shiftLeft(21));
2636
+
2637
+		$s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2638
+		$s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2639
+		$s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2640
+		$s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2641
+		$s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2642
+		$s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2643
+		$s12 = new ParagonIE_Sodium_Core32_Int64();
2644
+
2645
+		$carry0 = $s0->shiftRight(21);
2646
+		$s1 = $s1->addInt64($carry0);
2647
+		$s0 = $s0->subInt64($carry0->shiftLeft(21));
2648
+		$carry1 = $s1->shiftRight(21);
2649
+		$s2 = $s2->addInt64($carry1);
2650
+		$s1 = $s1->subInt64($carry1->shiftLeft(21));
2651
+		$carry2 = $s2->shiftRight(21);
2652
+		$s3 = $s3->addInt64($carry2);
2653
+		$s2 = $s2->subInt64($carry2->shiftLeft(21));
2654
+		$carry3 = $s3->shiftRight(21);
2655
+		$s4 = $s4->addInt64($carry3);
2656
+		$s3 = $s3->subInt64($carry3->shiftLeft(21));
2657
+		$carry4 = $s4->shiftRight(21);
2658
+		$s5 = $s5->addInt64($carry4);
2659
+		$s4 = $s4->subInt64($carry4->shiftLeft(21));
2660
+		$carry5 = $s5->shiftRight(21);
2661
+		$s6 = $s6->addInt64($carry5);
2662
+		$s5 = $s5->subInt64($carry5->shiftLeft(21));
2663
+		$carry6 = $s6->shiftRight(21);
2664
+		$s7 = $s7->addInt64($carry6);
2665
+		$s6 = $s6->subInt64($carry6->shiftLeft(21));
2666
+		$carry7 = $s7->shiftRight(21);
2667
+		$s8 = $s8->addInt64($carry7);
2668
+		$s7 = $s7->subInt64($carry7->shiftLeft(21));
2669
+		$carry8 = $s8->shiftRight(21);
2670
+		$s9 = $s9->addInt64($carry8);
2671
+		$s8 = $s8->subInt64($carry8->shiftLeft(21));
2672
+		$carry9 = $s9->shiftRight(21);
2673
+		$s10 = $s10->addInt64($carry9);
2674
+		$s9 = $s9->subInt64($carry9->shiftLeft(21));
2675
+		$carry10 = $s10->shiftRight(21);
2676
+		$s11 = $s11->addInt64($carry10);
2677
+		$s10 = $s10->subInt64($carry10->shiftLeft(21));
2678
+		$carry11 = $s11->shiftRight(21);
2679
+		$s12 = $s12->addInt64($carry11);
2680
+		$s11 = $s11->subInt64($carry11->shiftLeft(21));
2681
+
2682
+		$s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2683
+		$s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2684
+		$s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2685
+		$s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2686
+		$s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2687
+		$s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2688
+
2689
+		$carry0 = $s0->shiftRight(21);
2690
+		$s1 = $s1->addInt64($carry0);
2691
+		$s0 = $s0->subInt64($carry0->shiftLeft(21));
2692
+		$carry1 = $s1->shiftRight(21);
2693
+		$s2 = $s2->addInt64($carry1);
2694
+		$s1 = $s1->subInt64($carry1->shiftLeft(21));
2695
+		$carry2 = $s2->shiftRight(21);
2696
+		$s3 = $s3->addInt64($carry2);
2697
+		$s2 = $s2->subInt64($carry2->shiftLeft(21));
2698
+		$carry3 = $s3->shiftRight(21);
2699
+		$s4 = $s4->addInt64($carry3);
2700
+		$s3 = $s3->subInt64($carry3->shiftLeft(21));
2701
+		$carry4 = $s4->shiftRight(21);
2702
+		$s5 = $s5->addInt64($carry4);
2703
+		$s4 = $s4->subInt64($carry4->shiftLeft(21));
2704
+		$carry5 = $s5->shiftRight(21);
2705
+		$s6 = $s6->addInt64($carry5);
2706
+		$s5 = $s5->subInt64($carry5->shiftLeft(21));
2707
+		$carry6 = $s6->shiftRight(21);
2708
+		$s7 = $s7->addInt64($carry6);
2709
+		$s6 = $s6->subInt64($carry6->shiftLeft(21));
2710
+		$carry7 = $s7->shiftRight(21);
2711
+		$s8 = $s8->addInt64($carry7);
2712
+		$s7 = $s7->subInt64($carry7->shiftLeft(21));
2713
+		$carry8 = $s10->shiftRight(21);
2714
+		$s9 = $s9->addInt64($carry8);
2715
+		$s8 = $s8->subInt64($carry8->shiftLeft(21));
2716
+		$carry9 = $s9->shiftRight(21);
2717
+		$s10 = $s10->addInt64($carry9);
2718
+		$s9 = $s9->subInt64($carry9->shiftLeft(21));
2719
+		$carry10 = $s10->shiftRight(21);
2720
+		$s11 = $s11->addInt64($carry10);
2721
+		$s10 = $s10->subInt64($carry10->shiftLeft(21));
2722
+
2723
+		$S0  =  $s0->toInt();
2724
+		$S1  =  $s1->toInt();
2725
+		$S2  =  $s2->toInt();
2726
+		$S3  =  $s3->toInt();
2727
+		$S4  =  $s4->toInt();
2728
+		$S5  =  $s5->toInt();
2729
+		$S6  =  $s6->toInt();
2730
+		$S7  =  $s7->toInt();
2731
+		$S8  =  $s8->toInt();
2732
+		$S9  =  $s9->toInt();
2733
+		$S10 = $s10->toInt();
2734
+		$S11 = $s11->toInt();
2735
+
2736
+		/**
2737
+		 * @var array<int, int>
2738
+		 */
2739
+		$arr = array(
2740
+			(int) (0xff & ($S0 >> 0)),
2741
+			(int) (0xff & ($S0 >> 8)),
2742
+			(int) (0xff & (($S0 >> 16) | ($S1 << 5))),
2743
+			(int) (0xff & ($S1 >> 3)),
2744
+			(int) (0xff & ($S1 >> 11)),
2745
+			(int) (0xff & (($S1 >> 19) | ($S2 << 2))),
2746
+			(int) (0xff & ($S2 >> 6)),
2747
+			(int) (0xff & (($S2 >> 14) | ($S3 << 7))),
2748
+			(int) (0xff & ($S3 >> 1)),
2749
+			(int) (0xff & ($S3 >> 9)),
2750
+			(int) (0xff & (($S3 >> 17) | ($S4 << 4))),
2751
+			(int) (0xff & ($S4 >> 4)),
2752
+			(int) (0xff & ($S4 >> 12)),
2753
+			(int) (0xff & (($S4 >> 20) | ($S5 << 1))),
2754
+			(int) (0xff & ($S5 >> 7)),
2755
+			(int) (0xff & (($S5 >> 15) | ($S6 << 6))),
2756
+			(int) (0xff & ($S6 >> 2)),
2757
+			(int) (0xff & ($S6 >> 10)),
2758
+			(int) (0xff & (($S6 >> 18) | ($S7 << 3))),
2759
+			(int) (0xff & ($S7 >> 5)),
2760
+			(int) (0xff & ($S7 >> 13)),
2761
+			(int) (0xff & ($S8 >> 0)),
2762
+			(int) (0xff & ($S8 >> 8)),
2763
+			(int) (0xff & (($S8 >> 16) | ($S9 << 5))),
2764
+			(int) (0xff & ($S9 >> 3)),
2765
+			(int) (0xff & ($S9 >> 11)),
2766
+			(int) (0xff & (($S9 >> 19) | ($S10 << 2))),
2767
+			(int) (0xff & ($S10 >> 6)),
2768
+			(int) (0xff & (($S10 >> 14) | ($S11 << 7))),
2769
+			(int) (0xff & ($S11 >> 1)),
2770
+			(int) (0xff & ($S11 >> 9)),
2771
+			(int) (0xff & ($S11 >> 17))
2772
+		);
2773
+		return self::intArrayToString($arr);
2774
+	}
2775
+
2776
+	/**
2777
+	 * @internal You should not use this directly from another application
2778
+	 *
2779
+	 * @param string $s
2780
+	 * @return string
2781
+	 * @throws SodiumException
2782
+	 * @throws TypeError
2783
+	 */
2784
+	public static function sc_reduce($s)
2785
+	{
2786
+		/**
2787
+		 * @var ParagonIE_Sodium_Core32_Int64 $s0
2788
+		 * @var ParagonIE_Sodium_Core32_Int64 $s1
2789
+		 * @var ParagonIE_Sodium_Core32_Int64 $s2
2790
+		 * @var ParagonIE_Sodium_Core32_Int64 $s3
2791
+		 * @var ParagonIE_Sodium_Core32_Int64 $s4
2792
+		 * @var ParagonIE_Sodium_Core32_Int64 $s5
2793
+		 * @var ParagonIE_Sodium_Core32_Int64 $s6
2794
+		 * @var ParagonIE_Sodium_Core32_Int64 $s7
2795
+		 * @var ParagonIE_Sodium_Core32_Int64 $s8
2796
+		 * @var ParagonIE_Sodium_Core32_Int64 $s9
2797
+		 * @var ParagonIE_Sodium_Core32_Int64 $s10
2798
+		 * @var ParagonIE_Sodium_Core32_Int64 $s11
2799
+		 * @var ParagonIE_Sodium_Core32_Int64 $s12
2800
+		 * @var ParagonIE_Sodium_Core32_Int64 $s13
2801
+		 * @var ParagonIE_Sodium_Core32_Int64 $s14
2802
+		 * @var ParagonIE_Sodium_Core32_Int64 $s15
2803
+		 * @var ParagonIE_Sodium_Core32_Int64 $s16
2804
+		 * @var ParagonIE_Sodium_Core32_Int64 $s17
2805
+		 * @var ParagonIE_Sodium_Core32_Int64 $s18
2806
+		 * @var ParagonIE_Sodium_Core32_Int64 $s19
2807
+		 * @var ParagonIE_Sodium_Core32_Int64 $s20
2808
+		 * @var ParagonIE_Sodium_Core32_Int64 $s21
2809
+		 * @var ParagonIE_Sodium_Core32_Int64 $s22
2810
+		 * @var ParagonIE_Sodium_Core32_Int64 $s23
2811
+		 */
2812
+		$s0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 0, 3)));
2813
+		$s1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 2, 4)) >> 5));
2814
+		$s2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 5, 3)) >> 2));
2815
+		$s3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 7, 4)) >> 7));
2816
+		$s4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 10, 4)) >> 4));
2817
+		$s5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 13, 3)) >> 1));
2818
+		$s6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 15, 4)) >> 6));
2819
+		$s7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 18, 4)) >> 3));
2820
+		$s8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 21, 3)));
2821
+		$s9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 23, 4)) >> 5));
2822
+		$s10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 26, 3)) >> 2));
2823
+		$s11 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 28, 4)) >> 7));
2824
+		$s12 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 31, 4)) >> 4));
2825
+		$s13 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 34, 3)) >> 1));
2826
+		$s14 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 36, 4)) >> 6));
2827
+		$s15 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 39, 4)) >> 3));
2828
+		$s16 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 42, 3)));
2829
+		$s17 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 44, 4)) >> 5));
2830
+		$s18 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 47, 3)) >> 2));
2831
+		$s19 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 49, 4)) >> 7));
2832
+		$s20 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 52, 4)) >> 4));
2833
+		$s21 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 55, 3)) >> 1));
2834
+		$s22 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 57, 4)) >> 6));
2835
+		$s23 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($s, 60, 4)) >> 3));
2836
+
2837
+		$s11 = $s11->addInt64($s23->mulInt(666643, 20));
2838
+		$s12 = $s12->addInt64($s23->mulInt(470296, 19));
2839
+		$s13 = $s13->addInt64($s23->mulInt(654183, 20));
2840
+		$s14 = $s14->subInt64($s23->mulInt(997805, 20));
2841
+		$s15 = $s15->addInt64($s23->mulInt(136657, 18));
2842
+		$s16 = $s16->subInt64($s23->mulInt(683901, 20));
2843
+
2844
+		$s10 = $s10->addInt64($s22->mulInt(666643, 20));
2845
+		$s11 = $s11->addInt64($s22->mulInt(470296, 19));
2846
+		$s12 = $s12->addInt64($s22->mulInt(654183, 20));
2847
+		$s13 = $s13->subInt64($s22->mulInt(997805, 20));
2848
+		$s14 = $s14->addInt64($s22->mulInt(136657, 18));
2849
+		$s15 = $s15->subInt64($s22->mulInt(683901, 20));
2850
+
2851
+		$s9  =  $s9->addInt64($s21->mulInt(666643, 20));
2852
+		$s10 = $s10->addInt64($s21->mulInt(470296, 19));
2853
+		$s11 = $s11->addInt64($s21->mulInt(654183, 20));
2854
+		$s12 = $s12->subInt64($s21->mulInt(997805, 20));
2855
+		$s13 = $s13->addInt64($s21->mulInt(136657, 18));
2856
+		$s14 = $s14->subInt64($s21->mulInt(683901, 20));
2857
+
2858
+		$s8  =  $s8->addInt64($s20->mulInt(666643, 20));
2859
+		$s9  =  $s9->addInt64($s20->mulInt(470296, 19));
2860
+		$s10 = $s10->addInt64($s20->mulInt(654183, 20));
2861
+		$s11 = $s11->subInt64($s20->mulInt(997805, 20));
2862
+		$s12 = $s12->addInt64($s20->mulInt(136657, 18));
2863
+		$s13 = $s13->subInt64($s20->mulInt(683901, 20));
2864
+
2865
+		$s7  =  $s7->addInt64($s19->mulInt(666643, 20));
2866
+		$s8  =  $s8->addInt64($s19->mulInt(470296, 19));
2867
+		$s9  =  $s9->addInt64($s19->mulInt(654183, 20));
2868
+		$s10 = $s10->subInt64($s19->mulInt(997805, 20));
2869
+		$s11 = $s11->addInt64($s19->mulInt(136657, 18));
2870
+		$s12 = $s12->subInt64($s19->mulInt(683901, 20));
2871
+
2872
+		$s6  =  $s6->addInt64($s18->mulInt(666643, 20));
2873
+		$s7  =  $s7->addInt64($s18->mulInt(470296, 19));
2874
+		$s8  =  $s8->addInt64($s18->mulInt(654183, 20));
2875
+		$s9  =  $s9->subInt64($s18->mulInt(997805, 20));
2876
+		$s10 = $s10->addInt64($s18->mulInt(136657, 18));
2877
+		$s11 = $s11->subInt64($s18->mulInt(683901, 20));
2878
+
2879
+		$carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2880
+		$s7 = $s7->addInt64($carry6);
2881
+		$s6 = $s6->subInt64($carry6->shiftLeft(21));
2882
+		$carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2883
+		$s9 = $s9->addInt64($carry8);
2884
+		$s8 = $s8->subInt64($carry8->shiftLeft(21));
2885
+		$carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2886
+		$s11 = $s11->addInt64($carry10);
2887
+		$s10 = $s10->subInt64($carry10->shiftLeft(21));
2888
+		$carry12 = $s12->addInt(1 << 20)->shiftRight(21);
2889
+		$s13 = $s13->addInt64($carry12);
2890
+		$s12 = $s12->subInt64($carry12->shiftLeft(21));
2891
+		$carry14 = $s14->addInt(1 << 20)->shiftRight(21);
2892
+		$s15 = $s15->addInt64($carry14);
2893
+		$s14 = $s14->subInt64($carry14->shiftLeft(21));
2894
+		$carry16 = $s16->addInt(1 << 20)->shiftRight(21);
2895
+		$s17 = $s17->addInt64($carry16);
2896
+		$s16 = $s16->subInt64($carry16->shiftLeft(21));
2897
+
2898
+		$carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2899
+		$s8 = $s8->addInt64($carry7);
2900
+		$s7 = $s7->subInt64($carry7->shiftLeft(21));
2901
+		$carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2902
+		$s10 = $s10->addInt64($carry9);
2903
+		$s9 = $s9->subInt64($carry9->shiftLeft(21));
2904
+		$carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2905
+		$s12 = $s12->addInt64($carry11);
2906
+		$s11 = $s11->subInt64($carry11->shiftLeft(21));
2907
+		$carry13 = $s13->addInt(1 << 20)->shiftRight(21);
2908
+		$s14 = $s14->addInt64($carry13);
2909
+		$s13 = $s13->subInt64($carry13->shiftLeft(21));
2910
+		$carry15 = $s15->addInt(1 << 20)->shiftRight(21);
2911
+		$s16 = $s16->addInt64($carry15);
2912
+		$s15 = $s15->subInt64($carry15->shiftLeft(21));
2913
+
2914
+		$s5  =  $s5->addInt64($s17->mulInt(666643, 20));
2915
+		$s6  =  $s6->addInt64($s17->mulInt(470296, 19));
2916
+		$s7  =  $s7->addInt64($s17->mulInt(654183, 20));
2917
+		$s8  =  $s8->subInt64($s17->mulInt(997805, 20));
2918
+		$s9  =  $s9->addInt64($s17->mulInt(136657, 18));
2919
+		$s10 = $s10->subInt64($s17->mulInt(683901, 20));
2920
+
2921
+		$s4  =  $s4->addInt64($s16->mulInt(666643, 20));
2922
+		$s5  =  $s5->addInt64($s16->mulInt(470296, 19));
2923
+		$s6  =  $s6->addInt64($s16->mulInt(654183, 20));
2924
+		$s7  =  $s7->subInt64($s16->mulInt(997805, 20));
2925
+		$s8  =  $s8->addInt64($s16->mulInt(136657, 18));
2926
+		$s9  =  $s9->subInt64($s16->mulInt(683901, 20));
2927
+
2928
+		$s3  =  $s3->addInt64($s15->mulInt(666643, 20));
2929
+		$s4  =  $s4->addInt64($s15->mulInt(470296, 19));
2930
+		$s5  =  $s5->addInt64($s15->mulInt(654183, 20));
2931
+		$s6  =  $s6->subInt64($s15->mulInt(997805, 20));
2932
+		$s7  =  $s7->addInt64($s15->mulInt(136657, 18));
2933
+		$s8  =  $s8->subInt64($s15->mulInt(683901, 20));
2934
+
2935
+		$s2  =  $s2->addInt64($s14->mulInt(666643, 20));
2936
+		$s3  =  $s3->addInt64($s14->mulInt(470296, 19));
2937
+		$s4  =  $s4->addInt64($s14->mulInt(654183, 20));
2938
+		$s5  =  $s5->subInt64($s14->mulInt(997805, 20));
2939
+		$s6  =  $s6->addInt64($s14->mulInt(136657, 18));
2940
+		$s7  =  $s7->subInt64($s14->mulInt(683901, 20));
2941
+
2942
+		$s1  =  $s1->addInt64($s13->mulInt(666643, 20));
2943
+		$s2  =  $s2->addInt64($s13->mulInt(470296, 19));
2944
+		$s3  =  $s3->addInt64($s13->mulInt(654183, 20));
2945
+		$s4  =  $s4->subInt64($s13->mulInt(997805, 20));
2946
+		$s5  =  $s5->addInt64($s13->mulInt(136657, 18));
2947
+		$s6  =  $s6->subInt64($s13->mulInt(683901, 20));
2948
+
2949
+		$s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2950
+		$s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2951
+		$s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2952
+		$s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2953
+		$s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2954
+		$s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2955
+		$s12 = new ParagonIE_Sodium_Core32_Int64();
2956
+
2957
+		$carry0 = $s0->addInt(1 << 20)->shiftRight(21);
2958
+		$s1 = $s1->addInt64($carry0);
2959
+		$s0 = $s0->subInt64($carry0->shiftLeft(21));
2960
+		$carry2 = $s2->addInt(1 << 20)->shiftRight(21);
2961
+		$s3 = $s3->addInt64($carry2);
2962
+		$s2 = $s2->subInt64($carry2->shiftLeft(21));
2963
+		$carry4 = $s4->addInt(1 << 20)->shiftRight(21);
2964
+		$s5 = $s5->addInt64($carry4);
2965
+		$s4 = $s4->subInt64($carry4->shiftLeft(21));
2966
+		$carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2967
+		$s7 = $s7->addInt64($carry6);
2968
+		$s6 = $s6->subInt64($carry6->shiftLeft(21));
2969
+		$carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2970
+		$s9 = $s9->addInt64($carry8);
2971
+		$s8 = $s8->subInt64($carry8->shiftLeft(21));
2972
+		$carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2973
+		$s11 = $s11->addInt64($carry10);
2974
+		$s10 = $s10->subInt64($carry10->shiftLeft(21));
2975
+		$carry1 = $s1->addInt(1 << 20)->shiftRight(21);
2976
+		$s2 = $s2->addInt64($carry1);
2977
+		$s1 = $s1->subInt64($carry1->shiftLeft(21));
2978
+		$carry3 = $s3->addInt(1 << 20)->shiftRight(21);
2979
+		$s4 = $s4->addInt64($carry3);
2980
+		$s3 = $s3->subInt64($carry3->shiftLeft(21));
2981
+		$carry5 = $s5->addInt(1 << 20)->shiftRight(21);
2982
+		$s6 = $s6->addInt64($carry5);
2983
+		$s5 = $s5->subInt64($carry5->shiftLeft(21));
2984
+		$carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2985
+		$s8 = $s8->addInt64($carry7);
2986
+		$s7 = $s7->subInt64($carry7->shiftLeft(21));
2987
+		$carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2988
+		$s10 = $s10->addInt64($carry9);
2989
+		$s9 = $s9->subInt64($carry9->shiftLeft(21));
2990
+		$carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2991
+		$s12 = $s12->addInt64($carry11);
2992
+		$s11 = $s11->subInt64($carry11->shiftLeft(21));
2993
+
2994
+		$s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2995
+		$s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2996
+		$s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2997
+		$s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2998
+		$s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2999
+		$s5  =  $s5->subInt64($s12->mulInt(683901, 20));
3000
+		$s12 = new ParagonIE_Sodium_Core32_Int64();
3001
+
3002
+		$carry0 = $s0->shiftRight(21);
3003
+		$s1 = $s1->addInt64($carry0);
3004
+		$s0 = $s0->subInt64($carry0->shiftLeft(21));
3005
+		$carry1 = $s1->shiftRight(21);
3006
+		$s2 = $s2->addInt64($carry1);
3007
+		$s1 = $s1->subInt64($carry1->shiftLeft(21));
3008
+		$carry2 = $s2->shiftRight(21);
3009
+		$s3 = $s3->addInt64($carry2);
3010
+		$s2 = $s2->subInt64($carry2->shiftLeft(21));
3011
+		$carry3 = $s3->shiftRight(21);
3012
+		$s4 = $s4->addInt64($carry3);
3013
+		$s3 = $s3->subInt64($carry3->shiftLeft(21));
3014
+		$carry4 = $s4->shiftRight(21);
3015
+		$s5 = $s5->addInt64($carry4);
3016
+		$s4 = $s4->subInt64($carry4->shiftLeft(21));
3017
+		$carry5 = $s5->shiftRight(21);
3018
+		$s6 = $s6->addInt64($carry5);
3019
+		$s5 = $s5->subInt64($carry5->shiftLeft(21));
3020
+		$carry6 = $s6->shiftRight(21);
3021
+		$s7 = $s7->addInt64($carry6);
3022
+		$s6 = $s6->subInt64($carry6->shiftLeft(21));
3023
+		$carry7 = $s7->shiftRight(21);
3024
+		$s8 = $s8->addInt64($carry7);
3025
+		$s7 = $s7->subInt64($carry7->shiftLeft(21));
3026
+		$carry8 = $s8->shiftRight(21);
3027
+		$s9 = $s9->addInt64($carry8);
3028
+		$s8 = $s8->subInt64($carry8->shiftLeft(21));
3029
+		$carry9 = $s9->shiftRight(21);
3030
+		$s10 = $s10->addInt64($carry9);
3031
+		$s9 = $s9->subInt64($carry9->shiftLeft(21));
3032
+		$carry10 = $s10->shiftRight(21);
3033
+		$s11 = $s11->addInt64($carry10);
3034
+		$s10 = $s10->subInt64($carry10->shiftLeft(21));
3035
+		$carry11 = $s11->shiftRight(21);
3036
+		$s12 = $s12->addInt64($carry11);
3037
+		$s11 = $s11->subInt64($carry11->shiftLeft(21));
3038
+
3039
+		$s0  =  $s0->addInt64($s12->mulInt(666643, 20));
3040
+		$s1  =  $s1->addInt64($s12->mulInt(470296, 19));
3041
+		$s2  =  $s2->addInt64($s12->mulInt(654183, 20));
3042
+		$s3  =  $s3->subInt64($s12->mulInt(997805, 20));
3043
+		$s4  =  $s4->addInt64($s12->mulInt(136657, 18));
3044
+		$s5  =  $s5->subInt64($s12->mulInt(683901, 20));
3045
+
3046
+		$carry0 = $s0->shiftRight(21);
3047
+		$s1 = $s1->addInt64($carry0);
3048
+		$s0 = $s0->subInt64($carry0->shiftLeft(21));
3049
+		$carry1 = $s1->shiftRight(21);
3050
+		$s2 = $s2->addInt64($carry1);
3051
+		$s1 = $s1->subInt64($carry1->shiftLeft(21));
3052
+		$carry2 = $s2->shiftRight(21);
3053
+		$s3 = $s3->addInt64($carry2);
3054
+		$s2 = $s2->subInt64($carry2->shiftLeft(21));
3055
+		$carry3 = $s3->shiftRight(21);
3056
+		$s4 = $s4->addInt64($carry3);
3057
+		$s3 = $s3->subInt64($carry3->shiftLeft(21));
3058
+		$carry4 = $s4->shiftRight(21);
3059
+		$s5 = $s5->addInt64($carry4);
3060
+		$s4 = $s4->subInt64($carry4->shiftLeft(21));
3061
+		$carry5 = $s5->shiftRight(21);
3062
+		$s6 = $s6->addInt64($carry5);
3063
+		$s5 = $s5->subInt64($carry5->shiftLeft(21));
3064
+		$carry6 = $s6->shiftRight(21);
3065
+		$s7 = $s7->addInt64($carry6);
3066
+		$s6 = $s6->subInt64($carry6->shiftLeft(21));
3067
+		$carry7 = $s7->shiftRight(21);
3068
+		$s8 = $s8->addInt64($carry7);
3069
+		$s7 = $s7->subInt64($carry7->shiftLeft(21));
3070
+		$carry8 = $s8->shiftRight(21);
3071
+		$s9 = $s9->addInt64($carry8);
3072
+		$s8 = $s8->subInt64($carry8->shiftLeft(21));
3073
+		$carry9 = $s9->shiftRight(21);
3074
+		$s10 = $s10->addInt64($carry9);
3075
+		$s9 = $s9->subInt64($carry9->shiftLeft(21));
3076
+		$carry10 = $s10->shiftRight(21);
3077
+		$s11 = $s11->addInt64($carry10);
3078
+		$s10 = $s10->subInt64($carry10->shiftLeft(21));
3079
+
3080
+		$S0 = $s0->toInt32()->toInt();
3081
+		$S1 = $s1->toInt32()->toInt();
3082
+		$S2 = $s2->toInt32()->toInt();
3083
+		$S3 = $s3->toInt32()->toInt();
3084
+		$S4 = $s4->toInt32()->toInt();
3085
+		$S5 = $s5->toInt32()->toInt();
3086
+		$S6 = $s6->toInt32()->toInt();
3087
+		$S7 = $s7->toInt32()->toInt();
3088
+		$S8 = $s8->toInt32()->toInt();
3089
+		$S9 = $s9->toInt32()->toInt();
3090
+		$S10 = $s10->toInt32()->toInt();
3091
+		$S11 = $s11->toInt32()->toInt();
3092
+
3093
+		/**
3094
+		 * @var array<int, int>
3095
+		 */
3096
+		$arr = array(
3097
+			(int) ($S0 >> 0),
3098
+			(int) ($S0 >> 8),
3099
+			(int) (($S0 >> 16) | ($S1 << 5)),
3100
+			(int) ($S1 >> 3),
3101
+			(int) ($S1 >> 11),
3102
+			(int) (($S1 >> 19) | ($S2 << 2)),
3103
+			(int) ($S2 >> 6),
3104
+			(int) (($S2 >> 14) | ($S3 << 7)),
3105
+			(int) ($S3 >> 1),
3106
+			(int) ($S3 >> 9),
3107
+			(int) (($S3 >> 17) | ($S4 << 4)),
3108
+			(int) ($S4 >> 4),
3109
+			(int) ($S4 >> 12),
3110
+			(int) (($S4 >> 20) | ($S5 << 1)),
3111
+			(int) ($S5 >> 7),
3112
+			(int) (($S5 >> 15) | ($S6 << 6)),
3113
+			(int) ($S6 >> 2),
3114
+			(int) ($S6 >> 10),
3115
+			(int) (($S6 >> 18) | ($S7 << 3)),
3116
+			(int) ($S7 >> 5),
3117
+			(int) ($S7 >> 13),
3118
+			(int) ($S8 >> 0),
3119
+			(int) ($S8 >> 8),
3120
+			(int) (($S8 >> 16) | ($S9 << 5)),
3121
+			(int) ($S9 >> 3),
3122
+			(int) ($S9 >> 11),
3123
+			(int) (($S9 >> 19) | ($S10 << 2)),
3124
+			(int) ($S10 >> 6),
3125
+			(int) (($S10 >> 14) | ($S11 << 7)),
3126
+			(int) ($S11 >> 1),
3127
+			(int) ($S11 >> 9),
3128
+			(int) $S11 >> 17
3129
+		);
3130
+		return self::intArrayToString($arr);
3131
+	}
3132
+
3133
+	/**
3134
+	 * multiply by the order of the main subgroup l = 2^252+27742317777372353535851937790883648493
3135
+	 *
3136
+	 * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A
3137
+	 * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
3138
+	 * @throws SodiumException
3139
+	 * @throws TypeError
3140
+	 */
3141
+	public static function ge_mul_l(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A)
3142
+	{
3143
+		/** @var array<int, int> $aslide */
3144
+		$aslide = array(
3145
+			13, 0, 0, 0, 0, -1, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0,
3146
+			0, 0, 0, -3, 0, 0, 0, 0, -13, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 3, 0,
3147
+			0, 0, 0, -13, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0,
3148
+			0, 0, 11, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -1,
3149
+			0, 0, 0, 0, 3, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0,
3150
+			0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 5, 0, 0, 0, 0,
3151
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3152
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3153
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3154
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3155
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3156
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
3157
+		);
3158
+
3159
+		/** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Cached> $Ai size 8 */
3160
+		$Ai = array();
3161
+
3162
+		# ge_p3_to_cached(&Ai[0], A);
3163
+		$Ai[0] = self::ge_p3_to_cached($A);
3164
+		# ge_p3_dbl(&t, A);
3165
+		$t = self::ge_p3_dbl($A);
3166
+		# ge_p1p1_to_p3(&A2, &t);
3167
+		$A2 = self::ge_p1p1_to_p3($t);
3168
+
3169
+		for ($i = 1; $i < 8; ++$i) {
3170
+			# ge_add(&t, &A2, &Ai[0]);
3171
+			$t = self::ge_add($A2, $Ai[$i - 1]);
3172
+			# ge_p1p1_to_p3(&u, &t);
3173
+			$u = self::ge_p1p1_to_p3($t);
3174
+			# ge_p3_to_cached(&Ai[i], &u);
3175
+			$Ai[$i] = self::ge_p3_to_cached($u);
3176
+		}
3177
+
3178
+		$r = self::ge_p3_0();
3179
+		for ($i = 252; $i >= 0; --$i) {
3180
+			$t = self::ge_p3_dbl($r);
3181
+			if ($aslide[$i] > 0) {
3182
+				# ge_p1p1_to_p3(&u, &t);
3183
+				$u = self::ge_p1p1_to_p3($t);
3184
+				# ge_add(&t, &u, &Ai[aslide[i] / 2]);
3185
+				$t = self::ge_add($u, $Ai[(int)($aslide[$i] / 2)]);
3186
+			} elseif ($aslide[$i] < 0) {
3187
+				# ge_p1p1_to_p3(&u, &t);
3188
+				$u = self::ge_p1p1_to_p3($t);
3189
+				# ge_sub(&t, &u, &Ai[(-aslide[i]) / 2]);
3190
+				$t = self::ge_sub($u, $Ai[(int)(-$aslide[$i] / 2)]);
3191
+			}
3192
+		}
3193
+		# ge_p1p1_to_p3(r, &t);
3194
+		return self::ge_p1p1_to_p3($t);
3195
+	}
3196 3196
 }
Please login to merge, or discard this patch.
Spacing   +1795 added lines, -1795 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core32_Curve25519', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core32_Curve25519', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -55,7 +55,7 @@  discard block
 block discarded – undo
55 55
     {
56 56
         return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
57 57
             array(
58
-                ParagonIE_Sodium_Core32_Int32::fromInt(1),
58
+                ParagonIE_Sodium_Core32_Int32::fromInt( 1 ),
59 59
                 new ParagonIE_Sodium_Core32_Int32(),
60 60
                 new ParagonIE_Sodium_Core32_Int32(),
61 61
                 new ParagonIE_Sodium_Core32_Int32(),
@@ -87,11 +87,11 @@  discard block
 block discarded – undo
87 87
         ParagonIE_Sodium_Core32_Curve25519_Fe $g
88 88
     ) {
89 89
         $arr = array();
90
-        for ($i = 0; $i < 10; ++$i) {
91
-            $arr[$i] = $f[$i]->addInt32($g[$i]);
90
+        for ( $i = 0; $i < 10; ++$i ) {
91
+            $arr[ $i ] = $f[ $i ]->addInt32( $g[ $i ] );
92 92
         }
93 93
         /** @var array<int, ParagonIE_Sodium_Core32_Int32> $arr */
94
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($arr);
94
+        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray( $arr );
95 95
     }
96 96
 
97 97
     /**
@@ -115,19 +115,19 @@  discard block
 block discarded – undo
115 115
     ) {
116 116
         /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
117 117
         $h = array();
118
-        for ($i = 0; $i < 10; ++$i) {
119
-            if (!($f[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
120
-                throw new TypeError('Expected Int32');
118
+        for ( $i = 0; $i < 10; ++$i ) {
119
+            if ( ! ( $f[ $i ] instanceof ParagonIE_Sodium_Core32_Int32 ) ) {
120
+                throw new TypeError( 'Expected Int32' );
121 121
             }
122
-            if (!($g[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
123
-                throw new TypeError('Expected Int32');
122
+            if ( ! ( $g[ $i ] instanceof ParagonIE_Sodium_Core32_Int32 ) ) {
123
+                throw new TypeError( 'Expected Int32' );
124 124
             }
125
-            $h[$i] = $f[$i]->xorInt32(
126
-                $f[$i]->xorInt32($g[$i])->mask($b)
125
+            $h[ $i ] = $f[ $i ]->xorInt32(
126
+                $f[ $i ]->xorInt32( $g[ $i ] )->mask( $b )
127 127
             );
128 128
         }
129 129
         /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
130
-        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h);
130
+        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray( $h );
131 131
     }
132 132
 
133 133
     /**
@@ -138,7 +138,7 @@  discard block
 block discarded – undo
138 138
      * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
139 139
      * @return ParagonIE_Sodium_Core32_Curve25519_Fe
140 140
      */
141
-    public static function fe_copy(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
141
+    public static function fe_copy( ParagonIE_Sodium_Core32_Curve25519_Fe $f )
142 142
     {
143 143
         $h = clone $f;
144 144
         return $h;
@@ -157,94 +157,94 @@  discard block
 block discarded – undo
157 157
      * @throws TypeError
158 158
      * @psalm-suppress MixedMethodCall
159 159
      */
160
-    public static function fe_frombytes($s)
160
+    public static function fe_frombytes( $s )
161 161
     {
162
-        if (self::strlen($s) !== 32) {
163
-            throw new RangeException('Expected a 32-byte string.');
162
+        if ( self::strlen( $s ) !== 32 ) {
163
+            throw new RangeException( 'Expected a 32-byte string.' );
164 164
         }
165 165
         /** @var ParagonIE_Sodium_Core32_Int32 $h0 */
166 166
         $h0 = ParagonIE_Sodium_Core32_Int32::fromInt(
167
-            self::load_4($s)
167
+            self::load_4( $s )
168 168
         );
169 169
         /** @var ParagonIE_Sodium_Core32_Int32 $h1 */
170 170
         $h1 = ParagonIE_Sodium_Core32_Int32::fromInt(
171
-            self::load_3(self::substr($s, 4, 3)) << 6
171
+            self::load_3( self::substr( $s, 4, 3 ) ) << 6
172 172
         );
173 173
         /** @var ParagonIE_Sodium_Core32_Int32 $h2 */
174 174
         $h2 = ParagonIE_Sodium_Core32_Int32::fromInt(
175
-            self::load_3(self::substr($s, 7, 3)) << 5
175
+            self::load_3( self::substr( $s, 7, 3 ) ) << 5
176 176
         );
177 177
         /** @var ParagonIE_Sodium_Core32_Int32 $h3 */
178 178
         $h3 = ParagonIE_Sodium_Core32_Int32::fromInt(
179
-            self::load_3(self::substr($s, 10, 3)) << 3
179
+            self::load_3( self::substr( $s, 10, 3 ) ) << 3
180 180
         );
181 181
         /** @var ParagonIE_Sodium_Core32_Int32 $h4 */
182 182
         $h4 = ParagonIE_Sodium_Core32_Int32::fromInt(
183
-            self::load_3(self::substr($s, 13, 3)) << 2
183
+            self::load_3( self::substr( $s, 13, 3 ) ) << 2
184 184
         );
185 185
         /** @var ParagonIE_Sodium_Core32_Int32 $h5 */
186 186
         $h5 = ParagonIE_Sodium_Core32_Int32::fromInt(
187
-            self::load_4(self::substr($s, 16, 4))
187
+            self::load_4( self::substr( $s, 16, 4 ) )
188 188
         );
189 189
         /** @var ParagonIE_Sodium_Core32_Int32 $h6 */
190 190
         $h6 = ParagonIE_Sodium_Core32_Int32::fromInt(
191
-            self::load_3(self::substr($s, 20, 3)) << 7
191
+            self::load_3( self::substr( $s, 20, 3 ) ) << 7
192 192
         );
193 193
         /** @var ParagonIE_Sodium_Core32_Int32 $h7 */
194 194
         $h7 = ParagonIE_Sodium_Core32_Int32::fromInt(
195
-            self::load_3(self::substr($s, 23, 3)) << 5
195
+            self::load_3( self::substr( $s, 23, 3 ) ) << 5
196 196
         );
197 197
         /** @var ParagonIE_Sodium_Core32_Int32 $h8 */
198 198
         $h8 = ParagonIE_Sodium_Core32_Int32::fromInt(
199
-            self::load_3(self::substr($s, 26, 3)) << 4
199
+            self::load_3( self::substr( $s, 26, 3 ) ) << 4
200 200
         );
201 201
         /** @var ParagonIE_Sodium_Core32_Int32 $h9 */
202 202
         $h9 = ParagonIE_Sodium_Core32_Int32::fromInt(
203
-            (self::load_3(self::substr($s, 29, 3)) & 8388607) << 2
203
+            ( self::load_3( self::substr( $s, 29, 3 ) ) & 8388607 ) << 2
204 204
         );
205 205
 
206
-        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
207
-        $h0 = $h0->addInt32($carry9->mulInt(19, 5));
208
-        $h9 = $h9->subInt32($carry9->shiftLeft(25));
206
+        $carry9 = $h9->addInt( 1 << 24 )->shiftRight( 25 );
207
+        $h0 = $h0->addInt32( $carry9->mulInt( 19, 5 ) );
208
+        $h9 = $h9->subInt32( $carry9->shiftLeft( 25 ) );
209 209
 
210
-        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
211
-        $h2 = $h2->addInt32($carry1);
212
-        $h1 = $h1->subInt32($carry1->shiftLeft(25));
210
+        $carry1 = $h1->addInt( 1 << 24 )->shiftRight( 25 );
211
+        $h2 = $h2->addInt32( $carry1 );
212
+        $h1 = $h1->subInt32( $carry1->shiftLeft( 25 ) );
213 213
 
214
-        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
215
-        $h4 = $h4->addInt32($carry3);
216
-        $h3 = $h3->subInt32($carry3->shiftLeft(25));
214
+        $carry3 = $h3->addInt( 1 << 24 )->shiftRight( 25 );
215
+        $h4 = $h4->addInt32( $carry3 );
216
+        $h3 = $h3->subInt32( $carry3->shiftLeft( 25 ) );
217 217
 
218
-        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
219
-        $h6 = $h6->addInt32($carry5);
220
-        $h5 = $h5->subInt32($carry5->shiftLeft(25));
218
+        $carry5 = $h5->addInt( 1 << 24 )->shiftRight( 25 );
219
+        $h6 = $h6->addInt32( $carry5 );
220
+        $h5 = $h5->subInt32( $carry5->shiftLeft( 25 ) );
221 221
 
222
-        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
223
-        $h8 = $h8->addInt32($carry7);
224
-        $h7 = $h7->subInt32($carry7->shiftLeft(25));
222
+        $carry7 = $h7->addInt( 1 << 24 )->shiftRight( 25 );
223
+        $h8 = $h8->addInt32( $carry7 );
224
+        $h7 = $h7->subInt32( $carry7->shiftLeft( 25 ) );
225 225
 
226
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
227
-        $h1 = $h1->addInt32($carry0);
228
-        $h0 = $h0->subInt32($carry0->shiftLeft(26));
226
+        $carry0 = $h0->addInt( 1 << 25 )->shiftRight( 26 );
227
+        $h1 = $h1->addInt32( $carry0 );
228
+        $h0 = $h0->subInt32( $carry0->shiftLeft( 26 ) );
229 229
 
230
-        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
231
-        $h3 = $h3->addInt32($carry2);
232
-        $h2 = $h2->subInt32($carry2->shiftLeft(26));
230
+        $carry2 = $h2->addInt( 1 << 25 )->shiftRight( 26 );
231
+        $h3 = $h3->addInt32( $carry2 );
232
+        $h2 = $h2->subInt32( $carry2->shiftLeft( 26 ) );
233 233
 
234
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
235
-        $h5 = $h5->addInt32($carry4);
236
-        $h4 = $h4->subInt32($carry4->shiftLeft(26));
234
+        $carry4 = $h4->addInt( 1 << 25 )->shiftRight( 26 );
235
+        $h5 = $h5->addInt32( $carry4 );
236
+        $h4 = $h4->subInt32( $carry4->shiftLeft( 26 ) );
237 237
 
238
-        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
239
-        $h7 = $h7->addInt32($carry6);
240
-        $h6 = $h6->subInt32($carry6->shiftLeft(26));
238
+        $carry6 = $h6->addInt( 1 << 25 )->shiftRight( 26 );
239
+        $h7 = $h7->addInt32( $carry6 );
240
+        $h6 = $h6->subInt32( $carry6->shiftLeft( 26 ) );
241 241
 
242
-        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
243
-        $h9 = $h9->addInt32($carry8);
244
-        $h8 = $h8->subInt32($carry8->shiftLeft(26));
242
+        $carry8 = $h8->addInt( 1 << 25 )->shiftRight( 26 );
243
+        $h9 = $h9->addInt32( $carry8 );
244
+        $h8 = $h8->subInt32( $carry8->shiftLeft( 26 ) );
245 245
 
246 246
         return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
247
-            array($h0, $h1, $h2,$h3, $h4, $h5, $h6, $h7, $h8, $h9)
247
+            array( $h0, $h1, $h2, $h3, $h4, $h5, $h6, $h7, $h8, $h9 )
248 248
         );
249 249
     }
250 250
 
@@ -260,7 +260,7 @@  discard block
 block discarded – undo
260 260
      * @psalm-suppress MixedAssignment
261 261
      * @psalm-suppress MixedMethodCall
262 262
      */
263
-    public static function fe_tobytes(ParagonIE_Sodium_Core32_Curve25519_Fe $h)
263
+    public static function fe_tobytes( ParagonIE_Sodium_Core32_Curve25519_Fe $h )
264 264
     {
265 265
         /**
266 266
          * @var ParagonIE_Sodium_Core32_Int64[] $f
@@ -268,122 +268,122 @@  discard block
 block discarded – undo
268 268
          */
269 269
         $f = array();
270 270
 
271
-        for ($i = 0; $i < 10; ++$i) {
272
-            $f[$i] = $h[$i]->toInt64();
271
+        for ( $i = 0; $i < 10; ++$i ) {
272
+            $f[ $i ] = $h[ $i ]->toInt64();
273 273
         }
274 274
 
275
-        $q = $f[9]->mulInt(19, 5)->addInt(1 << 14)->shiftRight(25)
276
-            ->addInt64($f[0])->shiftRight(26)
277
-            ->addInt64($f[1])->shiftRight(25)
278
-            ->addInt64($f[2])->shiftRight(26)
279
-            ->addInt64($f[3])->shiftRight(25)
280
-            ->addInt64($f[4])->shiftRight(26)
281
-            ->addInt64($f[5])->shiftRight(25)
282
-            ->addInt64($f[6])->shiftRight(26)
283
-            ->addInt64($f[7])->shiftRight(25)
284
-            ->addInt64($f[8])->shiftRight(26)
285
-            ->addInt64($f[9])->shiftRight(25);
275
+        $q = $f[ 9 ]->mulInt( 19, 5 )->addInt( 1 << 14 )->shiftRight( 25 )
276
+            ->addInt64( $f[ 0 ] )->shiftRight( 26 )
277
+            ->addInt64( $f[ 1 ] )->shiftRight( 25 )
278
+            ->addInt64( $f[ 2 ] )->shiftRight( 26 )
279
+            ->addInt64( $f[ 3 ] )->shiftRight( 25 )
280
+            ->addInt64( $f[ 4 ] )->shiftRight( 26 )
281
+            ->addInt64( $f[ 5 ] )->shiftRight( 25 )
282
+            ->addInt64( $f[ 6 ] )->shiftRight( 26 )
283
+            ->addInt64( $f[ 7 ] )->shiftRight( 25 )
284
+            ->addInt64( $f[ 8 ] )->shiftRight( 26 )
285
+            ->addInt64( $f[ 9 ] )->shiftRight( 25 );
286 286
 
287
-        $f[0] = $f[0]->addInt64($q->mulInt(19, 5));
287
+        $f[ 0 ] = $f[ 0 ]->addInt64( $q->mulInt( 19, 5 ) );
288 288
 
289
-        $carry0 = $f[0]->shiftRight(26);
290
-        $f[1] = $f[1]->addInt64($carry0);
291
-        $f[0] = $f[0]->subInt64($carry0->shiftLeft(26));
289
+        $carry0 = $f[ 0 ]->shiftRight( 26 );
290
+        $f[ 1 ] = $f[ 1 ]->addInt64( $carry0 );
291
+        $f[ 0 ] = $f[ 0 ]->subInt64( $carry0->shiftLeft( 26 ) );
292 292
 
293
-        $carry1 = $f[1]->shiftRight(25);
294
-        $f[2] = $f[2]->addInt64($carry1);
295
-        $f[1] = $f[1]->subInt64($carry1->shiftLeft(25));
293
+        $carry1 = $f[ 1 ]->shiftRight( 25 );
294
+        $f[ 2 ] = $f[ 2 ]->addInt64( $carry1 );
295
+        $f[ 1 ] = $f[ 1 ]->subInt64( $carry1->shiftLeft( 25 ) );
296 296
 
297
-        $carry2 = $f[2]->shiftRight(26);
298
-        $f[3] = $f[3]->addInt64($carry2);
299
-        $f[2] = $f[2]->subInt64($carry2->shiftLeft(26));
297
+        $carry2 = $f[ 2 ]->shiftRight( 26 );
298
+        $f[ 3 ] = $f[ 3 ]->addInt64( $carry2 );
299
+        $f[ 2 ] = $f[ 2 ]->subInt64( $carry2->shiftLeft( 26 ) );
300 300
 
301
-        $carry3 = $f[3]->shiftRight(25);
302
-        $f[4] = $f[4]->addInt64($carry3);
303
-        $f[3] = $f[3]->subInt64($carry3->shiftLeft(25));
301
+        $carry3 = $f[ 3 ]->shiftRight( 25 );
302
+        $f[ 4 ] = $f[ 4 ]->addInt64( $carry3 );
303
+        $f[ 3 ] = $f[ 3 ]->subInt64( $carry3->shiftLeft( 25 ) );
304 304
 
305
-        $carry4 = $f[4]->shiftRight(26);
306
-        $f[5] = $f[5]->addInt64($carry4);
307
-        $f[4] = $f[4]->subInt64($carry4->shiftLeft(26));
305
+        $carry4 = $f[ 4 ]->shiftRight( 26 );
306
+        $f[ 5 ] = $f[ 5 ]->addInt64( $carry4 );
307
+        $f[ 4 ] = $f[ 4 ]->subInt64( $carry4->shiftLeft( 26 ) );
308 308
 
309
-        $carry5 = $f[5]->shiftRight(25);
310
-        $f[6] = $f[6]->addInt64($carry5);
311
-        $f[5] = $f[5]->subInt64($carry5->shiftLeft(25));
309
+        $carry5 = $f[ 5 ]->shiftRight( 25 );
310
+        $f[ 6 ] = $f[ 6 ]->addInt64( $carry5 );
311
+        $f[ 5 ] = $f[ 5 ]->subInt64( $carry5->shiftLeft( 25 ) );
312 312
 
313
-        $carry6 = $f[6]->shiftRight(26);
314
-        $f[7] = $f[7]->addInt64($carry6);
315
-        $f[6] = $f[6]->subInt64($carry6->shiftLeft(26));
313
+        $carry6 = $f[ 6 ]->shiftRight( 26 );
314
+        $f[ 7 ] = $f[ 7 ]->addInt64( $carry6 );
315
+        $f[ 6 ] = $f[ 6 ]->subInt64( $carry6->shiftLeft( 26 ) );
316 316
 
317
-        $carry7 = $f[7]->shiftRight(25);
318
-        $f[8] = $f[8]->addInt64($carry7);
319
-        $f[7] = $f[7]->subInt64($carry7->shiftLeft(25));
317
+        $carry7 = $f[ 7 ]->shiftRight( 25 );
318
+        $f[ 8 ] = $f[ 8 ]->addInt64( $carry7 );
319
+        $f[ 7 ] = $f[ 7 ]->subInt64( $carry7->shiftLeft( 25 ) );
320 320
 
321
-        $carry8 = $f[8]->shiftRight(26);
322
-        $f[9] = $f[9]->addInt64($carry8);
323
-        $f[8] = $f[8]->subInt64($carry8->shiftLeft(26));
321
+        $carry8 = $f[ 8 ]->shiftRight( 26 );
322
+        $f[ 9 ] = $f[ 9 ]->addInt64( $carry8 );
323
+        $f[ 8 ] = $f[ 8 ]->subInt64( $carry8->shiftLeft( 26 ) );
324 324
 
325
-        $carry9 = $f[9]->shiftRight(25);
326
-        $f[9] = $f[9]->subInt64($carry9->shiftLeft(25));
325
+        $carry9 = $f[ 9 ]->shiftRight( 25 );
326
+        $f[ 9 ] = $f[ 9 ]->subInt64( $carry9->shiftLeft( 25 ) );
327 327
 
328 328
         /** @var int $h0 */
329
-        $h0 = $f[0]->toInt32()->toInt();
329
+        $h0 = $f[ 0 ]->toInt32()->toInt();
330 330
         /** @var int $h1 */
331
-        $h1 = $f[1]->toInt32()->toInt();
331
+        $h1 = $f[ 1 ]->toInt32()->toInt();
332 332
         /** @var int $h2 */
333
-        $h2 = $f[2]->toInt32()->toInt();
333
+        $h2 = $f[ 2 ]->toInt32()->toInt();
334 334
         /** @var int $h3 */
335
-        $h3 = $f[3]->toInt32()->toInt();
335
+        $h3 = $f[ 3 ]->toInt32()->toInt();
336 336
         /** @var int $h4 */
337
-        $h4 = $f[4]->toInt32()->toInt();
337
+        $h4 = $f[ 4 ]->toInt32()->toInt();
338 338
         /** @var int $h5 */
339
-        $h5 = $f[5]->toInt32()->toInt();
339
+        $h5 = $f[ 5 ]->toInt32()->toInt();
340 340
         /** @var int $h6 */
341
-        $h6 = $f[6]->toInt32()->toInt();
341
+        $h6 = $f[ 6 ]->toInt32()->toInt();
342 342
         /** @var int $h7 */
343
-        $h7 = $f[7]->toInt32()->toInt();
343
+        $h7 = $f[ 7 ]->toInt32()->toInt();
344 344
         /** @var int $h8 */
345
-        $h8 = $f[8]->toInt32()->toInt();
345
+        $h8 = $f[ 8 ]->toInt32()->toInt();
346 346
         /** @var int $h9 */
347
-        $h9 = $f[9]->toInt32()->toInt();
347
+        $h9 = $f[ 9 ]->toInt32()->toInt();
348 348
 
349 349
         /**
350 350
          * @var array<int, int>
351 351
          */
352 352
         $s = array(
353
-            (int) (($h0 >> 0) & 0xff),
354
-            (int) (($h0 >> 8) & 0xff),
355
-            (int) (($h0 >> 16) & 0xff),
356
-            (int) ((($h0 >> 24) | ($h1 << 2)) & 0xff),
357
-            (int) (($h1 >> 6) & 0xff),
358
-            (int) (($h1 >> 14) & 0xff),
359
-            (int) ((($h1 >> 22) | ($h2 << 3)) & 0xff),
360
-            (int) (($h2 >> 5) & 0xff),
361
-            (int) (($h2 >> 13) & 0xff),
362
-            (int) ((($h2 >> 21) | ($h3 << 5)) & 0xff),
363
-            (int) (($h3 >> 3) & 0xff),
364
-            (int) (($h3 >> 11) & 0xff),
365
-            (int) ((($h3 >> 19) | ($h4 << 6)) & 0xff),
366
-            (int) (($h4 >> 2) & 0xff),
367
-            (int) (($h4 >> 10) & 0xff),
368
-            (int) (($h4 >> 18) & 0xff),
369
-            (int) (($h5 >> 0) & 0xff),
370
-            (int) (($h5 >> 8) & 0xff),
371
-            (int) (($h5 >> 16) & 0xff),
372
-            (int) ((($h5 >> 24) | ($h6 << 1)) & 0xff),
373
-            (int) (($h6 >> 7) & 0xff),
374
-            (int) (($h6 >> 15) & 0xff),
375
-            (int) ((($h6 >> 23) | ($h7 << 3)) & 0xff),
376
-            (int) (($h7 >> 5) & 0xff),
377
-            (int) (($h7 >> 13) & 0xff),
378
-            (int) ((($h7 >> 21) | ($h8 << 4)) & 0xff),
379
-            (int) (($h8 >> 4) & 0xff),
380
-            (int) (($h8 >> 12) & 0xff),
381
-            (int) ((($h8 >> 20) | ($h9 << 6)) & 0xff),
382
-            (int) (($h9 >> 2) & 0xff),
383
-            (int) (($h9 >> 10) & 0xff),
384
-            (int) (($h9 >> 18) & 0xff)
353
+            (int)( ( $h0 >> 0 ) & 0xff ),
354
+            (int)( ( $h0 >> 8 ) & 0xff ),
355
+            (int)( ( $h0 >> 16 ) & 0xff ),
356
+            (int)( ( ( $h0 >> 24 ) | ( $h1 << 2 ) ) & 0xff ),
357
+            (int)( ( $h1 >> 6 ) & 0xff ),
358
+            (int)( ( $h1 >> 14 ) & 0xff ),
359
+            (int)( ( ( $h1 >> 22 ) | ( $h2 << 3 ) ) & 0xff ),
360
+            (int)( ( $h2 >> 5 ) & 0xff ),
361
+            (int)( ( $h2 >> 13 ) & 0xff ),
362
+            (int)( ( ( $h2 >> 21 ) | ( $h3 << 5 ) ) & 0xff ),
363
+            (int)( ( $h3 >> 3 ) & 0xff ),
364
+            (int)( ( $h3 >> 11 ) & 0xff ),
365
+            (int)( ( ( $h3 >> 19 ) | ( $h4 << 6 ) ) & 0xff ),
366
+            (int)( ( $h4 >> 2 ) & 0xff ),
367
+            (int)( ( $h4 >> 10 ) & 0xff ),
368
+            (int)( ( $h4 >> 18 ) & 0xff ),
369
+            (int)( ( $h5 >> 0 ) & 0xff ),
370
+            (int)( ( $h5 >> 8 ) & 0xff ),
371
+            (int)( ( $h5 >> 16 ) & 0xff ),
372
+            (int)( ( ( $h5 >> 24 ) | ( $h6 << 1 ) ) & 0xff ),
373
+            (int)( ( $h6 >> 7 ) & 0xff ),
374
+            (int)( ( $h6 >> 15 ) & 0xff ),
375
+            (int)( ( ( $h6 >> 23 ) | ( $h7 << 3 ) ) & 0xff ),
376
+            (int)( ( $h7 >> 5 ) & 0xff ),
377
+            (int)( ( $h7 >> 13 ) & 0xff ),
378
+            (int)( ( ( $h7 >> 21 ) | ( $h8 << 4 ) ) & 0xff ),
379
+            (int)( ( $h8 >> 4 ) & 0xff ),
380
+            (int)( ( $h8 >> 12 ) & 0xff ),
381
+            (int)( ( ( $h8 >> 20 ) | ( $h9 << 6 ) ) & 0xff ),
382
+            (int)( ( $h9 >> 2 ) & 0xff ),
383
+            (int)( ( $h9 >> 10 ) & 0xff ),
384
+            (int)( ( $h9 >> 18 ) & 0xff )
385 385
         );
386
-        return self::intArrayToString($s);
386
+        return self::intArrayToString( $s );
387 387
     }
388 388
 
389 389
     /**
@@ -396,10 +396,10 @@  discard block
 block discarded – undo
396 396
      * @throws SodiumException
397 397
      * @throws TypeError
398 398
      */
399
-    public static function fe_isnegative(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
399
+    public static function fe_isnegative( ParagonIE_Sodium_Core32_Curve25519_Fe $f )
400 400
     {
401
-        $str = self::fe_tobytes($f);
402
-        return (int) (self::chrToInt($str[0]) & 1);
401
+        $str = self::fe_tobytes( $f );
402
+        return (int)( self::chrToInt( $str[ 0 ] ) & 1 );
403 403
     }
404 404
 
405 405
     /**
@@ -412,16 +412,16 @@  discard block
 block discarded – undo
412 412
      * @throws SodiumException
413 413
      * @throws TypeError
414 414
      */
415
-    public static function fe_isnonzero(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
415
+    public static function fe_isnonzero( ParagonIE_Sodium_Core32_Curve25519_Fe $f )
416 416
     {
417 417
         static $zero;
418
-        if ($zero === null) {
419
-            $zero = str_repeat("\x00", 32);
418
+        if ( $zero === null ) {
419
+            $zero = str_repeat( "\x00", 32 );
420 420
         }
421 421
         /** @var string $str */
422
-        $str = self::fe_tobytes($f);
422
+        $str = self::fe_tobytes( $f );
423 423
         /** @var string $zero */
424
-        return !self::verify_32($str, $zero);
424
+        return ! self::verify_32( $str, $zero );
425 425
     }
426 426
 
427 427
     /**
@@ -468,195 +468,195 @@  discard block
 block discarded – undo
468 468
          * @var ParagonIE_Sodium_Core32_Int64 $g8
469 469
          * @var ParagonIE_Sodium_Core32_Int64 $g9
470 470
          */
471
-        $f0 = $f[0]->toInt64();
472
-        $f1 = $f[1]->toInt64();
473
-        $f2 = $f[2]->toInt64();
474
-        $f3 = $f[3]->toInt64();
475
-        $f4 = $f[4]->toInt64();
476
-        $f5 = $f[5]->toInt64();
477
-        $f6 = $f[6]->toInt64();
478
-        $f7 = $f[7]->toInt64();
479
-        $f8 = $f[8]->toInt64();
480
-        $f9 = $f[9]->toInt64();
481
-        $g0 = $g[0]->toInt64();
482
-        $g1 = $g[1]->toInt64();
483
-        $g2 = $g[2]->toInt64();
484
-        $g3 = $g[3]->toInt64();
485
-        $g4 = $g[4]->toInt64();
486
-        $g5 = $g[5]->toInt64();
487
-        $g6 = $g[6]->toInt64();
488
-        $g7 = $g[7]->toInt64();
489
-        $g8 = $g[8]->toInt64();
490
-        $g9 = $g[9]->toInt64();
491
-        $g1_19 = $g1->mulInt(19, 5); /* 2^4 <= 19 <= 2^5, but we only want 5 bits */
492
-        $g2_19 = $g2->mulInt(19, 5);
493
-        $g3_19 = $g3->mulInt(19, 5);
494
-        $g4_19 = $g4->mulInt(19, 5);
495
-        $g5_19 = $g5->mulInt(19, 5);
496
-        $g6_19 = $g6->mulInt(19, 5);
497
-        $g7_19 = $g7->mulInt(19, 5);
498
-        $g8_19 = $g8->mulInt(19, 5);
499
-        $g9_19 = $g9->mulInt(19, 5);
471
+        $f0 = $f[ 0 ]->toInt64();
472
+        $f1 = $f[ 1 ]->toInt64();
473
+        $f2 = $f[ 2 ]->toInt64();
474
+        $f3 = $f[ 3 ]->toInt64();
475
+        $f4 = $f[ 4 ]->toInt64();
476
+        $f5 = $f[ 5 ]->toInt64();
477
+        $f6 = $f[ 6 ]->toInt64();
478
+        $f7 = $f[ 7 ]->toInt64();
479
+        $f8 = $f[ 8 ]->toInt64();
480
+        $f9 = $f[ 9 ]->toInt64();
481
+        $g0 = $g[ 0 ]->toInt64();
482
+        $g1 = $g[ 1 ]->toInt64();
483
+        $g2 = $g[ 2 ]->toInt64();
484
+        $g3 = $g[ 3 ]->toInt64();
485
+        $g4 = $g[ 4 ]->toInt64();
486
+        $g5 = $g[ 5 ]->toInt64();
487
+        $g6 = $g[ 6 ]->toInt64();
488
+        $g7 = $g[ 7 ]->toInt64();
489
+        $g8 = $g[ 8 ]->toInt64();
490
+        $g9 = $g[ 9 ]->toInt64();
491
+        $g1_19 = $g1->mulInt( 19, 5 ); /* 2^4 <= 19 <= 2^5, but we only want 5 bits */
492
+        $g2_19 = $g2->mulInt( 19, 5 );
493
+        $g3_19 = $g3->mulInt( 19, 5 );
494
+        $g4_19 = $g4->mulInt( 19, 5 );
495
+        $g5_19 = $g5->mulInt( 19, 5 );
496
+        $g6_19 = $g6->mulInt( 19, 5 );
497
+        $g7_19 = $g7->mulInt( 19, 5 );
498
+        $g8_19 = $g8->mulInt( 19, 5 );
499
+        $g9_19 = $g9->mulInt( 19, 5 );
500 500
         /** @var ParagonIE_Sodium_Core32_Int64 $f1_2 */
501
-        $f1_2 = $f1->shiftLeft(1);
501
+        $f1_2 = $f1->shiftLeft( 1 );
502 502
         /** @var ParagonIE_Sodium_Core32_Int64 $f3_2 */
503
-        $f3_2 = $f3->shiftLeft(1);
503
+        $f3_2 = $f3->shiftLeft( 1 );
504 504
         /** @var ParagonIE_Sodium_Core32_Int64 $f5_2 */
505
-        $f5_2 = $f5->shiftLeft(1);
505
+        $f5_2 = $f5->shiftLeft( 1 );
506 506
         /** @var ParagonIE_Sodium_Core32_Int64 $f7_2 */
507
-        $f7_2 = $f7->shiftLeft(1);
507
+        $f7_2 = $f7->shiftLeft( 1 );
508 508
         /** @var ParagonIE_Sodium_Core32_Int64 $f9_2 */
509
-        $f9_2 = $f9->shiftLeft(1);
510
-        $f0g0    = $f0->mulInt64($g0, 27);
511
-        $f0g1    = $f0->mulInt64($g1, 27);
512
-        $f0g2    = $f0->mulInt64($g2, 27);
513
-        $f0g3    = $f0->mulInt64($g3, 27);
514
-        $f0g4    = $f0->mulInt64($g4, 27);
515
-        $f0g5    = $f0->mulInt64($g5, 27);
516
-        $f0g6    = $f0->mulInt64($g6, 27);
517
-        $f0g7    = $f0->mulInt64($g7, 27);
518
-        $f0g8    = $f0->mulInt64($g8, 27);
519
-        $f0g9    = $f0->mulInt64($g9, 27);
520
-        $f1g0    = $f1->mulInt64($g0, 27);
521
-        $f1g1_2  = $f1_2->mulInt64($g1, 27);
522
-        $f1g2    = $f1->mulInt64($g2, 27);
523
-        $f1g3_2  = $f1_2->mulInt64($g3, 27);
524
-        $f1g4    = $f1->mulInt64($g4, 30);
525
-        $f1g5_2  = $f1_2->mulInt64($g5, 30);
526
-        $f1g6    = $f1->mulInt64($g6, 30);
527
-        $f1g7_2  = $f1_2->mulInt64($g7, 30);
528
-        $f1g8    = $f1->mulInt64($g8, 30);
529
-        $f1g9_38 = $g9_19->mulInt64($f1_2, 30);
530
-        $f2g0    = $f2->mulInt64($g0, 30);
531
-        $f2g1    = $f2->mulInt64($g1, 29);
532
-        $f2g2    = $f2->mulInt64($g2, 30);
533
-        $f2g3    = $f2->mulInt64($g3, 29);
534
-        $f2g4    = $f2->mulInt64($g4, 30);
535
-        $f2g5    = $f2->mulInt64($g5, 29);
536
-        $f2g6    = $f2->mulInt64($g6, 30);
537
-        $f2g7    = $f2->mulInt64($g7, 29);
538
-        $f2g8_19 = $g8_19->mulInt64($f2, 30);
539
-        $f2g9_19 = $g9_19->mulInt64($f2, 30);
540
-        $f3g0    = $f3->mulInt64($g0, 30);
541
-        $f3g1_2  = $f3_2->mulInt64($g1, 30);
542
-        $f3g2    = $f3->mulInt64($g2, 30);
543
-        $f3g3_2  = $f3_2->mulInt64($g3, 30);
544
-        $f3g4    = $f3->mulInt64($g4, 30);
545
-        $f3g5_2  = $f3_2->mulInt64($g5, 30);
546
-        $f3g6    = $f3->mulInt64($g6, 30);
547
-        $f3g7_38 = $g7_19->mulInt64($f3_2, 30);
548
-        $f3g8_19 = $g8_19->mulInt64($f3, 30);
549
-        $f3g9_38 = $g9_19->mulInt64($f3_2, 30);
550
-        $f4g0    = $f4->mulInt64($g0, 30);
551
-        $f4g1    = $f4->mulInt64($g1, 30);
552
-        $f4g2    = $f4->mulInt64($g2, 30);
553
-        $f4g3    = $f4->mulInt64($g3, 30);
554
-        $f4g4    = $f4->mulInt64($g4, 30);
555
-        $f4g5    = $f4->mulInt64($g5, 30);
556
-        $f4g6_19 = $g6_19->mulInt64($f4, 30);
557
-        $f4g7_19 = $g7_19->mulInt64($f4, 30);
558
-        $f4g8_19 = $g8_19->mulInt64($f4, 30);
559
-        $f4g9_19 = $g9_19->mulInt64($f4, 30);
560
-        $f5g0    = $f5->mulInt64($g0, 30);
561
-        $f5g1_2  = $f5_2->mulInt64($g1, 30);
562
-        $f5g2    = $f5->mulInt64($g2, 30);
563
-        $f5g3_2  = $f5_2->mulInt64($g3, 30);
564
-        $f5g4    = $f5->mulInt64($g4, 30);
565
-        $f5g5_38 = $g5_19->mulInt64($f5_2, 30);
566
-        $f5g6_19 = $g6_19->mulInt64($f5, 30);
567
-        $f5g7_38 = $g7_19->mulInt64($f5_2, 30);
568
-        $f5g8_19 = $g8_19->mulInt64($f5, 30);
569
-        $f5g9_38 = $g9_19->mulInt64($f5_2, 30);
570
-        $f6g0    = $f6->mulInt64($g0, 30);
571
-        $f6g1    = $f6->mulInt64($g1, 30);
572
-        $f6g2    = $f6->mulInt64($g2, 30);
573
-        $f6g3    = $f6->mulInt64($g3, 30);
574
-        $f6g4_19 = $g4_19->mulInt64($f6, 30);
575
-        $f6g5_19 = $g5_19->mulInt64($f6, 30);
576
-        $f6g6_19 = $g6_19->mulInt64($f6, 30);
577
-        $f6g7_19 = $g7_19->mulInt64($f6, 30);
578
-        $f6g8_19 = $g8_19->mulInt64($f6, 30);
579
-        $f6g9_19 = $g9_19->mulInt64($f6, 30);
580
-        $f7g0    = $f7->mulInt64($g0, 30);
581
-        $f7g1_2  = $g1->mulInt64($f7_2, 30);
582
-        $f7g2    = $f7->mulInt64($g2, 30);
583
-        $f7g3_38 = $g3_19->mulInt64($f7_2, 30);
584
-        $f7g4_19 = $g4_19->mulInt64($f7, 30);
585
-        $f7g5_38 = $g5_19->mulInt64($f7_2, 30);
586
-        $f7g6_19 = $g6_19->mulInt64($f7, 30);
587
-        $f7g7_38 = $g7_19->mulInt64($f7_2, 30);
588
-        $f7g8_19 = $g8_19->mulInt64($f7, 30);
589
-        $f7g9_38 = $g9_19->mulInt64($f7_2, 30);
590
-        $f8g0    = $f8->mulInt64($g0, 30);
591
-        $f8g1    = $f8->mulInt64($g1, 29);
592
-        $f8g2_19 = $g2_19->mulInt64($f8, 30);
593
-        $f8g3_19 = $g3_19->mulInt64($f8, 30);
594
-        $f8g4_19 = $g4_19->mulInt64($f8, 30);
595
-        $f8g5_19 = $g5_19->mulInt64($f8, 30);
596
-        $f8g6_19 = $g6_19->mulInt64($f8, 30);
597
-        $f8g7_19 = $g7_19->mulInt64($f8, 30);
598
-        $f8g8_19 = $g8_19->mulInt64($f8, 30);
599
-        $f8g9_19 = $g9_19->mulInt64($f8, 30);
600
-        $f9g0    = $f9->mulInt64($g0, 30);
601
-        $f9g1_38 = $g1_19->mulInt64($f9_2, 30);
602
-        $f9g2_19 = $g2_19->mulInt64($f9, 30);
603
-        $f9g3_38 = $g3_19->mulInt64($f9_2, 30);
604
-        $f9g4_19 = $g4_19->mulInt64($f9, 30);
605
-        $f9g5_38 = $g5_19->mulInt64($f9_2, 30);
606
-        $f9g6_19 = $g6_19->mulInt64($f9, 30);
607
-        $f9g7_38 = $g7_19->mulInt64($f9_2, 30);
608
-        $f9g8_19 = $g8_19->mulInt64($f9, 30);
609
-        $f9g9_38 = $g9_19->mulInt64($f9_2, 30);
509
+        $f9_2 = $f9->shiftLeft( 1 );
510
+        $f0g0    = $f0->mulInt64( $g0, 27 );
511
+        $f0g1    = $f0->mulInt64( $g1, 27 );
512
+        $f0g2    = $f0->mulInt64( $g2, 27 );
513
+        $f0g3    = $f0->mulInt64( $g3, 27 );
514
+        $f0g4    = $f0->mulInt64( $g4, 27 );
515
+        $f0g5    = $f0->mulInt64( $g5, 27 );
516
+        $f0g6    = $f0->mulInt64( $g6, 27 );
517
+        $f0g7    = $f0->mulInt64( $g7, 27 );
518
+        $f0g8    = $f0->mulInt64( $g8, 27 );
519
+        $f0g9    = $f0->mulInt64( $g9, 27 );
520
+        $f1g0    = $f1->mulInt64( $g0, 27 );
521
+        $f1g1_2  = $f1_2->mulInt64( $g1, 27 );
522
+        $f1g2    = $f1->mulInt64( $g2, 27 );
523
+        $f1g3_2  = $f1_2->mulInt64( $g3, 27 );
524
+        $f1g4    = $f1->mulInt64( $g4, 30 );
525
+        $f1g5_2  = $f1_2->mulInt64( $g5, 30 );
526
+        $f1g6    = $f1->mulInt64( $g6, 30 );
527
+        $f1g7_2  = $f1_2->mulInt64( $g7, 30 );
528
+        $f1g8    = $f1->mulInt64( $g8, 30 );
529
+        $f1g9_38 = $g9_19->mulInt64( $f1_2, 30 );
530
+        $f2g0    = $f2->mulInt64( $g0, 30 );
531
+        $f2g1    = $f2->mulInt64( $g1, 29 );
532
+        $f2g2    = $f2->mulInt64( $g2, 30 );
533
+        $f2g3    = $f2->mulInt64( $g3, 29 );
534
+        $f2g4    = $f2->mulInt64( $g4, 30 );
535
+        $f2g5    = $f2->mulInt64( $g5, 29 );
536
+        $f2g6    = $f2->mulInt64( $g6, 30 );
537
+        $f2g7    = $f2->mulInt64( $g7, 29 );
538
+        $f2g8_19 = $g8_19->mulInt64( $f2, 30 );
539
+        $f2g9_19 = $g9_19->mulInt64( $f2, 30 );
540
+        $f3g0    = $f3->mulInt64( $g0, 30 );
541
+        $f3g1_2  = $f3_2->mulInt64( $g1, 30 );
542
+        $f3g2    = $f3->mulInt64( $g2, 30 );
543
+        $f3g3_2  = $f3_2->mulInt64( $g3, 30 );
544
+        $f3g4    = $f3->mulInt64( $g4, 30 );
545
+        $f3g5_2  = $f3_2->mulInt64( $g5, 30 );
546
+        $f3g6    = $f3->mulInt64( $g6, 30 );
547
+        $f3g7_38 = $g7_19->mulInt64( $f3_2, 30 );
548
+        $f3g8_19 = $g8_19->mulInt64( $f3, 30 );
549
+        $f3g9_38 = $g9_19->mulInt64( $f3_2, 30 );
550
+        $f4g0    = $f4->mulInt64( $g0, 30 );
551
+        $f4g1    = $f4->mulInt64( $g1, 30 );
552
+        $f4g2    = $f4->mulInt64( $g2, 30 );
553
+        $f4g3    = $f4->mulInt64( $g3, 30 );
554
+        $f4g4    = $f4->mulInt64( $g4, 30 );
555
+        $f4g5    = $f4->mulInt64( $g5, 30 );
556
+        $f4g6_19 = $g6_19->mulInt64( $f4, 30 );
557
+        $f4g7_19 = $g7_19->mulInt64( $f4, 30 );
558
+        $f4g8_19 = $g8_19->mulInt64( $f4, 30 );
559
+        $f4g9_19 = $g9_19->mulInt64( $f4, 30 );
560
+        $f5g0    = $f5->mulInt64( $g0, 30 );
561
+        $f5g1_2  = $f5_2->mulInt64( $g1, 30 );
562
+        $f5g2    = $f5->mulInt64( $g2, 30 );
563
+        $f5g3_2  = $f5_2->mulInt64( $g3, 30 );
564
+        $f5g4    = $f5->mulInt64( $g4, 30 );
565
+        $f5g5_38 = $g5_19->mulInt64( $f5_2, 30 );
566
+        $f5g6_19 = $g6_19->mulInt64( $f5, 30 );
567
+        $f5g7_38 = $g7_19->mulInt64( $f5_2, 30 );
568
+        $f5g8_19 = $g8_19->mulInt64( $f5, 30 );
569
+        $f5g9_38 = $g9_19->mulInt64( $f5_2, 30 );
570
+        $f6g0    = $f6->mulInt64( $g0, 30 );
571
+        $f6g1    = $f6->mulInt64( $g1, 30 );
572
+        $f6g2    = $f6->mulInt64( $g2, 30 );
573
+        $f6g3    = $f6->mulInt64( $g3, 30 );
574
+        $f6g4_19 = $g4_19->mulInt64( $f6, 30 );
575
+        $f6g5_19 = $g5_19->mulInt64( $f6, 30 );
576
+        $f6g6_19 = $g6_19->mulInt64( $f6, 30 );
577
+        $f6g7_19 = $g7_19->mulInt64( $f6, 30 );
578
+        $f6g8_19 = $g8_19->mulInt64( $f6, 30 );
579
+        $f6g9_19 = $g9_19->mulInt64( $f6, 30 );
580
+        $f7g0    = $f7->mulInt64( $g0, 30 );
581
+        $f7g1_2  = $g1->mulInt64( $f7_2, 30 );
582
+        $f7g2    = $f7->mulInt64( $g2, 30 );
583
+        $f7g3_38 = $g3_19->mulInt64( $f7_2, 30 );
584
+        $f7g4_19 = $g4_19->mulInt64( $f7, 30 );
585
+        $f7g5_38 = $g5_19->mulInt64( $f7_2, 30 );
586
+        $f7g6_19 = $g6_19->mulInt64( $f7, 30 );
587
+        $f7g7_38 = $g7_19->mulInt64( $f7_2, 30 );
588
+        $f7g8_19 = $g8_19->mulInt64( $f7, 30 );
589
+        $f7g9_38 = $g9_19->mulInt64( $f7_2, 30 );
590
+        $f8g0    = $f8->mulInt64( $g0, 30 );
591
+        $f8g1    = $f8->mulInt64( $g1, 29 );
592
+        $f8g2_19 = $g2_19->mulInt64( $f8, 30 );
593
+        $f8g3_19 = $g3_19->mulInt64( $f8, 30 );
594
+        $f8g4_19 = $g4_19->mulInt64( $f8, 30 );
595
+        $f8g5_19 = $g5_19->mulInt64( $f8, 30 );
596
+        $f8g6_19 = $g6_19->mulInt64( $f8, 30 );
597
+        $f8g7_19 = $g7_19->mulInt64( $f8, 30 );
598
+        $f8g8_19 = $g8_19->mulInt64( $f8, 30 );
599
+        $f8g9_19 = $g9_19->mulInt64( $f8, 30 );
600
+        $f9g0    = $f9->mulInt64( $g0, 30 );
601
+        $f9g1_38 = $g1_19->mulInt64( $f9_2, 30 );
602
+        $f9g2_19 = $g2_19->mulInt64( $f9, 30 );
603
+        $f9g3_38 = $g3_19->mulInt64( $f9_2, 30 );
604
+        $f9g4_19 = $g4_19->mulInt64( $f9, 30 );
605
+        $f9g5_38 = $g5_19->mulInt64( $f9_2, 30 );
606
+        $f9g6_19 = $g6_19->mulInt64( $f9, 30 );
607
+        $f9g7_38 = $g7_19->mulInt64( $f9_2, 30 );
608
+        $f9g8_19 = $g8_19->mulInt64( $f9, 30 );
609
+        $f9g9_38 = $g9_19->mulInt64( $f9_2, 30 );
610 610
 
611 611
         // $h0 = $f0g0 + $f1g9_38 + $f2g8_19 + $f3g7_38 + $f4g6_19 + $f5g5_38 + $f6g4_19 + $f7g3_38 + $f8g2_19 + $f9g1_38;
612
-        $h0 = $f0g0->addInt64($f1g9_38)->addInt64($f2g8_19)->addInt64($f3g7_38)
613
-            ->addInt64($f4g6_19)->addInt64($f5g5_38)->addInt64($f6g4_19)
614
-            ->addInt64($f7g3_38)->addInt64($f8g2_19)->addInt64($f9g1_38);
612
+        $h0 = $f0g0->addInt64( $f1g9_38 )->addInt64( $f2g8_19 )->addInt64( $f3g7_38 )
613
+            ->addInt64( $f4g6_19 )->addInt64( $f5g5_38 )->addInt64( $f6g4_19 )
614
+            ->addInt64( $f7g3_38 )->addInt64( $f8g2_19 )->addInt64( $f9g1_38 );
615 615
 
616 616
         // $h1 = $f0g1 + $f1g0    + $f2g9_19 + $f3g8_19 + $f4g7_19 + $f5g6_19 + $f6g5_19 + $f7g4_19 + $f8g3_19 + $f9g2_19;
617
-        $h1 = $f0g1->addInt64($f1g0)->addInt64($f2g9_19)->addInt64($f3g8_19)
618
-            ->addInt64($f4g7_19)->addInt64($f5g6_19)->addInt64($f6g5_19)
619
-            ->addInt64($f7g4_19)->addInt64($f8g3_19)->addInt64($f9g2_19);
617
+        $h1 = $f0g1->addInt64( $f1g0 )->addInt64( $f2g9_19 )->addInt64( $f3g8_19 )
618
+            ->addInt64( $f4g7_19 )->addInt64( $f5g6_19 )->addInt64( $f6g5_19 )
619
+            ->addInt64( $f7g4_19 )->addInt64( $f8g3_19 )->addInt64( $f9g2_19 );
620 620
 
621 621
         // $h2 = $f0g2 + $f1g1_2  + $f2g0    + $f3g9_38 + $f4g8_19 + $f5g7_38 + $f6g6_19 + $f7g5_38 + $f8g4_19 + $f9g3_38;
622
-        $h2 = $f0g2->addInt64($f1g1_2)->addInt64($f2g0)->addInt64($f3g9_38)
623
-            ->addInt64($f4g8_19)->addInt64($f5g7_38)->addInt64($f6g6_19)
624
-            ->addInt64($f7g5_38)->addInt64($f8g4_19)->addInt64($f9g3_38);
622
+        $h2 = $f0g2->addInt64( $f1g1_2 )->addInt64( $f2g0 )->addInt64( $f3g9_38 )
623
+            ->addInt64( $f4g8_19 )->addInt64( $f5g7_38 )->addInt64( $f6g6_19 )
624
+            ->addInt64( $f7g5_38 )->addInt64( $f8g4_19 )->addInt64( $f9g3_38 );
625 625
 
626 626
         // $h3 = $f0g3 + $f1g2    + $f2g1    + $f3g0    + $f4g9_19 + $f5g8_19 + $f6g7_19 + $f7g6_19 + $f8g5_19 + $f9g4_19;
627
-        $h3 = $f0g3->addInt64($f1g2)->addInt64($f2g1)->addInt64($f3g0)
628
-            ->addInt64($f4g9_19)->addInt64($f5g8_19)->addInt64($f6g7_19)
629
-            ->addInt64($f7g6_19)->addInt64($f8g5_19)->addInt64($f9g4_19);
627
+        $h3 = $f0g3->addInt64( $f1g2 )->addInt64( $f2g1 )->addInt64( $f3g0 )
628
+            ->addInt64( $f4g9_19 )->addInt64( $f5g8_19 )->addInt64( $f6g7_19 )
629
+            ->addInt64( $f7g6_19 )->addInt64( $f8g5_19 )->addInt64( $f9g4_19 );
630 630
 
631 631
         // $h4 = $f0g4 + $f1g3_2  + $f2g2    + $f3g1_2  + $f4g0    + $f5g9_38 + $f6g8_19 + $f7g7_38 + $f8g6_19 + $f9g5_38;
632
-        $h4 = $f0g4->addInt64($f1g3_2)->addInt64($f2g2)->addInt64($f3g1_2)
633
-            ->addInt64($f4g0)->addInt64($f5g9_38)->addInt64($f6g8_19)
634
-            ->addInt64($f7g7_38)->addInt64($f8g6_19)->addInt64($f9g5_38);
632
+        $h4 = $f0g4->addInt64( $f1g3_2 )->addInt64( $f2g2 )->addInt64( $f3g1_2 )
633
+            ->addInt64( $f4g0 )->addInt64( $f5g9_38 )->addInt64( $f6g8_19 )
634
+            ->addInt64( $f7g7_38 )->addInt64( $f8g6_19 )->addInt64( $f9g5_38 );
635 635
 
636 636
         // $h5 = $f0g5 + $f1g4    + $f2g3    + $f3g2    + $f4g1    + $f5g0    + $f6g9_19 + $f7g8_19 + $f8g7_19 + $f9g6_19;
637
-        $h5 = $f0g5->addInt64($f1g4)->addInt64($f2g3)->addInt64($f3g2)
638
-            ->addInt64($f4g1)->addInt64($f5g0)->addInt64($f6g9_19)
639
-            ->addInt64($f7g8_19)->addInt64($f8g7_19)->addInt64($f9g6_19);
637
+        $h5 = $f0g5->addInt64( $f1g4 )->addInt64( $f2g3 )->addInt64( $f3g2 )
638
+            ->addInt64( $f4g1 )->addInt64( $f5g0 )->addInt64( $f6g9_19 )
639
+            ->addInt64( $f7g8_19 )->addInt64( $f8g7_19 )->addInt64( $f9g6_19 );
640 640
 
641 641
         // $h6 = $f0g6 + $f1g5_2  + $f2g4    + $f3g3_2  + $f4g2    + $f5g1_2  + $f6g0    + $f7g9_38 + $f8g8_19 + $f9g7_38;
642
-        $h6 = $f0g6->addInt64($f1g5_2)->addInt64($f2g4)->addInt64($f3g3_2)
643
-            ->addInt64($f4g2)->addInt64($f5g1_2)->addInt64($f6g0)
644
-            ->addInt64($f7g9_38)->addInt64($f8g8_19)->addInt64($f9g7_38);
642
+        $h6 = $f0g6->addInt64( $f1g5_2 )->addInt64( $f2g4 )->addInt64( $f3g3_2 )
643
+            ->addInt64( $f4g2 )->addInt64( $f5g1_2 )->addInt64( $f6g0 )
644
+            ->addInt64( $f7g9_38 )->addInt64( $f8g8_19 )->addInt64( $f9g7_38 );
645 645
 
646 646
         // $h7 = $f0g7 + $f1g6    + $f2g5    + $f3g4    + $f4g3    + $f5g2    + $f6g1    + $f7g0    + $f8g9_19 + $f9g8_19;
647
-        $h7 = $f0g7->addInt64($f1g6)->addInt64($f2g5)->addInt64($f3g4)
648
-            ->addInt64($f4g3)->addInt64($f5g2)->addInt64($f6g1)
649
-            ->addInt64($f7g0)->addInt64($f8g9_19)->addInt64($f9g8_19);
647
+        $h7 = $f0g7->addInt64( $f1g6 )->addInt64( $f2g5 )->addInt64( $f3g4 )
648
+            ->addInt64( $f4g3 )->addInt64( $f5g2 )->addInt64( $f6g1 )
649
+            ->addInt64( $f7g0 )->addInt64( $f8g9_19 )->addInt64( $f9g8_19 );
650 650
 
651 651
         // $h8 = $f0g8 + $f1g7_2  + $f2g6    + $f3g5_2  + $f4g4    + $f5g3_2  + $f6g2    + $f7g1_2  + $f8g0    + $f9g9_38;
652
-        $h8 = $f0g8->addInt64($f1g7_2)->addInt64($f2g6)->addInt64($f3g5_2)
653
-            ->addInt64($f4g4)->addInt64($f5g3_2)->addInt64($f6g2)
654
-            ->addInt64($f7g1_2)->addInt64($f8g0)->addInt64($f9g9_38);
652
+        $h8 = $f0g8->addInt64( $f1g7_2 )->addInt64( $f2g6 )->addInt64( $f3g5_2 )
653
+            ->addInt64( $f4g4 )->addInt64( $f5g3_2 )->addInt64( $f6g2 )
654
+            ->addInt64( $f7g1_2 )->addInt64( $f8g0 )->addInt64( $f9g9_38 );
655 655
 
656 656
         // $h9 = $f0g9 + $f1g8    + $f2g7    + $f3g6    + $f4g5    + $f5g4    + $f6g3    + $f7g2    + $f8g1    + $f9g0   ;
657
-        $h9 = $f0g9->addInt64($f1g8)->addInt64($f2g7)->addInt64($f3g6)
658
-            ->addInt64($f4g5)->addInt64($f5g4)->addInt64($f6g3)
659
-            ->addInt64($f7g2)->addInt64($f8g1)->addInt64($f9g0);
657
+        $h9 = $f0g9->addInt64( $f1g8 )->addInt64( $f2g7 )->addInt64( $f3g6 )
658
+            ->addInt64( $f4g5 )->addInt64( $f5g4 )->addInt64( $f6g3 )
659
+            ->addInt64( $f7g2 )->addInt64( $f8g1 )->addInt64( $f9g0 );
660 660
 
661 661
         /**
662 662
          * @var ParagonIE_Sodium_Core32_Int64 $h0
@@ -680,48 +680,48 @@  discard block
 block discarded – undo
680 680
          * @var ParagonIE_Sodium_Core32_Int64 $carry8
681 681
          * @var ParagonIE_Sodium_Core32_Int64 $carry9
682 682
          */
683
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
684
-        $h1 = $h1->addInt64($carry0);
685
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
686
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
687
-        $h5 = $h5->addInt64($carry4);
688
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
689
-
690
-        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
691
-        $h2 = $h2->addInt64($carry1);
692
-        $h1 = $h1->subInt64($carry1->shiftLeft(25));
693
-        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
694
-        $h6 = $h6->addInt64($carry5);
695
-        $h5 = $h5->subInt64($carry5->shiftLeft(25));
696
-
697
-        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
698
-        $h3 = $h3->addInt64($carry2);
699
-        $h2 = $h2->subInt64($carry2->shiftLeft(26));
700
-        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
701
-        $h7 = $h7->addInt64($carry6);
702
-        $h6 = $h6->subInt64($carry6->shiftLeft(26));
703
-
704
-        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
705
-        $h4 = $h4->addInt64($carry3);
706
-        $h3 = $h3->subInt64($carry3->shiftLeft(25));
707
-        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
708
-        $h8 = $h8->addInt64($carry7);
709
-        $h7 = $h7->subInt64($carry7->shiftLeft(25));
710
-
711
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
712
-        $h5 = $h5->addInt64($carry4);
713
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
714
-        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
715
-        $h9 = $h9->addInt64($carry8);
716
-        $h8 = $h8->subInt64($carry8->shiftLeft(26));
717
-
718
-        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
719
-        $h0 = $h0->addInt64($carry9->mulInt(19, 5));
720
-        $h9 = $h9->subInt64($carry9->shiftLeft(25));
721
-
722
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
723
-        $h1 = $h1->addInt64($carry0);
724
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
683
+        $carry0 = $h0->addInt( 1 << 25 )->shiftRight( 26 );
684
+        $h1 = $h1->addInt64( $carry0 );
685
+        $h0 = $h0->subInt64( $carry0->shiftLeft( 26 ) );
686
+        $carry4 = $h4->addInt( 1 << 25 )->shiftRight( 26 );
687
+        $h5 = $h5->addInt64( $carry4 );
688
+        $h4 = $h4->subInt64( $carry4->shiftLeft( 26 ) );
689
+
690
+        $carry1 = $h1->addInt( 1 << 24 )->shiftRight( 25 );
691
+        $h2 = $h2->addInt64( $carry1 );
692
+        $h1 = $h1->subInt64( $carry1->shiftLeft( 25 ) );
693
+        $carry5 = $h5->addInt( 1 << 24 )->shiftRight( 25 );
694
+        $h6 = $h6->addInt64( $carry5 );
695
+        $h5 = $h5->subInt64( $carry5->shiftLeft( 25 ) );
696
+
697
+        $carry2 = $h2->addInt( 1 << 25 )->shiftRight( 26 );
698
+        $h3 = $h3->addInt64( $carry2 );
699
+        $h2 = $h2->subInt64( $carry2->shiftLeft( 26 ) );
700
+        $carry6 = $h6->addInt( 1 << 25 )->shiftRight( 26 );
701
+        $h7 = $h7->addInt64( $carry6 );
702
+        $h6 = $h6->subInt64( $carry6->shiftLeft( 26 ) );
703
+
704
+        $carry3 = $h3->addInt( 1 << 24 )->shiftRight( 25 );
705
+        $h4 = $h4->addInt64( $carry3 );
706
+        $h3 = $h3->subInt64( $carry3->shiftLeft( 25 ) );
707
+        $carry7 = $h7->addInt( 1 << 24 )->shiftRight( 25 );
708
+        $h8 = $h8->addInt64( $carry7 );
709
+        $h7 = $h7->subInt64( $carry7->shiftLeft( 25 ) );
710
+
711
+        $carry4 = $h4->addInt( 1 << 25 )->shiftRight( 26 );
712
+        $h5 = $h5->addInt64( $carry4 );
713
+        $h4 = $h4->subInt64( $carry4->shiftLeft( 26 ) );
714
+        $carry8 = $h8->addInt( 1 << 25 )->shiftRight( 26 );
715
+        $h9 = $h9->addInt64( $carry8 );
716
+        $h8 = $h8->subInt64( $carry8->shiftLeft( 26 ) );
717
+
718
+        $carry9 = $h9->addInt( 1 << 24 )->shiftRight( 25 );
719
+        $h0 = $h0->addInt64( $carry9->mulInt( 19, 5 ) );
720
+        $h9 = $h9->subInt64( $carry9->shiftLeft( 25 ) );
721
+
722
+        $carry0 = $h0->addInt( 1 << 25 )->shiftRight( 26 );
723
+        $h1 = $h1->addInt64( $carry0 );
724
+        $h0 = $h0->subInt64( $carry0->shiftLeft( 26 ) );
725 725
 
726 726
         return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
727 727
             array(
@@ -751,11 +751,11 @@  discard block
 block discarded – undo
751 751
      * @psalm-suppress MixedAssignment
752 752
      * @psalm-suppress MixedMethodCall
753 753
      */
754
-    public static function fe_neg(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
754
+    public static function fe_neg( ParagonIE_Sodium_Core32_Curve25519_Fe $f )
755 755
     {
756 756
         $h = new ParagonIE_Sodium_Core32_Curve25519_Fe();
757
-        for ($i = 0; $i < 10; ++$i) {
758
-            $h[$i] = $h[$i]->subInt32($f[$i]);
757
+        for ( $i = 0; $i < 10; ++$i ) {
758
+            $h[ $i ] = $h[ $i ]->subInt32( $f[ $i ] );
759 759
         }
760 760
         return $h;
761 761
     }
@@ -773,119 +773,119 @@  discard block
 block discarded – undo
773 773
      * @throws TypeError
774 774
      * @psalm-suppress MixedMethodCall
775 775
      */
776
-    public static function fe_sq(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
776
+    public static function fe_sq( ParagonIE_Sodium_Core32_Curve25519_Fe $f )
777 777
     {
778 778
         /** @var ParagonIE_Sodium_Core32_Int64 $f0 */
779
-        $f0 = $f[0]->toInt64();
779
+        $f0 = $f[ 0 ]->toInt64();
780 780
         /** @var ParagonIE_Sodium_Core32_Int64 $f1 */
781
-        $f1 = $f[1]->toInt64();
781
+        $f1 = $f[ 1 ]->toInt64();
782 782
         /** @var ParagonIE_Sodium_Core32_Int64 $f2 */
783
-        $f2 = $f[2]->toInt64();
783
+        $f2 = $f[ 2 ]->toInt64();
784 784
         /** @var ParagonIE_Sodium_Core32_Int64 $f3 */
785
-        $f3 = $f[3]->toInt64();
785
+        $f3 = $f[ 3 ]->toInt64();
786 786
         /** @var ParagonIE_Sodium_Core32_Int64 $f4 */
787
-        $f4 = $f[4]->toInt64();
787
+        $f4 = $f[ 4 ]->toInt64();
788 788
         /** @var ParagonIE_Sodium_Core32_Int64 $f5 */
789
-        $f5 = $f[5]->toInt64();
789
+        $f5 = $f[ 5 ]->toInt64();
790 790
         /** @var ParagonIE_Sodium_Core32_Int64 $f6 */
791
-        $f6 = $f[6]->toInt64();
791
+        $f6 = $f[ 6 ]->toInt64();
792 792
         /** @var ParagonIE_Sodium_Core32_Int64 $f7 */
793
-        $f7 = $f[7]->toInt64();
793
+        $f7 = $f[ 7 ]->toInt64();
794 794
         /** @var ParagonIE_Sodium_Core32_Int64 $f8 */
795
-        $f8 = $f[8]->toInt64();
795
+        $f8 = $f[ 8 ]->toInt64();
796 796
         /** @var ParagonIE_Sodium_Core32_Int64 $f9 */
797
-        $f9 = $f[9]->toInt64();
797
+        $f9 = $f[ 9 ]->toInt64();
798 798
 
799 799
         /** @var ParagonIE_Sodium_Core32_Int64 $f0_2 */
800
-        $f0_2 = $f0->shiftLeft(1);
801
-        $f1_2 = $f1->shiftLeft(1);
802
-        $f2_2 = $f2->shiftLeft(1);
803
-        $f3_2 = $f3->shiftLeft(1);
804
-        $f4_2 = $f4->shiftLeft(1);
805
-        $f5_2 = $f5->shiftLeft(1);
806
-        $f6_2 = $f6->shiftLeft(1);
807
-        $f7_2 = $f7->shiftLeft(1);
808
-        $f5_38 = $f5->mulInt(38, 6);
809
-        $f6_19 = $f6->mulInt(19, 5);
810
-        $f7_38 = $f7->mulInt(38, 6);
811
-        $f8_19 = $f8->mulInt(19, 5);
812
-        $f9_38 = $f9->mulInt(38, 6);
800
+        $f0_2 = $f0->shiftLeft( 1 );
801
+        $f1_2 = $f1->shiftLeft( 1 );
802
+        $f2_2 = $f2->shiftLeft( 1 );
803
+        $f3_2 = $f3->shiftLeft( 1 );
804
+        $f4_2 = $f4->shiftLeft( 1 );
805
+        $f5_2 = $f5->shiftLeft( 1 );
806
+        $f6_2 = $f6->shiftLeft( 1 );
807
+        $f7_2 = $f7->shiftLeft( 1 );
808
+        $f5_38 = $f5->mulInt( 38, 6 );
809
+        $f6_19 = $f6->mulInt( 19, 5 );
810
+        $f7_38 = $f7->mulInt( 38, 6 );
811
+        $f8_19 = $f8->mulInt( 19, 5 );
812
+        $f9_38 = $f9->mulInt( 38, 6 );
813 813
         /** @var ParagonIE_Sodium_Core32_Int64 $f0f0*/
814
-        $f0f0    = $f0->mulInt64($f0, 28);
815
-        $f0f1_2  = $f0_2->mulInt64($f1, 28);
816
-        $f0f2_2 =  $f0_2->mulInt64($f2, 28);
817
-        $f0f3_2 =  $f0_2->mulInt64($f3, 28);
818
-        $f0f4_2 =  $f0_2->mulInt64($f4, 28);
819
-        $f0f5_2 =  $f0_2->mulInt64($f5, 28);
820
-        $f0f6_2 =  $f0_2->mulInt64($f6, 28);
821
-        $f0f7_2 =  $f0_2->mulInt64($f7, 28);
822
-        $f0f8_2 =  $f0_2->mulInt64($f8, 28);
823
-        $f0f9_2 =  $f0_2->mulInt64($f9, 28);
824
-
825
-        $f1f1_2 = $f1_2->mulInt64($f1, 28);
826
-        $f1f2_2 = $f1_2->mulInt64($f2, 28);
827
-        $f1f3_4 = $f1_2->mulInt64($f3_2, 28);
828
-        $f1f4_2 = $f1_2->mulInt64($f4, 28);
829
-        $f1f5_4 = $f1_2->mulInt64($f5_2, 30);
830
-        $f1f6_2 = $f1_2->mulInt64($f6, 28);
831
-        $f1f7_4 = $f1_2->mulInt64($f7_2, 28);
832
-        $f1f8_2 = $f1_2->mulInt64($f8, 28);
833
-        $f1f9_76 = $f9_38->mulInt64($f1_2, 30);
834
-
835
-        $f2f2 = $f2->mulInt64($f2, 28);
836
-        $f2f3_2 = $f2_2->mulInt64($f3, 28);
837
-        $f2f4_2 = $f2_2->mulInt64($f4, 28);
838
-        $f2f5_2 = $f2_2->mulInt64($f5, 28);
839
-        $f2f6_2 = $f2_2->mulInt64($f6, 28);
840
-        $f2f7_2 = $f2_2->mulInt64($f7, 28);
841
-        $f2f8_38 = $f8_19->mulInt64($f2_2, 30);
842
-        $f2f9_38 = $f9_38->mulInt64($f2, 30);
843
-
844
-        $f3f3_2 = $f3_2->mulInt64($f3, 28);
845
-        $f3f4_2 = $f3_2->mulInt64($f4, 28);
846
-        $f3f5_4 = $f3_2->mulInt64($f5_2, 30);
847
-        $f3f6_2 = $f3_2->mulInt64($f6, 28);
848
-        $f3f7_76 = $f7_38->mulInt64($f3_2, 30);
849
-        $f3f8_38 = $f8_19->mulInt64($f3_2, 30);
850
-        $f3f9_76 = $f9_38->mulInt64($f3_2, 30);
851
-
852
-        $f4f4 = $f4->mulInt64($f4, 28);
853
-        $f4f5_2 = $f4_2->mulInt64($f5, 28);
854
-        $f4f6_38 = $f6_19->mulInt64($f4_2, 30);
855
-        $f4f7_38 = $f7_38->mulInt64($f4, 30);
856
-        $f4f8_38 = $f8_19->mulInt64($f4_2, 30);
857
-        $f4f9_38 = $f9_38->mulInt64($f4, 30);
858
-
859
-        $f5f5_38 = $f5_38->mulInt64($f5, 30);
860
-        $f5f6_38 = $f6_19->mulInt64($f5_2, 30);
861
-        $f5f7_76 = $f7_38->mulInt64($f5_2, 30);
862
-        $f5f8_38 = $f8_19->mulInt64($f5_2, 30);
863
-        $f5f9_76 = $f9_38->mulInt64($f5_2, 30);
864
-
865
-        $f6f6_19 = $f6_19->mulInt64($f6, 30);
866
-        $f6f7_38 = $f7_38->mulInt64($f6, 30);
867
-        $f6f8_38 = $f8_19->mulInt64($f6_2, 30);
868
-        $f6f9_38 = $f9_38->mulInt64($f6, 30);
869
-
870
-        $f7f7_38 = $f7_38->mulInt64($f7, 28);
871
-        $f7f8_38 = $f8_19->mulInt64($f7_2, 30);
872
-        $f7f9_76 = $f9_38->mulInt64($f7_2, 30);
873
-
874
-        $f8f8_19 = $f8_19->mulInt64($f8, 30);
875
-        $f8f9_38 = $f9_38->mulInt64($f8, 30);
876
-
877
-        $f9f9_38 = $f9_38->mulInt64($f9, 28);
878
-
879
-        $h0 = $f0f0->addInt64($f1f9_76)->addInt64($f2f8_38)->addInt64($f3f7_76)->addInt64($f4f6_38)->addInt64($f5f5_38);
880
-        $h1 = $f0f1_2->addInt64($f2f9_38)->addInt64($f3f8_38)->addInt64($f4f7_38)->addInt64($f5f6_38);
881
-        $h2 = $f0f2_2->addInt64($f1f1_2)->addInt64($f3f9_76)->addInt64($f4f8_38)->addInt64($f5f7_76)->addInt64($f6f6_19);
882
-        $h3 = $f0f3_2->addInt64($f1f2_2)->addInt64($f4f9_38)->addInt64($f5f8_38)->addInt64($f6f7_38);
883
-        $h4 = $f0f4_2->addInt64($f1f3_4)->addInt64($f2f2)->addInt64($f5f9_76)->addInt64($f6f8_38)->addInt64($f7f7_38);
884
-        $h5 = $f0f5_2->addInt64($f1f4_2)->addInt64($f2f3_2)->addInt64($f6f9_38)->addInt64($f7f8_38);
885
-        $h6 = $f0f6_2->addInt64($f1f5_4)->addInt64($f2f4_2)->addInt64($f3f3_2)->addInt64($f7f9_76)->addInt64($f8f8_19);
886
-        $h7 = $f0f7_2->addInt64($f1f6_2)->addInt64($f2f5_2)->addInt64($f3f4_2)->addInt64($f8f9_38);
887
-        $h8 = $f0f8_2->addInt64($f1f7_4)->addInt64($f2f6_2)->addInt64($f3f5_4)->addInt64($f4f4)->addInt64($f9f9_38);
888
-        $h9 = $f0f9_2->addInt64($f1f8_2)->addInt64($f2f7_2)->addInt64($f3f6_2)->addInt64($f4f5_2);
814
+        $f0f0    = $f0->mulInt64( $f0, 28 );
815
+        $f0f1_2  = $f0_2->mulInt64( $f1, 28 );
816
+        $f0f2_2 = $f0_2->mulInt64( $f2, 28 );
817
+        $f0f3_2 = $f0_2->mulInt64( $f3, 28 );
818
+        $f0f4_2 = $f0_2->mulInt64( $f4, 28 );
819
+        $f0f5_2 = $f0_2->mulInt64( $f5, 28 );
820
+        $f0f6_2 = $f0_2->mulInt64( $f6, 28 );
821
+        $f0f7_2 = $f0_2->mulInt64( $f7, 28 );
822
+        $f0f8_2 = $f0_2->mulInt64( $f8, 28 );
823
+        $f0f9_2 = $f0_2->mulInt64( $f9, 28 );
824
+
825
+        $f1f1_2 = $f1_2->mulInt64( $f1, 28 );
826
+        $f1f2_2 = $f1_2->mulInt64( $f2, 28 );
827
+        $f1f3_4 = $f1_2->mulInt64( $f3_2, 28 );
828
+        $f1f4_2 = $f1_2->mulInt64( $f4, 28 );
829
+        $f1f5_4 = $f1_2->mulInt64( $f5_2, 30 );
830
+        $f1f6_2 = $f1_2->mulInt64( $f6, 28 );
831
+        $f1f7_4 = $f1_2->mulInt64( $f7_2, 28 );
832
+        $f1f8_2 = $f1_2->mulInt64( $f8, 28 );
833
+        $f1f9_76 = $f9_38->mulInt64( $f1_2, 30 );
834
+
835
+        $f2f2 = $f2->mulInt64( $f2, 28 );
836
+        $f2f3_2 = $f2_2->mulInt64( $f3, 28 );
837
+        $f2f4_2 = $f2_2->mulInt64( $f4, 28 );
838
+        $f2f5_2 = $f2_2->mulInt64( $f5, 28 );
839
+        $f2f6_2 = $f2_2->mulInt64( $f6, 28 );
840
+        $f2f7_2 = $f2_2->mulInt64( $f7, 28 );
841
+        $f2f8_38 = $f8_19->mulInt64( $f2_2, 30 );
842
+        $f2f9_38 = $f9_38->mulInt64( $f2, 30 );
843
+
844
+        $f3f3_2 = $f3_2->mulInt64( $f3, 28 );
845
+        $f3f4_2 = $f3_2->mulInt64( $f4, 28 );
846
+        $f3f5_4 = $f3_2->mulInt64( $f5_2, 30 );
847
+        $f3f6_2 = $f3_2->mulInt64( $f6, 28 );
848
+        $f3f7_76 = $f7_38->mulInt64( $f3_2, 30 );
849
+        $f3f8_38 = $f8_19->mulInt64( $f3_2, 30 );
850
+        $f3f9_76 = $f9_38->mulInt64( $f3_2, 30 );
851
+
852
+        $f4f4 = $f4->mulInt64( $f4, 28 );
853
+        $f4f5_2 = $f4_2->mulInt64( $f5, 28 );
854
+        $f4f6_38 = $f6_19->mulInt64( $f4_2, 30 );
855
+        $f4f7_38 = $f7_38->mulInt64( $f4, 30 );
856
+        $f4f8_38 = $f8_19->mulInt64( $f4_2, 30 );
857
+        $f4f9_38 = $f9_38->mulInt64( $f4, 30 );
858
+
859
+        $f5f5_38 = $f5_38->mulInt64( $f5, 30 );
860
+        $f5f6_38 = $f6_19->mulInt64( $f5_2, 30 );
861
+        $f5f7_76 = $f7_38->mulInt64( $f5_2, 30 );
862
+        $f5f8_38 = $f8_19->mulInt64( $f5_2, 30 );
863
+        $f5f9_76 = $f9_38->mulInt64( $f5_2, 30 );
864
+
865
+        $f6f6_19 = $f6_19->mulInt64( $f6, 30 );
866
+        $f6f7_38 = $f7_38->mulInt64( $f6, 30 );
867
+        $f6f8_38 = $f8_19->mulInt64( $f6_2, 30 );
868
+        $f6f9_38 = $f9_38->mulInt64( $f6, 30 );
869
+
870
+        $f7f7_38 = $f7_38->mulInt64( $f7, 28 );
871
+        $f7f8_38 = $f8_19->mulInt64( $f7_2, 30 );
872
+        $f7f9_76 = $f9_38->mulInt64( $f7_2, 30 );
873
+
874
+        $f8f8_19 = $f8_19->mulInt64( $f8, 30 );
875
+        $f8f9_38 = $f9_38->mulInt64( $f8, 30 );
876
+
877
+        $f9f9_38 = $f9_38->mulInt64( $f9, 28 );
878
+
879
+        $h0 = $f0f0->addInt64( $f1f9_76 )->addInt64( $f2f8_38 )->addInt64( $f3f7_76 )->addInt64( $f4f6_38 )->addInt64( $f5f5_38 );
880
+        $h1 = $f0f1_2->addInt64( $f2f9_38 )->addInt64( $f3f8_38 )->addInt64( $f4f7_38 )->addInt64( $f5f6_38 );
881
+        $h2 = $f0f2_2->addInt64( $f1f1_2 )->addInt64( $f3f9_76 )->addInt64( $f4f8_38 )->addInt64( $f5f7_76 )->addInt64( $f6f6_19 );
882
+        $h3 = $f0f3_2->addInt64( $f1f2_2 )->addInt64( $f4f9_38 )->addInt64( $f5f8_38 )->addInt64( $f6f7_38 );
883
+        $h4 = $f0f4_2->addInt64( $f1f3_4 )->addInt64( $f2f2 )->addInt64( $f5f9_76 )->addInt64( $f6f8_38 )->addInt64( $f7f7_38 );
884
+        $h5 = $f0f5_2->addInt64( $f1f4_2 )->addInt64( $f2f3_2 )->addInt64( $f6f9_38 )->addInt64( $f7f8_38 );
885
+        $h6 = $f0f6_2->addInt64( $f1f5_4 )->addInt64( $f2f4_2 )->addInt64( $f3f3_2 )->addInt64( $f7f9_76 )->addInt64( $f8f8_19 );
886
+        $h7 = $f0f7_2->addInt64( $f1f6_2 )->addInt64( $f2f5_2 )->addInt64( $f3f4_2 )->addInt64( $f8f9_38 );
887
+        $h8 = $f0f8_2->addInt64( $f1f7_4 )->addInt64( $f2f6_2 )->addInt64( $f3f5_4 )->addInt64( $f4f4 )->addInt64( $f9f9_38 );
888
+        $h9 = $f0f9_2->addInt64( $f1f8_2 )->addInt64( $f2f7_2 )->addInt64( $f3f6_2 )->addInt64( $f4f5_2 );
889 889
 
890 890
         /**
891 891
          * @var ParagonIE_Sodium_Core32_Int64 $h0
@@ -900,53 +900,53 @@  discard block
 block discarded – undo
900 900
          * @var ParagonIE_Sodium_Core32_Int64 $h9
901 901
          */
902 902
 
903
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
904
-        $h1 = $h1->addInt64($carry0);
905
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
903
+        $carry0 = $h0->addInt( 1 << 25 )->shiftRight( 26 );
904
+        $h1 = $h1->addInt64( $carry0 );
905
+        $h0 = $h0->subInt64( $carry0->shiftLeft( 26 ) );
906 906
 
907
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
908
-        $h5 = $h5->addInt64($carry4);
909
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
907
+        $carry4 = $h4->addInt( 1 << 25 )->shiftRight( 26 );
908
+        $h5 = $h5->addInt64( $carry4 );
909
+        $h4 = $h4->subInt64( $carry4->shiftLeft( 26 ) );
910 910
 
911
-        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
912
-        $h2 = $h2->addInt64($carry1);
913
-        $h1 = $h1->subInt64($carry1->shiftLeft(25));
911
+        $carry1 = $h1->addInt( 1 << 24 )->shiftRight( 25 );
912
+        $h2 = $h2->addInt64( $carry1 );
913
+        $h1 = $h1->subInt64( $carry1->shiftLeft( 25 ) );
914 914
 
915
-        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
916
-        $h6 = $h6->addInt64($carry5);
917
-        $h5 = $h5->subInt64($carry5->shiftLeft(25));
915
+        $carry5 = $h5->addInt( 1 << 24 )->shiftRight( 25 );
916
+        $h6 = $h6->addInt64( $carry5 );
917
+        $h5 = $h5->subInt64( $carry5->shiftLeft( 25 ) );
918 918
 
919
-        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
920
-        $h3 = $h3->addInt64($carry2);
921
-        $h2 = $h2->subInt64($carry2->shiftLeft(26));
919
+        $carry2 = $h2->addInt( 1 << 25 )->shiftRight( 26 );
920
+        $h3 = $h3->addInt64( $carry2 );
921
+        $h2 = $h2->subInt64( $carry2->shiftLeft( 26 ) );
922 922
 
923
-        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
924
-        $h7 = $h7->addInt64($carry6);
925
-        $h6 = $h6->subInt64($carry6->shiftLeft(26));
923
+        $carry6 = $h6->addInt( 1 << 25 )->shiftRight( 26 );
924
+        $h7 = $h7->addInt64( $carry6 );
925
+        $h6 = $h6->subInt64( $carry6->shiftLeft( 26 ) );
926 926
 
927
-        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
928
-        $h4 = $h4->addInt64($carry3);
929
-        $h3 = $h3->subInt64($carry3->shiftLeft(25));
927
+        $carry3 = $h3->addInt( 1 << 24 )->shiftRight( 25 );
928
+        $h4 = $h4->addInt64( $carry3 );
929
+        $h3 = $h3->subInt64( $carry3->shiftLeft( 25 ) );
930 930
 
931
-        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
932
-        $h8 = $h8->addInt64($carry7);
933
-        $h7 = $h7->subInt64($carry7->shiftLeft(25));
931
+        $carry7 = $h7->addInt( 1 << 24 )->shiftRight( 25 );
932
+        $h8 = $h8->addInt64( $carry7 );
933
+        $h7 = $h7->subInt64( $carry7->shiftLeft( 25 ) );
934 934
 
935
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
936
-        $h5 = $h5->addInt64($carry4);
937
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
935
+        $carry4 = $h4->addInt( 1 << 25 )->shiftRight( 26 );
936
+        $h5 = $h5->addInt64( $carry4 );
937
+        $h4 = $h4->subInt64( $carry4->shiftLeft( 26 ) );
938 938
 
939
-        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
940
-        $h9 = $h9->addInt64($carry8);
941
-        $h8 = $h8->subInt64($carry8->shiftLeft(26));
939
+        $carry8 = $h8->addInt( 1 << 25 )->shiftRight( 26 );
940
+        $h9 = $h9->addInt64( $carry8 );
941
+        $h8 = $h8->subInt64( $carry8->shiftLeft( 26 ) );
942 942
 
943
-        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
944
-        $h0 = $h0->addInt64($carry9->mulInt(19, 5));
945
-        $h9 = $h9->subInt64($carry9->shiftLeft(25));
943
+        $carry9 = $h9->addInt( 1 << 24 )->shiftRight( 25 );
944
+        $h0 = $h0->addInt64( $carry9->mulInt( 19, 5 ) );
945
+        $h9 = $h9->subInt64( $carry9->shiftLeft( 25 ) );
946 946
 
947
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
948
-        $h1 = $h1->addInt64($carry0);
949
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
947
+        $carry0 = $h0->addInt( 1 << 25 )->shiftRight( 26 );
948
+        $h1 = $h1->addInt64( $carry0 );
949
+        $h0 = $h0->subInt64( $carry0->shiftLeft( 26 ) );
950 950
 
951 951
         return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
952 952
             array(
@@ -977,108 +977,108 @@  discard block
 block discarded – undo
977 977
      * @throws TypeError
978 978
      * @psalm-suppress MixedMethodCall
979 979
      */
980
-    public static function fe_sq2(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
980
+    public static function fe_sq2( ParagonIE_Sodium_Core32_Curve25519_Fe $f )
981 981
     {
982 982
         /** @var ParagonIE_Sodium_Core32_Int64 $f0 */
983
-        $f0 = $f[0]->toInt64();
983
+        $f0 = $f[ 0 ]->toInt64();
984 984
         /** @var ParagonIE_Sodium_Core32_Int64 $f1 */
985
-        $f1 = $f[1]->toInt64();
985
+        $f1 = $f[ 1 ]->toInt64();
986 986
         /** @var ParagonIE_Sodium_Core32_Int64 $f2 */
987
-        $f2 = $f[2]->toInt64();
987
+        $f2 = $f[ 2 ]->toInt64();
988 988
         /** @var ParagonIE_Sodium_Core32_Int64 $f3 */
989
-        $f3 = $f[3]->toInt64();
989
+        $f3 = $f[ 3 ]->toInt64();
990 990
         /** @var ParagonIE_Sodium_Core32_Int64 $f4 */
991
-        $f4 = $f[4]->toInt64();
991
+        $f4 = $f[ 4 ]->toInt64();
992 992
         /** @var ParagonIE_Sodium_Core32_Int64 $f5 */
993
-        $f5 = $f[5]->toInt64();
993
+        $f5 = $f[ 5 ]->toInt64();
994 994
         /** @var ParagonIE_Sodium_Core32_Int64 $f6 */
995
-        $f6 = $f[6]->toInt64();
995
+        $f6 = $f[ 6 ]->toInt64();
996 996
         /** @var ParagonIE_Sodium_Core32_Int64 $f7 */
997
-        $f7 = $f[7]->toInt64();
997
+        $f7 = $f[ 7 ]->toInt64();
998 998
         /** @var ParagonIE_Sodium_Core32_Int64 $f8 */
999
-        $f8 = $f[8]->toInt64();
999
+        $f8 = $f[ 8 ]->toInt64();
1000 1000
         /** @var ParagonIE_Sodium_Core32_Int64 $f9 */
1001
-        $f9 = $f[9]->toInt64();
1002
-
1003
-        $f0_2 = $f0->shiftLeft(1);
1004
-        $f1_2 = $f1->shiftLeft(1);
1005
-        $f2_2 = $f2->shiftLeft(1);
1006
-        $f3_2 = $f3->shiftLeft(1);
1007
-        $f4_2 = $f4->shiftLeft(1);
1008
-        $f5_2 = $f5->shiftLeft(1);
1009
-        $f6_2 = $f6->shiftLeft(1);
1010
-        $f7_2 = $f7->shiftLeft(1);
1011
-        $f5_38 = $f5->mulInt(38, 6); /* 1.959375*2^30 */
1012
-        $f6_19 = $f6->mulInt(19, 5); /* 1.959375*2^30 */
1013
-        $f7_38 = $f7->mulInt(38, 6); /* 1.959375*2^30 */
1014
-        $f8_19 = $f8->mulInt(19, 5); /* 1.959375*2^30 */
1015
-        $f9_38 = $f9->mulInt(38, 6); /* 1.959375*2^30 */
1016
-        $f0f0 = $f0->mulInt64($f0, 28);
1017
-        $f0f1_2 = $f0_2->mulInt64($f1, 28);
1018
-        $f0f2_2 = $f0_2->mulInt64($f2, 28);
1019
-        $f0f3_2 = $f0_2->mulInt64($f3, 28);
1020
-        $f0f4_2 = $f0_2->mulInt64($f4, 28);
1021
-        $f0f5_2 = $f0_2->mulInt64($f5, 28);
1022
-        $f0f6_2 = $f0_2->mulInt64($f6, 28);
1023
-        $f0f7_2 = $f0_2->mulInt64($f7, 28);
1024
-        $f0f8_2 = $f0_2->mulInt64($f8, 28);
1025
-        $f0f9_2 = $f0_2->mulInt64($f9, 28);
1026
-        $f1f1_2 = $f1_2->mulInt64($f1, 28);
1027
-        $f1f2_2 = $f1_2->mulInt64($f2, 28);
1028
-        $f1f3_4 = $f1_2->mulInt64($f3_2, 29);
1029
-        $f1f4_2 = $f1_2->mulInt64($f4, 28);
1030
-        $f1f5_4 = $f1_2->mulInt64($f5_2, 29);
1031
-        $f1f6_2 = $f1_2->mulInt64($f6, 28);
1032
-        $f1f7_4 = $f1_2->mulInt64($f7_2, 29);
1033
-        $f1f8_2 = $f1_2->mulInt64($f8, 28);
1034
-        $f1f9_76 = $f9_38->mulInt64($f1_2, 29);
1035
-        $f2f2 = $f2->mulInt64($f2, 28);
1036
-        $f2f3_2 = $f2_2->mulInt64($f3, 28);
1037
-        $f2f4_2 = $f2_2->mulInt64($f4, 28);
1038
-        $f2f5_2 = $f2_2->mulInt64($f5, 28);
1039
-        $f2f6_2 = $f2_2->mulInt64($f6, 28);
1040
-        $f2f7_2 = $f2_2->mulInt64($f7, 28);
1041
-        $f2f8_38 = $f8_19->mulInt64($f2_2, 29);
1042
-        $f2f9_38 = $f9_38->mulInt64($f2, 29);
1043
-        $f3f3_2 = $f3_2->mulInt64($f3, 28);
1044
-        $f3f4_2 = $f3_2->mulInt64($f4, 28);
1045
-        $f3f5_4 = $f3_2->mulInt64($f5_2, 28);
1046
-        $f3f6_2 = $f3_2->mulInt64($f6, 28);
1047
-        $f3f7_76 = $f7_38->mulInt64($f3_2, 29);
1048
-        $f3f8_38 = $f8_19->mulInt64($f3_2, 29);
1049
-        $f3f9_76 = $f9_38->mulInt64($f3_2, 29);
1050
-        $f4f4 = $f4->mulInt64($f4, 28);
1051
-        $f4f5_2 = $f4_2->mulInt64($f5, 28);
1052
-        $f4f6_38 = $f6_19->mulInt64($f4_2, 29);
1053
-        $f4f7_38 = $f7_38->mulInt64($f4, 29);
1054
-        $f4f8_38 = $f8_19->mulInt64($f4_2, 29);
1055
-        $f4f9_38 = $f9_38->mulInt64($f4, 29);
1056
-        $f5f5_38 = $f5_38->mulInt64($f5, 29);
1057
-        $f5f6_38 = $f6_19->mulInt64($f5_2, 29);
1058
-        $f5f7_76 = $f7_38->mulInt64($f5_2, 29);
1059
-        $f5f8_38 = $f8_19->mulInt64($f5_2, 29);
1060
-        $f5f9_76 = $f9_38->mulInt64($f5_2, 29);
1061
-        $f6f6_19 = $f6_19->mulInt64($f6, 29);
1062
-        $f6f7_38 = $f7_38->mulInt64($f6, 29);
1063
-        $f6f8_38 = $f8_19->mulInt64($f6_2, 29);
1064
-        $f6f9_38 = $f9_38->mulInt64($f6, 29);
1065
-        $f7f7_38 = $f7_38->mulInt64($f7, 29);
1066
-        $f7f8_38 = $f8_19->mulInt64($f7_2, 29);
1067
-        $f7f9_76 = $f9_38->mulInt64($f7_2, 29);
1068
-        $f8f8_19 = $f8_19->mulInt64($f8, 29);
1069
-        $f8f9_38 = $f9_38->mulInt64($f8, 29);
1070
-        $f9f9_38 = $f9_38->mulInt64($f9, 29);
1071
-
1072
-        $h0 = $f0f0->addInt64($f1f9_76)->addInt64($f2f8_38)->addInt64($f3f7_76)->addInt64($f4f6_38)->addInt64($f5f5_38);
1073
-        $h1 = $f0f1_2->addInt64($f2f9_38)->addInt64($f3f8_38)->addInt64($f4f7_38)->addInt64($f5f6_38);
1074
-        $h2 = $f0f2_2->addInt64($f1f1_2)->addInt64($f3f9_76)->addInt64($f4f8_38)->addInt64($f5f7_76)->addInt64($f6f6_19);
1075
-        $h3 = $f0f3_2->addInt64($f1f2_2)->addInt64($f4f9_38)->addInt64($f5f8_38)->addInt64($f6f7_38);
1076
-        $h4 = $f0f4_2->addInt64($f1f3_4)->addInt64($f2f2)->addInt64($f5f9_76)->addInt64($f6f8_38)->addInt64($f7f7_38);
1077
-        $h5 = $f0f5_2->addInt64($f1f4_2)->addInt64($f2f3_2)->addInt64($f6f9_38)->addInt64($f7f8_38);
1078
-        $h6 = $f0f6_2->addInt64($f1f5_4)->addInt64($f2f4_2)->addInt64($f3f3_2)->addInt64($f7f9_76)->addInt64($f8f8_19);
1079
-        $h7 = $f0f7_2->addInt64($f1f6_2)->addInt64($f2f5_2)->addInt64($f3f4_2)->addInt64($f8f9_38);
1080
-        $h8 = $f0f8_2->addInt64($f1f7_4)->addInt64($f2f6_2)->addInt64($f3f5_4)->addInt64($f4f4)->addInt64($f9f9_38);
1081
-        $h9 = $f0f9_2->addInt64($f1f8_2)->addInt64($f2f7_2)->addInt64($f3f6_2)->addInt64($f4f5_2);
1001
+        $f9 = $f[ 9 ]->toInt64();
1002
+
1003
+        $f0_2 = $f0->shiftLeft( 1 );
1004
+        $f1_2 = $f1->shiftLeft( 1 );
1005
+        $f2_2 = $f2->shiftLeft( 1 );
1006
+        $f3_2 = $f3->shiftLeft( 1 );
1007
+        $f4_2 = $f4->shiftLeft( 1 );
1008
+        $f5_2 = $f5->shiftLeft( 1 );
1009
+        $f6_2 = $f6->shiftLeft( 1 );
1010
+        $f7_2 = $f7->shiftLeft( 1 );
1011
+        $f5_38 = $f5->mulInt( 38, 6 ); /* 1.959375*2^30 */
1012
+        $f6_19 = $f6->mulInt( 19, 5 ); /* 1.959375*2^30 */
1013
+        $f7_38 = $f7->mulInt( 38, 6 ); /* 1.959375*2^30 */
1014
+        $f8_19 = $f8->mulInt( 19, 5 ); /* 1.959375*2^30 */
1015
+        $f9_38 = $f9->mulInt( 38, 6 ); /* 1.959375*2^30 */
1016
+        $f0f0 = $f0->mulInt64( $f0, 28 );
1017
+        $f0f1_2 = $f0_2->mulInt64( $f1, 28 );
1018
+        $f0f2_2 = $f0_2->mulInt64( $f2, 28 );
1019
+        $f0f3_2 = $f0_2->mulInt64( $f3, 28 );
1020
+        $f0f4_2 = $f0_2->mulInt64( $f4, 28 );
1021
+        $f0f5_2 = $f0_2->mulInt64( $f5, 28 );
1022
+        $f0f6_2 = $f0_2->mulInt64( $f6, 28 );
1023
+        $f0f7_2 = $f0_2->mulInt64( $f7, 28 );
1024
+        $f0f8_2 = $f0_2->mulInt64( $f8, 28 );
1025
+        $f0f9_2 = $f0_2->mulInt64( $f9, 28 );
1026
+        $f1f1_2 = $f1_2->mulInt64( $f1, 28 );
1027
+        $f1f2_2 = $f1_2->mulInt64( $f2, 28 );
1028
+        $f1f3_4 = $f1_2->mulInt64( $f3_2, 29 );
1029
+        $f1f4_2 = $f1_2->mulInt64( $f4, 28 );
1030
+        $f1f5_4 = $f1_2->mulInt64( $f5_2, 29 );
1031
+        $f1f6_2 = $f1_2->mulInt64( $f6, 28 );
1032
+        $f1f7_4 = $f1_2->mulInt64( $f7_2, 29 );
1033
+        $f1f8_2 = $f1_2->mulInt64( $f8, 28 );
1034
+        $f1f9_76 = $f9_38->mulInt64( $f1_2, 29 );
1035
+        $f2f2 = $f2->mulInt64( $f2, 28 );
1036
+        $f2f3_2 = $f2_2->mulInt64( $f3, 28 );
1037
+        $f2f4_2 = $f2_2->mulInt64( $f4, 28 );
1038
+        $f2f5_2 = $f2_2->mulInt64( $f5, 28 );
1039
+        $f2f6_2 = $f2_2->mulInt64( $f6, 28 );
1040
+        $f2f7_2 = $f2_2->mulInt64( $f7, 28 );
1041
+        $f2f8_38 = $f8_19->mulInt64( $f2_2, 29 );
1042
+        $f2f9_38 = $f9_38->mulInt64( $f2, 29 );
1043
+        $f3f3_2 = $f3_2->mulInt64( $f3, 28 );
1044
+        $f3f4_2 = $f3_2->mulInt64( $f4, 28 );
1045
+        $f3f5_4 = $f3_2->mulInt64( $f5_2, 28 );
1046
+        $f3f6_2 = $f3_2->mulInt64( $f6, 28 );
1047
+        $f3f7_76 = $f7_38->mulInt64( $f3_2, 29 );
1048
+        $f3f8_38 = $f8_19->mulInt64( $f3_2, 29 );
1049
+        $f3f9_76 = $f9_38->mulInt64( $f3_2, 29 );
1050
+        $f4f4 = $f4->mulInt64( $f4, 28 );
1051
+        $f4f5_2 = $f4_2->mulInt64( $f5, 28 );
1052
+        $f4f6_38 = $f6_19->mulInt64( $f4_2, 29 );
1053
+        $f4f7_38 = $f7_38->mulInt64( $f4, 29 );
1054
+        $f4f8_38 = $f8_19->mulInt64( $f4_2, 29 );
1055
+        $f4f9_38 = $f9_38->mulInt64( $f4, 29 );
1056
+        $f5f5_38 = $f5_38->mulInt64( $f5, 29 );
1057
+        $f5f6_38 = $f6_19->mulInt64( $f5_2, 29 );
1058
+        $f5f7_76 = $f7_38->mulInt64( $f5_2, 29 );
1059
+        $f5f8_38 = $f8_19->mulInt64( $f5_2, 29 );
1060
+        $f5f9_76 = $f9_38->mulInt64( $f5_2, 29 );
1061
+        $f6f6_19 = $f6_19->mulInt64( $f6, 29 );
1062
+        $f6f7_38 = $f7_38->mulInt64( $f6, 29 );
1063
+        $f6f8_38 = $f8_19->mulInt64( $f6_2, 29 );
1064
+        $f6f9_38 = $f9_38->mulInt64( $f6, 29 );
1065
+        $f7f7_38 = $f7_38->mulInt64( $f7, 29 );
1066
+        $f7f8_38 = $f8_19->mulInt64( $f7_2, 29 );
1067
+        $f7f9_76 = $f9_38->mulInt64( $f7_2, 29 );
1068
+        $f8f8_19 = $f8_19->mulInt64( $f8, 29 );
1069
+        $f8f9_38 = $f9_38->mulInt64( $f8, 29 );
1070
+        $f9f9_38 = $f9_38->mulInt64( $f9, 29 );
1071
+
1072
+        $h0 = $f0f0->addInt64( $f1f9_76 )->addInt64( $f2f8_38 )->addInt64( $f3f7_76 )->addInt64( $f4f6_38 )->addInt64( $f5f5_38 );
1073
+        $h1 = $f0f1_2->addInt64( $f2f9_38 )->addInt64( $f3f8_38 )->addInt64( $f4f7_38 )->addInt64( $f5f6_38 );
1074
+        $h2 = $f0f2_2->addInt64( $f1f1_2 )->addInt64( $f3f9_76 )->addInt64( $f4f8_38 )->addInt64( $f5f7_76 )->addInt64( $f6f6_19 );
1075
+        $h3 = $f0f3_2->addInt64( $f1f2_2 )->addInt64( $f4f9_38 )->addInt64( $f5f8_38 )->addInt64( $f6f7_38 );
1076
+        $h4 = $f0f4_2->addInt64( $f1f3_4 )->addInt64( $f2f2 )->addInt64( $f5f9_76 )->addInt64( $f6f8_38 )->addInt64( $f7f7_38 );
1077
+        $h5 = $f0f5_2->addInt64( $f1f4_2 )->addInt64( $f2f3_2 )->addInt64( $f6f9_38 )->addInt64( $f7f8_38 );
1078
+        $h6 = $f0f6_2->addInt64( $f1f5_4 )->addInt64( $f2f4_2 )->addInt64( $f3f3_2 )->addInt64( $f7f9_76 )->addInt64( $f8f8_19 );
1079
+        $h7 = $f0f7_2->addInt64( $f1f6_2 )->addInt64( $f2f5_2 )->addInt64( $f3f4_2 )->addInt64( $f8f9_38 );
1080
+        $h8 = $f0f8_2->addInt64( $f1f7_4 )->addInt64( $f2f6_2 )->addInt64( $f3f5_4 )->addInt64( $f4f4 )->addInt64( $f9f9_38 );
1081
+        $h9 = $f0f9_2->addInt64( $f1f8_2 )->addInt64( $f2f7_2 )->addInt64( $f3f6_2 )->addInt64( $f4f5_2 );
1082 1082
 
1083 1083
         /**
1084 1084
          * @var ParagonIE_Sodium_Core32_Int64 $h0
@@ -1092,59 +1092,59 @@  discard block
 block discarded – undo
1092 1092
          * @var ParagonIE_Sodium_Core32_Int64 $h8
1093 1093
          * @var ParagonIE_Sodium_Core32_Int64 $h9
1094 1094
          */
1095
-        $h0 = $h0->shiftLeft(1);
1096
-        $h1 = $h1->shiftLeft(1);
1097
-        $h2 = $h2->shiftLeft(1);
1098
-        $h3 = $h3->shiftLeft(1);
1099
-        $h4 = $h4->shiftLeft(1);
1100
-        $h5 = $h5->shiftLeft(1);
1101
-        $h6 = $h6->shiftLeft(1);
1102
-        $h7 = $h7->shiftLeft(1);
1103
-        $h8 = $h8->shiftLeft(1);
1104
-        $h9 = $h9->shiftLeft(1);
1105
-
1106
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
1107
-        $h1 = $h1->addInt64($carry0);
1108
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
1109
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
1110
-        $h5 = $h5->addInt64($carry4);
1111
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
1112
-
1113
-        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
1114
-        $h2 = $h2->addInt64($carry1);
1115
-        $h1 = $h1->subInt64($carry1->shiftLeft(25));
1116
-        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
1117
-        $h6 = $h6->addInt64($carry5);
1118
-        $h5 = $h5->subInt64($carry5->shiftLeft(25));
1119
-
1120
-        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
1121
-        $h3 = $h3->addInt64($carry2);
1122
-        $h2 = $h2->subInt64($carry2->shiftLeft(26));
1123
-        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
1124
-        $h7 = $h7->addInt64($carry6);
1125
-        $h6 = $h6->subInt64($carry6->shiftLeft(26));
1126
-
1127
-        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
1128
-        $h4 = $h4->addInt64($carry3);
1129
-        $h3 = $h3->subInt64($carry3->shiftLeft(25));
1130
-        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
1131
-        $h8 = $h8->addInt64($carry7);
1132
-        $h7 = $h7->subInt64($carry7->shiftLeft(25));
1133
-
1134
-        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
1135
-        $h5 = $h5->addInt64($carry4);
1136
-        $h4 = $h4->subInt64($carry4->shiftLeft(26));
1137
-        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
1138
-        $h9 = $h9->addInt64($carry8);
1139
-        $h8 = $h8->subInt64($carry8->shiftLeft(26));
1140
-
1141
-        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
1142
-        $h0 = $h0->addInt64($carry9->mulInt(19, 5));
1143
-        $h9 = $h9->subInt64($carry9->shiftLeft(25));
1144
-
1145
-        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
1146
-        $h1 = $h1->addInt64($carry0);
1147
-        $h0 = $h0->subInt64($carry0->shiftLeft(26));
1095
+        $h0 = $h0->shiftLeft( 1 );
1096
+        $h1 = $h1->shiftLeft( 1 );
1097
+        $h2 = $h2->shiftLeft( 1 );
1098
+        $h3 = $h3->shiftLeft( 1 );
1099
+        $h4 = $h4->shiftLeft( 1 );
1100
+        $h5 = $h5->shiftLeft( 1 );
1101
+        $h6 = $h6->shiftLeft( 1 );
1102
+        $h7 = $h7->shiftLeft( 1 );
1103
+        $h8 = $h8->shiftLeft( 1 );
1104
+        $h9 = $h9->shiftLeft( 1 );
1105
+
1106
+        $carry0 = $h0->addInt( 1 << 25 )->shiftRight( 26 );
1107
+        $h1 = $h1->addInt64( $carry0 );
1108
+        $h0 = $h0->subInt64( $carry0->shiftLeft( 26 ) );
1109
+        $carry4 = $h4->addInt( 1 << 25 )->shiftRight( 26 );
1110
+        $h5 = $h5->addInt64( $carry4 );
1111
+        $h4 = $h4->subInt64( $carry4->shiftLeft( 26 ) );
1112
+
1113
+        $carry1 = $h1->addInt( 1 << 24 )->shiftRight( 25 );
1114
+        $h2 = $h2->addInt64( $carry1 );
1115
+        $h1 = $h1->subInt64( $carry1->shiftLeft( 25 ) );
1116
+        $carry5 = $h5->addInt( 1 << 24 )->shiftRight( 25 );
1117
+        $h6 = $h6->addInt64( $carry5 );
1118
+        $h5 = $h5->subInt64( $carry5->shiftLeft( 25 ) );
1119
+
1120
+        $carry2 = $h2->addInt( 1 << 25 )->shiftRight( 26 );
1121
+        $h3 = $h3->addInt64( $carry2 );
1122
+        $h2 = $h2->subInt64( $carry2->shiftLeft( 26 ) );
1123
+        $carry6 = $h6->addInt( 1 << 25 )->shiftRight( 26 );
1124
+        $h7 = $h7->addInt64( $carry6 );
1125
+        $h6 = $h6->subInt64( $carry6->shiftLeft( 26 ) );
1126
+
1127
+        $carry3 = $h3->addInt( 1 << 24 )->shiftRight( 25 );
1128
+        $h4 = $h4->addInt64( $carry3 );
1129
+        $h3 = $h3->subInt64( $carry3->shiftLeft( 25 ) );
1130
+        $carry7 = $h7->addInt( 1 << 24 )->shiftRight( 25 );
1131
+        $h8 = $h8->addInt64( $carry7 );
1132
+        $h7 = $h7->subInt64( $carry7->shiftLeft( 25 ) );
1133
+
1134
+        $carry4 = $h4->addInt( 1 << 25 )->shiftRight( 26 );
1135
+        $h5 = $h5->addInt64( $carry4 );
1136
+        $h4 = $h4->subInt64( $carry4->shiftLeft( 26 ) );
1137
+        $carry8 = $h8->addInt( 1 << 25 )->shiftRight( 26 );
1138
+        $h9 = $h9->addInt64( $carry8 );
1139
+        $h8 = $h8->subInt64( $carry8->shiftLeft( 26 ) );
1140
+
1141
+        $carry9 = $h9->addInt( 1 << 24 )->shiftRight( 25 );
1142
+        $h0 = $h0->addInt64( $carry9->mulInt( 19, 5 ) );
1143
+        $h9 = $h9->subInt64( $carry9->shiftLeft( 25 ) );
1144
+
1145
+        $carry0 = $h0->addInt( 1 << 25 )->shiftRight( 26 );
1146
+        $h1 = $h1->addInt64( $carry0 );
1147
+        $h0 = $h0->subInt64( $carry0->shiftLeft( 26 ) );
1148 1148
 
1149 1149
         return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1150 1150
             array(
@@ -1170,56 +1170,56 @@  discard block
 block discarded – undo
1170 1170
      * @throws SodiumException
1171 1171
      * @throws TypeError
1172 1172
      */
1173
-    public static function fe_invert(ParagonIE_Sodium_Core32_Curve25519_Fe $Z)
1173
+    public static function fe_invert( ParagonIE_Sodium_Core32_Curve25519_Fe $Z )
1174 1174
     {
1175 1175
         $z = clone $Z;
1176
-        $t0 = self::fe_sq($z);
1177
-        $t1 = self::fe_sq($t0);
1178
-        $t1 = self::fe_sq($t1);
1179
-        $t1 = self::fe_mul($z, $t1);
1180
-        $t0 = self::fe_mul($t0, $t1);
1181
-        $t2 = self::fe_sq($t0);
1182
-        $t1 = self::fe_mul($t1, $t2);
1183
-        $t2 = self::fe_sq($t1);
1184
-        for ($i = 1; $i < 5; ++$i) {
1185
-            $t2 = self::fe_sq($t2);
1176
+        $t0 = self::fe_sq( $z );
1177
+        $t1 = self::fe_sq( $t0 );
1178
+        $t1 = self::fe_sq( $t1 );
1179
+        $t1 = self::fe_mul( $z, $t1 );
1180
+        $t0 = self::fe_mul( $t0, $t1 );
1181
+        $t2 = self::fe_sq( $t0 );
1182
+        $t1 = self::fe_mul( $t1, $t2 );
1183
+        $t2 = self::fe_sq( $t1 );
1184
+        for ( $i = 1; $i < 5; ++$i ) {
1185
+            $t2 = self::fe_sq( $t2 );
1186 1186
         }
1187
-        $t1 = self::fe_mul($t2, $t1);
1188
-        $t2 = self::fe_sq($t1);
1189
-        for ($i = 1; $i < 10; ++$i) {
1190
-            $t2 = self::fe_sq($t2);
1187
+        $t1 = self::fe_mul( $t2, $t1 );
1188
+        $t2 = self::fe_sq( $t1 );
1189
+        for ( $i = 1; $i < 10; ++$i ) {
1190
+            $t2 = self::fe_sq( $t2 );
1191 1191
         }
1192
-        $t2 = self::fe_mul($t2, $t1);
1193
-        $t3 = self::fe_sq($t2);
1194
-        for ($i = 1; $i < 20; ++$i) {
1195
-            $t3 = self::fe_sq($t3);
1192
+        $t2 = self::fe_mul( $t2, $t1 );
1193
+        $t3 = self::fe_sq( $t2 );
1194
+        for ( $i = 1; $i < 20; ++$i ) {
1195
+            $t3 = self::fe_sq( $t3 );
1196 1196
         }
1197
-        $t2 = self::fe_mul($t3, $t2);
1198
-        $t2 = self::fe_sq($t2);
1199
-        for ($i = 1; $i < 10; ++$i) {
1200
-            $t2 = self::fe_sq($t2);
1197
+        $t2 = self::fe_mul( $t3, $t2 );
1198
+        $t2 = self::fe_sq( $t2 );
1199
+        for ( $i = 1; $i < 10; ++$i ) {
1200
+            $t2 = self::fe_sq( $t2 );
1201 1201
         }
1202
-        $t1 = self::fe_mul($t2, $t1);
1203
-        $t2 = self::fe_sq($t1);
1204
-        for ($i = 1; $i < 50; ++$i) {
1205
-            $t2 = self::fe_sq($t2);
1202
+        $t1 = self::fe_mul( $t2, $t1 );
1203
+        $t2 = self::fe_sq( $t1 );
1204
+        for ( $i = 1; $i < 50; ++$i ) {
1205
+            $t2 = self::fe_sq( $t2 );
1206 1206
         }
1207
-        $t2 = self::fe_mul($t2, $t1);
1208
-        $t3 = self::fe_sq($t2);
1209
-        for ($i = 1; $i < 100; ++$i) {
1210
-            $t3 = self::fe_sq($t3);
1207
+        $t2 = self::fe_mul( $t2, $t1 );
1208
+        $t3 = self::fe_sq( $t2 );
1209
+        for ( $i = 1; $i < 100; ++$i ) {
1210
+            $t3 = self::fe_sq( $t3 );
1211 1211
         }
1212
-        $t2 = self::fe_mul($t3, $t2);
1213
-        $t2 = self::fe_sq($t2);
1214
-        for ($i = 1; $i < 50; ++$i) {
1215
-            $t2 = self::fe_sq($t2);
1212
+        $t2 = self::fe_mul( $t3, $t2 );
1213
+        $t2 = self::fe_sq( $t2 );
1214
+        for ( $i = 1; $i < 50; ++$i ) {
1215
+            $t2 = self::fe_sq( $t2 );
1216 1216
         }
1217
-        $t1 = self::fe_mul($t2, $t1);
1218
-        $t1 = self::fe_sq($t1);
1219
-        for ($i = 1; $i < 5; ++$i) {
1220
-            $t1 = self::fe_sq($t1);
1217
+        $t1 = self::fe_mul( $t2, $t1 );
1218
+        $t1 = self::fe_sq( $t1 );
1219
+        for ( $i = 1; $i < 5; ++$i ) {
1220
+            $t1 = self::fe_sq( $t1 );
1221 1221
         }
1222
-        return self::fe_mul($t1, $t0);
1222
+        return self::fe_mul( $t1, $t0 );
1223 1223
     }
1224 1224
 
1225 1225
     /**
@@ -1232,7 +1232,7 @@  discard block
 block discarded – undo
1232 1232
      * @throws SodiumException
1233 1233
      * @throws TypeError
1234 1234
      */
1235
-    public static function fe_pow22523(ParagonIE_Sodium_Core32_Curve25519_Fe $z)
1235
+    public static function fe_pow22523( ParagonIE_Sodium_Core32_Curve25519_Fe $z )
1236 1236
     {
1237 1237
         # fe_sq(t0, z);
1238 1238
         # fe_sq(t1, t0);
@@ -1242,102 +1242,102 @@  discard block
 block discarded – undo
1242 1242
         # fe_sq(t0, t0);
1243 1243
         # fe_mul(t0, t1, t0);
1244 1244
         # fe_sq(t1, t0);
1245
-        $t0 = self::fe_sq($z);
1246
-        $t1 = self::fe_sq($t0);
1247
-        $t1 = self::fe_sq($t1);
1248
-        $t1 = self::fe_mul($z, $t1);
1249
-        $t0 = self::fe_mul($t0, $t1);
1250
-        $t0 = self::fe_sq($t0);
1251
-        $t0 = self::fe_mul($t1, $t0);
1252
-        $t1 = self::fe_sq($t0);
1245
+        $t0 = self::fe_sq( $z );
1246
+        $t1 = self::fe_sq( $t0 );
1247
+        $t1 = self::fe_sq( $t1 );
1248
+        $t1 = self::fe_mul( $z, $t1 );
1249
+        $t0 = self::fe_mul( $t0, $t1 );
1250
+        $t0 = self::fe_sq( $t0 );
1251
+        $t0 = self::fe_mul( $t1, $t0 );
1252
+        $t1 = self::fe_sq( $t0 );
1253 1253
 
1254 1254
         # for (i = 1; i < 5; ++i) {
1255 1255
         #     fe_sq(t1, t1);
1256 1256
         # }
1257
-        for ($i = 1; $i < 5; ++$i) {
1258
-            $t1 = self::fe_sq($t1);
1257
+        for ( $i = 1; $i < 5; ++$i ) {
1258
+            $t1 = self::fe_sq( $t1 );
1259 1259
         }
1260 1260
 
1261 1261
         # fe_mul(t0, t1, t0);
1262 1262
         # fe_sq(t1, t0);
1263
-        $t0 = self::fe_mul($t1, $t0);
1264
-        $t1 = self::fe_sq($t0);
1263
+        $t0 = self::fe_mul( $t1, $t0 );
1264
+        $t1 = self::fe_sq( $t0 );
1265 1265
 
1266 1266
         # for (i = 1; i < 10; ++i) {
1267 1267
         #     fe_sq(t1, t1);
1268 1268
         # }
1269
-        for ($i = 1; $i < 10; ++$i) {
1270
-            $t1 = self::fe_sq($t1);
1269
+        for ( $i = 1; $i < 10; ++$i ) {
1270
+            $t1 = self::fe_sq( $t1 );
1271 1271
         }
1272 1272
 
1273 1273
         # fe_mul(t1, t1, t0);
1274 1274
         # fe_sq(t2, t1);
1275
-        $t1 = self::fe_mul($t1, $t0);
1276
-        $t2 = self::fe_sq($t1);
1275
+        $t1 = self::fe_mul( $t1, $t0 );
1276
+        $t2 = self::fe_sq( $t1 );
1277 1277
 
1278 1278
         # for (i = 1; i < 20; ++i) {
1279 1279
         #     fe_sq(t2, t2);
1280 1280
         # }
1281
-        for ($i = 1; $i < 20; ++$i) {
1282
-            $t2 = self::fe_sq($t2);
1281
+        for ( $i = 1; $i < 20; ++$i ) {
1282
+            $t2 = self::fe_sq( $t2 );
1283 1283
         }
1284 1284
 
1285 1285
         # fe_mul(t1, t2, t1);
1286 1286
         # fe_sq(t1, t1);
1287
-        $t1 = self::fe_mul($t2, $t1);
1288
-        $t1 = self::fe_sq($t1);
1287
+        $t1 = self::fe_mul( $t2, $t1 );
1288
+        $t1 = self::fe_sq( $t1 );
1289 1289
 
1290 1290
         # for (i = 1; i < 10; ++i) {
1291 1291
         #     fe_sq(t1, t1);
1292 1292
         # }
1293
-        for ($i = 1; $i < 10; ++$i) {
1294
-            $t1 = self::fe_sq($t1);
1293
+        for ( $i = 1; $i < 10; ++$i ) {
1294
+            $t1 = self::fe_sq( $t1 );
1295 1295
         }
1296 1296
 
1297 1297
         # fe_mul(t0, t1, t0);
1298 1298
         # fe_sq(t1, t0);
1299
-        $t0 = self::fe_mul($t1, $t0);
1300
-        $t1 = self::fe_sq($t0);
1299
+        $t0 = self::fe_mul( $t1, $t0 );
1300
+        $t1 = self::fe_sq( $t0 );
1301 1301
 
1302 1302
         # for (i = 1; i < 50; ++i) {
1303 1303
         #     fe_sq(t1, t1);
1304 1304
         # }
1305
-        for ($i = 1; $i < 50; ++$i) {
1306
-            $t1 = self::fe_sq($t1);
1305
+        for ( $i = 1; $i < 50; ++$i ) {
1306
+            $t1 = self::fe_sq( $t1 );
1307 1307
         }
1308 1308
 
1309 1309
         # fe_mul(t1, t1, t0);
1310 1310
         # fe_sq(t2, t1);
1311
-        $t1 = self::fe_mul($t1, $t0);
1312
-        $t2 = self::fe_sq($t1);
1311
+        $t1 = self::fe_mul( $t1, $t0 );
1312
+        $t2 = self::fe_sq( $t1 );
1313 1313
 
1314 1314
         # for (i = 1; i < 100; ++i) {
1315 1315
         #     fe_sq(t2, t2);
1316 1316
         # }
1317
-        for ($i = 1; $i < 100; ++$i) {
1318
-            $t2 = self::fe_sq($t2);
1317
+        for ( $i = 1; $i < 100; ++$i ) {
1318
+            $t2 = self::fe_sq( $t2 );
1319 1319
         }
1320 1320
 
1321 1321
         # fe_mul(t1, t2, t1);
1322 1322
         # fe_sq(t1, t1);
1323
-        $t1 = self::fe_mul($t2, $t1);
1324
-        $t1 = self::fe_sq($t1);
1323
+        $t1 = self::fe_mul( $t2, $t1 );
1324
+        $t1 = self::fe_sq( $t1 );
1325 1325
 
1326 1326
         # for (i = 1; i < 50; ++i) {
1327 1327
         #     fe_sq(t1, t1);
1328 1328
         # }
1329
-        for ($i = 1; $i < 50; ++$i) {
1330
-            $t1 = self::fe_sq($t1);
1329
+        for ( $i = 1; $i < 50; ++$i ) {
1330
+            $t1 = self::fe_sq( $t1 );
1331 1331
         }
1332 1332
 
1333 1333
         # fe_mul(t0, t1, t0);
1334 1334
         # fe_sq(t0, t0);
1335 1335
         # fe_sq(t0, t0);
1336 1336
         # fe_mul(out, t0, z);
1337
-        $t0 = self::fe_mul($t1, $t0);
1338
-        $t0 = self::fe_sq($t0);
1339
-        $t0 = self::fe_sq($t0);
1340
-        return self::fe_mul($t0, $z);
1337
+        $t0 = self::fe_mul( $t1, $t0 );
1338
+        $t0 = self::fe_sq( $t0 );
1339
+        $t0 = self::fe_sq( $t0 );
1340
+        return self::fe_mul( $t0, $z );
1341 1341
     }
1342 1342
 
1343 1343
     /**
@@ -1362,20 +1362,20 @@  discard block
 block discarded – undo
1362 1362
      * @psalm-suppress MixedMethodCall
1363 1363
      * @psalm-suppress MixedTypeCoercion
1364 1364
      */
1365
-    public static function fe_sub(ParagonIE_Sodium_Core32_Curve25519_Fe $f, ParagonIE_Sodium_Core32_Curve25519_Fe $g)
1365
+    public static function fe_sub( ParagonIE_Sodium_Core32_Curve25519_Fe $f, ParagonIE_Sodium_Core32_Curve25519_Fe $g )
1366 1366
     {
1367 1367
         return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1368 1368
             array(
1369
-                $f[0]->subInt32($g[0]),
1370
-                $f[1]->subInt32($g[1]),
1371
-                $f[2]->subInt32($g[2]),
1372
-                $f[3]->subInt32($g[3]),
1373
-                $f[4]->subInt32($g[4]),
1374
-                $f[5]->subInt32($g[5]),
1375
-                $f[6]->subInt32($g[6]),
1376
-                $f[7]->subInt32($g[7]),
1377
-                $f[8]->subInt32($g[8]),
1378
-                $f[9]->subInt32($g[9])
1369
+                $f[ 0 ]->subInt32( $g[ 0 ] ),
1370
+                $f[ 1 ]->subInt32( $g[ 1 ] ),
1371
+                $f[ 2 ]->subInt32( $g[ 2 ] ),
1372
+                $f[ 3 ]->subInt32( $g[ 3 ] ),
1373
+                $f[ 4 ]->subInt32( $g[ 4 ] ),
1374
+                $f[ 5 ]->subInt32( $g[ 5 ] ),
1375
+                $f[ 6 ]->subInt32( $g[ 6 ] ),
1376
+                $f[ 7 ]->subInt32( $g[ 7 ] ),
1377
+                $f[ 8 ]->subInt32( $g[ 8 ] ),
1378
+                $f[ 9 ]->subInt32( $g[ 9 ] )
1379 1379
             )
1380 1380
         );
1381 1381
     }
@@ -1398,17 +1398,17 @@  discard block
 block discarded – undo
1398 1398
         ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
1399 1399
     ) {
1400 1400
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1401
-        $r->X = self::fe_add($p->Y, $p->X);
1402
-        $r->Y = self::fe_sub($p->Y, $p->X);
1403
-        $r->Z = self::fe_mul($r->X, $q->YplusX);
1404
-        $r->Y = self::fe_mul($r->Y, $q->YminusX);
1405
-        $r->T = self::fe_mul($q->T2d, $p->T);
1406
-        $r->X = self::fe_mul($p->Z, $q->Z);
1407
-        $t0   = self::fe_add($r->X, $r->X);
1408
-        $r->X = self::fe_sub($r->Z, $r->Y);
1409
-        $r->Y = self::fe_add($r->Z, $r->Y);
1410
-        $r->Z = self::fe_add($t0, $r->T);
1411
-        $r->T = self::fe_sub($t0, $r->T);
1401
+        $r->X = self::fe_add( $p->Y, $p->X );
1402
+        $r->Y = self::fe_sub( $p->Y, $p->X );
1403
+        $r->Z = self::fe_mul( $r->X, $q->YplusX );
1404
+        $r->Y = self::fe_mul( $r->Y, $q->YminusX );
1405
+        $r->T = self::fe_mul( $q->T2d, $p->T );
1406
+        $r->X = self::fe_mul( $p->Z, $q->Z );
1407
+        $t0   = self::fe_add( $r->X, $r->X );
1408
+        $r->X = self::fe_sub( $r->Z, $r->Y );
1409
+        $r->Y = self::fe_add( $r->Z, $r->Y );
1410
+        $r->Z = self::fe_add( $t0, $r->T );
1411
+        $r->T = self::fe_sub( $t0, $r->T );
1412 1412
         return $r;
1413 1413
     }
1414 1414
 
@@ -1422,40 +1422,40 @@  discard block
 block discarded – undo
1422 1422
      * @throws TypeError
1423 1423
      * @psalm-suppress MixedArrayOffset
1424 1424
      */
1425
-    public static function slide($a)
1425
+    public static function slide( $a )
1426 1426
     {
1427
-        if (self::strlen($a) < 256) {
1428
-            if (self::strlen($a) < 16) {
1429
-                $a = str_pad($a, 256, '0', STR_PAD_RIGHT);
1427
+        if ( self::strlen( $a ) < 256 ) {
1428
+            if ( self::strlen( $a ) < 16 ) {
1429
+                $a = str_pad( $a, 256, '0', STR_PAD_RIGHT );
1430 1430
             }
1431 1431
         }
1432 1432
         /** @var array<int, int> $r */
1433 1433
         $r = array();
1434
-        for ($i = 0; $i < 256; ++$i) {
1435
-            $r[$i] = (int) (1 &
1434
+        for ( $i = 0; $i < 256; ++$i ) {
1435
+            $r[ $i ] = (int)( 1 &
1436 1436
                 (
1437
-                    self::chrToInt($a[$i >> 3])
1437
+                    self::chrToInt( $a[ $i >> 3 ] )
1438 1438
                         >>
1439
-                    ($i & 7)
1439
+                    ( $i & 7 )
1440 1440
                 )
1441 1441
             );
1442 1442
         }
1443 1443
 
1444
-        for ($i = 0;$i < 256;++$i) {
1445
-            if ($r[$i]) {
1446
-                for ($b = 1;$b <= 6 && $i + $b < 256;++$b) {
1447
-                    if ($r[$i + $b]) {
1448
-                        if ($r[$i] + ($r[$i + $b] << $b) <= 15) {
1449
-                            $r[$i] += $r[$i + $b] << $b;
1450
-                            $r[$i + $b] = 0;
1451
-                        } elseif ($r[$i] - ($r[$i + $b] << $b) >= -15) {
1452
-                            $r[$i] -= $r[$i + $b] << $b;
1453
-                            for ($k = $i + $b; $k < 256; ++$k) {
1454
-                                if (!$r[$k]) {
1455
-                                    $r[$k] = 1;
1444
+        for ( $i = 0; $i < 256; ++$i ) {
1445
+            if ( $r[ $i ] ) {
1446
+                for ( $b = 1; $b <= 6 && $i + $b < 256; ++$b ) {
1447
+                    if ( $r[ $i + $b ] ) {
1448
+                        if ( $r[ $i ] + ( $r[ $i + $b ] << $b ) <= 15 ) {
1449
+                            $r[ $i ] += $r[ $i + $b ] << $b;
1450
+                            $r[ $i + $b ] = 0;
1451
+                        } elseif ( $r[ $i ] - ( $r[ $i + $b ] << $b ) >= -15 ) {
1452
+                            $r[ $i ] -= $r[ $i + $b ] << $b;
1453
+                            for ( $k = $i + $b; $k < 256; ++$k ) {
1454
+                                if ( ! $r[ $k ] ) {
1455
+                                    $r[ $k ] = 1;
1456 1456
                                     break;
1457 1457
                                 }
1458
-                                $r[$k] = 0;
1458
+                                $r[ $k ] = 0;
1459 1459
                             }
1460 1460
                         } else {
1461 1461
                             break;
@@ -1475,23 +1475,23 @@  discard block
 block discarded – undo
1475 1475
      * @throws SodiumException
1476 1476
      * @throws TypeError
1477 1477
      */
1478
-    public static function ge_frombytes_negate_vartime($s)
1478
+    public static function ge_frombytes_negate_vartime( $s )
1479 1479
     {
1480 1480
         static $d = null;
1481
-        if (!$d) {
1481
+        if ( ! $d ) {
1482 1482
             /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
1483 1483
             $d = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1484 1484
                 array(
1485
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[0]),
1486
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[1]),
1487
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[2]),
1488
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[3]),
1489
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[4]),
1490
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[5]),
1491
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[6]),
1492
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[7]),
1493
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[8]),
1494
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[9])
1485
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 0 ] ),
1486
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 1 ] ),
1487
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 2 ] ),
1488
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 3 ] ),
1489
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 4 ] ),
1490
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 5 ] ),
1491
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 6 ] ),
1492
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 7 ] ),
1493
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 8 ] ),
1494
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d[ 9 ] )
1495 1495
                 )
1496 1496
             );
1497 1497
         }
@@ -1500,7 +1500,7 @@  discard block
 block discarded – undo
1500 1500
         # fe_1(h->Z);
1501 1501
         $h = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3(
1502 1502
             self::fe_0(),
1503
-            self::fe_frombytes($s),
1503
+            self::fe_frombytes( $s ),
1504 1504
             self::fe_1()
1505 1505
         );
1506 1506
 
@@ -1508,36 +1508,36 @@  discard block
 block discarded – undo
1508 1508
         # fe_mul(v,u,d);
1509 1509
         # fe_sub(u,u,h->Z);       /* u = y^2-1 */
1510 1510
         # fe_add(v,v,h->Z);       /* v = dy^2+1 */
1511
-        $u = self::fe_sq($h->Y);
1511
+        $u = self::fe_sq( $h->Y );
1512 1512
         /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
1513
-        $v = self::fe_mul($u, $d);
1514
-        $u = self::fe_sub($u, $h->Z); /* u =  y^2 - 1 */
1515
-        $v = self::fe_add($v, $h->Z); /* v = dy^2 + 1 */
1513
+        $v = self::fe_mul( $u, $d );
1514
+        $u = self::fe_sub( $u, $h->Z ); /* u =  y^2 - 1 */
1515
+        $v = self::fe_add( $v, $h->Z ); /* v = dy^2 + 1 */
1516 1516
 
1517 1517
         # fe_sq(v3,v);
1518 1518
         # fe_mul(v3,v3,v);        /* v3 = v^3 */
1519 1519
         # fe_sq(h->X,v3);
1520 1520
         # fe_mul(h->X,h->X,v);
1521 1521
         # fe_mul(h->X,h->X,u);    /* x = uv^7 */
1522
-        $v3 = self::fe_sq($v);
1523
-        $v3 = self::fe_mul($v3, $v); /* v3 = v^3 */
1524
-        $h->X = self::fe_sq($v3);
1525
-        $h->X = self::fe_mul($h->X, $v);
1526
-        $h->X = self::fe_mul($h->X, $u); /* x = uv^7 */
1522
+        $v3 = self::fe_sq( $v );
1523
+        $v3 = self::fe_mul( $v3, $v ); /* v3 = v^3 */
1524
+        $h->X = self::fe_sq( $v3 );
1525
+        $h->X = self::fe_mul( $h->X, $v );
1526
+        $h->X = self::fe_mul( $h->X, $u ); /* x = uv^7 */
1527 1527
 
1528 1528
         # fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */
1529 1529
         # fe_mul(h->X,h->X,v3);
1530 1530
         # fe_mul(h->X,h->X,u);    /* x = uv^3(uv^7)^((q-5)/8) */
1531
-        $h->X = self::fe_pow22523($h->X); /* x = (uv^7)^((q-5)/8) */
1532
-        $h->X = self::fe_mul($h->X, $v3);
1533
-        $h->X = self::fe_mul($h->X, $u); /* x = uv^3(uv^7)^((q-5)/8) */
1531
+        $h->X = self::fe_pow22523( $h->X ); /* x = (uv^7)^((q-5)/8) */
1532
+        $h->X = self::fe_mul( $h->X, $v3 );
1533
+        $h->X = self::fe_mul( $h->X, $u ); /* x = uv^3(uv^7)^((q-5)/8) */
1534 1534
 
1535 1535
         # fe_sq(vxx,h->X);
1536 1536
         # fe_mul(vxx,vxx,v);
1537 1537
         # fe_sub(check,vxx,u);    /* vx^2-u */
1538
-        $vxx = self::fe_sq($h->X);
1539
-        $vxx = self::fe_mul($vxx, $v);
1540
-        $check = self::fe_sub($vxx, $u); /* vx^2 - u */
1538
+        $vxx = self::fe_sq( $h->X );
1539
+        $vxx = self::fe_mul( $vxx, $v );
1540
+        $check = self::fe_sub( $vxx, $u ); /* vx^2 - u */
1541 1541
 
1542 1542
         # if (fe_isnonzero(check)) {
1543 1543
         #     fe_add(check,vxx,u);  /* vx^2+u */
@@ -1546,27 +1546,27 @@  discard block
 block discarded – undo
1546 1546
         #     }
1547 1547
         #     fe_mul(h->X,h->X,sqrtm1);
1548 1548
         # }
1549
-        if (self::fe_isnonzero($check)) {
1550
-            $check = self::fe_add($vxx, $u); /* vx^2 + u */
1551
-            if (self::fe_isnonzero($check)) {
1552
-                throw new RangeException('Internal check failed.');
1549
+        if ( self::fe_isnonzero( $check ) ) {
1550
+            $check = self::fe_add( $vxx, $u ); /* vx^2 + u */
1551
+            if ( self::fe_isnonzero( $check ) ) {
1552
+                throw new RangeException( 'Internal check failed.' );
1553 1553
             }
1554 1554
             $h->X = self::fe_mul(
1555 1555
                 $h->X,
1556
-                ParagonIE_Sodium_Core32_Curve25519_Fe::fromIntArray(self::$sqrtm1)
1556
+                ParagonIE_Sodium_Core32_Curve25519_Fe::fromIntArray( self::$sqrtm1 )
1557 1557
             );
1558 1558
         }
1559 1559
 
1560 1560
         # if (fe_isnegative(h->X) == (s[31] >> 7)) {
1561 1561
         #     fe_neg(h->X,h->X);
1562 1562
         # }
1563
-        $i = self::chrToInt($s[31]);
1564
-        if (self::fe_isnegative($h->X) === ($i >> 7)) {
1565
-            $h->X = self::fe_neg($h->X);
1563
+        $i = self::chrToInt( $s[ 31 ] );
1564
+        if ( self::fe_isnegative( $h->X ) === ( $i >> 7 ) ) {
1565
+            $h->X = self::fe_neg( $h->X );
1566 1566
         }
1567 1567
 
1568 1568
         # fe_mul(h->T,h->X,h->Y);
1569
-        $h->T = self::fe_mul($h->X, $h->Y);
1569
+        $h->T = self::fe_mul( $h->X, $h->Y );
1570 1570
         return $h;
1571 1571
     }
1572 1572
 
@@ -1586,16 +1586,16 @@  discard block
 block discarded – undo
1586 1586
         ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
1587 1587
     ) {
1588 1588
         $r = clone $R;
1589
-        $r->X = self::fe_add($p->Y, $p->X);
1590
-        $r->Y = self::fe_sub($p->Y, $p->X);
1591
-        $r->Z = self::fe_mul($r->X, $q->yplusx);
1592
-        $r->Y = self::fe_mul($r->Y, $q->yminusx);
1593
-        $r->T = self::fe_mul($q->xy2d, $p->T);
1594
-        $t0 = self::fe_add(clone $p->Z, clone $p->Z);
1595
-        $r->X = self::fe_sub($r->Z, $r->Y);
1596
-        $r->Y = self::fe_add($r->Z, $r->Y);
1597
-        $r->Z = self::fe_add($t0, $r->T);
1598
-        $r->T = self::fe_sub($t0, $r->T);
1589
+        $r->X = self::fe_add( $p->Y, $p->X );
1590
+        $r->Y = self::fe_sub( $p->Y, $p->X );
1591
+        $r->Z = self::fe_mul( $r->X, $q->yplusx );
1592
+        $r->Y = self::fe_mul( $r->Y, $q->yminusx );
1593
+        $r->T = self::fe_mul( $q->xy2d, $p->T );
1594
+        $t0 = self::fe_add( clone $p->Z, clone $p->Z );
1595
+        $r->X = self::fe_sub( $r->Z, $r->Y );
1596
+        $r->Y = self::fe_add( $r->Z, $r->Y );
1597
+        $r->Z = self::fe_add( $t0, $r->T );
1598
+        $r->T = self::fe_sub( $t0, $r->T );
1599 1599
 
1600 1600
         return $r;
1601 1601
     }
@@ -1617,16 +1617,16 @@  discard block
 block discarded – undo
1617 1617
     ) {
1618 1618
         $r = clone $R;
1619 1619
 
1620
-        $r->X = self::fe_add($p->Y, $p->X);
1621
-        $r->Y = self::fe_sub($p->Y, $p->X);
1622
-        $r->Z = self::fe_mul($r->X, $q->yminusx);
1623
-        $r->Y = self::fe_mul($r->Y, $q->yplusx);
1624
-        $r->T = self::fe_mul($q->xy2d, $p->T);
1625
-        $t0 = self::fe_add($p->Z, $p->Z);
1626
-        $r->X = self::fe_sub($r->Z, $r->Y);
1627
-        $r->Y = self::fe_add($r->Z, $r->Y);
1628
-        $r->Z = self::fe_sub($t0, $r->T);
1629
-        $r->T = self::fe_add($t0, $r->T);
1620
+        $r->X = self::fe_add( $p->Y, $p->X );
1621
+        $r->Y = self::fe_sub( $p->Y, $p->X );
1622
+        $r->Z = self::fe_mul( $r->X, $q->yminusx );
1623
+        $r->Y = self::fe_mul( $r->Y, $q->yplusx );
1624
+        $r->T = self::fe_mul( $q->xy2d, $p->T );
1625
+        $t0 = self::fe_add( $p->Z, $p->Z );
1626
+        $r->X = self::fe_sub( $r->Z, $r->Y );
1627
+        $r->Y = self::fe_add( $r->Z, $r->Y );
1628
+        $r->Z = self::fe_sub( $t0, $r->T );
1629
+        $r->T = self::fe_add( $t0, $r->T );
1630 1630
 
1631 1631
         return $r;
1632 1632
     }
@@ -1639,12 +1639,12 @@  discard block
 block discarded – undo
1639 1639
      * @throws SodiumException
1640 1640
      * @throws TypeError
1641 1641
      */
1642
-    public static function ge_p1p1_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
1642
+    public static function ge_p1p1_to_p2( ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p )
1643 1643
     {
1644 1644
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P2();
1645
-        $r->X = self::fe_mul($p->X, $p->T);
1646
-        $r->Y = self::fe_mul($p->Y, $p->Z);
1647
-        $r->Z = self::fe_mul($p->Z, $p->T);
1645
+        $r->X = self::fe_mul( $p->X, $p->T );
1646
+        $r->Y = self::fe_mul( $p->Y, $p->Z );
1647
+        $r->Z = self::fe_mul( $p->Z, $p->T );
1648 1648
         return $r;
1649 1649
     }
1650 1650
 
@@ -1656,13 +1656,13 @@  discard block
 block discarded – undo
1656 1656
      * @throws SodiumException
1657 1657
      * @throws TypeError
1658 1658
      */
1659
-    public static function ge_p1p1_to_p3(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
1659
+    public static function ge_p1p1_to_p3( ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p )
1660 1660
     {
1661 1661
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3();
1662
-        $r->X = self::fe_mul($p->X, $p->T);
1663
-        $r->Y = self::fe_mul($p->Y, $p->Z);
1664
-        $r->Z = self::fe_mul($p->Z, $p->T);
1665
-        $r->T = self::fe_mul($p->X, $p->Y);
1662
+        $r->X = self::fe_mul( $p->X, $p->T );
1663
+        $r->Y = self::fe_mul( $p->Y, $p->Z );
1664
+        $r->Z = self::fe_mul( $p->Z, $p->T );
1665
+        $r->T = self::fe_mul( $p->X, $p->Y );
1666 1666
         return $r;
1667 1667
     }
1668 1668
 
@@ -1690,19 +1690,19 @@  discard block
 block discarded – undo
1690 1690
      * @throws SodiumException
1691 1691
      * @throws TypeError
1692 1692
      */
1693
-    public static function ge_p2_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p)
1693
+    public static function ge_p2_dbl( ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p )
1694 1694
     {
1695 1695
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1696 1696
 
1697
-        $r->X = self::fe_sq($p->X);
1698
-        $r->Z = self::fe_sq($p->Y);
1699
-        $r->T = self::fe_sq2($p->Z);
1700
-        $r->Y = self::fe_add($p->X, $p->Y);
1701
-        $t0   = self::fe_sq($r->Y);
1702
-        $r->Y = self::fe_add($r->Z, $r->X);
1703
-        $r->Z = self::fe_sub($r->Z, $r->X);
1704
-        $r->X = self::fe_sub($t0, $r->Y);
1705
-        $r->T = self::fe_sub($r->T, $r->Z);
1697
+        $r->X = self::fe_sq( $p->X );
1698
+        $r->Z = self::fe_sq( $p->Y );
1699
+        $r->T = self::fe_sq2( $p->Z );
1700
+        $r->Y = self::fe_add( $p->X, $p->Y );
1701
+        $t0   = self::fe_sq( $r->Y );
1702
+        $r->Y = self::fe_add( $r->Z, $r->X );
1703
+        $r->Z = self::fe_sub( $r->Z, $r->X );
1704
+        $r->X = self::fe_sub( $t0, $r->Y );
1705
+        $r->T = self::fe_sub( $r->T, $r->Z );
1706 1706
 
1707 1707
         return $r;
1708 1708
     }
@@ -1732,31 +1732,31 @@  discard block
 block discarded – undo
1732 1732
      * @throws SodiumException
1733 1733
      * @throws TypeError
1734 1734
      */
1735
-    public static function ge_p3_to_cached(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1735
+    public static function ge_p3_to_cached( ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p )
1736 1736
     {
1737 1737
         static $d2 = null;
1738
-        if ($d2 === null) {
1738
+        if ( $d2 === null ) {
1739 1739
             $d2 = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1740 1740
                 array(
1741
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[0]),
1742
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[1]),
1743
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[2]),
1744
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[3]),
1745
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[4]),
1746
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[5]),
1747
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[6]),
1748
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[7]),
1749
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[8]),
1750
-                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[9])
1741
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 0 ] ),
1742
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 1 ] ),
1743
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 2 ] ),
1744
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 3 ] ),
1745
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 4 ] ),
1746
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 5 ] ),
1747
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 6 ] ),
1748
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 7 ] ),
1749
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 8 ] ),
1750
+                    ParagonIE_Sodium_Core32_Int32::fromInt( self::$d2[ 9 ] )
1751 1751
                 )
1752 1752
             );
1753 1753
         }
1754 1754
         /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d2 */
1755 1755
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_Cached();
1756
-        $r->YplusX = self::fe_add($p->Y, $p->X);
1757
-        $r->YminusX = self::fe_sub($p->Y, $p->X);
1758
-        $r->Z = self::fe_copy($p->Z);
1759
-        $r->T2d = self::fe_mul($p->T, $d2);
1756
+        $r->YplusX = self::fe_add( $p->Y, $p->X );
1757
+        $r->YminusX = self::fe_sub( $p->Y, $p->X );
1758
+        $r->Z = self::fe_copy( $p->Z );
1759
+        $r->T2d = self::fe_mul( $p->T, $d2 );
1760 1760
         return $r;
1761 1761
     }
1762 1762
 
@@ -1766,7 +1766,7 @@  discard block
 block discarded – undo
1766 1766
      * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1767 1767
      * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
1768 1768
      */
1769
-    public static function ge_p3_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1769
+    public static function ge_p3_to_p2( ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p )
1770 1770
     {
1771 1771
         return new ParagonIE_Sodium_Core32_Curve25519_Ge_P2(
1772 1772
             $p->X,
@@ -1783,14 +1783,14 @@  discard block
 block discarded – undo
1783 1783
      * @throws SodiumException
1784 1784
      * @throws TypeError
1785 1785
      */
1786
-    public static function ge_p3_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h)
1786
+    public static function ge_p3_tobytes( ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h )
1787 1787
     {
1788
-        $recip = self::fe_invert($h->Z);
1789
-        $x = self::fe_mul($h->X, $recip);
1790
-        $y = self::fe_mul($h->Y, $recip);
1791
-        $s = self::fe_tobytes($y);
1792
-        $s[31] = self::intToChr(
1793
-            self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
1788
+        $recip = self::fe_invert( $h->Z );
1789
+        $x = self::fe_mul( $h->X, $recip );
1790
+        $y = self::fe_mul( $h->Y, $recip );
1791
+        $s = self::fe_tobytes( $y );
1792
+        $s[ 31 ] = self::intToChr(
1793
+            self::chrToInt( $s[ 31 ] ) ^ ( self::fe_isnegative( $x ) << 7 )
1794 1794
         );
1795 1795
         return $s;
1796 1796
     }
@@ -1803,10 +1803,10 @@  discard block
 block discarded – undo
1803 1803
      * @throws SodiumException
1804 1804
      * @throws TypeError
1805 1805
      */
1806
-    public static function ge_p3_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1806
+    public static function ge_p3_dbl( ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p )
1807 1807
     {
1808
-        $q = self::ge_p3_to_p2($p);
1809
-        return self::ge_p2_dbl($q);
1808
+        $q = self::ge_p3_to_p2( $p );
1809
+        return self::ge_p2_dbl( $q );
1810 1810
     }
1811 1811
 
1812 1812
     /**
@@ -1831,9 +1831,9 @@  discard block
 block discarded – undo
1831 1831
      * @return int
1832 1832
      * @psalm-suppress MixedReturnStatement
1833 1833
      */
1834
-    public static function equal($b, $c)
1834
+    public static function equal( $b, $c )
1835 1835
     {
1836
-        return (int) ((($b ^ $c) - 1 & 0xffffffff) >> 31);
1836
+        return (int)( ( ( $b ^ $c ) - 1 & 0xffffffff ) >> 31 );
1837 1837
     }
1838 1838
 
1839 1839
     /**
@@ -1844,15 +1844,15 @@  discard block
 block discarded – undo
1844 1844
      * @throws SodiumException
1845 1845
      * @throws TypeError
1846 1846
      */
1847
-    public static function negative($char)
1847
+    public static function negative( $char )
1848 1848
     {
1849
-        if (is_int($char)) {
1849
+        if ( is_int( $char ) ) {
1850 1850
             return $char < 0 ? 1 : 0;
1851 1851
         }
1852 1852
         /** @var string $char */
1853 1853
         /** @var int $x */
1854
-        $x = self::chrToInt(self::substr($char, 0, 1));
1855
-        return (int) ($x >> 31);
1854
+        $x = self::chrToInt( self::substr( $char, 0, 1 ) );
1855
+        return (int)( $x >> 31 );
1856 1856
     }
1857 1857
 
1858 1858
     /**
@@ -1872,13 +1872,13 @@  discard block
 block discarded – undo
1872 1872
         ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $u,
1873 1873
         $b
1874 1874
     ) {
1875
-        if (!is_int($b)) {
1876
-            throw new InvalidArgumentException('Expected an integer.');
1875
+        if ( ! is_int( $b ) ) {
1876
+            throw new InvalidArgumentException( 'Expected an integer.' );
1877 1877
         }
1878 1878
         return new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1879
-            self::fe_cmov($t->yplusx, $u->yplusx, $b),
1880
-            self::fe_cmov($t->yminusx, $u->yminusx, $b),
1881
-            self::fe_cmov($t->xy2d, $u->xy2d, $b)
1879
+            self::fe_cmov( $t->yplusx, $u->yplusx, $b ),
1880
+            self::fe_cmov( $t->yminusx, $u->yminusx, $b ),
1881
+            self::fe_cmov( $t->xy2d, $u->xy2d, $b )
1882 1882
         );
1883 1883
     }
1884 1884
 
@@ -1894,85 +1894,85 @@  discard block
 block discarded – undo
1894 1894
      * @psalm-suppress MixedArrayOffset
1895 1895
      * @psalm-suppress MixedArgument
1896 1896
      */
1897
-    public static function ge_select($pos = 0, $b = 0)
1897
+    public static function ge_select( $pos = 0, $b = 0 )
1898 1898
     {
1899 1899
         static $base = null;
1900
-        if ($base === null) {
1900
+        if ( $base === null ) {
1901 1901
             $base = array();
1902
-            foreach (self::$base as $i => $bas) {
1903
-                for ($j = 0; $j < 8; ++$j) {
1904
-                    $base[$i][$j] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1902
+            foreach ( self::$base as $i => $bas ) {
1903
+                for ( $j = 0; $j < 8; ++$j ) {
1904
+                    $base[ $i ][ $j ] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1905 1905
                         ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1906 1906
                             array(
1907
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][0]),
1908
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][1]),
1909
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][2]),
1910
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][3]),
1911
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][4]),
1912
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][5]),
1913
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][6]),
1914
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][7]),
1915
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][8]),
1916
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][9])
1907
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 0 ] ),
1908
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 1 ] ),
1909
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 2 ] ),
1910
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 3 ] ),
1911
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 4 ] ),
1912
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 5 ] ),
1913
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 6 ] ),
1914
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 7 ] ),
1915
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 8 ] ),
1916
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 0 ][ 9 ] )
1917 1917
                             )
1918 1918
                         ),
1919 1919
                         ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1920 1920
                             array(
1921
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][0]),
1922
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][1]),
1923
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][2]),
1924
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][3]),
1925
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][4]),
1926
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][5]),
1927
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][6]),
1928
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][7]),
1929
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][8]),
1930
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][9])
1921
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 0 ] ),
1922
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 1 ] ),
1923
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 2 ] ),
1924
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 3 ] ),
1925
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 4 ] ),
1926
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 5 ] ),
1927
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 6 ] ),
1928
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 7 ] ),
1929
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 8 ] ),
1930
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 1 ][ 9 ] )
1931 1931
                             )
1932 1932
                         ),
1933 1933
                         ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1934 1934
                             array(
1935
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][0]),
1936
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][1]),
1937
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][2]),
1938
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][3]),
1939
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][4]),
1940
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][5]),
1941
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][6]),
1942
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][7]),
1943
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][8]),
1944
-                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][9])
1935
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 0 ] ),
1936
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 1 ] ),
1937
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 2 ] ),
1938
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 3 ] ),
1939
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 4 ] ),
1940
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 5 ] ),
1941
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 6 ] ),
1942
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 7 ] ),
1943
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 8 ] ),
1944
+                                ParagonIE_Sodium_Core32_Int32::fromInt( $bas[ $j ][ 2 ][ 9 ] )
1945 1945
                             )
1946 1946
                         )
1947 1947
                     );
1948 1948
                 }
1949 1949
             }
1950 1950
         }
1951
-        if (!is_int($pos)) {
1952
-            throw new InvalidArgumentException('Position must be an integer');
1951
+        if ( ! is_int( $pos ) ) {
1952
+            throw new InvalidArgumentException( 'Position must be an integer' );
1953 1953
         }
1954
-        if ($pos < 0 || $pos > 31) {
1955
-            throw new RangeException('Position is out of range [0, 31]');
1954
+        if ( $pos < 0 || $pos > 31 ) {
1955
+            throw new RangeException( 'Position is out of range [0, 31]' );
1956 1956
         }
1957 1957
 
1958
-        $bnegative = self::negative($b);
1958
+        $bnegative = self::negative( $b );
1959 1959
         /** @var int $babs */
1960
-        $babs = $b - (((-$bnegative) & $b) << 1);
1960
+        $babs = $b - ( ( (-$bnegative) & $b ) << 1 );
1961 1961
 
1962 1962
         $t = self::ge_precomp_0();
1963
-        for ($i = 0; $i < 8; ++$i) {
1963
+        for ( $i = 0; $i < 8; ++$i ) {
1964 1964
             $t = self::cmov(
1965 1965
                 $t,
1966
-                $base[$pos][$i],
1967
-                self::equal($babs, $i + 1)
1966
+                $base[ $pos ][ $i ],
1967
+                self::equal( $babs, $i + 1 )
1968 1968
             );
1969 1969
         }
1970 1970
         $minusT = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1971
-            self::fe_copy($t->yminusx),
1972
-            self::fe_copy($t->yplusx),
1973
-            self::fe_neg($t->xy2d)
1971
+            self::fe_copy( $t->yminusx ),
1972
+            self::fe_copy( $t->yplusx ),
1973
+            self::fe_neg( $t->xy2d )
1974 1974
         );
1975
-        return self::cmov($t, $minusT, -$bnegative);
1975
+        return self::cmov( $t, $minusT, -$bnegative );
1976 1976
     }
1977 1977
 
1978 1978
     /**
@@ -1994,17 +1994,17 @@  discard block
 block discarded – undo
1994 1994
     ) {
1995 1995
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1996 1996
 
1997
-        $r->X = self::fe_add($p->Y, $p->X);
1998
-        $r->Y = self::fe_sub($p->Y, $p->X);
1999
-        $r->Z = self::fe_mul($r->X, $q->YminusX);
2000
-        $r->Y = self::fe_mul($r->Y, $q->YplusX);
2001
-        $r->T = self::fe_mul($q->T2d, $p->T);
2002
-        $r->X = self::fe_mul($p->Z, $q->Z);
2003
-        $t0 = self::fe_add($r->X, $r->X);
2004
-        $r->X = self::fe_sub($r->Z, $r->Y);
2005
-        $r->Y = self::fe_add($r->Z, $r->Y);
2006
-        $r->Z = self::fe_sub($t0, $r->T);
2007
-        $r->T = self::fe_add($t0, $r->T);
1997
+        $r->X = self::fe_add( $p->Y, $p->X );
1998
+        $r->Y = self::fe_sub( $p->Y, $p->X );
1999
+        $r->Z = self::fe_mul( $r->X, $q->YminusX );
2000
+        $r->Y = self::fe_mul( $r->Y, $q->YplusX );
2001
+        $r->T = self::fe_mul( $q->T2d, $p->T );
2002
+        $r->X = self::fe_mul( $p->Z, $q->Z );
2003
+        $t0 = self::fe_add( $r->X, $r->X );
2004
+        $r->X = self::fe_sub( $r->Z, $r->Y );
2005
+        $r->Y = self::fe_add( $r->Z, $r->Y );
2006
+        $r->Z = self::fe_sub( $t0, $r->T );
2007
+        $r->T = self::fe_add( $t0, $r->T );
2008 2008
 
2009 2009
         return $r;
2010 2010
     }
@@ -2017,14 +2017,14 @@  discard block
 block discarded – undo
2017 2017
      * @throws SodiumException
2018 2018
      * @throws TypeError
2019 2019
      */
2020
-    public static function ge_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h)
2020
+    public static function ge_tobytes( ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h )
2021 2021
     {
2022
-        $recip = self::fe_invert($h->Z);
2023
-        $x = self::fe_mul($h->X, $recip);
2024
-        $y = self::fe_mul($h->Y, $recip);
2025
-        $s = self::fe_tobytes($y);
2026
-        $s[31] = self::intToChr(
2027
-            self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
2022
+        $recip = self::fe_invert( $h->Z );
2023
+        $x = self::fe_mul( $h->X, $recip );
2024
+        $y = self::fe_mul( $h->Y, $recip );
2025
+        $s = self::fe_tobytes( $y );
2026
+        $s[ 31 ] = self::intToChr(
2027
+            self::chrToInt( $s[ 31 ] ) ^ ( self::fe_isnegative( $x ) << 7 )
2028 2028
         );
2029 2029
         return $s;
2030 2030
     }
@@ -2050,57 +2050,57 @@  discard block
 block discarded – undo
2050 2050
 
2051 2051
         static $Bi = array();
2052 2052
         /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp> $Bi */
2053
-        if (!$Bi) {
2054
-            for ($i = 0; $i < 8; ++$i) {
2055
-                $Bi[$i] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
2053
+        if ( ! $Bi ) {
2054
+            for ( $i = 0; $i < 8; ++$i ) {
2055
+                $Bi[ $i ] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
2056 2056
                     ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
2057 2057
                         array(
2058
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][0]),
2059
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][1]),
2060
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][2]),
2061
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][3]),
2062
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][4]),
2063
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][5]),
2064
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][6]),
2065
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][7]),
2066
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][8]),
2067
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][9])
2058
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 0 ] ),
2059
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 1 ] ),
2060
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 2 ] ),
2061
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 3 ] ),
2062
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 4 ] ),
2063
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 5 ] ),
2064
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 6 ] ),
2065
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 7 ] ),
2066
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 8 ] ),
2067
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 0 ][ 9 ] )
2068 2068
                         )
2069 2069
                     ),
2070 2070
                     ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
2071 2071
                         array(
2072
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][0]),
2073
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][1]),
2074
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][2]),
2075
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][3]),
2076
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][4]),
2077
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][5]),
2078
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][6]),
2079
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][7]),
2080
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][8]),
2081
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][9])
2072
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 0 ] ),
2073
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 1 ] ),
2074
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 2 ] ),
2075
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 3 ] ),
2076
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 4 ] ),
2077
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 5 ] ),
2078
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 6 ] ),
2079
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 7 ] ),
2080
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 8 ] ),
2081
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 1 ][ 9 ] )
2082 2082
                         )
2083 2083
                     ),
2084 2084
                     ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
2085 2085
                         array(
2086
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][0]),
2087
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][1]),
2088
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][2]),
2089
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][3]),
2090
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][4]),
2091
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][5]),
2092
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][6]),
2093
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][7]),
2094
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][8]),
2095
-                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][9])
2086
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 0 ] ),
2087
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 1 ] ),
2088
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 2 ] ),
2089
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 3 ] ),
2090
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 4 ] ),
2091
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 5 ] ),
2092
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 6 ] ),
2093
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 7 ] ),
2094
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 8 ] ),
2095
+                            ParagonIE_Sodium_Core32_Int32::fromInt( self::$base2[ $i ][ 2 ][ 9 ] )
2096 2096
                         )
2097 2097
                     )
2098 2098
                 );
2099 2099
             }
2100 2100
         }
2101 2101
 
2102
-        for ($i = 0; $i < 8; ++$i) {
2103
-            $Ai[$i] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Cached(
2102
+        for ( $i = 0; $i < 8; ++$i ) {
2103
+            $Ai[ $i ] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Cached(
2104 2104
                 self::fe_0(),
2105 2105
                 self::fe_0(),
2106 2106
                 self::fe_0(),
@@ -2112,15 +2112,15 @@  discard block
 block discarded – undo
2112 2112
         # slide(aslide,a);
2113 2113
         # slide(bslide,b);
2114 2114
         /** @var array<int, int> $aslide */
2115
-        $aslide = self::slide($a);
2115
+        $aslide = self::slide( $a );
2116 2116
         /** @var array<int, int> $bslide */
2117
-        $bslide = self::slide($b);
2117
+        $bslide = self::slide( $b );
2118 2118
 
2119 2119
         # ge_p3_to_cached(&Ai[0],A);
2120 2120
         # ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);
2121
-        $Ai[0] = self::ge_p3_to_cached($A);
2122
-        $t = self::ge_p3_dbl($A);
2123
-        $A2 = self::ge_p1p1_to_p3($t);
2121
+        $Ai[ 0 ] = self::ge_p3_to_cached( $A );
2122
+        $t = self::ge_p3_dbl( $A );
2123
+        $A2 = self::ge_p1p1_to_p3( $t );
2124 2124
 
2125 2125
         # ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u);
2126 2126
         # ge_add(&t,&A2,&Ai[1]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[2],&u);
@@ -2129,10 +2129,10 @@  discard block
 block discarded – undo
2129 2129
         # ge_add(&t,&A2,&Ai[4]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[5],&u);
2130 2130
         # ge_add(&t,&A2,&Ai[5]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[6],&u);
2131 2131
         # ge_add(&t,&A2,&Ai[6]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[7],&u);
2132
-        for ($i = 0; $i < 7; ++$i) {
2133
-            $t = self::ge_add($A2, $Ai[$i]);
2134
-            $u = self::ge_p1p1_to_p3($t);
2135
-            $Ai[$i + 1] = self::ge_p3_to_cached($u);
2132
+        for ( $i = 0; $i < 7; ++$i ) {
2133
+            $t = self::ge_add( $A2, $Ai[ $i ] );
2134
+            $u = self::ge_p1p1_to_p3( $t );
2135
+            $Ai[ $i + 1 ] = self::ge_p3_to_cached( $u );
2136 2136
         }
2137 2137
 
2138 2138
         # ge_p2_0(r);
@@ -2142,63 +2142,63 @@  discard block
 block discarded – undo
2142 2142
         #     if (aslide[i] || bslide[i]) break;
2143 2143
         # }
2144 2144
         $i = 255;
2145
-        for (; $i >= 0; --$i) {
2146
-            if ($aslide[$i] || $bslide[$i]) {
2145
+        for ( ; $i >= 0; --$i ) {
2146
+            if ( $aslide[ $i ] || $bslide[ $i ] ) {
2147 2147
                 break;
2148 2148
             }
2149 2149
         }
2150 2150
 
2151 2151
         # for (;i >= 0;--i) {
2152
-        for (; $i >= 0; --$i) {
2152
+        for ( ; $i >= 0; --$i ) {
2153 2153
             # ge_p2_dbl(&t,r);
2154
-            $t = self::ge_p2_dbl($r);
2154
+            $t = self::ge_p2_dbl( $r );
2155 2155
 
2156 2156
             # if (aslide[i] > 0) {
2157
-            if ($aslide[$i] > 0) {
2157
+            if ( $aslide[ $i ] > 0 ) {
2158 2158
                 # ge_p1p1_to_p3(&u,&t);
2159 2159
                 # ge_add(&t,&u,&Ai[aslide[i]/2]);
2160
-                $u = self::ge_p1p1_to_p3($t);
2160
+                $u = self::ge_p1p1_to_p3( $t );
2161 2161
                 $t = self::ge_add(
2162 2162
                     $u,
2163
-                    $Ai[(int) floor($aslide[$i] / 2)]
2163
+                    $Ai[ (int)floor( $aslide[ $i ] / 2 ) ]
2164 2164
                 );
2165 2165
                 # } else if (aslide[i] < 0) {
2166
-            } elseif ($aslide[$i] < 0) {
2166
+            } elseif ( $aslide[ $i ] < 0 ) {
2167 2167
                 # ge_p1p1_to_p3(&u,&t);
2168 2168
                 # ge_sub(&t,&u,&Ai[(-aslide[i])/2]);
2169
-                $u = self::ge_p1p1_to_p3($t);
2169
+                $u = self::ge_p1p1_to_p3( $t );
2170 2170
                 $t = self::ge_sub(
2171 2171
                     $u,
2172
-                    $Ai[(int) floor(-$aslide[$i] / 2)]
2172
+                    $Ai[ (int)floor(-$aslide[ $i ] / 2) ]
2173 2173
                 );
2174 2174
             }
2175 2175
             /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp> $Bi */
2176 2176
 
2177 2177
             # if (bslide[i] > 0) {
2178
-            if ($bslide[$i] > 0) {
2178
+            if ( $bslide[ $i ] > 0 ) {
2179 2179
                 # ge_p1p1_to_p3(&u,&t);
2180 2180
                 # ge_madd(&t,&u,&Bi[bslide[i]/2]);
2181
-                $u = self::ge_p1p1_to_p3($t);
2181
+                $u = self::ge_p1p1_to_p3( $t );
2182 2182
                 /** @var int $index */
2183
-                $index = (int) floor($bslide[$i] / 2);
2183
+                $index = (int)floor( $bslide[ $i ] / 2 );
2184 2184
                 /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $thisB */
2185
-                $thisB = $Bi[$index];
2186
-                $t = self::ge_madd($t, $u, $thisB);
2185
+                $thisB = $Bi[ $index ];
2186
+                $t = self::ge_madd( $t, $u, $thisB );
2187 2187
                 # } else if (bslide[i] < 0) {
2188
-            } elseif ($bslide[$i] < 0) {
2188
+            } elseif ( $bslide[ $i ] < 0 ) {
2189 2189
                 # ge_p1p1_to_p3(&u,&t);
2190 2190
                 # ge_msub(&t,&u,&Bi[(-bslide[i])/2]);
2191
-                $u = self::ge_p1p1_to_p3($t);
2191
+                $u = self::ge_p1p1_to_p3( $t );
2192 2192
 
2193 2193
                 /** @var int $index */
2194
-                $index = (int) floor(-$bslide[$i] / 2);
2194
+                $index = (int)floor(-$bslide[ $i ] / 2);
2195 2195
 
2196 2196
                 /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $thisB */
2197
-                $thisB = $Bi[$index];
2198
-                $t = self::ge_msub($t, $u, $thisB);
2197
+                $thisB = $Bi[ $index ];
2198
+                $t = self::ge_msub( $t, $u, $thisB );
2199 2199
             }
2200 2200
             # ge_p1p1_to_p2(r,&t);
2201
-            $r = self::ge_p1p1_to_p2($t);
2201
+            $r = self::ge_p1p1_to_p2( $t );
2202 2202
         }
2203 2203
         return $r;
2204 2204
     }
@@ -2213,56 +2213,56 @@  discard block
 block discarded – undo
2213 2213
      * @throws SodiumException
2214 2214
      * @throws TypeError
2215 2215
      */
2216
-    public static function ge_scalarmult_base($a)
2216
+    public static function ge_scalarmult_base( $a )
2217 2217
     {
2218 2218
         /** @var array<int, int> $e */
2219 2219
         $e = array();
2220 2220
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
2221 2221
 
2222
-        for ($i = 0; $i < 32; ++$i) {
2222
+        for ( $i = 0; $i < 32; ++$i ) {
2223 2223
             /** @var int $dbl */
2224
-            $dbl = (int) $i << 1;
2225
-            $e[$dbl] = (int) self::chrToInt($a[$i]) & 15;
2226
-            $e[$dbl + 1] = (int) (self::chrToInt($a[$i]) >> 4) & 15;
2224
+            $dbl = (int)$i << 1;
2225
+            $e[ $dbl ] = (int)self::chrToInt( $a[ $i ] ) & 15;
2226
+            $e[ $dbl + 1 ] = (int)( self::chrToInt( $a[ $i ] ) >> 4 ) & 15;
2227 2227
         }
2228 2228
 
2229 2229
         /** @var int $carry */
2230 2230
         $carry = 0;
2231
-        for ($i = 0; $i < 63; ++$i) {
2232
-            $e[$i] += $carry;
2231
+        for ( $i = 0; $i < 63; ++$i ) {
2232
+            $e[ $i ] += $carry;
2233 2233
             /** @var int $carry */
2234
-            $carry = $e[$i] + 8;
2234
+            $carry = $e[ $i ] + 8;
2235 2235
             /** @var int $carry */
2236 2236
             $carry >>= 4;
2237
-            $e[$i] -= $carry << 4;
2237
+            $e[ $i ] -= $carry << 4;
2238 2238
         }
2239 2239
 
2240 2240
         /** @var array<int, int> $e */
2241
-        $e[63] += (int) $carry;
2241
+        $e[ 63 ] += (int)$carry;
2242 2242
 
2243 2243
         $h = self::ge_p3_0();
2244 2244
 
2245
-        for ($i = 1; $i < 64; $i += 2) {
2246
-            $t = self::ge_select((int) floor($i / 2), (int) $e[$i]);
2247
-            $r = self::ge_madd($r, $h, $t);
2248
-            $h = self::ge_p1p1_to_p3($r);
2245
+        for ( $i = 1; $i < 64; $i += 2 ) {
2246
+            $t = self::ge_select( (int)floor( $i / 2 ), (int)$e[ $i ] );
2247
+            $r = self::ge_madd( $r, $h, $t );
2248
+            $h = self::ge_p1p1_to_p3( $r );
2249 2249
         }
2250 2250
 
2251
-        $r = self::ge_p3_dbl($h);
2251
+        $r = self::ge_p3_dbl( $h );
2252 2252
 
2253
-        $s = self::ge_p1p1_to_p2($r);
2254
-        $r = self::ge_p2_dbl($s);
2255
-        $s = self::ge_p1p1_to_p2($r);
2256
-        $r = self::ge_p2_dbl($s);
2257
-        $s = self::ge_p1p1_to_p2($r);
2258
-        $r = self::ge_p2_dbl($s);
2253
+        $s = self::ge_p1p1_to_p2( $r );
2254
+        $r = self::ge_p2_dbl( $s );
2255
+        $s = self::ge_p1p1_to_p2( $r );
2256
+        $r = self::ge_p2_dbl( $s );
2257
+        $s = self::ge_p1p1_to_p2( $r );
2258
+        $r = self::ge_p2_dbl( $s );
2259 2259
 
2260
-        $h = self::ge_p1p1_to_p3($r);
2260
+        $h = self::ge_p1p1_to_p3( $r );
2261 2261
 
2262
-        for ($i = 0; $i < 64; $i += 2) {
2263
-            $t = self::ge_select($i >> 1, (int) $e[$i]);
2264
-            $r = self::ge_madd($r, $h, $t);
2265
-            $h = self::ge_p1p1_to_p3($r);
2262
+        for ( $i = 0; $i < 64; $i += 2 ) {
2263
+            $t = self::ge_select( $i >> 1, (int)$e[ $i ] );
2264
+            $r = self::ge_madd( $r, $h, $t );
2265
+            $h = self::ge_p1p1_to_p3( $r );
2266 2266
         }
2267 2267
         return $h;
2268 2268
     }
@@ -2280,44 +2280,44 @@  discard block
 block discarded – undo
2280 2280
      * @throws SodiumException
2281 2281
      * @throws TypeError
2282 2282
      */
2283
-    public static function sc_muladd($a, $b, $c)
2283
+    public static function sc_muladd( $a, $b, $c )
2284 2284
     {
2285
-        $a0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 0, 3)));
2286
-        $a1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 2, 4)) >> 5));
2287
-        $a2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 5, 3)) >> 2));
2288
-        $a3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 7, 4)) >> 7));
2289
-        $a4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 10, 4)) >> 4));
2290
-        $a5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 13, 3)) >> 1));
2291
-        $a6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 15, 4)) >> 6));
2292
-        $a7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 18, 3)) >> 3));
2293
-        $a8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 21, 3)));
2294
-        $a9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 23, 4)) >> 5));
2295
-        $a10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 26, 3)) >> 2));
2296
-        $a11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($a, 28, 4)) >> 7));
2297
-        $b0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 0, 3)));
2298
-        $b1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 2, 4)) >> 5));
2299
-        $b2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 5, 3)) >> 2));
2300
-        $b3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 7, 4)) >> 7));
2301
-        $b4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 10, 4)) >> 4));
2302
-        $b5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 13, 3)) >> 1));
2303
-        $b6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 15, 4)) >> 6));
2304
-        $b7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 18, 3)) >> 3));
2305
-        $b8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 21, 3)));
2306
-        $b9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 23, 4)) >> 5));
2307
-        $b10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 26, 3)) >> 2));
2308
-        $b11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($b, 28, 4)) >> 7));
2309
-        $c0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 0, 3)));
2310
-        $c1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 2, 4)) >> 5));
2311
-        $c2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 5, 3)) >> 2));
2312
-        $c3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 7, 4)) >> 7));
2313
-        $c4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 10, 4)) >> 4));
2314
-        $c5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 13, 3)) >> 1));
2315
-        $c6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 15, 4)) >> 6));
2316
-        $c7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 18, 3)) >> 3));
2317
-        $c8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 21, 3)));
2318
-        $c9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 23, 4)) >> 5));
2319
-        $c10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 26, 3)) >> 2));
2320
-        $c11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($c, 28, 4)) >> 7));
2285
+        $a0 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & self::load_3( self::substr( $a, 0, 3 ) ) );
2286
+        $a1 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $a, 2, 4 ) ) >> 5 ) );
2287
+        $a2 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $a, 5, 3 ) ) >> 2 ) );
2288
+        $a3 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $a, 7, 4 ) ) >> 7 ) );
2289
+        $a4 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $a, 10, 4 ) ) >> 4 ) );
2290
+        $a5 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $a, 13, 3 ) ) >> 1 ) );
2291
+        $a6 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $a, 15, 4 ) ) >> 6 ) );
2292
+        $a7 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $a, 18, 3 ) ) >> 3 ) );
2293
+        $a8 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & self::load_3( self::substr( $a, 21, 3 ) ) );
2294
+        $a9 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $a, 23, 4 ) ) >> 5 ) );
2295
+        $a10 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $a, 26, 3 ) ) >> 2 ) );
2296
+        $a11 = ParagonIE_Sodium_Core32_Int64::fromInt( 0x1fffffff & ( self::load_4( self::substr( $a, 28, 4 ) ) >> 7 ) );
2297
+        $b0 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & self::load_3( self::substr( $b, 0, 3 ) ) );
2298
+        $b1 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $b, 2, 4 ) ) >> 5 ) );
2299
+        $b2 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $b, 5, 3 ) ) >> 2 ) );
2300
+        $b3 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $b, 7, 4 ) ) >> 7 ) );
2301
+        $b4 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $b, 10, 4 ) ) >> 4 ) );
2302
+        $b5 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $b, 13, 3 ) ) >> 1 ) );
2303
+        $b6 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $b, 15, 4 ) ) >> 6 ) );
2304
+        $b7 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $b, 18, 3 ) ) >> 3 ) );
2305
+        $b8 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & self::load_3( self::substr( $b, 21, 3 ) ) );
2306
+        $b9 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $b, 23, 4 ) ) >> 5 ) );
2307
+        $b10 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $b, 26, 3 ) ) >> 2 ) );
2308
+        $b11 = ParagonIE_Sodium_Core32_Int64::fromInt( 0x1fffffff & ( self::load_4( self::substr( $b, 28, 4 ) ) >> 7 ) );
2309
+        $c0 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & self::load_3( self::substr( $c, 0, 3 ) ) );
2310
+        $c1 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $c, 2, 4 ) ) >> 5 ) );
2311
+        $c2 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $c, 5, 3 ) ) >> 2 ) );
2312
+        $c3 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $c, 7, 4 ) ) >> 7 ) );
2313
+        $c4 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $c, 10, 4 ) ) >> 4 ) );
2314
+        $c5 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $c, 13, 3 ) ) >> 1 ) );
2315
+        $c6 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $c, 15, 4 ) ) >> 6 ) );
2316
+        $c7 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $c, 18, 3 ) ) >> 3 ) );
2317
+        $c8 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & self::load_3( self::substr( $c, 21, 3 ) ) );
2318
+        $c9 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $c, 23, 4 ) ) >> 5 ) );
2319
+        $c10 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $c, 26, 3 ) ) >> 2 ) );
2320
+        $c11 = ParagonIE_Sodium_Core32_Int64::fromInt( 0x1fffffff & ( self::load_4( self::substr( $c, 28, 4 ) ) >> 7 ) );
2321 2321
 
2322 2322
         /* Can't really avoid the pyramid here: */
2323 2323
         /**
@@ -2347,389 +2347,389 @@  discard block
 block discarded – undo
2347 2347
          * @var ParagonIE_Sodium_Core32_Int64 $s23
2348 2348
          */
2349 2349
 
2350
-        $s0 = $c0->addInt64($a0->mulInt64($b0, 24));
2351
-        $s1 = $c1->addInt64($a0->mulInt64($b1, 24))->addInt64($a1->mulInt64($b0, 24));
2352
-        $s2 = $c2->addInt64($a0->mulInt64($b2, 24))->addInt64($a1->mulInt64($b1, 24))->addInt64($a2->mulInt64($b0, 24));
2353
-        $s3 = $c3->addInt64($a0->mulInt64($b3, 24))->addInt64($a1->mulInt64($b2, 24))->addInt64($a2->mulInt64($b1, 24))
2354
-                 ->addInt64($a3->mulInt64($b0, 24));
2355
-        $s4 = $c4->addInt64($a0->mulInt64($b4, 24))->addInt64($a1->mulInt64($b3, 24))->addInt64($a2->mulInt64($b2, 24))
2356
-                 ->addInt64($a3->mulInt64($b1, 24))->addInt64($a4->mulInt64($b0, 24));
2357
-        $s5 = $c5->addInt64($a0->mulInt64($b5, 24))->addInt64($a1->mulInt64($b4, 24))->addInt64($a2->mulInt64($b3, 24))
2358
-                 ->addInt64($a3->mulInt64($b2, 24))->addInt64($a4->mulInt64($b1, 24))->addInt64($a5->mulInt64($b0, 24));
2359
-        $s6 = $c6->addInt64($a0->mulInt64($b6, 24))->addInt64($a1->mulInt64($b5, 24))->addInt64($a2->mulInt64($b4, 24))
2360
-                 ->addInt64($a3->mulInt64($b3, 24))->addInt64($a4->mulInt64($b2, 24))->addInt64($a5->mulInt64($b1, 24))
2361
-                 ->addInt64($a6->mulInt64($b0, 24));
2362
-        $s7 = $c7->addInt64($a0->mulInt64($b7, 24))->addInt64($a1->mulInt64($b6, 24))->addInt64($a2->mulInt64($b5, 24))
2363
-                 ->addInt64($a3->mulInt64($b4, 24))->addInt64($a4->mulInt64($b3, 24))->addInt64($a5->mulInt64($b2, 24))
2364
-                 ->addInt64($a6->mulInt64($b1, 24))->addInt64($a7->mulInt64($b0, 24));
2365
-        $s8 = $c8->addInt64($a0->mulInt64($b8, 24))->addInt64($a1->mulInt64($b7, 24))->addInt64($a2->mulInt64($b6, 24))
2366
-                 ->addInt64($a3->mulInt64($b5, 24))->addInt64($a4->mulInt64($b4, 24))->addInt64($a5->mulInt64($b3, 24))
2367
-                 ->addInt64($a6->mulInt64($b2, 24))->addInt64($a7->mulInt64($b1, 24))->addInt64($a8->mulInt64($b0, 24));
2368
-        $s9 = $c9->addInt64($a0->mulInt64($b9, 24))->addInt64($a1->mulInt64($b8, 24))->addInt64($a2->mulInt64($b7, 24))
2369
-                 ->addInt64($a3->mulInt64($b6, 24))->addInt64($a4->mulInt64($b5, 24))->addInt64($a5->mulInt64($b4, 24))
2370
-                 ->addInt64($a6->mulInt64($b3, 24))->addInt64($a7->mulInt64($b2, 24))->addInt64($a8->mulInt64($b1, 24))
2371
-                 ->addInt64($a9->mulInt64($b0, 24));
2372
-        $s10 = $c10->addInt64($a0->mulInt64($b10, 24))->addInt64($a1->mulInt64($b9, 24))->addInt64($a2->mulInt64($b8, 24))
2373
-                   ->addInt64($a3->mulInt64($b7, 24))->addInt64($a4->mulInt64($b6, 24))->addInt64($a5->mulInt64($b5, 24))
2374
-                   ->addInt64($a6->mulInt64($b4, 24))->addInt64($a7->mulInt64($b3, 24))->addInt64($a8->mulInt64($b2, 24))
2375
-                   ->addInt64($a9->mulInt64($b1, 24))->addInt64($a10->mulInt64($b0, 24));
2376
-        $s11 = $c11->addInt64($a0->mulInt64($b11, 24))->addInt64($a1->mulInt64($b10, 24))->addInt64($a2->mulInt64($b9, 24))
2377
-                   ->addInt64($a3->mulInt64($b8, 24))->addInt64($a4->mulInt64($b7, 24))->addInt64($a5->mulInt64($b6, 24))
2378
-                   ->addInt64($a6->mulInt64($b5, 24))->addInt64($a7->mulInt64($b4, 24))->addInt64($a8->mulInt64($b3, 24))
2379
-                   ->addInt64($a9->mulInt64($b2, 24))->addInt64($a10->mulInt64($b1, 24))->addInt64($a11->mulInt64($b0, 24));
2380
-        $s12 = $a1->mulInt64($b11, 24)->addInt64($a2->mulInt64($b10, 24))->addInt64($a3->mulInt64($b9, 24))
2381
-                  ->addInt64($a4->mulInt64($b8, 24))->addInt64($a5->mulInt64($b7, 24))->addInt64($a6->mulInt64($b6, 24))
2382
-                  ->addInt64($a7->mulInt64($b5, 24))->addInt64($a8->mulInt64($b4, 24))->addInt64($a9->mulInt64($b3, 24))
2383
-                  ->addInt64($a10->mulInt64($b2, 24))->addInt64($a11->mulInt64($b1, 24));
2384
-        $s13 = $a2->mulInt64($b11, 24)->addInt64($a3->mulInt64($b10, 24))->addInt64($a4->mulInt64($b9, 24))
2385
-                  ->addInt64($a5->mulInt64($b8, 24))->addInt64($a6->mulInt64($b7, 24))->addInt64($a7->mulInt64($b6, 24))
2386
-                  ->addInt64($a8->mulInt64($b5, 24))->addInt64($a9->mulInt64($b4, 24))->addInt64($a10->mulInt64($b3, 24))
2387
-                  ->addInt64($a11->mulInt64($b2, 24));
2388
-        $s14 = $a3->mulInt64($b11, 24)->addInt64($a4->mulInt64($b10, 24))->addInt64($a5->mulInt64($b9, 24))
2389
-                  ->addInt64($a6->mulInt64($b8, 24))->addInt64($a7->mulInt64($b7, 24))->addInt64($a8->mulInt64($b6, 24))
2390
-                  ->addInt64($a9->mulInt64($b5, 24))->addInt64($a10->mulInt64($b4, 24))->addInt64($a11->mulInt64($b3, 24));
2391
-        $s15 = $a4->mulInt64($b11, 24)->addInt64($a5->mulInt64($b10, 24))->addInt64($a6->mulInt64($b9, 24))
2392
-                  ->addInt64($a7->mulInt64($b8, 24))->addInt64($a8->mulInt64($b7, 24))->addInt64($a9->mulInt64($b6, 24))
2393
-                  ->addInt64($a10->mulInt64($b5, 24))->addInt64($a11->mulInt64($b4, 24));
2394
-        $s16 = $a5->mulInt64($b11, 24)->addInt64($a6->mulInt64($b10, 24))->addInt64($a7->mulInt64($b9, 24))
2395
-                  ->addInt64($a8->mulInt64($b8, 24))->addInt64($a9->mulInt64($b7, 24))->addInt64($a10->mulInt64($b6, 24))
2396
-                  ->addInt64($a11->mulInt64($b5, 24));
2397
-        $s17 = $a6->mulInt64($b11, 24)->addInt64($a7->mulInt64($b10, 24))->addInt64($a8->mulInt64($b9, 24))
2398
-                  ->addInt64($a9->mulInt64($b8, 24))->addInt64($a10->mulInt64($b7, 24))->addInt64($a11->mulInt64($b6, 24));
2399
-        $s18 = $a7->mulInt64($b11, 24)->addInt64($a8->mulInt64($b10, 24))->addInt64($a9->mulInt64($b9, 24))
2400
-                  ->addInt64($a10->mulInt64($b8, 24))->addInt64($a11->mulInt64($b7, 24));
2401
-        $s19 = $a8->mulInt64($b11, 24)->addInt64($a9->mulInt64($b10, 24))->addInt64($a10->mulInt64($b9, 24))
2402
-                  ->addInt64($a11->mulInt64($b8, 24));
2403
-        $s20 = $a9->mulInt64($b11, 24)->addInt64($a10->mulInt64($b10, 24))->addInt64($a11->mulInt64($b9, 24));
2404
-        $s21 = $a10->mulInt64($b11, 24)->addInt64($a11->mulInt64($b10, 24));
2405
-        $s22 = $a11->mulInt64($b11, 24);
2350
+        $s0 = $c0->addInt64( $a0->mulInt64( $b0, 24 ) );
2351
+        $s1 = $c1->addInt64( $a0->mulInt64( $b1, 24 ) )->addInt64( $a1->mulInt64( $b0, 24 ) );
2352
+        $s2 = $c2->addInt64( $a0->mulInt64( $b2, 24 ) )->addInt64( $a1->mulInt64( $b1, 24 ) )->addInt64( $a2->mulInt64( $b0, 24 ) );
2353
+        $s3 = $c3->addInt64( $a0->mulInt64( $b3, 24 ) )->addInt64( $a1->mulInt64( $b2, 24 ) )->addInt64( $a2->mulInt64( $b1, 24 ) )
2354
+                 ->addInt64( $a3->mulInt64( $b0, 24 ) );
2355
+        $s4 = $c4->addInt64( $a0->mulInt64( $b4, 24 ) )->addInt64( $a1->mulInt64( $b3, 24 ) )->addInt64( $a2->mulInt64( $b2, 24 ) )
2356
+                 ->addInt64( $a3->mulInt64( $b1, 24 ) )->addInt64( $a4->mulInt64( $b0, 24 ) );
2357
+        $s5 = $c5->addInt64( $a0->mulInt64( $b5, 24 ) )->addInt64( $a1->mulInt64( $b4, 24 ) )->addInt64( $a2->mulInt64( $b3, 24 ) )
2358
+                 ->addInt64( $a3->mulInt64( $b2, 24 ) )->addInt64( $a4->mulInt64( $b1, 24 ) )->addInt64( $a5->mulInt64( $b0, 24 ) );
2359
+        $s6 = $c6->addInt64( $a0->mulInt64( $b6, 24 ) )->addInt64( $a1->mulInt64( $b5, 24 ) )->addInt64( $a2->mulInt64( $b4, 24 ) )
2360
+                 ->addInt64( $a3->mulInt64( $b3, 24 ) )->addInt64( $a4->mulInt64( $b2, 24 ) )->addInt64( $a5->mulInt64( $b1, 24 ) )
2361
+                 ->addInt64( $a6->mulInt64( $b0, 24 ) );
2362
+        $s7 = $c7->addInt64( $a0->mulInt64( $b7, 24 ) )->addInt64( $a1->mulInt64( $b6, 24 ) )->addInt64( $a2->mulInt64( $b5, 24 ) )
2363
+                 ->addInt64( $a3->mulInt64( $b4, 24 ) )->addInt64( $a4->mulInt64( $b3, 24 ) )->addInt64( $a5->mulInt64( $b2, 24 ) )
2364
+                 ->addInt64( $a6->mulInt64( $b1, 24 ) )->addInt64( $a7->mulInt64( $b0, 24 ) );
2365
+        $s8 = $c8->addInt64( $a0->mulInt64( $b8, 24 ) )->addInt64( $a1->mulInt64( $b7, 24 ) )->addInt64( $a2->mulInt64( $b6, 24 ) )
2366
+                 ->addInt64( $a3->mulInt64( $b5, 24 ) )->addInt64( $a4->mulInt64( $b4, 24 ) )->addInt64( $a5->mulInt64( $b3, 24 ) )
2367
+                 ->addInt64( $a6->mulInt64( $b2, 24 ) )->addInt64( $a7->mulInt64( $b1, 24 ) )->addInt64( $a8->mulInt64( $b0, 24 ) );
2368
+        $s9 = $c9->addInt64( $a0->mulInt64( $b9, 24 ) )->addInt64( $a1->mulInt64( $b8, 24 ) )->addInt64( $a2->mulInt64( $b7, 24 ) )
2369
+                 ->addInt64( $a3->mulInt64( $b6, 24 ) )->addInt64( $a4->mulInt64( $b5, 24 ) )->addInt64( $a5->mulInt64( $b4, 24 ) )
2370
+                 ->addInt64( $a6->mulInt64( $b3, 24 ) )->addInt64( $a7->mulInt64( $b2, 24 ) )->addInt64( $a8->mulInt64( $b1, 24 ) )
2371
+                 ->addInt64( $a9->mulInt64( $b0, 24 ) );
2372
+        $s10 = $c10->addInt64( $a0->mulInt64( $b10, 24 ) )->addInt64( $a1->mulInt64( $b9, 24 ) )->addInt64( $a2->mulInt64( $b8, 24 ) )
2373
+                   ->addInt64( $a3->mulInt64( $b7, 24 ) )->addInt64( $a4->mulInt64( $b6, 24 ) )->addInt64( $a5->mulInt64( $b5, 24 ) )
2374
+                   ->addInt64( $a6->mulInt64( $b4, 24 ) )->addInt64( $a7->mulInt64( $b3, 24 ) )->addInt64( $a8->mulInt64( $b2, 24 ) )
2375
+                   ->addInt64( $a9->mulInt64( $b1, 24 ) )->addInt64( $a10->mulInt64( $b0, 24 ) );
2376
+        $s11 = $c11->addInt64( $a0->mulInt64( $b11, 24 ) )->addInt64( $a1->mulInt64( $b10, 24 ) )->addInt64( $a2->mulInt64( $b9, 24 ) )
2377
+                   ->addInt64( $a3->mulInt64( $b8, 24 ) )->addInt64( $a4->mulInt64( $b7, 24 ) )->addInt64( $a5->mulInt64( $b6, 24 ) )
2378
+                   ->addInt64( $a6->mulInt64( $b5, 24 ) )->addInt64( $a7->mulInt64( $b4, 24 ) )->addInt64( $a8->mulInt64( $b3, 24 ) )
2379
+                   ->addInt64( $a9->mulInt64( $b2, 24 ) )->addInt64( $a10->mulInt64( $b1, 24 ) )->addInt64( $a11->mulInt64( $b0, 24 ) );
2380
+        $s12 = $a1->mulInt64( $b11, 24 )->addInt64( $a2->mulInt64( $b10, 24 ) )->addInt64( $a3->mulInt64( $b9, 24 ) )
2381
+                  ->addInt64( $a4->mulInt64( $b8, 24 ) )->addInt64( $a5->mulInt64( $b7, 24 ) )->addInt64( $a6->mulInt64( $b6, 24 ) )
2382
+                  ->addInt64( $a7->mulInt64( $b5, 24 ) )->addInt64( $a8->mulInt64( $b4, 24 ) )->addInt64( $a9->mulInt64( $b3, 24 ) )
2383
+                  ->addInt64( $a10->mulInt64( $b2, 24 ) )->addInt64( $a11->mulInt64( $b1, 24 ) );
2384
+        $s13 = $a2->mulInt64( $b11, 24 )->addInt64( $a3->mulInt64( $b10, 24 ) )->addInt64( $a4->mulInt64( $b9, 24 ) )
2385
+                  ->addInt64( $a5->mulInt64( $b8, 24 ) )->addInt64( $a6->mulInt64( $b7, 24 ) )->addInt64( $a7->mulInt64( $b6, 24 ) )
2386
+                  ->addInt64( $a8->mulInt64( $b5, 24 ) )->addInt64( $a9->mulInt64( $b4, 24 ) )->addInt64( $a10->mulInt64( $b3, 24 ) )
2387
+                  ->addInt64( $a11->mulInt64( $b2, 24 ) );
2388
+        $s14 = $a3->mulInt64( $b11, 24 )->addInt64( $a4->mulInt64( $b10, 24 ) )->addInt64( $a5->mulInt64( $b9, 24 ) )
2389
+                  ->addInt64( $a6->mulInt64( $b8, 24 ) )->addInt64( $a7->mulInt64( $b7, 24 ) )->addInt64( $a8->mulInt64( $b6, 24 ) )
2390
+                  ->addInt64( $a9->mulInt64( $b5, 24 ) )->addInt64( $a10->mulInt64( $b4, 24 ) )->addInt64( $a11->mulInt64( $b3, 24 ) );
2391
+        $s15 = $a4->mulInt64( $b11, 24 )->addInt64( $a5->mulInt64( $b10, 24 ) )->addInt64( $a6->mulInt64( $b9, 24 ) )
2392
+                  ->addInt64( $a7->mulInt64( $b8, 24 ) )->addInt64( $a8->mulInt64( $b7, 24 ) )->addInt64( $a9->mulInt64( $b6, 24 ) )
2393
+                  ->addInt64( $a10->mulInt64( $b5, 24 ) )->addInt64( $a11->mulInt64( $b4, 24 ) );
2394
+        $s16 = $a5->mulInt64( $b11, 24 )->addInt64( $a6->mulInt64( $b10, 24 ) )->addInt64( $a7->mulInt64( $b9, 24 ) )
2395
+                  ->addInt64( $a8->mulInt64( $b8, 24 ) )->addInt64( $a9->mulInt64( $b7, 24 ) )->addInt64( $a10->mulInt64( $b6, 24 ) )
2396
+                  ->addInt64( $a11->mulInt64( $b5, 24 ) );
2397
+        $s17 = $a6->mulInt64( $b11, 24 )->addInt64( $a7->mulInt64( $b10, 24 ) )->addInt64( $a8->mulInt64( $b9, 24 ) )
2398
+                  ->addInt64( $a9->mulInt64( $b8, 24 ) )->addInt64( $a10->mulInt64( $b7, 24 ) )->addInt64( $a11->mulInt64( $b6, 24 ) );
2399
+        $s18 = $a7->mulInt64( $b11, 24 )->addInt64( $a8->mulInt64( $b10, 24 ) )->addInt64( $a9->mulInt64( $b9, 24 ) )
2400
+                  ->addInt64( $a10->mulInt64( $b8, 24 ) )->addInt64( $a11->mulInt64( $b7, 24 ) );
2401
+        $s19 = $a8->mulInt64( $b11, 24 )->addInt64( $a9->mulInt64( $b10, 24 ) )->addInt64( $a10->mulInt64( $b9, 24 ) )
2402
+                  ->addInt64( $a11->mulInt64( $b8, 24 ) );
2403
+        $s20 = $a9->mulInt64( $b11, 24 )->addInt64( $a10->mulInt64( $b10, 24 ) )->addInt64( $a11->mulInt64( $b9, 24 ) );
2404
+        $s21 = $a10->mulInt64( $b11, 24 )->addInt64( $a11->mulInt64( $b10, 24 ) );
2405
+        $s22 = $a11->mulInt64( $b11, 24 );
2406 2406
         $s23 = new ParagonIE_Sodium_Core32_Int64();
2407 2407
 
2408
-        $carry0 = $s0->addInt(1 << 20)->shiftRight(21);
2409
-        $s1 = $s1->addInt64($carry0);
2410
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2411
-        $carry2 = $s2->addInt(1 << 20)->shiftRight(21);
2412
-        $s3 = $s3->addInt64($carry2);
2413
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2414
-        $carry4 = $s4->addInt(1 << 20)->shiftRight(21);
2415
-        $s5 = $s5->addInt64($carry4);
2416
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2417
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2418
-        $s7 = $s7->addInt64($carry6);
2419
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2420
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2421
-        $s9 = $s9->addInt64($carry8);
2422
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2423
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2424
-        $s11 = $s11->addInt64($carry10);
2425
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2426
-        $carry12 = $s12->addInt(1 << 20)->shiftRight(21);
2427
-        $s13 = $s13->addInt64($carry12);
2428
-        $s12 = $s12->subInt64($carry12->shiftLeft(21));
2429
-        $carry14 = $s14->addInt(1 << 20)->shiftRight(21);
2430
-        $s15 = $s15->addInt64($carry14);
2431
-        $s14 = $s14->subInt64($carry14->shiftLeft(21));
2432
-        $carry16 = $s16->addInt(1 << 20)->shiftRight(21);
2433
-        $s17 = $s17->addInt64($carry16);
2434
-        $s16 = $s16->subInt64($carry16->shiftLeft(21));
2435
-        $carry18 = $s18->addInt(1 << 20)->shiftRight(21);
2436
-        $s19 = $s19->addInt64($carry18);
2437
-        $s18 = $s18->subInt64($carry18->shiftLeft(21));
2438
-        $carry20 = $s20->addInt(1 << 20)->shiftRight(21);
2439
-        $s21 = $s21->addInt64($carry20);
2440
-        $s20 = $s20->subInt64($carry20->shiftLeft(21));
2441
-        $carry22 = $s22->addInt(1 << 20)->shiftRight(21);
2442
-        $s23 = $s23->addInt64($carry22);
2443
-        $s22 = $s22->subInt64($carry22->shiftLeft(21));
2444
-
2445
-        $carry1 = $s1->addInt(1 << 20)->shiftRight(21);
2446
-        $s2 = $s2->addInt64($carry1);
2447
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2448
-        $carry3 = $s3->addInt(1 << 20)->shiftRight(21);
2449
-        $s4 = $s4->addInt64($carry3);
2450
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2451
-        $carry5 = $s5->addInt(1 << 20)->shiftRight(21);
2452
-        $s6 = $s6->addInt64($carry5);
2453
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2454
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2455
-        $s8 = $s8->addInt64($carry7);
2456
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2457
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2458
-        $s10 = $s10->addInt64($carry9);
2459
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2460
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2461
-        $s12 = $s12->addInt64($carry11);
2462
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2463
-        $carry13 = $s13->addInt(1 << 20)->shiftRight(21);
2464
-        $s14 = $s14->addInt64($carry13);
2465
-        $s13 = $s13->subInt64($carry13->shiftLeft(21));
2466
-        $carry15 = $s15->addInt(1 << 20)->shiftRight(21);
2467
-        $s16 = $s16->addInt64($carry15);
2468
-        $s15 = $s15->subInt64($carry15->shiftLeft(21));
2469
-        $carry17 = $s17->addInt(1 << 20)->shiftRight(21);
2470
-        $s18 = $s18->addInt64($carry17);
2471
-        $s17 = $s17->subInt64($carry17->shiftLeft(21));
2472
-        $carry19 = $s19->addInt(1 << 20)->shiftRight(21);
2473
-        $s20 = $s20->addInt64($carry19);
2474
-        $s19 = $s19->subInt64($carry19->shiftLeft(21));
2475
-        $carry21 = $s21->addInt(1 << 20)->shiftRight(21);
2476
-        $s22 = $s22->addInt64($carry21);
2477
-        $s21 = $s21->subInt64($carry21->shiftLeft(21));
2478
-
2479
-        $s11 = $s11->addInt64($s23->mulInt(666643, 20));
2480
-        $s12 = $s12->addInt64($s23->mulInt(470296, 19));
2481
-        $s13 = $s13->addInt64($s23->mulInt(654183, 20));
2482
-        $s14 = $s14->subInt64($s23->mulInt(997805, 20));
2483
-        $s15 = $s15->addInt64($s23->mulInt(136657, 18));
2484
-        $s16 = $s16->subInt64($s23->mulInt(683901, 20));
2485
-
2486
-        $s10 = $s10->addInt64($s22->mulInt(666643, 20));
2487
-        $s11 = $s11->addInt64($s22->mulInt(470296, 19));
2488
-        $s12 = $s12->addInt64($s22->mulInt(654183, 20));
2489
-        $s13 = $s13->subInt64($s22->mulInt(997805, 20));
2490
-        $s14 = $s14->addInt64($s22->mulInt(136657, 18));
2491
-        $s15 = $s15->subInt64($s22->mulInt(683901, 20));
2492
-
2493
-        $s9  =  $s9->addInt64($s21->mulInt(666643, 20));
2494
-        $s10 = $s10->addInt64($s21->mulInt(470296, 19));
2495
-        $s11 = $s11->addInt64($s21->mulInt(654183, 20));
2496
-        $s12 = $s12->subInt64($s21->mulInt(997805, 20));
2497
-        $s13 = $s13->addInt64($s21->mulInt(136657, 18));
2498
-        $s14 = $s14->subInt64($s21->mulInt(683901, 20));
2499
-
2500
-        $s8  =  $s8->addInt64($s20->mulInt(666643, 20));
2501
-        $s9  =  $s9->addInt64($s20->mulInt(470296, 19));
2502
-        $s10 = $s10->addInt64($s20->mulInt(654183, 20));
2503
-        $s11 = $s11->subInt64($s20->mulInt(997805, 20));
2504
-        $s12 = $s12->addInt64($s20->mulInt(136657, 18));
2505
-        $s13 = $s13->subInt64($s20->mulInt(683901, 20));
2506
-
2507
-        $s7  =  $s7->addInt64($s19->mulInt(666643, 20));
2508
-        $s8  =  $s8->addInt64($s19->mulInt(470296, 19));
2509
-        $s9  =  $s9->addInt64($s19->mulInt(654183, 20));
2510
-        $s10 = $s10->subInt64($s19->mulInt(997805, 20));
2511
-        $s11 = $s11->addInt64($s19->mulInt(136657, 18));
2512
-        $s12 = $s12->subInt64($s19->mulInt(683901, 20));
2513
-
2514
-        $s6  =  $s6->addInt64($s18->mulInt(666643, 20));
2515
-        $s7  =  $s7->addInt64($s18->mulInt(470296, 19));
2516
-        $s8  =  $s8->addInt64($s18->mulInt(654183, 20));
2517
-        $s9  =  $s9->subInt64($s18->mulInt(997805, 20));
2518
-        $s10 = $s10->addInt64($s18->mulInt(136657, 18));
2519
-        $s11 = $s11->subInt64($s18->mulInt(683901, 20));
2520
-
2521
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2522
-        $s7 = $s7->addInt64($carry6);
2523
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2524
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2525
-        $s9 = $s9->addInt64($carry8);
2526
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2527
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2528
-        $s11 = $s11->addInt64($carry10);
2529
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2530
-        $carry12 = $s12->addInt(1 << 20)->shiftRight(21);
2531
-        $s13 = $s13->addInt64($carry12);
2532
-        $s12 = $s12->subInt64($carry12->shiftLeft(21));
2533
-        $carry14 = $s14->addInt(1 << 20)->shiftRight(21);
2534
-        $s15 = $s15->addInt64($carry14);
2535
-        $s14 = $s14->subInt64($carry14->shiftLeft(21));
2536
-        $carry16 = $s16->addInt(1 << 20)->shiftRight(21);
2537
-        $s17 = $s17->addInt64($carry16);
2538
-        $s16 = $s16->subInt64($carry16->shiftLeft(21));
2539
-
2540
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2541
-        $s8 = $s8->addInt64($carry7);
2542
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2543
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2544
-        $s10 = $s10->addInt64($carry9);
2545
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2546
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2547
-        $s12 = $s12->addInt64($carry11);
2548
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2549
-        $carry13 = $s13->addInt(1 << 20)->shiftRight(21);
2550
-        $s14 = $s14->addInt64($carry13);
2551
-        $s13 = $s13->subInt64($carry13->shiftLeft(21));
2552
-        $carry15 = $s15->addInt(1 << 20)->shiftRight(21);
2553
-        $s16 = $s16->addInt64($carry15);
2554
-        $s15 = $s15->subInt64($carry15->shiftLeft(21));
2555
-
2556
-        $s5  =  $s5->addInt64($s17->mulInt(666643, 20));
2557
-        $s6  =  $s6->addInt64($s17->mulInt(470296, 19));
2558
-        $s7  =  $s7->addInt64($s17->mulInt(654183, 20));
2559
-        $s8  =  $s8->subInt64($s17->mulInt(997805, 20));
2560
-        $s9  =  $s9->addInt64($s17->mulInt(136657, 18));
2561
-        $s10 = $s10->subInt64($s17->mulInt(683901, 20));
2562
-
2563
-        $s4  =  $s4->addInt64($s16->mulInt(666643, 20));
2564
-        $s5  =  $s5->addInt64($s16->mulInt(470296, 19));
2565
-        $s6  =  $s6->addInt64($s16->mulInt(654183, 20));
2566
-        $s7  =  $s7->subInt64($s16->mulInt(997805, 20));
2567
-        $s8  =  $s8->addInt64($s16->mulInt(136657, 18));
2568
-        $s9  =  $s9->subInt64($s16->mulInt(683901, 20));
2569
-
2570
-        $s3  =  $s3->addInt64($s15->mulInt(666643, 20));
2571
-        $s4  =  $s4->addInt64($s15->mulInt(470296, 19));
2572
-        $s5  =  $s5->addInt64($s15->mulInt(654183, 20));
2573
-        $s6  =  $s6->subInt64($s15->mulInt(997805, 20));
2574
-        $s7  =  $s7->addInt64($s15->mulInt(136657, 18));
2575
-        $s8  =  $s8->subInt64($s15->mulInt(683901, 20));
2576
-
2577
-        $s2  =  $s2->addInt64($s14->mulInt(666643, 20));
2578
-        $s3  =  $s3->addInt64($s14->mulInt(470296, 19));
2579
-        $s4  =  $s4->addInt64($s14->mulInt(654183, 20));
2580
-        $s5  =  $s5->subInt64($s14->mulInt(997805, 20));
2581
-        $s6  =  $s6->addInt64($s14->mulInt(136657, 18));
2582
-        $s7  =  $s7->subInt64($s14->mulInt(683901, 20));
2583
-
2584
-        $s1  =  $s1->addInt64($s13->mulInt(666643, 20));
2585
-        $s2  =  $s2->addInt64($s13->mulInt(470296, 19));
2586
-        $s3  =  $s3->addInt64($s13->mulInt(654183, 20));
2587
-        $s4  =  $s4->subInt64($s13->mulInt(997805, 20));
2588
-        $s5  =  $s5->addInt64($s13->mulInt(136657, 18));
2589
-        $s6  =  $s6->subInt64($s13->mulInt(683901, 20));
2590
-
2591
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2592
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2593
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2594
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2595
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2596
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2408
+        $carry0 = $s0->addInt( 1 << 20 )->shiftRight( 21 );
2409
+        $s1 = $s1->addInt64( $carry0 );
2410
+        $s0 = $s0->subInt64( $carry0->shiftLeft( 21 ) );
2411
+        $carry2 = $s2->addInt( 1 << 20 )->shiftRight( 21 );
2412
+        $s3 = $s3->addInt64( $carry2 );
2413
+        $s2 = $s2->subInt64( $carry2->shiftLeft( 21 ) );
2414
+        $carry4 = $s4->addInt( 1 << 20 )->shiftRight( 21 );
2415
+        $s5 = $s5->addInt64( $carry4 );
2416
+        $s4 = $s4->subInt64( $carry4->shiftLeft( 21 ) );
2417
+        $carry6 = $s6->addInt( 1 << 20 )->shiftRight( 21 );
2418
+        $s7 = $s7->addInt64( $carry6 );
2419
+        $s6 = $s6->subInt64( $carry6->shiftLeft( 21 ) );
2420
+        $carry8 = $s8->addInt( 1 << 20 )->shiftRight( 21 );
2421
+        $s9 = $s9->addInt64( $carry8 );
2422
+        $s8 = $s8->subInt64( $carry8->shiftLeft( 21 ) );
2423
+        $carry10 = $s10->addInt( 1 << 20 )->shiftRight( 21 );
2424
+        $s11 = $s11->addInt64( $carry10 );
2425
+        $s10 = $s10->subInt64( $carry10->shiftLeft( 21 ) );
2426
+        $carry12 = $s12->addInt( 1 << 20 )->shiftRight( 21 );
2427
+        $s13 = $s13->addInt64( $carry12 );
2428
+        $s12 = $s12->subInt64( $carry12->shiftLeft( 21 ) );
2429
+        $carry14 = $s14->addInt( 1 << 20 )->shiftRight( 21 );
2430
+        $s15 = $s15->addInt64( $carry14 );
2431
+        $s14 = $s14->subInt64( $carry14->shiftLeft( 21 ) );
2432
+        $carry16 = $s16->addInt( 1 << 20 )->shiftRight( 21 );
2433
+        $s17 = $s17->addInt64( $carry16 );
2434
+        $s16 = $s16->subInt64( $carry16->shiftLeft( 21 ) );
2435
+        $carry18 = $s18->addInt( 1 << 20 )->shiftRight( 21 );
2436
+        $s19 = $s19->addInt64( $carry18 );
2437
+        $s18 = $s18->subInt64( $carry18->shiftLeft( 21 ) );
2438
+        $carry20 = $s20->addInt( 1 << 20 )->shiftRight( 21 );
2439
+        $s21 = $s21->addInt64( $carry20 );
2440
+        $s20 = $s20->subInt64( $carry20->shiftLeft( 21 ) );
2441
+        $carry22 = $s22->addInt( 1 << 20 )->shiftRight( 21 );
2442
+        $s23 = $s23->addInt64( $carry22 );
2443
+        $s22 = $s22->subInt64( $carry22->shiftLeft( 21 ) );
2444
+
2445
+        $carry1 = $s1->addInt( 1 << 20 )->shiftRight( 21 );
2446
+        $s2 = $s2->addInt64( $carry1 );
2447
+        $s1 = $s1->subInt64( $carry1->shiftLeft( 21 ) );
2448
+        $carry3 = $s3->addInt( 1 << 20 )->shiftRight( 21 );
2449
+        $s4 = $s4->addInt64( $carry3 );
2450
+        $s3 = $s3->subInt64( $carry3->shiftLeft( 21 ) );
2451
+        $carry5 = $s5->addInt( 1 << 20 )->shiftRight( 21 );
2452
+        $s6 = $s6->addInt64( $carry5 );
2453
+        $s5 = $s5->subInt64( $carry5->shiftLeft( 21 ) );
2454
+        $carry7 = $s7->addInt( 1 << 20 )->shiftRight( 21 );
2455
+        $s8 = $s8->addInt64( $carry7 );
2456
+        $s7 = $s7->subInt64( $carry7->shiftLeft( 21 ) );
2457
+        $carry9 = $s9->addInt( 1 << 20 )->shiftRight( 21 );
2458
+        $s10 = $s10->addInt64( $carry9 );
2459
+        $s9 = $s9->subInt64( $carry9->shiftLeft( 21 ) );
2460
+        $carry11 = $s11->addInt( 1 << 20 )->shiftRight( 21 );
2461
+        $s12 = $s12->addInt64( $carry11 );
2462
+        $s11 = $s11->subInt64( $carry11->shiftLeft( 21 ) );
2463
+        $carry13 = $s13->addInt( 1 << 20 )->shiftRight( 21 );
2464
+        $s14 = $s14->addInt64( $carry13 );
2465
+        $s13 = $s13->subInt64( $carry13->shiftLeft( 21 ) );
2466
+        $carry15 = $s15->addInt( 1 << 20 )->shiftRight( 21 );
2467
+        $s16 = $s16->addInt64( $carry15 );
2468
+        $s15 = $s15->subInt64( $carry15->shiftLeft( 21 ) );
2469
+        $carry17 = $s17->addInt( 1 << 20 )->shiftRight( 21 );
2470
+        $s18 = $s18->addInt64( $carry17 );
2471
+        $s17 = $s17->subInt64( $carry17->shiftLeft( 21 ) );
2472
+        $carry19 = $s19->addInt( 1 << 20 )->shiftRight( 21 );
2473
+        $s20 = $s20->addInt64( $carry19 );
2474
+        $s19 = $s19->subInt64( $carry19->shiftLeft( 21 ) );
2475
+        $carry21 = $s21->addInt( 1 << 20 )->shiftRight( 21 );
2476
+        $s22 = $s22->addInt64( $carry21 );
2477
+        $s21 = $s21->subInt64( $carry21->shiftLeft( 21 ) );
2478
+
2479
+        $s11 = $s11->addInt64( $s23->mulInt( 666643, 20 ) );
2480
+        $s12 = $s12->addInt64( $s23->mulInt( 470296, 19 ) );
2481
+        $s13 = $s13->addInt64( $s23->mulInt( 654183, 20 ) );
2482
+        $s14 = $s14->subInt64( $s23->mulInt( 997805, 20 ) );
2483
+        $s15 = $s15->addInt64( $s23->mulInt( 136657, 18 ) );
2484
+        $s16 = $s16->subInt64( $s23->mulInt( 683901, 20 ) );
2485
+
2486
+        $s10 = $s10->addInt64( $s22->mulInt( 666643, 20 ) );
2487
+        $s11 = $s11->addInt64( $s22->mulInt( 470296, 19 ) );
2488
+        $s12 = $s12->addInt64( $s22->mulInt( 654183, 20 ) );
2489
+        $s13 = $s13->subInt64( $s22->mulInt( 997805, 20 ) );
2490
+        $s14 = $s14->addInt64( $s22->mulInt( 136657, 18 ) );
2491
+        $s15 = $s15->subInt64( $s22->mulInt( 683901, 20 ) );
2492
+
2493
+        $s9  = $s9->addInt64( $s21->mulInt( 666643, 20 ) );
2494
+        $s10 = $s10->addInt64( $s21->mulInt( 470296, 19 ) );
2495
+        $s11 = $s11->addInt64( $s21->mulInt( 654183, 20 ) );
2496
+        $s12 = $s12->subInt64( $s21->mulInt( 997805, 20 ) );
2497
+        $s13 = $s13->addInt64( $s21->mulInt( 136657, 18 ) );
2498
+        $s14 = $s14->subInt64( $s21->mulInt( 683901, 20 ) );
2499
+
2500
+        $s8  = $s8->addInt64( $s20->mulInt( 666643, 20 ) );
2501
+        $s9  = $s9->addInt64( $s20->mulInt( 470296, 19 ) );
2502
+        $s10 = $s10->addInt64( $s20->mulInt( 654183, 20 ) );
2503
+        $s11 = $s11->subInt64( $s20->mulInt( 997805, 20 ) );
2504
+        $s12 = $s12->addInt64( $s20->mulInt( 136657, 18 ) );
2505
+        $s13 = $s13->subInt64( $s20->mulInt( 683901, 20 ) );
2506
+
2507
+        $s7  = $s7->addInt64( $s19->mulInt( 666643, 20 ) );
2508
+        $s8  = $s8->addInt64( $s19->mulInt( 470296, 19 ) );
2509
+        $s9  = $s9->addInt64( $s19->mulInt( 654183, 20 ) );
2510
+        $s10 = $s10->subInt64( $s19->mulInt( 997805, 20 ) );
2511
+        $s11 = $s11->addInt64( $s19->mulInt( 136657, 18 ) );
2512
+        $s12 = $s12->subInt64( $s19->mulInt( 683901, 20 ) );
2513
+
2514
+        $s6  = $s6->addInt64( $s18->mulInt( 666643, 20 ) );
2515
+        $s7  = $s7->addInt64( $s18->mulInt( 470296, 19 ) );
2516
+        $s8  = $s8->addInt64( $s18->mulInt( 654183, 20 ) );
2517
+        $s9  = $s9->subInt64( $s18->mulInt( 997805, 20 ) );
2518
+        $s10 = $s10->addInt64( $s18->mulInt( 136657, 18 ) );
2519
+        $s11 = $s11->subInt64( $s18->mulInt( 683901, 20 ) );
2520
+
2521
+        $carry6 = $s6->addInt( 1 << 20 )->shiftRight( 21 );
2522
+        $s7 = $s7->addInt64( $carry6 );
2523
+        $s6 = $s6->subInt64( $carry6->shiftLeft( 21 ) );
2524
+        $carry8 = $s8->addInt( 1 << 20 )->shiftRight( 21 );
2525
+        $s9 = $s9->addInt64( $carry8 );
2526
+        $s8 = $s8->subInt64( $carry8->shiftLeft( 21 ) );
2527
+        $carry10 = $s10->addInt( 1 << 20 )->shiftRight( 21 );
2528
+        $s11 = $s11->addInt64( $carry10 );
2529
+        $s10 = $s10->subInt64( $carry10->shiftLeft( 21 ) );
2530
+        $carry12 = $s12->addInt( 1 << 20 )->shiftRight( 21 );
2531
+        $s13 = $s13->addInt64( $carry12 );
2532
+        $s12 = $s12->subInt64( $carry12->shiftLeft( 21 ) );
2533
+        $carry14 = $s14->addInt( 1 << 20 )->shiftRight( 21 );
2534
+        $s15 = $s15->addInt64( $carry14 );
2535
+        $s14 = $s14->subInt64( $carry14->shiftLeft( 21 ) );
2536
+        $carry16 = $s16->addInt( 1 << 20 )->shiftRight( 21 );
2537
+        $s17 = $s17->addInt64( $carry16 );
2538
+        $s16 = $s16->subInt64( $carry16->shiftLeft( 21 ) );
2539
+
2540
+        $carry7 = $s7->addInt( 1 << 20 )->shiftRight( 21 );
2541
+        $s8 = $s8->addInt64( $carry7 );
2542
+        $s7 = $s7->subInt64( $carry7->shiftLeft( 21 ) );
2543
+        $carry9 = $s9->addInt( 1 << 20 )->shiftRight( 21 );
2544
+        $s10 = $s10->addInt64( $carry9 );
2545
+        $s9 = $s9->subInt64( $carry9->shiftLeft( 21 ) );
2546
+        $carry11 = $s11->addInt( 1 << 20 )->shiftRight( 21 );
2547
+        $s12 = $s12->addInt64( $carry11 );
2548
+        $s11 = $s11->subInt64( $carry11->shiftLeft( 21 ) );
2549
+        $carry13 = $s13->addInt( 1 << 20 )->shiftRight( 21 );
2550
+        $s14 = $s14->addInt64( $carry13 );
2551
+        $s13 = $s13->subInt64( $carry13->shiftLeft( 21 ) );
2552
+        $carry15 = $s15->addInt( 1 << 20 )->shiftRight( 21 );
2553
+        $s16 = $s16->addInt64( $carry15 );
2554
+        $s15 = $s15->subInt64( $carry15->shiftLeft( 21 ) );
2555
+
2556
+        $s5  = $s5->addInt64( $s17->mulInt( 666643, 20 ) );
2557
+        $s6  = $s6->addInt64( $s17->mulInt( 470296, 19 ) );
2558
+        $s7  = $s7->addInt64( $s17->mulInt( 654183, 20 ) );
2559
+        $s8  = $s8->subInt64( $s17->mulInt( 997805, 20 ) );
2560
+        $s9  = $s9->addInt64( $s17->mulInt( 136657, 18 ) );
2561
+        $s10 = $s10->subInt64( $s17->mulInt( 683901, 20 ) );
2562
+
2563
+        $s4  = $s4->addInt64( $s16->mulInt( 666643, 20 ) );
2564
+        $s5  = $s5->addInt64( $s16->mulInt( 470296, 19 ) );
2565
+        $s6  = $s6->addInt64( $s16->mulInt( 654183, 20 ) );
2566
+        $s7  = $s7->subInt64( $s16->mulInt( 997805, 20 ) );
2567
+        $s8  = $s8->addInt64( $s16->mulInt( 136657, 18 ) );
2568
+        $s9  = $s9->subInt64( $s16->mulInt( 683901, 20 ) );
2569
+
2570
+        $s3  = $s3->addInt64( $s15->mulInt( 666643, 20 ) );
2571
+        $s4  = $s4->addInt64( $s15->mulInt( 470296, 19 ) );
2572
+        $s5  = $s5->addInt64( $s15->mulInt( 654183, 20 ) );
2573
+        $s6  = $s6->subInt64( $s15->mulInt( 997805, 20 ) );
2574
+        $s7  = $s7->addInt64( $s15->mulInt( 136657, 18 ) );
2575
+        $s8  = $s8->subInt64( $s15->mulInt( 683901, 20 ) );
2576
+
2577
+        $s2  = $s2->addInt64( $s14->mulInt( 666643, 20 ) );
2578
+        $s3  = $s3->addInt64( $s14->mulInt( 470296, 19 ) );
2579
+        $s4  = $s4->addInt64( $s14->mulInt( 654183, 20 ) );
2580
+        $s5  = $s5->subInt64( $s14->mulInt( 997805, 20 ) );
2581
+        $s6  = $s6->addInt64( $s14->mulInt( 136657, 18 ) );
2582
+        $s7  = $s7->subInt64( $s14->mulInt( 683901, 20 ) );
2583
+
2584
+        $s1  = $s1->addInt64( $s13->mulInt( 666643, 20 ) );
2585
+        $s2  = $s2->addInt64( $s13->mulInt( 470296, 19 ) );
2586
+        $s3  = $s3->addInt64( $s13->mulInt( 654183, 20 ) );
2587
+        $s4  = $s4->subInt64( $s13->mulInt( 997805, 20 ) );
2588
+        $s5  = $s5->addInt64( $s13->mulInt( 136657, 18 ) );
2589
+        $s6  = $s6->subInt64( $s13->mulInt( 683901, 20 ) );
2590
+
2591
+        $s0  = $s0->addInt64( $s12->mulInt( 666643, 20 ) );
2592
+        $s1  = $s1->addInt64( $s12->mulInt( 470296, 19 ) );
2593
+        $s2  = $s2->addInt64( $s12->mulInt( 654183, 20 ) );
2594
+        $s3  = $s3->subInt64( $s12->mulInt( 997805, 20 ) );
2595
+        $s4  = $s4->addInt64( $s12->mulInt( 136657, 18 ) );
2596
+        $s5  = $s5->subInt64( $s12->mulInt( 683901, 20 ) );
2597 2597
         $s12 = new ParagonIE_Sodium_Core32_Int64();
2598 2598
 
2599
-        $carry0 = $s0->addInt(1 << 20)->shiftRight(21);
2600
-        $s1 = $s1->addInt64($carry0);
2601
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2602
-        $carry2 = $s2->addInt(1 << 20)->shiftRight(21);
2603
-        $s3 = $s3->addInt64($carry2);
2604
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2605
-        $carry4 = $s4->addInt(1 << 20)->shiftRight(21);
2606
-        $s5 = $s5->addInt64($carry4);
2607
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2608
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2609
-        $s7 = $s7->addInt64($carry6);
2610
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2611
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2612
-        $s9 = $s9->addInt64($carry8);
2613
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2614
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2615
-        $s11 = $s11->addInt64($carry10);
2616
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2617
-
2618
-        $carry1 = $s1->addInt(1 << 20)->shiftRight(21);
2619
-        $s2 = $s2->addInt64($carry1);
2620
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2621
-        $carry3 = $s3->addInt(1 << 20)->shiftRight(21);
2622
-        $s4 = $s4->addInt64($carry3);
2623
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2624
-        $carry5 = $s5->addInt(1 << 20)->shiftRight(21);
2625
-        $s6 = $s6->addInt64($carry5);
2626
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2627
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2628
-        $s8 = $s8->addInt64($carry7);
2629
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2630
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2631
-        $s10 = $s10->addInt64($carry9);
2632
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2633
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2634
-        $s12 = $s12->addInt64($carry11);
2635
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2636
-
2637
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2638
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2639
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2640
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2641
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2642
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2599
+        $carry0 = $s0->addInt( 1 << 20 )->shiftRight( 21 );
2600
+        $s1 = $s1->addInt64( $carry0 );
2601
+        $s0 = $s0->subInt64( $carry0->shiftLeft( 21 ) );
2602
+        $carry2 = $s2->addInt( 1 << 20 )->shiftRight( 21 );
2603
+        $s3 = $s3->addInt64( $carry2 );
2604
+        $s2 = $s2->subInt64( $carry2->shiftLeft( 21 ) );
2605
+        $carry4 = $s4->addInt( 1 << 20 )->shiftRight( 21 );
2606
+        $s5 = $s5->addInt64( $carry4 );
2607
+        $s4 = $s4->subInt64( $carry4->shiftLeft( 21 ) );
2608
+        $carry6 = $s6->addInt( 1 << 20 )->shiftRight( 21 );
2609
+        $s7 = $s7->addInt64( $carry6 );
2610
+        $s6 = $s6->subInt64( $carry6->shiftLeft( 21 ) );
2611
+        $carry8 = $s8->addInt( 1 << 20 )->shiftRight( 21 );
2612
+        $s9 = $s9->addInt64( $carry8 );
2613
+        $s8 = $s8->subInt64( $carry8->shiftLeft( 21 ) );
2614
+        $carry10 = $s10->addInt( 1 << 20 )->shiftRight( 21 );
2615
+        $s11 = $s11->addInt64( $carry10 );
2616
+        $s10 = $s10->subInt64( $carry10->shiftLeft( 21 ) );
2617
+
2618
+        $carry1 = $s1->addInt( 1 << 20 )->shiftRight( 21 );
2619
+        $s2 = $s2->addInt64( $carry1 );
2620
+        $s1 = $s1->subInt64( $carry1->shiftLeft( 21 ) );
2621
+        $carry3 = $s3->addInt( 1 << 20 )->shiftRight( 21 );
2622
+        $s4 = $s4->addInt64( $carry3 );
2623
+        $s3 = $s3->subInt64( $carry3->shiftLeft( 21 ) );
2624
+        $carry5 = $s5->addInt( 1 << 20 )->shiftRight( 21 );
2625
+        $s6 = $s6->addInt64( $carry5 );
2626
+        $s5 = $s5->subInt64( $carry5->shiftLeft( 21 ) );
2627
+        $carry7 = $s7->addInt( 1 << 20 )->shiftRight( 21 );
2628
+        $s8 = $s8->addInt64( $carry7 );
2629
+        $s7 = $s7->subInt64( $carry7->shiftLeft( 21 ) );
2630
+        $carry9 = $s9->addInt( 1 << 20 )->shiftRight( 21 );
2631
+        $s10 = $s10->addInt64( $carry9 );
2632
+        $s9 = $s9->subInt64( $carry9->shiftLeft( 21 ) );
2633
+        $carry11 = $s11->addInt( 1 << 20 )->shiftRight( 21 );
2634
+        $s12 = $s12->addInt64( $carry11 );
2635
+        $s11 = $s11->subInt64( $carry11->shiftLeft( 21 ) );
2636
+
2637
+        $s0  = $s0->addInt64( $s12->mulInt( 666643, 20 ) );
2638
+        $s1  = $s1->addInt64( $s12->mulInt( 470296, 19 ) );
2639
+        $s2  = $s2->addInt64( $s12->mulInt( 654183, 20 ) );
2640
+        $s3  = $s3->subInt64( $s12->mulInt( 997805, 20 ) );
2641
+        $s4  = $s4->addInt64( $s12->mulInt( 136657, 18 ) );
2642
+        $s5  = $s5->subInt64( $s12->mulInt( 683901, 20 ) );
2643 2643
         $s12 = new ParagonIE_Sodium_Core32_Int64();
2644 2644
 
2645
-        $carry0 = $s0->shiftRight(21);
2646
-        $s1 = $s1->addInt64($carry0);
2647
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2648
-        $carry1 = $s1->shiftRight(21);
2649
-        $s2 = $s2->addInt64($carry1);
2650
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2651
-        $carry2 = $s2->shiftRight(21);
2652
-        $s3 = $s3->addInt64($carry2);
2653
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2654
-        $carry3 = $s3->shiftRight(21);
2655
-        $s4 = $s4->addInt64($carry3);
2656
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2657
-        $carry4 = $s4->shiftRight(21);
2658
-        $s5 = $s5->addInt64($carry4);
2659
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2660
-        $carry5 = $s5->shiftRight(21);
2661
-        $s6 = $s6->addInt64($carry5);
2662
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2663
-        $carry6 = $s6->shiftRight(21);
2664
-        $s7 = $s7->addInt64($carry6);
2665
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2666
-        $carry7 = $s7->shiftRight(21);
2667
-        $s8 = $s8->addInt64($carry7);
2668
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2669
-        $carry8 = $s8->shiftRight(21);
2670
-        $s9 = $s9->addInt64($carry8);
2671
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2672
-        $carry9 = $s9->shiftRight(21);
2673
-        $s10 = $s10->addInt64($carry9);
2674
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2675
-        $carry10 = $s10->shiftRight(21);
2676
-        $s11 = $s11->addInt64($carry10);
2677
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2678
-        $carry11 = $s11->shiftRight(21);
2679
-        $s12 = $s12->addInt64($carry11);
2680
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2681
-
2682
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2683
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2684
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2685
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2686
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2687
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2688
-
2689
-        $carry0 = $s0->shiftRight(21);
2690
-        $s1 = $s1->addInt64($carry0);
2691
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2692
-        $carry1 = $s1->shiftRight(21);
2693
-        $s2 = $s2->addInt64($carry1);
2694
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2695
-        $carry2 = $s2->shiftRight(21);
2696
-        $s3 = $s3->addInt64($carry2);
2697
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2698
-        $carry3 = $s3->shiftRight(21);
2699
-        $s4 = $s4->addInt64($carry3);
2700
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2701
-        $carry4 = $s4->shiftRight(21);
2702
-        $s5 = $s5->addInt64($carry4);
2703
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2704
-        $carry5 = $s5->shiftRight(21);
2705
-        $s6 = $s6->addInt64($carry5);
2706
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2707
-        $carry6 = $s6->shiftRight(21);
2708
-        $s7 = $s7->addInt64($carry6);
2709
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2710
-        $carry7 = $s7->shiftRight(21);
2711
-        $s8 = $s8->addInt64($carry7);
2712
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2713
-        $carry8 = $s10->shiftRight(21);
2714
-        $s9 = $s9->addInt64($carry8);
2715
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2716
-        $carry9 = $s9->shiftRight(21);
2717
-        $s10 = $s10->addInt64($carry9);
2718
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2719
-        $carry10 = $s10->shiftRight(21);
2720
-        $s11 = $s11->addInt64($carry10);
2721
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2722
-
2723
-        $S0  =  $s0->toInt();
2724
-        $S1  =  $s1->toInt();
2725
-        $S2  =  $s2->toInt();
2726
-        $S3  =  $s3->toInt();
2727
-        $S4  =  $s4->toInt();
2728
-        $S5  =  $s5->toInt();
2729
-        $S6  =  $s6->toInt();
2730
-        $S7  =  $s7->toInt();
2731
-        $S8  =  $s8->toInt();
2732
-        $S9  =  $s9->toInt();
2645
+        $carry0 = $s0->shiftRight( 21 );
2646
+        $s1 = $s1->addInt64( $carry0 );
2647
+        $s0 = $s0->subInt64( $carry0->shiftLeft( 21 ) );
2648
+        $carry1 = $s1->shiftRight( 21 );
2649
+        $s2 = $s2->addInt64( $carry1 );
2650
+        $s1 = $s1->subInt64( $carry1->shiftLeft( 21 ) );
2651
+        $carry2 = $s2->shiftRight( 21 );
2652
+        $s3 = $s3->addInt64( $carry2 );
2653
+        $s2 = $s2->subInt64( $carry2->shiftLeft( 21 ) );
2654
+        $carry3 = $s3->shiftRight( 21 );
2655
+        $s4 = $s4->addInt64( $carry3 );
2656
+        $s3 = $s3->subInt64( $carry3->shiftLeft( 21 ) );
2657
+        $carry4 = $s4->shiftRight( 21 );
2658
+        $s5 = $s5->addInt64( $carry4 );
2659
+        $s4 = $s4->subInt64( $carry4->shiftLeft( 21 ) );
2660
+        $carry5 = $s5->shiftRight( 21 );
2661
+        $s6 = $s6->addInt64( $carry5 );
2662
+        $s5 = $s5->subInt64( $carry5->shiftLeft( 21 ) );
2663
+        $carry6 = $s6->shiftRight( 21 );
2664
+        $s7 = $s7->addInt64( $carry6 );
2665
+        $s6 = $s6->subInt64( $carry6->shiftLeft( 21 ) );
2666
+        $carry7 = $s7->shiftRight( 21 );
2667
+        $s8 = $s8->addInt64( $carry7 );
2668
+        $s7 = $s7->subInt64( $carry7->shiftLeft( 21 ) );
2669
+        $carry8 = $s8->shiftRight( 21 );
2670
+        $s9 = $s9->addInt64( $carry8 );
2671
+        $s8 = $s8->subInt64( $carry8->shiftLeft( 21 ) );
2672
+        $carry9 = $s9->shiftRight( 21 );
2673
+        $s10 = $s10->addInt64( $carry9 );
2674
+        $s9 = $s9->subInt64( $carry9->shiftLeft( 21 ) );
2675
+        $carry10 = $s10->shiftRight( 21 );
2676
+        $s11 = $s11->addInt64( $carry10 );
2677
+        $s10 = $s10->subInt64( $carry10->shiftLeft( 21 ) );
2678
+        $carry11 = $s11->shiftRight( 21 );
2679
+        $s12 = $s12->addInt64( $carry11 );
2680
+        $s11 = $s11->subInt64( $carry11->shiftLeft( 21 ) );
2681
+
2682
+        $s0  = $s0->addInt64( $s12->mulInt( 666643, 20 ) );
2683
+        $s1  = $s1->addInt64( $s12->mulInt( 470296, 19 ) );
2684
+        $s2  = $s2->addInt64( $s12->mulInt( 654183, 20 ) );
2685
+        $s3  = $s3->subInt64( $s12->mulInt( 997805, 20 ) );
2686
+        $s4  = $s4->addInt64( $s12->mulInt( 136657, 18 ) );
2687
+        $s5  = $s5->subInt64( $s12->mulInt( 683901, 20 ) );
2688
+
2689
+        $carry0 = $s0->shiftRight( 21 );
2690
+        $s1 = $s1->addInt64( $carry0 );
2691
+        $s0 = $s0->subInt64( $carry0->shiftLeft( 21 ) );
2692
+        $carry1 = $s1->shiftRight( 21 );
2693
+        $s2 = $s2->addInt64( $carry1 );
2694
+        $s1 = $s1->subInt64( $carry1->shiftLeft( 21 ) );
2695
+        $carry2 = $s2->shiftRight( 21 );
2696
+        $s3 = $s3->addInt64( $carry2 );
2697
+        $s2 = $s2->subInt64( $carry2->shiftLeft( 21 ) );
2698
+        $carry3 = $s3->shiftRight( 21 );
2699
+        $s4 = $s4->addInt64( $carry3 );
2700
+        $s3 = $s3->subInt64( $carry3->shiftLeft( 21 ) );
2701
+        $carry4 = $s4->shiftRight( 21 );
2702
+        $s5 = $s5->addInt64( $carry4 );
2703
+        $s4 = $s4->subInt64( $carry4->shiftLeft( 21 ) );
2704
+        $carry5 = $s5->shiftRight( 21 );
2705
+        $s6 = $s6->addInt64( $carry5 );
2706
+        $s5 = $s5->subInt64( $carry5->shiftLeft( 21 ) );
2707
+        $carry6 = $s6->shiftRight( 21 );
2708
+        $s7 = $s7->addInt64( $carry6 );
2709
+        $s6 = $s6->subInt64( $carry6->shiftLeft( 21 ) );
2710
+        $carry7 = $s7->shiftRight( 21 );
2711
+        $s8 = $s8->addInt64( $carry7 );
2712
+        $s7 = $s7->subInt64( $carry7->shiftLeft( 21 ) );
2713
+        $carry8 = $s10->shiftRight( 21 );
2714
+        $s9 = $s9->addInt64( $carry8 );
2715
+        $s8 = $s8->subInt64( $carry8->shiftLeft( 21 ) );
2716
+        $carry9 = $s9->shiftRight( 21 );
2717
+        $s10 = $s10->addInt64( $carry9 );
2718
+        $s9 = $s9->subInt64( $carry9->shiftLeft( 21 ) );
2719
+        $carry10 = $s10->shiftRight( 21 );
2720
+        $s11 = $s11->addInt64( $carry10 );
2721
+        $s10 = $s10->subInt64( $carry10->shiftLeft( 21 ) );
2722
+
2723
+        $S0  = $s0->toInt();
2724
+        $S1  = $s1->toInt();
2725
+        $S2  = $s2->toInt();
2726
+        $S3  = $s3->toInt();
2727
+        $S4  = $s4->toInt();
2728
+        $S5  = $s5->toInt();
2729
+        $S6  = $s6->toInt();
2730
+        $S7  = $s7->toInt();
2731
+        $S8  = $s8->toInt();
2732
+        $S9  = $s9->toInt();
2733 2733
         $S10 = $s10->toInt();
2734 2734
         $S11 = $s11->toInt();
2735 2735
 
@@ -2737,40 +2737,40 @@  discard block
 block discarded – undo
2737 2737
          * @var array<int, int>
2738 2738
          */
2739 2739
         $arr = array(
2740
-            (int) (0xff & ($S0 >> 0)),
2741
-            (int) (0xff & ($S0 >> 8)),
2742
-            (int) (0xff & (($S0 >> 16) | ($S1 << 5))),
2743
-            (int) (0xff & ($S1 >> 3)),
2744
-            (int) (0xff & ($S1 >> 11)),
2745
-            (int) (0xff & (($S1 >> 19) | ($S2 << 2))),
2746
-            (int) (0xff & ($S2 >> 6)),
2747
-            (int) (0xff & (($S2 >> 14) | ($S3 << 7))),
2748
-            (int) (0xff & ($S3 >> 1)),
2749
-            (int) (0xff & ($S3 >> 9)),
2750
-            (int) (0xff & (($S3 >> 17) | ($S4 << 4))),
2751
-            (int) (0xff & ($S4 >> 4)),
2752
-            (int) (0xff & ($S4 >> 12)),
2753
-            (int) (0xff & (($S4 >> 20) | ($S5 << 1))),
2754
-            (int) (0xff & ($S5 >> 7)),
2755
-            (int) (0xff & (($S5 >> 15) | ($S6 << 6))),
2756
-            (int) (0xff & ($S6 >> 2)),
2757
-            (int) (0xff & ($S6 >> 10)),
2758
-            (int) (0xff & (($S6 >> 18) | ($S7 << 3))),
2759
-            (int) (0xff & ($S7 >> 5)),
2760
-            (int) (0xff & ($S7 >> 13)),
2761
-            (int) (0xff & ($S8 >> 0)),
2762
-            (int) (0xff & ($S8 >> 8)),
2763
-            (int) (0xff & (($S8 >> 16) | ($S9 << 5))),
2764
-            (int) (0xff & ($S9 >> 3)),
2765
-            (int) (0xff & ($S9 >> 11)),
2766
-            (int) (0xff & (($S9 >> 19) | ($S10 << 2))),
2767
-            (int) (0xff & ($S10 >> 6)),
2768
-            (int) (0xff & (($S10 >> 14) | ($S11 << 7))),
2769
-            (int) (0xff & ($S11 >> 1)),
2770
-            (int) (0xff & ($S11 >> 9)),
2771
-            (int) (0xff & ($S11 >> 17))
2740
+            (int)( 0xff & ( $S0 >> 0 ) ),
2741
+            (int)( 0xff & ( $S0 >> 8 ) ),
2742
+            (int)( 0xff & ( ( $S0 >> 16 ) | ( $S1 << 5 ) ) ),
2743
+            (int)( 0xff & ( $S1 >> 3 ) ),
2744
+            (int)( 0xff & ( $S1 >> 11 ) ),
2745
+            (int)( 0xff & ( ( $S1 >> 19 ) | ( $S2 << 2 ) ) ),
2746
+            (int)( 0xff & ( $S2 >> 6 ) ),
2747
+            (int)( 0xff & ( ( $S2 >> 14 ) | ( $S3 << 7 ) ) ),
2748
+            (int)( 0xff & ( $S3 >> 1 ) ),
2749
+            (int)( 0xff & ( $S3 >> 9 ) ),
2750
+            (int)( 0xff & ( ( $S3 >> 17 ) | ( $S4 << 4 ) ) ),
2751
+            (int)( 0xff & ( $S4 >> 4 ) ),
2752
+            (int)( 0xff & ( $S4 >> 12 ) ),
2753
+            (int)( 0xff & ( ( $S4 >> 20 ) | ( $S5 << 1 ) ) ),
2754
+            (int)( 0xff & ( $S5 >> 7 ) ),
2755
+            (int)( 0xff & ( ( $S5 >> 15 ) | ( $S6 << 6 ) ) ),
2756
+            (int)( 0xff & ( $S6 >> 2 ) ),
2757
+            (int)( 0xff & ( $S6 >> 10 ) ),
2758
+            (int)( 0xff & ( ( $S6 >> 18 ) | ( $S7 << 3 ) ) ),
2759
+            (int)( 0xff & ( $S7 >> 5 ) ),
2760
+            (int)( 0xff & ( $S7 >> 13 ) ),
2761
+            (int)( 0xff & ( $S8 >> 0 ) ),
2762
+            (int)( 0xff & ( $S8 >> 8 ) ),
2763
+            (int)( 0xff & ( ( $S8 >> 16 ) | ( $S9 << 5 ) ) ),
2764
+            (int)( 0xff & ( $S9 >> 3 ) ),
2765
+            (int)( 0xff & ( $S9 >> 11 ) ),
2766
+            (int)( 0xff & ( ( $S9 >> 19 ) | ( $S10 << 2 ) ) ),
2767
+            (int)( 0xff & ( $S10 >> 6 ) ),
2768
+            (int)( 0xff & ( ( $S10 >> 14 ) | ( $S11 << 7 ) ) ),
2769
+            (int)( 0xff & ( $S11 >> 1 ) ),
2770
+            (int)( 0xff & ( $S11 >> 9 ) ),
2771
+            (int)( 0xff & ( $S11 >> 17 ) )
2772 2772
         );
2773
-        return self::intArrayToString($arr);
2773
+        return self::intArrayToString( $arr );
2774 2774
     }
2775 2775
 
2776 2776
     /**
@@ -2781,7 +2781,7 @@  discard block
 block discarded – undo
2781 2781
      * @throws SodiumException
2782 2782
      * @throws TypeError
2783 2783
      */
2784
-    public static function sc_reduce($s)
2784
+    public static function sc_reduce( $s )
2785 2785
     {
2786 2786
         /**
2787 2787
          * @var ParagonIE_Sodium_Core32_Int64 $s0
@@ -2809,273 +2809,273 @@  discard block
 block discarded – undo
2809 2809
          * @var ParagonIE_Sodium_Core32_Int64 $s22
2810 2810
          * @var ParagonIE_Sodium_Core32_Int64 $s23
2811 2811
          */
2812
-        $s0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 0, 3)));
2813
-        $s1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 2, 4)) >> 5));
2814
-        $s2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 5, 3)) >> 2));
2815
-        $s3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 7, 4)) >> 7));
2816
-        $s4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 10, 4)) >> 4));
2817
-        $s5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 13, 3)) >> 1));
2818
-        $s6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 15, 4)) >> 6));
2819
-        $s7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 18, 4)) >> 3));
2820
-        $s8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 21, 3)));
2821
-        $s9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 23, 4)) >> 5));
2822
-        $s10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 26, 3)) >> 2));
2823
-        $s11 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 28, 4)) >> 7));
2824
-        $s12 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 31, 4)) >> 4));
2825
-        $s13 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 34, 3)) >> 1));
2826
-        $s14 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 36, 4)) >> 6));
2827
-        $s15 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 39, 4)) >> 3));
2828
-        $s16 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 42, 3)));
2829
-        $s17 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 44, 4)) >> 5));
2830
-        $s18 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 47, 3)) >> 2));
2831
-        $s19 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 49, 4)) >> 7));
2832
-        $s20 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 52, 4)) >> 4));
2833
-        $s21 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 55, 3)) >> 1));
2834
-        $s22 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 57, 4)) >> 6));
2835
-        $s23 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($s, 60, 4)) >> 3));
2836
-
2837
-        $s11 = $s11->addInt64($s23->mulInt(666643, 20));
2838
-        $s12 = $s12->addInt64($s23->mulInt(470296, 19));
2839
-        $s13 = $s13->addInt64($s23->mulInt(654183, 20));
2840
-        $s14 = $s14->subInt64($s23->mulInt(997805, 20));
2841
-        $s15 = $s15->addInt64($s23->mulInt(136657, 18));
2842
-        $s16 = $s16->subInt64($s23->mulInt(683901, 20));
2843
-
2844
-        $s10 = $s10->addInt64($s22->mulInt(666643, 20));
2845
-        $s11 = $s11->addInt64($s22->mulInt(470296, 19));
2846
-        $s12 = $s12->addInt64($s22->mulInt(654183, 20));
2847
-        $s13 = $s13->subInt64($s22->mulInt(997805, 20));
2848
-        $s14 = $s14->addInt64($s22->mulInt(136657, 18));
2849
-        $s15 = $s15->subInt64($s22->mulInt(683901, 20));
2850
-
2851
-        $s9  =  $s9->addInt64($s21->mulInt(666643, 20));
2852
-        $s10 = $s10->addInt64($s21->mulInt(470296, 19));
2853
-        $s11 = $s11->addInt64($s21->mulInt(654183, 20));
2854
-        $s12 = $s12->subInt64($s21->mulInt(997805, 20));
2855
-        $s13 = $s13->addInt64($s21->mulInt(136657, 18));
2856
-        $s14 = $s14->subInt64($s21->mulInt(683901, 20));
2857
-
2858
-        $s8  =  $s8->addInt64($s20->mulInt(666643, 20));
2859
-        $s9  =  $s9->addInt64($s20->mulInt(470296, 19));
2860
-        $s10 = $s10->addInt64($s20->mulInt(654183, 20));
2861
-        $s11 = $s11->subInt64($s20->mulInt(997805, 20));
2862
-        $s12 = $s12->addInt64($s20->mulInt(136657, 18));
2863
-        $s13 = $s13->subInt64($s20->mulInt(683901, 20));
2864
-
2865
-        $s7  =  $s7->addInt64($s19->mulInt(666643, 20));
2866
-        $s8  =  $s8->addInt64($s19->mulInt(470296, 19));
2867
-        $s9  =  $s9->addInt64($s19->mulInt(654183, 20));
2868
-        $s10 = $s10->subInt64($s19->mulInt(997805, 20));
2869
-        $s11 = $s11->addInt64($s19->mulInt(136657, 18));
2870
-        $s12 = $s12->subInt64($s19->mulInt(683901, 20));
2871
-
2872
-        $s6  =  $s6->addInt64($s18->mulInt(666643, 20));
2873
-        $s7  =  $s7->addInt64($s18->mulInt(470296, 19));
2874
-        $s8  =  $s8->addInt64($s18->mulInt(654183, 20));
2875
-        $s9  =  $s9->subInt64($s18->mulInt(997805, 20));
2876
-        $s10 = $s10->addInt64($s18->mulInt(136657, 18));
2877
-        $s11 = $s11->subInt64($s18->mulInt(683901, 20));
2878
-
2879
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2880
-        $s7 = $s7->addInt64($carry6);
2881
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2882
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2883
-        $s9 = $s9->addInt64($carry8);
2884
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2885
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2886
-        $s11 = $s11->addInt64($carry10);
2887
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2888
-        $carry12 = $s12->addInt(1 << 20)->shiftRight(21);
2889
-        $s13 = $s13->addInt64($carry12);
2890
-        $s12 = $s12->subInt64($carry12->shiftLeft(21));
2891
-        $carry14 = $s14->addInt(1 << 20)->shiftRight(21);
2892
-        $s15 = $s15->addInt64($carry14);
2893
-        $s14 = $s14->subInt64($carry14->shiftLeft(21));
2894
-        $carry16 = $s16->addInt(1 << 20)->shiftRight(21);
2895
-        $s17 = $s17->addInt64($carry16);
2896
-        $s16 = $s16->subInt64($carry16->shiftLeft(21));
2897
-
2898
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2899
-        $s8 = $s8->addInt64($carry7);
2900
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2901
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2902
-        $s10 = $s10->addInt64($carry9);
2903
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2904
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2905
-        $s12 = $s12->addInt64($carry11);
2906
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2907
-        $carry13 = $s13->addInt(1 << 20)->shiftRight(21);
2908
-        $s14 = $s14->addInt64($carry13);
2909
-        $s13 = $s13->subInt64($carry13->shiftLeft(21));
2910
-        $carry15 = $s15->addInt(1 << 20)->shiftRight(21);
2911
-        $s16 = $s16->addInt64($carry15);
2912
-        $s15 = $s15->subInt64($carry15->shiftLeft(21));
2913
-
2914
-        $s5  =  $s5->addInt64($s17->mulInt(666643, 20));
2915
-        $s6  =  $s6->addInt64($s17->mulInt(470296, 19));
2916
-        $s7  =  $s7->addInt64($s17->mulInt(654183, 20));
2917
-        $s8  =  $s8->subInt64($s17->mulInt(997805, 20));
2918
-        $s9  =  $s9->addInt64($s17->mulInt(136657, 18));
2919
-        $s10 = $s10->subInt64($s17->mulInt(683901, 20));
2920
-
2921
-        $s4  =  $s4->addInt64($s16->mulInt(666643, 20));
2922
-        $s5  =  $s5->addInt64($s16->mulInt(470296, 19));
2923
-        $s6  =  $s6->addInt64($s16->mulInt(654183, 20));
2924
-        $s7  =  $s7->subInt64($s16->mulInt(997805, 20));
2925
-        $s8  =  $s8->addInt64($s16->mulInt(136657, 18));
2926
-        $s9  =  $s9->subInt64($s16->mulInt(683901, 20));
2927
-
2928
-        $s3  =  $s3->addInt64($s15->mulInt(666643, 20));
2929
-        $s4  =  $s4->addInt64($s15->mulInt(470296, 19));
2930
-        $s5  =  $s5->addInt64($s15->mulInt(654183, 20));
2931
-        $s6  =  $s6->subInt64($s15->mulInt(997805, 20));
2932
-        $s7  =  $s7->addInt64($s15->mulInt(136657, 18));
2933
-        $s8  =  $s8->subInt64($s15->mulInt(683901, 20));
2934
-
2935
-        $s2  =  $s2->addInt64($s14->mulInt(666643, 20));
2936
-        $s3  =  $s3->addInt64($s14->mulInt(470296, 19));
2937
-        $s4  =  $s4->addInt64($s14->mulInt(654183, 20));
2938
-        $s5  =  $s5->subInt64($s14->mulInt(997805, 20));
2939
-        $s6  =  $s6->addInt64($s14->mulInt(136657, 18));
2940
-        $s7  =  $s7->subInt64($s14->mulInt(683901, 20));
2941
-
2942
-        $s1  =  $s1->addInt64($s13->mulInt(666643, 20));
2943
-        $s2  =  $s2->addInt64($s13->mulInt(470296, 19));
2944
-        $s3  =  $s3->addInt64($s13->mulInt(654183, 20));
2945
-        $s4  =  $s4->subInt64($s13->mulInt(997805, 20));
2946
-        $s5  =  $s5->addInt64($s13->mulInt(136657, 18));
2947
-        $s6  =  $s6->subInt64($s13->mulInt(683901, 20));
2948
-
2949
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2950
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2951
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2952
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2953
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2954
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2812
+        $s0 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & self::load_3( self::substr( $s, 0, 3 ) ) );
2813
+        $s1 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 2, 4 ) ) >> 5 ) );
2814
+        $s2 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $s, 5, 3 ) ) >> 2 ) );
2815
+        $s3 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 7, 4 ) ) >> 7 ) );
2816
+        $s4 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 10, 4 ) ) >> 4 ) );
2817
+        $s5 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $s, 13, 3 ) ) >> 1 ) );
2818
+        $s6 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 15, 4 ) ) >> 6 ) );
2819
+        $s7 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $s, 18, 4 ) ) >> 3 ) );
2820
+        $s8 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & self::load_3( self::substr( $s, 21, 3 ) ) );
2821
+        $s9 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 23, 4 ) ) >> 5 ) );
2822
+        $s10 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $s, 26, 3 ) ) >> 2 ) );
2823
+        $s11 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 28, 4 ) ) >> 7 ) );
2824
+        $s12 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 31, 4 ) ) >> 4 ) );
2825
+        $s13 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $s, 34, 3 ) ) >> 1 ) );
2826
+        $s14 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 36, 4 ) ) >> 6 ) );
2827
+        $s15 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $s, 39, 4 ) ) >> 3 ) );
2828
+        $s16 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & self::load_3( self::substr( $s, 42, 3 ) ) );
2829
+        $s17 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 44, 4 ) ) >> 5 ) );
2830
+        $s18 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $s, 47, 3 ) ) >> 2 ) );
2831
+        $s19 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 49, 4 ) ) >> 7 ) );
2832
+        $s20 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 52, 4 ) ) >> 4 ) );
2833
+        $s21 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_3( self::substr( $s, 55, 3 ) ) >> 1 ) );
2834
+        $s22 = ParagonIE_Sodium_Core32_Int64::fromInt( 2097151 & ( self::load_4( self::substr( $s, 57, 4 ) ) >> 6 ) );
2835
+        $s23 = ParagonIE_Sodium_Core32_Int64::fromInt( 0x1fffffff & ( self::load_4( self::substr( $s, 60, 4 ) ) >> 3 ) );
2836
+
2837
+        $s11 = $s11->addInt64( $s23->mulInt( 666643, 20 ) );
2838
+        $s12 = $s12->addInt64( $s23->mulInt( 470296, 19 ) );
2839
+        $s13 = $s13->addInt64( $s23->mulInt( 654183, 20 ) );
2840
+        $s14 = $s14->subInt64( $s23->mulInt( 997805, 20 ) );
2841
+        $s15 = $s15->addInt64( $s23->mulInt( 136657, 18 ) );
2842
+        $s16 = $s16->subInt64( $s23->mulInt( 683901, 20 ) );
2843
+
2844
+        $s10 = $s10->addInt64( $s22->mulInt( 666643, 20 ) );
2845
+        $s11 = $s11->addInt64( $s22->mulInt( 470296, 19 ) );
2846
+        $s12 = $s12->addInt64( $s22->mulInt( 654183, 20 ) );
2847
+        $s13 = $s13->subInt64( $s22->mulInt( 997805, 20 ) );
2848
+        $s14 = $s14->addInt64( $s22->mulInt( 136657, 18 ) );
2849
+        $s15 = $s15->subInt64( $s22->mulInt( 683901, 20 ) );
2850
+
2851
+        $s9  = $s9->addInt64( $s21->mulInt( 666643, 20 ) );
2852
+        $s10 = $s10->addInt64( $s21->mulInt( 470296, 19 ) );
2853
+        $s11 = $s11->addInt64( $s21->mulInt( 654183, 20 ) );
2854
+        $s12 = $s12->subInt64( $s21->mulInt( 997805, 20 ) );
2855
+        $s13 = $s13->addInt64( $s21->mulInt( 136657, 18 ) );
2856
+        $s14 = $s14->subInt64( $s21->mulInt( 683901, 20 ) );
2857
+
2858
+        $s8  = $s8->addInt64( $s20->mulInt( 666643, 20 ) );
2859
+        $s9  = $s9->addInt64( $s20->mulInt( 470296, 19 ) );
2860
+        $s10 = $s10->addInt64( $s20->mulInt( 654183, 20 ) );
2861
+        $s11 = $s11->subInt64( $s20->mulInt( 997805, 20 ) );
2862
+        $s12 = $s12->addInt64( $s20->mulInt( 136657, 18 ) );
2863
+        $s13 = $s13->subInt64( $s20->mulInt( 683901, 20 ) );
2864
+
2865
+        $s7  = $s7->addInt64( $s19->mulInt( 666643, 20 ) );
2866
+        $s8  = $s8->addInt64( $s19->mulInt( 470296, 19 ) );
2867
+        $s9  = $s9->addInt64( $s19->mulInt( 654183, 20 ) );
2868
+        $s10 = $s10->subInt64( $s19->mulInt( 997805, 20 ) );
2869
+        $s11 = $s11->addInt64( $s19->mulInt( 136657, 18 ) );
2870
+        $s12 = $s12->subInt64( $s19->mulInt( 683901, 20 ) );
2871
+
2872
+        $s6  = $s6->addInt64( $s18->mulInt( 666643, 20 ) );
2873
+        $s7  = $s7->addInt64( $s18->mulInt( 470296, 19 ) );
2874
+        $s8  = $s8->addInt64( $s18->mulInt( 654183, 20 ) );
2875
+        $s9  = $s9->subInt64( $s18->mulInt( 997805, 20 ) );
2876
+        $s10 = $s10->addInt64( $s18->mulInt( 136657, 18 ) );
2877
+        $s11 = $s11->subInt64( $s18->mulInt( 683901, 20 ) );
2878
+
2879
+        $carry6 = $s6->addInt( 1 << 20 )->shiftRight( 21 );
2880
+        $s7 = $s7->addInt64( $carry6 );
2881
+        $s6 = $s6->subInt64( $carry6->shiftLeft( 21 ) );
2882
+        $carry8 = $s8->addInt( 1 << 20 )->shiftRight( 21 );
2883
+        $s9 = $s9->addInt64( $carry8 );
2884
+        $s8 = $s8->subInt64( $carry8->shiftLeft( 21 ) );
2885
+        $carry10 = $s10->addInt( 1 << 20 )->shiftRight( 21 );
2886
+        $s11 = $s11->addInt64( $carry10 );
2887
+        $s10 = $s10->subInt64( $carry10->shiftLeft( 21 ) );
2888
+        $carry12 = $s12->addInt( 1 << 20 )->shiftRight( 21 );
2889
+        $s13 = $s13->addInt64( $carry12 );
2890
+        $s12 = $s12->subInt64( $carry12->shiftLeft( 21 ) );
2891
+        $carry14 = $s14->addInt( 1 << 20 )->shiftRight( 21 );
2892
+        $s15 = $s15->addInt64( $carry14 );
2893
+        $s14 = $s14->subInt64( $carry14->shiftLeft( 21 ) );
2894
+        $carry16 = $s16->addInt( 1 << 20 )->shiftRight( 21 );
2895
+        $s17 = $s17->addInt64( $carry16 );
2896
+        $s16 = $s16->subInt64( $carry16->shiftLeft( 21 ) );
2897
+
2898
+        $carry7 = $s7->addInt( 1 << 20 )->shiftRight( 21 );
2899
+        $s8 = $s8->addInt64( $carry7 );
2900
+        $s7 = $s7->subInt64( $carry7->shiftLeft( 21 ) );
2901
+        $carry9 = $s9->addInt( 1 << 20 )->shiftRight( 21 );
2902
+        $s10 = $s10->addInt64( $carry9 );
2903
+        $s9 = $s9->subInt64( $carry9->shiftLeft( 21 ) );
2904
+        $carry11 = $s11->addInt( 1 << 20 )->shiftRight( 21 );
2905
+        $s12 = $s12->addInt64( $carry11 );
2906
+        $s11 = $s11->subInt64( $carry11->shiftLeft( 21 ) );
2907
+        $carry13 = $s13->addInt( 1 << 20 )->shiftRight( 21 );
2908
+        $s14 = $s14->addInt64( $carry13 );
2909
+        $s13 = $s13->subInt64( $carry13->shiftLeft( 21 ) );
2910
+        $carry15 = $s15->addInt( 1 << 20 )->shiftRight( 21 );
2911
+        $s16 = $s16->addInt64( $carry15 );
2912
+        $s15 = $s15->subInt64( $carry15->shiftLeft( 21 ) );
2913
+
2914
+        $s5  = $s5->addInt64( $s17->mulInt( 666643, 20 ) );
2915
+        $s6  = $s6->addInt64( $s17->mulInt( 470296, 19 ) );
2916
+        $s7  = $s7->addInt64( $s17->mulInt( 654183, 20 ) );
2917
+        $s8  = $s8->subInt64( $s17->mulInt( 997805, 20 ) );
2918
+        $s9  = $s9->addInt64( $s17->mulInt( 136657, 18 ) );
2919
+        $s10 = $s10->subInt64( $s17->mulInt( 683901, 20 ) );
2920
+
2921
+        $s4  = $s4->addInt64( $s16->mulInt( 666643, 20 ) );
2922
+        $s5  = $s5->addInt64( $s16->mulInt( 470296, 19 ) );
2923
+        $s6  = $s6->addInt64( $s16->mulInt( 654183, 20 ) );
2924
+        $s7  = $s7->subInt64( $s16->mulInt( 997805, 20 ) );
2925
+        $s8  = $s8->addInt64( $s16->mulInt( 136657, 18 ) );
2926
+        $s9  = $s9->subInt64( $s16->mulInt( 683901, 20 ) );
2927
+
2928
+        $s3  = $s3->addInt64( $s15->mulInt( 666643, 20 ) );
2929
+        $s4  = $s4->addInt64( $s15->mulInt( 470296, 19 ) );
2930
+        $s5  = $s5->addInt64( $s15->mulInt( 654183, 20 ) );
2931
+        $s6  = $s6->subInt64( $s15->mulInt( 997805, 20 ) );
2932
+        $s7  = $s7->addInt64( $s15->mulInt( 136657, 18 ) );
2933
+        $s8  = $s8->subInt64( $s15->mulInt( 683901, 20 ) );
2934
+
2935
+        $s2  = $s2->addInt64( $s14->mulInt( 666643, 20 ) );
2936
+        $s3  = $s3->addInt64( $s14->mulInt( 470296, 19 ) );
2937
+        $s4  = $s4->addInt64( $s14->mulInt( 654183, 20 ) );
2938
+        $s5  = $s5->subInt64( $s14->mulInt( 997805, 20 ) );
2939
+        $s6  = $s6->addInt64( $s14->mulInt( 136657, 18 ) );
2940
+        $s7  = $s7->subInt64( $s14->mulInt( 683901, 20 ) );
2941
+
2942
+        $s1  = $s1->addInt64( $s13->mulInt( 666643, 20 ) );
2943
+        $s2  = $s2->addInt64( $s13->mulInt( 470296, 19 ) );
2944
+        $s3  = $s3->addInt64( $s13->mulInt( 654183, 20 ) );
2945
+        $s4  = $s4->subInt64( $s13->mulInt( 997805, 20 ) );
2946
+        $s5  = $s5->addInt64( $s13->mulInt( 136657, 18 ) );
2947
+        $s6  = $s6->subInt64( $s13->mulInt( 683901, 20 ) );
2948
+
2949
+        $s0  = $s0->addInt64( $s12->mulInt( 666643, 20 ) );
2950
+        $s1  = $s1->addInt64( $s12->mulInt( 470296, 19 ) );
2951
+        $s2  = $s2->addInt64( $s12->mulInt( 654183, 20 ) );
2952
+        $s3  = $s3->subInt64( $s12->mulInt( 997805, 20 ) );
2953
+        $s4  = $s4->addInt64( $s12->mulInt( 136657, 18 ) );
2954
+        $s5  = $s5->subInt64( $s12->mulInt( 683901, 20 ) );
2955 2955
         $s12 = new ParagonIE_Sodium_Core32_Int64();
2956 2956
 
2957
-        $carry0 = $s0->addInt(1 << 20)->shiftRight(21);
2958
-        $s1 = $s1->addInt64($carry0);
2959
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
2960
-        $carry2 = $s2->addInt(1 << 20)->shiftRight(21);
2961
-        $s3 = $s3->addInt64($carry2);
2962
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
2963
-        $carry4 = $s4->addInt(1 << 20)->shiftRight(21);
2964
-        $s5 = $s5->addInt64($carry4);
2965
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
2966
-        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
2967
-        $s7 = $s7->addInt64($carry6);
2968
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
2969
-        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
2970
-        $s9 = $s9->addInt64($carry8);
2971
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
2972
-        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
2973
-        $s11 = $s11->addInt64($carry10);
2974
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
2975
-        $carry1 = $s1->addInt(1 << 20)->shiftRight(21);
2976
-        $s2 = $s2->addInt64($carry1);
2977
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
2978
-        $carry3 = $s3->addInt(1 << 20)->shiftRight(21);
2979
-        $s4 = $s4->addInt64($carry3);
2980
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
2981
-        $carry5 = $s5->addInt(1 << 20)->shiftRight(21);
2982
-        $s6 = $s6->addInt64($carry5);
2983
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
2984
-        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
2985
-        $s8 = $s8->addInt64($carry7);
2986
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
2987
-        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
2988
-        $s10 = $s10->addInt64($carry9);
2989
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
2990
-        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
2991
-        $s12 = $s12->addInt64($carry11);
2992
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
2993
-
2994
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
2995
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
2996
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
2997
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
2998
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
2999
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
2957
+        $carry0 = $s0->addInt( 1 << 20 )->shiftRight( 21 );
2958
+        $s1 = $s1->addInt64( $carry0 );
2959
+        $s0 = $s0->subInt64( $carry0->shiftLeft( 21 ) );
2960
+        $carry2 = $s2->addInt( 1 << 20 )->shiftRight( 21 );
2961
+        $s3 = $s3->addInt64( $carry2 );
2962
+        $s2 = $s2->subInt64( $carry2->shiftLeft( 21 ) );
2963
+        $carry4 = $s4->addInt( 1 << 20 )->shiftRight( 21 );
2964
+        $s5 = $s5->addInt64( $carry4 );
2965
+        $s4 = $s4->subInt64( $carry4->shiftLeft( 21 ) );
2966
+        $carry6 = $s6->addInt( 1 << 20 )->shiftRight( 21 );
2967
+        $s7 = $s7->addInt64( $carry6 );
2968
+        $s6 = $s6->subInt64( $carry6->shiftLeft( 21 ) );
2969
+        $carry8 = $s8->addInt( 1 << 20 )->shiftRight( 21 );
2970
+        $s9 = $s9->addInt64( $carry8 );
2971
+        $s8 = $s8->subInt64( $carry8->shiftLeft( 21 ) );
2972
+        $carry10 = $s10->addInt( 1 << 20 )->shiftRight( 21 );
2973
+        $s11 = $s11->addInt64( $carry10 );
2974
+        $s10 = $s10->subInt64( $carry10->shiftLeft( 21 ) );
2975
+        $carry1 = $s1->addInt( 1 << 20 )->shiftRight( 21 );
2976
+        $s2 = $s2->addInt64( $carry1 );
2977
+        $s1 = $s1->subInt64( $carry1->shiftLeft( 21 ) );
2978
+        $carry3 = $s3->addInt( 1 << 20 )->shiftRight( 21 );
2979
+        $s4 = $s4->addInt64( $carry3 );
2980
+        $s3 = $s3->subInt64( $carry3->shiftLeft( 21 ) );
2981
+        $carry5 = $s5->addInt( 1 << 20 )->shiftRight( 21 );
2982
+        $s6 = $s6->addInt64( $carry5 );
2983
+        $s5 = $s5->subInt64( $carry5->shiftLeft( 21 ) );
2984
+        $carry7 = $s7->addInt( 1 << 20 )->shiftRight( 21 );
2985
+        $s8 = $s8->addInt64( $carry7 );
2986
+        $s7 = $s7->subInt64( $carry7->shiftLeft( 21 ) );
2987
+        $carry9 = $s9->addInt( 1 << 20 )->shiftRight( 21 );
2988
+        $s10 = $s10->addInt64( $carry9 );
2989
+        $s9 = $s9->subInt64( $carry9->shiftLeft( 21 ) );
2990
+        $carry11 = $s11->addInt( 1 << 20 )->shiftRight( 21 );
2991
+        $s12 = $s12->addInt64( $carry11 );
2992
+        $s11 = $s11->subInt64( $carry11->shiftLeft( 21 ) );
2993
+
2994
+        $s0  = $s0->addInt64( $s12->mulInt( 666643, 20 ) );
2995
+        $s1  = $s1->addInt64( $s12->mulInt( 470296, 19 ) );
2996
+        $s2  = $s2->addInt64( $s12->mulInt( 654183, 20 ) );
2997
+        $s3  = $s3->subInt64( $s12->mulInt( 997805, 20 ) );
2998
+        $s4  = $s4->addInt64( $s12->mulInt( 136657, 18 ) );
2999
+        $s5  = $s5->subInt64( $s12->mulInt( 683901, 20 ) );
3000 3000
         $s12 = new ParagonIE_Sodium_Core32_Int64();
3001 3001
 
3002
-        $carry0 = $s0->shiftRight(21);
3003
-        $s1 = $s1->addInt64($carry0);
3004
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
3005
-        $carry1 = $s1->shiftRight(21);
3006
-        $s2 = $s2->addInt64($carry1);
3007
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
3008
-        $carry2 = $s2->shiftRight(21);
3009
-        $s3 = $s3->addInt64($carry2);
3010
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
3011
-        $carry3 = $s3->shiftRight(21);
3012
-        $s4 = $s4->addInt64($carry3);
3013
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
3014
-        $carry4 = $s4->shiftRight(21);
3015
-        $s5 = $s5->addInt64($carry4);
3016
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
3017
-        $carry5 = $s5->shiftRight(21);
3018
-        $s6 = $s6->addInt64($carry5);
3019
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
3020
-        $carry6 = $s6->shiftRight(21);
3021
-        $s7 = $s7->addInt64($carry6);
3022
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
3023
-        $carry7 = $s7->shiftRight(21);
3024
-        $s8 = $s8->addInt64($carry7);
3025
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
3026
-        $carry8 = $s8->shiftRight(21);
3027
-        $s9 = $s9->addInt64($carry8);
3028
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
3029
-        $carry9 = $s9->shiftRight(21);
3030
-        $s10 = $s10->addInt64($carry9);
3031
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
3032
-        $carry10 = $s10->shiftRight(21);
3033
-        $s11 = $s11->addInt64($carry10);
3034
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
3035
-        $carry11 = $s11->shiftRight(21);
3036
-        $s12 = $s12->addInt64($carry11);
3037
-        $s11 = $s11->subInt64($carry11->shiftLeft(21));
3038
-
3039
-        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
3040
-        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
3041
-        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
3042
-        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
3043
-        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
3044
-        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
3045
-
3046
-        $carry0 = $s0->shiftRight(21);
3047
-        $s1 = $s1->addInt64($carry0);
3048
-        $s0 = $s0->subInt64($carry0->shiftLeft(21));
3049
-        $carry1 = $s1->shiftRight(21);
3050
-        $s2 = $s2->addInt64($carry1);
3051
-        $s1 = $s1->subInt64($carry1->shiftLeft(21));
3052
-        $carry2 = $s2->shiftRight(21);
3053
-        $s3 = $s3->addInt64($carry2);
3054
-        $s2 = $s2->subInt64($carry2->shiftLeft(21));
3055
-        $carry3 = $s3->shiftRight(21);
3056
-        $s4 = $s4->addInt64($carry3);
3057
-        $s3 = $s3->subInt64($carry3->shiftLeft(21));
3058
-        $carry4 = $s4->shiftRight(21);
3059
-        $s5 = $s5->addInt64($carry4);
3060
-        $s4 = $s4->subInt64($carry4->shiftLeft(21));
3061
-        $carry5 = $s5->shiftRight(21);
3062
-        $s6 = $s6->addInt64($carry5);
3063
-        $s5 = $s5->subInt64($carry5->shiftLeft(21));
3064
-        $carry6 = $s6->shiftRight(21);
3065
-        $s7 = $s7->addInt64($carry6);
3066
-        $s6 = $s6->subInt64($carry6->shiftLeft(21));
3067
-        $carry7 = $s7->shiftRight(21);
3068
-        $s8 = $s8->addInt64($carry7);
3069
-        $s7 = $s7->subInt64($carry7->shiftLeft(21));
3070
-        $carry8 = $s8->shiftRight(21);
3071
-        $s9 = $s9->addInt64($carry8);
3072
-        $s8 = $s8->subInt64($carry8->shiftLeft(21));
3073
-        $carry9 = $s9->shiftRight(21);
3074
-        $s10 = $s10->addInt64($carry9);
3075
-        $s9 = $s9->subInt64($carry9->shiftLeft(21));
3076
-        $carry10 = $s10->shiftRight(21);
3077
-        $s11 = $s11->addInt64($carry10);
3078
-        $s10 = $s10->subInt64($carry10->shiftLeft(21));
3002
+        $carry0 = $s0->shiftRight( 21 );
3003
+        $s1 = $s1->addInt64( $carry0 );
3004
+        $s0 = $s0->subInt64( $carry0->shiftLeft( 21 ) );
3005
+        $carry1 = $s1->shiftRight( 21 );
3006
+        $s2 = $s2->addInt64( $carry1 );
3007
+        $s1 = $s1->subInt64( $carry1->shiftLeft( 21 ) );
3008
+        $carry2 = $s2->shiftRight( 21 );
3009
+        $s3 = $s3->addInt64( $carry2 );
3010
+        $s2 = $s2->subInt64( $carry2->shiftLeft( 21 ) );
3011
+        $carry3 = $s3->shiftRight( 21 );
3012
+        $s4 = $s4->addInt64( $carry3 );
3013
+        $s3 = $s3->subInt64( $carry3->shiftLeft( 21 ) );
3014
+        $carry4 = $s4->shiftRight( 21 );
3015
+        $s5 = $s5->addInt64( $carry4 );
3016
+        $s4 = $s4->subInt64( $carry4->shiftLeft( 21 ) );
3017
+        $carry5 = $s5->shiftRight( 21 );
3018
+        $s6 = $s6->addInt64( $carry5 );
3019
+        $s5 = $s5->subInt64( $carry5->shiftLeft( 21 ) );
3020
+        $carry6 = $s6->shiftRight( 21 );
3021
+        $s7 = $s7->addInt64( $carry6 );
3022
+        $s6 = $s6->subInt64( $carry6->shiftLeft( 21 ) );
3023
+        $carry7 = $s7->shiftRight( 21 );
3024
+        $s8 = $s8->addInt64( $carry7 );
3025
+        $s7 = $s7->subInt64( $carry7->shiftLeft( 21 ) );
3026
+        $carry8 = $s8->shiftRight( 21 );
3027
+        $s9 = $s9->addInt64( $carry8 );
3028
+        $s8 = $s8->subInt64( $carry8->shiftLeft( 21 ) );
3029
+        $carry9 = $s9->shiftRight( 21 );
3030
+        $s10 = $s10->addInt64( $carry9 );
3031
+        $s9 = $s9->subInt64( $carry9->shiftLeft( 21 ) );
3032
+        $carry10 = $s10->shiftRight( 21 );
3033
+        $s11 = $s11->addInt64( $carry10 );
3034
+        $s10 = $s10->subInt64( $carry10->shiftLeft( 21 ) );
3035
+        $carry11 = $s11->shiftRight( 21 );
3036
+        $s12 = $s12->addInt64( $carry11 );
3037
+        $s11 = $s11->subInt64( $carry11->shiftLeft( 21 ) );
3038
+
3039
+        $s0  = $s0->addInt64( $s12->mulInt( 666643, 20 ) );
3040
+        $s1  = $s1->addInt64( $s12->mulInt( 470296, 19 ) );
3041
+        $s2  = $s2->addInt64( $s12->mulInt( 654183, 20 ) );
3042
+        $s3  = $s3->subInt64( $s12->mulInt( 997805, 20 ) );
3043
+        $s4  = $s4->addInt64( $s12->mulInt( 136657, 18 ) );
3044
+        $s5  = $s5->subInt64( $s12->mulInt( 683901, 20 ) );
3045
+
3046
+        $carry0 = $s0->shiftRight( 21 );
3047
+        $s1 = $s1->addInt64( $carry0 );
3048
+        $s0 = $s0->subInt64( $carry0->shiftLeft( 21 ) );
3049
+        $carry1 = $s1->shiftRight( 21 );
3050
+        $s2 = $s2->addInt64( $carry1 );
3051
+        $s1 = $s1->subInt64( $carry1->shiftLeft( 21 ) );
3052
+        $carry2 = $s2->shiftRight( 21 );
3053
+        $s3 = $s3->addInt64( $carry2 );
3054
+        $s2 = $s2->subInt64( $carry2->shiftLeft( 21 ) );
3055
+        $carry3 = $s3->shiftRight( 21 );
3056
+        $s4 = $s4->addInt64( $carry3 );
3057
+        $s3 = $s3->subInt64( $carry3->shiftLeft( 21 ) );
3058
+        $carry4 = $s4->shiftRight( 21 );
3059
+        $s5 = $s5->addInt64( $carry4 );
3060
+        $s4 = $s4->subInt64( $carry4->shiftLeft( 21 ) );
3061
+        $carry5 = $s5->shiftRight( 21 );
3062
+        $s6 = $s6->addInt64( $carry5 );
3063
+        $s5 = $s5->subInt64( $carry5->shiftLeft( 21 ) );
3064
+        $carry6 = $s6->shiftRight( 21 );
3065
+        $s7 = $s7->addInt64( $carry6 );
3066
+        $s6 = $s6->subInt64( $carry6->shiftLeft( 21 ) );
3067
+        $carry7 = $s7->shiftRight( 21 );
3068
+        $s8 = $s8->addInt64( $carry7 );
3069
+        $s7 = $s7->subInt64( $carry7->shiftLeft( 21 ) );
3070
+        $carry8 = $s8->shiftRight( 21 );
3071
+        $s9 = $s9->addInt64( $carry8 );
3072
+        $s8 = $s8->subInt64( $carry8->shiftLeft( 21 ) );
3073
+        $carry9 = $s9->shiftRight( 21 );
3074
+        $s10 = $s10->addInt64( $carry9 );
3075
+        $s9 = $s9->subInt64( $carry9->shiftLeft( 21 ) );
3076
+        $carry10 = $s10->shiftRight( 21 );
3077
+        $s11 = $s11->addInt64( $carry10 );
3078
+        $s10 = $s10->subInt64( $carry10->shiftLeft( 21 ) );
3079 3079
 
3080 3080
         $S0 = $s0->toInt32()->toInt();
3081 3081
         $S1 = $s1->toInt32()->toInt();
@@ -3094,40 +3094,40 @@  discard block
 block discarded – undo
3094 3094
          * @var array<int, int>
3095 3095
          */
3096 3096
         $arr = array(
3097
-            (int) ($S0 >> 0),
3098
-            (int) ($S0 >> 8),
3099
-            (int) (($S0 >> 16) | ($S1 << 5)),
3100
-            (int) ($S1 >> 3),
3101
-            (int) ($S1 >> 11),
3102
-            (int) (($S1 >> 19) | ($S2 << 2)),
3103
-            (int) ($S2 >> 6),
3104
-            (int) (($S2 >> 14) | ($S3 << 7)),
3105
-            (int) ($S3 >> 1),
3106
-            (int) ($S3 >> 9),
3107
-            (int) (($S3 >> 17) | ($S4 << 4)),
3108
-            (int) ($S4 >> 4),
3109
-            (int) ($S4 >> 12),
3110
-            (int) (($S4 >> 20) | ($S5 << 1)),
3111
-            (int) ($S5 >> 7),
3112
-            (int) (($S5 >> 15) | ($S6 << 6)),
3113
-            (int) ($S6 >> 2),
3114
-            (int) ($S6 >> 10),
3115
-            (int) (($S6 >> 18) | ($S7 << 3)),
3116
-            (int) ($S7 >> 5),
3117
-            (int) ($S7 >> 13),
3118
-            (int) ($S8 >> 0),
3119
-            (int) ($S8 >> 8),
3120
-            (int) (($S8 >> 16) | ($S9 << 5)),
3121
-            (int) ($S9 >> 3),
3122
-            (int) ($S9 >> 11),
3123
-            (int) (($S9 >> 19) | ($S10 << 2)),
3124
-            (int) ($S10 >> 6),
3125
-            (int) (($S10 >> 14) | ($S11 << 7)),
3126
-            (int) ($S11 >> 1),
3127
-            (int) ($S11 >> 9),
3128
-            (int) $S11 >> 17
3097
+            (int)( $S0 >> 0 ),
3098
+            (int)( $S0 >> 8 ),
3099
+            (int)( ( $S0 >> 16 ) | ( $S1 << 5 ) ),
3100
+            (int)( $S1 >> 3 ),
3101
+            (int)( $S1 >> 11 ),
3102
+            (int)( ( $S1 >> 19 ) | ( $S2 << 2 ) ),
3103
+            (int)( $S2 >> 6 ),
3104
+            (int)( ( $S2 >> 14 ) | ( $S3 << 7 ) ),
3105
+            (int)( $S3 >> 1 ),
3106
+            (int)( $S3 >> 9 ),
3107
+            (int)( ( $S3 >> 17 ) | ( $S4 << 4 ) ),
3108
+            (int)( $S4 >> 4 ),
3109
+            (int)( $S4 >> 12 ),
3110
+            (int)( ( $S4 >> 20 ) | ( $S5 << 1 ) ),
3111
+            (int)( $S5 >> 7 ),
3112
+            (int)( ( $S5 >> 15 ) | ( $S6 << 6 ) ),
3113
+            (int)( $S6 >> 2 ),
3114
+            (int)( $S6 >> 10 ),
3115
+            (int)( ( $S6 >> 18 ) | ( $S7 << 3 ) ),
3116
+            (int)( $S7 >> 5 ),
3117
+            (int)( $S7 >> 13 ),
3118
+            (int)( $S8 >> 0 ),
3119
+            (int)( $S8 >> 8 ),
3120
+            (int)( ( $S8 >> 16 ) | ( $S9 << 5 ) ),
3121
+            (int)( $S9 >> 3 ),
3122
+            (int)( $S9 >> 11 ),
3123
+            (int)( ( $S9 >> 19 ) | ( $S10 << 2 ) ),
3124
+            (int)( $S10 >> 6 ),
3125
+            (int)( ( $S10 >> 14 ) | ( $S11 << 7 ) ),
3126
+            (int)( $S11 >> 1 ),
3127
+            (int)( $S11 >> 9 ),
3128
+            (int)$S11 >> 17
3129 3129
         );
3130
-        return self::intArrayToString($arr);
3130
+        return self::intArrayToString( $arr );
3131 3131
     }
3132 3132
 
3133 3133
     /**
@@ -3138,7 +3138,7 @@  discard block
 block discarded – undo
3138 3138
      * @throws SodiumException
3139 3139
      * @throws TypeError
3140 3140
      */
3141
-    public static function ge_mul_l(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A)
3141
+    public static function ge_mul_l( ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A )
3142 3142
     {
3143 3143
         /** @var array<int, int> $aslide */
3144 3144
         $aslide = array(
@@ -3160,37 +3160,37 @@  discard block
 block discarded – undo
3160 3160
         $Ai = array();
3161 3161
 
3162 3162
         # ge_p3_to_cached(&Ai[0], A);
3163
-        $Ai[0] = self::ge_p3_to_cached($A);
3163
+        $Ai[ 0 ] = self::ge_p3_to_cached( $A );
3164 3164
         # ge_p3_dbl(&t, A);
3165
-        $t = self::ge_p3_dbl($A);
3165
+        $t = self::ge_p3_dbl( $A );
3166 3166
         # ge_p1p1_to_p3(&A2, &t);
3167
-        $A2 = self::ge_p1p1_to_p3($t);
3167
+        $A2 = self::ge_p1p1_to_p3( $t );
3168 3168
 
3169
-        for ($i = 1; $i < 8; ++$i) {
3169
+        for ( $i = 1; $i < 8; ++$i ) {
3170 3170
             # ge_add(&t, &A2, &Ai[0]);
3171
-            $t = self::ge_add($A2, $Ai[$i - 1]);
3171
+            $t = self::ge_add( $A2, $Ai[ $i - 1 ] );
3172 3172
             # ge_p1p1_to_p3(&u, &t);
3173
-            $u = self::ge_p1p1_to_p3($t);
3173
+            $u = self::ge_p1p1_to_p3( $t );
3174 3174
             # ge_p3_to_cached(&Ai[i], &u);
3175
-            $Ai[$i] = self::ge_p3_to_cached($u);
3175
+            $Ai[ $i ] = self::ge_p3_to_cached( $u );
3176 3176
         }
3177 3177
 
3178 3178
         $r = self::ge_p3_0();
3179
-        for ($i = 252; $i >= 0; --$i) {
3180
-            $t = self::ge_p3_dbl($r);
3181
-            if ($aslide[$i] > 0) {
3179
+        for ( $i = 252; $i >= 0; --$i ) {
3180
+            $t = self::ge_p3_dbl( $r );
3181
+            if ( $aslide[ $i ] > 0 ) {
3182 3182
                 # ge_p1p1_to_p3(&u, &t);
3183
-                $u = self::ge_p1p1_to_p3($t);
3183
+                $u = self::ge_p1p1_to_p3( $t );
3184 3184
                 # ge_add(&t, &u, &Ai[aslide[i] / 2]);
3185
-                $t = self::ge_add($u, $Ai[(int)($aslide[$i] / 2)]);
3186
-            } elseif ($aslide[$i] < 0) {
3185
+                $t = self::ge_add( $u, $Ai[ (int)( $aslide[ $i ] / 2 ) ] );
3186
+            } elseif ( $aslide[ $i ] < 0 ) {
3187 3187
                 # ge_p1p1_to_p3(&u, &t);
3188
-                $u = self::ge_p1p1_to_p3($t);
3188
+                $u = self::ge_p1p1_to_p3( $t );
3189 3189
                 # ge_sub(&t, &u, &Ai[(-aslide[i]) / 2]);
3190
-                $t = self::ge_sub($u, $Ai[(int)(-$aslide[$i] / 2)]);
3190
+                $t = self::ge_sub( $u, $Ai[ (int)(-$aslide[ $i ] / 2) ] );
3191 3191
             }
3192 3192
         }
3193 3193
         # ge_p1p1_to_p3(r, &t);
3194
-        return self::ge_p1p1_to_p3($t);
3194
+        return self::ge_p1p1_to_p3( $t );
3195 3195
     }
3196 3196
 }
Please login to merge, or discard this patch.
Braces   +34 added lines, -68 removed lines patch added patch discarded remove patch
@@ -13,8 +13,7 @@  discard block
 block discarded – undo
13 13
  *
14 14
  * @ref https://github.com/jedisct1/libsodium/blob/master/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c
15 15
  */
16
-abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core32_Curve25519_H
17
-{
16
+abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core32_Curve25519_H {
18 17
     /**
19 18
      * Get a field element of size 10 with a value of 0
20 19
      *
@@ -24,8 +23,7 @@  discard block
 block discarded – undo
24 23
      * @throws SodiumException
25 24
      * @throws TypeError
26 25
      */
27
-    public static function fe_0()
28
-    {
26
+    public static function fe_0() {
29 27
         return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
30 28
             array(
31 29
                 new ParagonIE_Sodium_Core32_Int32(),
@@ -51,8 +49,7 @@  discard block
 block discarded – undo
51 49
      * @throws SodiumException
52 50
      * @throws TypeError
53 51
      */
54
-    public static function fe_1()
55
-    {
52
+    public static function fe_1() {
56 53
         return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
57 54
             array(
58 55
                 ParagonIE_Sodium_Core32_Int32::fromInt(1),
@@ -138,8 +135,7 @@  discard block
 block discarded – undo
138 135
      * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
139 136
      * @return ParagonIE_Sodium_Core32_Curve25519_Fe
140 137
      */
141
-    public static function fe_copy(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
142
-    {
138
+    public static function fe_copy(ParagonIE_Sodium_Core32_Curve25519_Fe $f) {
143 139
         $h = clone $f;
144 140
         return $h;
145 141
     }
@@ -157,8 +153,7 @@  discard block
 block discarded – undo
157 153
      * @throws TypeError
158 154
      * @psalm-suppress MixedMethodCall
159 155
      */
160
-    public static function fe_frombytes($s)
161
-    {
156
+    public static function fe_frombytes($s) {
162 157
         if (self::strlen($s) !== 32) {
163 158
             throw new RangeException('Expected a 32-byte string.');
164 159
         }
@@ -260,8 +255,7 @@  discard block
 block discarded – undo
260 255
      * @psalm-suppress MixedAssignment
261 256
      * @psalm-suppress MixedMethodCall
262 257
      */
263
-    public static function fe_tobytes(ParagonIE_Sodium_Core32_Curve25519_Fe $h)
264
-    {
258
+    public static function fe_tobytes(ParagonIE_Sodium_Core32_Curve25519_Fe $h) {
265 259
         /**
266 260
          * @var ParagonIE_Sodium_Core32_Int64[] $f
267 261
          * @var ParagonIE_Sodium_Core32_Int64 $q
@@ -396,8 +390,7 @@  discard block
 block discarded – undo
396 390
      * @throws SodiumException
397 391
      * @throws TypeError
398 392
      */
399
-    public static function fe_isnegative(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
400
-    {
393
+    public static function fe_isnegative(ParagonIE_Sodium_Core32_Curve25519_Fe $f) {
401 394
         $str = self::fe_tobytes($f);
402 395
         return (int) (self::chrToInt($str[0]) & 1);
403 396
     }
@@ -412,8 +405,7 @@  discard block
 block discarded – undo
412 405
      * @throws SodiumException
413 406
      * @throws TypeError
414 407
      */
415
-    public static function fe_isnonzero(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
416
-    {
408
+    public static function fe_isnonzero(ParagonIE_Sodium_Core32_Curve25519_Fe $f) {
417 409
         static $zero;
418 410
         if ($zero === null) {
419 411
             $zero = str_repeat("\x00", 32);
@@ -751,8 +743,7 @@  discard block
 block discarded – undo
751 743
      * @psalm-suppress MixedAssignment
752 744
      * @psalm-suppress MixedMethodCall
753 745
      */
754
-    public static function fe_neg(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
755
-    {
746
+    public static function fe_neg(ParagonIE_Sodium_Core32_Curve25519_Fe $f) {
756 747
         $h = new ParagonIE_Sodium_Core32_Curve25519_Fe();
757 748
         for ($i = 0; $i < 10; ++$i) {
758 749
             $h[$i] = $h[$i]->subInt32($f[$i]);
@@ -773,8 +764,7 @@  discard block
 block discarded – undo
773 764
      * @throws TypeError
774 765
      * @psalm-suppress MixedMethodCall
775 766
      */
776
-    public static function fe_sq(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
777
-    {
767
+    public static function fe_sq(ParagonIE_Sodium_Core32_Curve25519_Fe $f) {
778 768
         /** @var ParagonIE_Sodium_Core32_Int64 $f0 */
779 769
         $f0 = $f[0]->toInt64();
780 770
         /** @var ParagonIE_Sodium_Core32_Int64 $f1 */
@@ -977,8 +967,7 @@  discard block
 block discarded – undo
977 967
      * @throws TypeError
978 968
      * @psalm-suppress MixedMethodCall
979 969
      */
980
-    public static function fe_sq2(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
981
-    {
970
+    public static function fe_sq2(ParagonIE_Sodium_Core32_Curve25519_Fe $f) {
982 971
         /** @var ParagonIE_Sodium_Core32_Int64 $f0 */
983 972
         $f0 = $f[0]->toInt64();
984 973
         /** @var ParagonIE_Sodium_Core32_Int64 $f1 */
@@ -1170,8 +1159,7 @@  discard block
 block discarded – undo
1170 1159
      * @throws SodiumException
1171 1160
      * @throws TypeError
1172 1161
      */
1173
-    public static function fe_invert(ParagonIE_Sodium_Core32_Curve25519_Fe $Z)
1174
-    {
1162
+    public static function fe_invert(ParagonIE_Sodium_Core32_Curve25519_Fe $Z) {
1175 1163
         $z = clone $Z;
1176 1164
         $t0 = self::fe_sq($z);
1177 1165
         $t1 = self::fe_sq($t0);
@@ -1232,8 +1220,7 @@  discard block
 block discarded – undo
1232 1220
      * @throws SodiumException
1233 1221
      * @throws TypeError
1234 1222
      */
1235
-    public static function fe_pow22523(ParagonIE_Sodium_Core32_Curve25519_Fe $z)
1236
-    {
1223
+    public static function fe_pow22523(ParagonIE_Sodium_Core32_Curve25519_Fe $z) {
1237 1224
         # fe_sq(t0, z);
1238 1225
         # fe_sq(t1, t0);
1239 1226
         # fe_sq(t1, t1);
@@ -1362,8 +1349,7 @@  discard block
 block discarded – undo
1362 1349
      * @psalm-suppress MixedMethodCall
1363 1350
      * @psalm-suppress MixedTypeCoercion
1364 1351
      */
1365
-    public static function fe_sub(ParagonIE_Sodium_Core32_Curve25519_Fe $f, ParagonIE_Sodium_Core32_Curve25519_Fe $g)
1366
-    {
1352
+    public static function fe_sub(ParagonIE_Sodium_Core32_Curve25519_Fe $f, ParagonIE_Sodium_Core32_Curve25519_Fe $g) {
1367 1353
         return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
1368 1354
             array(
1369 1355
                 $f[0]->subInt32($g[0]),
@@ -1422,8 +1408,7 @@  discard block
 block discarded – undo
1422 1408
      * @throws TypeError
1423 1409
      * @psalm-suppress MixedArrayOffset
1424 1410
      */
1425
-    public static function slide($a)
1426
-    {
1411
+    public static function slide($a) {
1427 1412
         if (self::strlen($a) < 256) {
1428 1413
             if (self::strlen($a) < 16) {
1429 1414
                 $a = str_pad($a, 256, '0', STR_PAD_RIGHT);
@@ -1475,8 +1460,7 @@  discard block
 block discarded – undo
1475 1460
      * @throws SodiumException
1476 1461
      * @throws TypeError
1477 1462
      */
1478
-    public static function ge_frombytes_negate_vartime($s)
1479
-    {
1463
+    public static function ge_frombytes_negate_vartime($s) {
1480 1464
         static $d = null;
1481 1465
         if (!$d) {
1482 1466
             /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
@@ -1639,8 +1623,7 @@  discard block
 block discarded – undo
1639 1623
      * @throws SodiumException
1640 1624
      * @throws TypeError
1641 1625
      */
1642
-    public static function ge_p1p1_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
1643
-    {
1626
+    public static function ge_p1p1_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p) {
1644 1627
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P2();
1645 1628
         $r->X = self::fe_mul($p->X, $p->T);
1646 1629
         $r->Y = self::fe_mul($p->Y, $p->Z);
@@ -1656,8 +1639,7 @@  discard block
 block discarded – undo
1656 1639
      * @throws SodiumException
1657 1640
      * @throws TypeError
1658 1641
      */
1659
-    public static function ge_p1p1_to_p3(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
1660
-    {
1642
+    public static function ge_p1p1_to_p3(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p) {
1661 1643
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3();
1662 1644
         $r->X = self::fe_mul($p->X, $p->T);
1663 1645
         $r->Y = self::fe_mul($p->Y, $p->Z);
@@ -1673,8 +1655,7 @@  discard block
 block discarded – undo
1673 1655
      * @throws SodiumException
1674 1656
      * @throws TypeError
1675 1657
      */
1676
-    public static function ge_p2_0()
1677
-    {
1658
+    public static function ge_p2_0() {
1678 1659
         return new ParagonIE_Sodium_Core32_Curve25519_Ge_P2(
1679 1660
             self::fe_0(),
1680 1661
             self::fe_1(),
@@ -1690,8 +1671,7 @@  discard block
 block discarded – undo
1690 1671
      * @throws SodiumException
1691 1672
      * @throws TypeError
1692 1673
      */
1693
-    public static function ge_p2_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p)
1694
-    {
1674
+    public static function ge_p2_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p) {
1695 1675
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
1696 1676
 
1697 1677
         $r->X = self::fe_sq($p->X);
@@ -1714,8 +1694,7 @@  discard block
 block discarded – undo
1714 1694
      * @throws SodiumException
1715 1695
      * @throws TypeError
1716 1696
      */
1717
-    public static function ge_p3_0()
1718
-    {
1697
+    public static function ge_p3_0() {
1719 1698
         return new ParagonIE_Sodium_Core32_Curve25519_Ge_P3(
1720 1699
             self::fe_0(),
1721 1700
             self::fe_1(),
@@ -1732,8 +1711,7 @@  discard block
 block discarded – undo
1732 1711
      * @throws SodiumException
1733 1712
      * @throws TypeError
1734 1713
      */
1735
-    public static function ge_p3_to_cached(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1736
-    {
1714
+    public static function ge_p3_to_cached(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p) {
1737 1715
         static $d2 = null;
1738 1716
         if ($d2 === null) {
1739 1717
             $d2 = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
@@ -1766,8 +1744,7 @@  discard block
 block discarded – undo
1766 1744
      * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
1767 1745
      * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
1768 1746
      */
1769
-    public static function ge_p3_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1770
-    {
1747
+    public static function ge_p3_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p) {
1771 1748
         return new ParagonIE_Sodium_Core32_Curve25519_Ge_P2(
1772 1749
             $p->X,
1773 1750
             $p->Y,
@@ -1783,8 +1760,7 @@  discard block
 block discarded – undo
1783 1760
      * @throws SodiumException
1784 1761
      * @throws TypeError
1785 1762
      */
1786
-    public static function ge_p3_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h)
1787
-    {
1763
+    public static function ge_p3_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h) {
1788 1764
         $recip = self::fe_invert($h->Z);
1789 1765
         $x = self::fe_mul($h->X, $recip);
1790 1766
         $y = self::fe_mul($h->Y, $recip);
@@ -1803,8 +1779,7 @@  discard block
 block discarded – undo
1803 1779
      * @throws SodiumException
1804 1780
      * @throws TypeError
1805 1781
      */
1806
-    public static function ge_p3_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
1807
-    {
1782
+    public static function ge_p3_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p) {
1808 1783
         $q = self::ge_p3_to_p2($p);
1809 1784
         return self::ge_p2_dbl($q);
1810 1785
     }
@@ -1814,8 +1789,7 @@  discard block
 block discarded – undo
1814 1789
      * @throws SodiumException
1815 1790
      * @throws TypeError
1816 1791
      */
1817
-    public static function ge_precomp_0()
1818
-    {
1792
+    public static function ge_precomp_0() {
1819 1793
         return new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
1820 1794
             self::fe_1(),
1821 1795
             self::fe_1(),
@@ -1831,8 +1805,7 @@  discard block
 block discarded – undo
1831 1805
      * @return int
1832 1806
      * @psalm-suppress MixedReturnStatement
1833 1807
      */
1834
-    public static function equal($b, $c)
1835
-    {
1808
+    public static function equal($b, $c) {
1836 1809
         return (int) ((($b ^ $c) - 1 & 0xffffffff) >> 31);
1837 1810
     }
1838 1811
 
@@ -1844,8 +1817,7 @@  discard block
 block discarded – undo
1844 1817
      * @throws SodiumException
1845 1818
      * @throws TypeError
1846 1819
      */
1847
-    public static function negative($char)
1848
-    {
1820
+    public static function negative($char) {
1849 1821
         if (is_int($char)) {
1850 1822
             return $char < 0 ? 1 : 0;
1851 1823
         }
@@ -1894,8 +1866,7 @@  discard block
 block discarded – undo
1894 1866
      * @psalm-suppress MixedArrayOffset
1895 1867
      * @psalm-suppress MixedArgument
1896 1868
      */
1897
-    public static function ge_select($pos = 0, $b = 0)
1898
-    {
1869
+    public static function ge_select($pos = 0, $b = 0) {
1899 1870
         static $base = null;
1900 1871
         if ($base === null) {
1901 1872
             $base = array();
@@ -2017,8 +1988,7 @@  discard block
 block discarded – undo
2017 1988
      * @throws SodiumException
2018 1989
      * @throws TypeError
2019 1990
      */
2020
-    public static function ge_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h)
2021
-    {
1991
+    public static function ge_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h) {
2022 1992
         $recip = self::fe_invert($h->Z);
2023 1993
         $x = self::fe_mul($h->X, $recip);
2024 1994
         $y = self::fe_mul($h->Y, $recip);
@@ -2213,8 +2183,7 @@  discard block
 block discarded – undo
2213 2183
      * @throws SodiumException
2214 2184
      * @throws TypeError
2215 2185
      */
2216
-    public static function ge_scalarmult_base($a)
2217
-    {
2186
+    public static function ge_scalarmult_base($a) {
2218 2187
         /** @var array<int, int> $e */
2219 2188
         $e = array();
2220 2189
         $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
@@ -2280,8 +2249,7 @@  discard block
 block discarded – undo
2280 2249
      * @throws SodiumException
2281 2250
      * @throws TypeError
2282 2251
      */
2283
-    public static function sc_muladd($a, $b, $c)
2284
-    {
2252
+    public static function sc_muladd($a, $b, $c) {
2285 2253
         $a0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 0, 3)));
2286 2254
         $a1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 2, 4)) >> 5));
2287 2255
         $a2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 5, 3)) >> 2));
@@ -2781,8 +2749,7 @@  discard block
 block discarded – undo
2781 2749
      * @throws SodiumException
2782 2750
      * @throws TypeError
2783 2751
      */
2784
-    public static function sc_reduce($s)
2785
-    {
2752
+    public static function sc_reduce($s) {
2786 2753
         /**
2787 2754
          * @var ParagonIE_Sodium_Core32_Int64 $s0
2788 2755
          * @var ParagonIE_Sodium_Core32_Int64 $s1
@@ -3138,8 +3105,7 @@  discard block
 block discarded – undo
3138 3105
      * @throws SodiumException
3139 3106
      * @throws TypeError
3140 3107
      */
3141
-    public static function ge_mul_l(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A)
3142
-    {
3108
+    public static function ge_mul_l(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A) {
3143 3109
         /** @var array<int, int> $aslide */
3144 3110
         $aslide = array(
3145 3111
             13, 0, 0, 0, 0, -1, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0,
Please login to merge, or discard this patch.
vendor/paragonie/sodium_compat/src/Core32/ChaCha20/Ctx.php 3 patches
Indentation   +108 added lines, -108 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_Core_ChaCha20_Ctx', false)) {
4
-    return;
4
+	return;
5 5
 }
6 6
 
7 7
 /**
@@ -9,122 +9,122 @@  discard block
 block discarded – undo
9 9
  */
10 10
 class ParagonIE_Sodium_Core32_ChaCha20_Ctx extends ParagonIE_Sodium_Core32_Util implements ArrayAccess
11 11
 {
12
-    /**
13
-     * @var SplFixedArray internally, <int, ParagonIE_Sodium_Core32_Int32>
14
-     */
15
-    protected $container;
12
+	/**
13
+	 * @var SplFixedArray internally, <int, ParagonIE_Sodium_Core32_Int32>
14
+	 */
15
+	protected $container;
16 16
 
17
-    /**
18
-     * ParagonIE_Sodium_Core_ChaCha20_Ctx constructor.
19
-     *
20
-     * @internal You should not use this directly from another application
21
-     *
22
-     * @param string $key     ChaCha20 key.
23
-     * @param string $iv      Initialization Vector (a.k.a. nonce).
24
-     * @param string $counter The initial counter value.
25
-     *                        Defaults to 8 0x00 bytes.
26
-     * @throws InvalidArgumentException
27
-     * @throws SodiumException
28
-     * @throws TypeError
29
-     */
30
-    public function __construct($key = '', $iv = '', $counter = '')
31
-    {
32
-        if (self::strlen($key) !== 32) {
33
-            throw new InvalidArgumentException('ChaCha20 expects a 256-bit key.');
34
-        }
35
-        if (self::strlen($iv) !== 8) {
36
-            throw new InvalidArgumentException('ChaCha20 expects a 64-bit nonce.');
37
-        }
38
-        $this->container = new SplFixedArray(16);
17
+	/**
18
+	 * ParagonIE_Sodium_Core_ChaCha20_Ctx constructor.
19
+	 *
20
+	 * @internal You should not use this directly from another application
21
+	 *
22
+	 * @param string $key     ChaCha20 key.
23
+	 * @param string $iv      Initialization Vector (a.k.a. nonce).
24
+	 * @param string $counter The initial counter value.
25
+	 *                        Defaults to 8 0x00 bytes.
26
+	 * @throws InvalidArgumentException
27
+	 * @throws SodiumException
28
+	 * @throws TypeError
29
+	 */
30
+	public function __construct($key = '', $iv = '', $counter = '')
31
+	{
32
+		if (self::strlen($key) !== 32) {
33
+			throw new InvalidArgumentException('ChaCha20 expects a 256-bit key.');
34
+		}
35
+		if (self::strlen($iv) !== 8) {
36
+			throw new InvalidArgumentException('ChaCha20 expects a 64-bit nonce.');
37
+		}
38
+		$this->container = new SplFixedArray(16);
39 39
 
40
-        /* "expand 32-byte k" as per ChaCha20 spec */
41
-        $this->container[0]  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
42
-        $this->container[1]  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
43
-        $this->container[2]  = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
44
-        $this->container[3]  = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
40
+		/* "expand 32-byte k" as per ChaCha20 spec */
41
+		$this->container[0]  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
42
+		$this->container[1]  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
43
+		$this->container[2]  = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
44
+		$this->container[3]  = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
45 45
 
46
-        $this->container[4]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 0, 4));
47
-        $this->container[5]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 4, 4));
48
-        $this->container[6]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 8, 4));
49
-        $this->container[7]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 12, 4));
50
-        $this->container[8]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 16, 4));
51
-        $this->container[9]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 20, 4));
52
-        $this->container[10] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 24, 4));
53
-        $this->container[11] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 28, 4));
46
+		$this->container[4]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 0, 4));
47
+		$this->container[5]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 4, 4));
48
+		$this->container[6]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 8, 4));
49
+		$this->container[7]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 12, 4));
50
+		$this->container[8]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 16, 4));
51
+		$this->container[9]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 20, 4));
52
+		$this->container[10] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 24, 4));
53
+		$this->container[11] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 28, 4));
54 54
 
55
-        if (empty($counter)) {
56
-            $this->container[12] = new ParagonIE_Sodium_Core32_Int32();
57
-            $this->container[13] = new ParagonIE_Sodium_Core32_Int32();
58
-        } else {
59
-            $this->container[12] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 0, 4));
60
-            $this->container[13] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 4, 4));
61
-        }
62
-        $this->container[14] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 0, 4));
63
-        $this->container[15] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 4, 4));
64
-    }
55
+		if (empty($counter)) {
56
+			$this->container[12] = new ParagonIE_Sodium_Core32_Int32();
57
+			$this->container[13] = new ParagonIE_Sodium_Core32_Int32();
58
+		} else {
59
+			$this->container[12] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 0, 4));
60
+			$this->container[13] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 4, 4));
61
+		}
62
+		$this->container[14] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 0, 4));
63
+		$this->container[15] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 4, 4));
64
+	}
65 65
 
66
-    /**
67
-     * @internal You should not use this directly from another application
68
-     *
69
-     * @param int $offset
70
-     * @param int|ParagonIE_Sodium_Core32_Int32 $value
71
-     * @return void
72
-     */
73
-    #[ReturnTypeWillChange]
74
-    public function offsetSet($offset, $value)
75
-    {
76
-        if (!is_int($offset)) {
77
-            throw new InvalidArgumentException('Expected an integer');
78
-        }
79
-        if ($value instanceof ParagonIE_Sodium_Core32_Int32) {
80
-            /*
66
+	/**
67
+	 * @internal You should not use this directly from another application
68
+	 *
69
+	 * @param int $offset
70
+	 * @param int|ParagonIE_Sodium_Core32_Int32 $value
71
+	 * @return void
72
+	 */
73
+	#[ReturnTypeWillChange]
74
+	public function offsetSet($offset, $value)
75
+	{
76
+		if (!is_int($offset)) {
77
+			throw new InvalidArgumentException('Expected an integer');
78
+		}
79
+		if ($value instanceof ParagonIE_Sodium_Core32_Int32) {
80
+			/*
81 81
         } elseif (is_int($value)) {
82 82
             $value = ParagonIE_Sodium_Core32_Int32::fromInt($value);
83 83
             */
84
-        } else {
85
-            throw new InvalidArgumentException('Expected an integer');
86
-        }
87
-        $this->container[$offset] = $value;
88
-    }
84
+		} else {
85
+			throw new InvalidArgumentException('Expected an integer');
86
+		}
87
+		$this->container[$offset] = $value;
88
+	}
89 89
 
90
-    /**
91
-     * @internal You should not use this directly from another application
92
-     *
93
-     * @param int $offset
94
-     * @return bool
95
-     * @psalm-suppress MixedArrayOffset
96
-     */
97
-    #[ReturnTypeWillChange]
98
-    public function offsetExists($offset)
99
-    {
100
-        return isset($this->container[$offset]);
101
-    }
90
+	/**
91
+	 * @internal You should not use this directly from another application
92
+	 *
93
+	 * @param int $offset
94
+	 * @return bool
95
+	 * @psalm-suppress MixedArrayOffset
96
+	 */
97
+	#[ReturnTypeWillChange]
98
+	public function offsetExists($offset)
99
+	{
100
+		return isset($this->container[$offset]);
101
+	}
102 102
 
103
-    /**
104
-     * @internal You should not use this directly from another application
105
-     *
106
-     * @param int $offset
107
-     * @return void
108
-     * @psalm-suppress MixedArrayOffset
109
-     */
110
-    #[ReturnTypeWillChange]
111
-    public function offsetUnset($offset)
112
-    {
113
-        unset($this->container[$offset]);
114
-    }
103
+	/**
104
+	 * @internal You should not use this directly from another application
105
+	 *
106
+	 * @param int $offset
107
+	 * @return void
108
+	 * @psalm-suppress MixedArrayOffset
109
+	 */
110
+	#[ReturnTypeWillChange]
111
+	public function offsetUnset($offset)
112
+	{
113
+		unset($this->container[$offset]);
114
+	}
115 115
 
116
-    /**
117
-     * @internal You should not use this directly from another application
118
-     *
119
-     * @param int $offset
120
-     * @return mixed|null
121
-     * @psalm-suppress MixedArrayOffset
122
-     */
123
-    #[ReturnTypeWillChange]
124
-    public function offsetGet($offset)
125
-    {
126
-        return isset($this->container[$offset])
127
-            ? $this->container[$offset]
128
-            : null;
129
-    }
116
+	/**
117
+	 * @internal You should not use this directly from another application
118
+	 *
119
+	 * @param int $offset
120
+	 * @return mixed|null
121
+	 * @psalm-suppress MixedArrayOffset
122
+	 */
123
+	#[ReturnTypeWillChange]
124
+	public function offsetGet($offset)
125
+	{
126
+		return isset($this->container[$offset])
127
+			? $this->container[$offset]
128
+			: null;
129
+	}
130 130
 }
Please login to merge, or discard this patch.
Braces   +6 added lines, -12 removed lines patch added patch discarded remove patch
@@ -7,8 +7,7 @@  discard block
 block discarded – undo
7 7
 /**
8 8
  * Class ParagonIE_Sodium_Core32_ChaCha20_Ctx
9 9
  */
10
-class ParagonIE_Sodium_Core32_ChaCha20_Ctx extends ParagonIE_Sodium_Core32_Util implements ArrayAccess
11
-{
10
+class ParagonIE_Sodium_Core32_ChaCha20_Ctx extends ParagonIE_Sodium_Core32_Util implements ArrayAccess {
12 11
     /**
13 12
      * @var SplFixedArray internally, <int, ParagonIE_Sodium_Core32_Int32>
14 13
      */
@@ -27,8 +26,7 @@  discard block
 block discarded – undo
27 26
      * @throws SodiumException
28 27
      * @throws TypeError
29 28
      */
30
-    public function __construct($key = '', $iv = '', $counter = '')
31
-    {
29
+    public function __construct($key = '', $iv = '', $counter = '') {
32 30
         if (self::strlen($key) !== 32) {
33 31
             throw new InvalidArgumentException('ChaCha20 expects a 256-bit key.');
34 32
         }
@@ -71,8 +69,7 @@  discard block
 block discarded – undo
71 69
      * @return void
72 70
      */
73 71
     #[ReturnTypeWillChange]
74
-    public function offsetSet($offset, $value)
75
-    {
72
+    public function offsetSet($offset, $value) {
76 73
         if (!is_int($offset)) {
77 74
             throw new InvalidArgumentException('Expected an integer');
78 75
         }
@@ -95,8 +92,7 @@  discard block
 block discarded – undo
95 92
      * @psalm-suppress MixedArrayOffset
96 93
      */
97 94
     #[ReturnTypeWillChange]
98
-    public function offsetExists($offset)
99
-    {
95
+    public function offsetExists($offset) {
100 96
         return isset($this->container[$offset]);
101 97
     }
102 98
 
@@ -108,8 +104,7 @@  discard block
 block discarded – undo
108 104
      * @psalm-suppress MixedArrayOffset
109 105
      */
110 106
     #[ReturnTypeWillChange]
111
-    public function offsetUnset($offset)
112
-    {
107
+    public function offsetUnset($offset) {
113 108
         unset($this->container[$offset]);
114 109
     }
115 110
 
@@ -121,8 +116,7 @@  discard block
 block discarded – undo
121 116
      * @psalm-suppress MixedArrayOffset
122 117
      */
123 118
     #[ReturnTypeWillChange]
124
-    public function offsetGet($offset)
125
-    {
119
+    public function offsetGet($offset) {
126 120
         return isset($this->container[$offset])
127 121
             ? $this->container[$offset]
128 122
             : null;
Please login to merge, or discard this patch.
Spacing   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if (class_exists('ParagonIE_Sodium_Core_ChaCha20_Ctx', false)) {
3
+if ( class_exists( 'ParagonIE_Sodium_Core_ChaCha20_Ctx', false ) ) {
4 4
     return;
5 5
 }
6 6
 
@@ -27,40 +27,40 @@  discard block
 block discarded – undo
27 27
      * @throws SodiumException
28 28
      * @throws TypeError
29 29
      */
30
-    public function __construct($key = '', $iv = '', $counter = '')
30
+    public function __construct( $key = '', $iv = '', $counter = '' )
31 31
     {
32
-        if (self::strlen($key) !== 32) {
33
-            throw new InvalidArgumentException('ChaCha20 expects a 256-bit key.');
32
+        if ( self::strlen( $key ) !== 32 ) {
33
+            throw new InvalidArgumentException( 'ChaCha20 expects a 256-bit key.' );
34 34
         }
35
-        if (self::strlen($iv) !== 8) {
36
-            throw new InvalidArgumentException('ChaCha20 expects a 64-bit nonce.');
35
+        if ( self::strlen( $iv ) !== 8 ) {
36
+            throw new InvalidArgumentException( 'ChaCha20 expects a 64-bit nonce.' );
37 37
         }
38
-        $this->container = new SplFixedArray(16);
38
+        $this->container = new SplFixedArray( 16 );
39 39
 
40 40
         /* "expand 32-byte k" as per ChaCha20 spec */
41
-        $this->container[0]  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
42
-        $this->container[1]  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
43
-        $this->container[2]  = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
44
-        $this->container[3]  = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
41
+        $this->container[ 0 ]  = new ParagonIE_Sodium_Core32_Int32( array( 0x6170, 0x7865 ) );
42
+        $this->container[ 1 ]  = new ParagonIE_Sodium_Core32_Int32( array( 0x3320, 0x646e ) );
43
+        $this->container[ 2 ]  = new ParagonIE_Sodium_Core32_Int32( array( 0x7962, 0x2d32 ) );
44
+        $this->container[ 3 ]  = new ParagonIE_Sodium_Core32_Int32( array( 0x6b20, 0x6574 ) );
45 45
 
46
-        $this->container[4]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 0, 4));
47
-        $this->container[5]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 4, 4));
48
-        $this->container[6]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 8, 4));
49
-        $this->container[7]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 12, 4));
50
-        $this->container[8]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 16, 4));
51
-        $this->container[9]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 20, 4));
52
-        $this->container[10] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 24, 4));
53
-        $this->container[11] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 28, 4));
46
+        $this->container[ 4 ]  = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $key, 0, 4 ) );
47
+        $this->container[ 5 ]  = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $key, 4, 4 ) );
48
+        $this->container[ 6 ]  = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $key, 8, 4 ) );
49
+        $this->container[ 7 ]  = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $key, 12, 4 ) );
50
+        $this->container[ 8 ]  = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $key, 16, 4 ) );
51
+        $this->container[ 9 ]  = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $key, 20, 4 ) );
52
+        $this->container[ 10 ] = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $key, 24, 4 ) );
53
+        $this->container[ 11 ] = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $key, 28, 4 ) );
54 54
 
55
-        if (empty($counter)) {
56
-            $this->container[12] = new ParagonIE_Sodium_Core32_Int32();
57
-            $this->container[13] = new ParagonIE_Sodium_Core32_Int32();
55
+        if ( empty( $counter ) ) {
56
+            $this->container[ 12 ] = new ParagonIE_Sodium_Core32_Int32();
57
+            $this->container[ 13 ] = new ParagonIE_Sodium_Core32_Int32();
58 58
         } else {
59
-            $this->container[12] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 0, 4));
60
-            $this->container[13] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 4, 4));
59
+            $this->container[ 12 ] = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $counter, 0, 4 ) );
60
+            $this->container[ 13 ] = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $counter, 4, 4 ) );
61 61
         }
62
-        $this->container[14] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 0, 4));
63
-        $this->container[15] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 4, 4));
62
+        $this->container[ 14 ] = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $iv, 0, 4 ) );
63
+        $this->container[ 15 ] = ParagonIE_Sodium_Core32_Int32::fromReverseString( self::substr( $iv, 4, 4 ) );
64 64
     }
65 65
 
66 66
     /**
@@ -70,21 +70,21 @@  discard block
 block discarded – undo
70 70
      * @param int|ParagonIE_Sodium_Core32_Int32 $value
71 71
      * @return void
72 72
      */
73
-    #[ReturnTypeWillChange]
74
-    public function offsetSet($offset, $value)
73
+    #[ReturnTypeWillChange ]
74
+    public function offsetSet( $offset, $value )
75 75
     {
76
-        if (!is_int($offset)) {
77
-            throw new InvalidArgumentException('Expected an integer');
76
+        if ( ! is_int( $offset ) ) {
77
+            throw new InvalidArgumentException( 'Expected an integer' );
78 78
         }
79
-        if ($value instanceof ParagonIE_Sodium_Core32_Int32) {
79
+        if ( $value instanceof ParagonIE_Sodium_Core32_Int32 ) {
80 80
             /*
81 81
         } elseif (is_int($value)) {
82 82
             $value = ParagonIE_Sodium_Core32_Int32::fromInt($value);
83 83
             */
84 84
         } else {
85
-            throw new InvalidArgumentException('Expected an integer');
85
+            throw new InvalidArgumentException( 'Expected an integer' );
86 86
         }
87
-        $this->container[$offset] = $value;
87
+        $this->container[ $offset ] = $value;
88 88
     }
89 89
 
90 90
     /**
@@ -94,10 +94,10 @@  discard block
 block discarded – undo
94 94
      * @return bool
95 95
      * @psalm-suppress MixedArrayOffset
96 96
      */
97
-    #[ReturnTypeWillChange]
98
-    public function offsetExists($offset)
97
+    #[ReturnTypeWillChange ]
98
+    public function offsetExists( $offset )
99 99
     {
100
-        return isset($this->container[$offset]);
100
+        return isset( $this->container[ $offset ] );
101 101
     }
102 102
 
103 103
     /**
@@ -107,10 +107,10 @@  discard block
 block discarded – undo
107 107
      * @return void
108 108
      * @psalm-suppress MixedArrayOffset
109 109
      */
110
-    #[ReturnTypeWillChange]
111
-    public function offsetUnset($offset)
110
+    #[ReturnTypeWillChange ]
111
+    public function offsetUnset( $offset )
112 112
     {
113
-        unset($this->container[$offset]);
113
+        unset( $this->container[ $offset ] );
114 114
     }
115 115
 
116 116
     /**
@@ -120,11 +120,11 @@  discard block
 block discarded – undo
120 120
      * @return mixed|null
121 121
      * @psalm-suppress MixedArrayOffset
122 122
      */
123
-    #[ReturnTypeWillChange]
124
-    public function offsetGet($offset)
123
+    #[ReturnTypeWillChange ]
124
+    public function offsetGet( $offset )
125 125
     {
126
-        return isset($this->container[$offset])
127
-            ? $this->container[$offset]
126
+        return isset( $this->container[ $offset ] )
127
+            ? $this->container[ $offset ]
128 128
             : null;
129 129
     }
130 130
 }
Please login to merge, or discard this patch.