ts-data-forge 11.0.0 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/number/branded-types/finite-number.d.mts +47 -61
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +37 -41
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +40 -46
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +29 -31
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +71 -59
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +56 -47
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +71 -59
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +56 -47
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/negative-finite-number.d.mts +76 -60
- package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/negative-finite-number.mjs +62 -49
- package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/negative-int.d.mts +66 -49
- package/dist/number/branded-types/negative-int.d.mts.map +1 -1
- package/dist/number/branded-types/negative-int.mjs +48 -39
- package/dist/number/branded-types/negative-int.mjs.map +1 -1
- package/dist/number/branded-types/negative-safe-int.d.mts +64 -57
- package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/negative-safe-int.mjs +49 -44
- package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +80 -65
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +65 -53
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +71 -58
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +55 -45
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +71 -59
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +55 -46
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.d.mts +70 -55
- package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.mjs +55 -43
- package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-int.d.mts +46 -146
- package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-int.mjs +33 -108
- package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.d.mts +62 -54
- package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.mjs +46 -41
- package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +62 -49
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +46 -37
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +51 -38
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +31 -27
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +59 -54
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +44 -41
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +59 -55
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +44 -42
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +60 -55
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +44 -42
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +59 -54
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +43 -41
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +59 -54
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +43 -41
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +82 -64
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +67 -52
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +53 -70
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +42 -52
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +68 -58
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +52 -45
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +68 -58
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +52 -45
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +72 -61
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +56 -48
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +68 -58
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +52 -45
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +68 -59
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +52 -46
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +52 -66
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +45 -47
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +68 -58
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +53 -46
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +72 -55
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +52 -45
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +66 -59
- package/dist/number/branded-types/uint16.d.mts.map +1 -1
- package/dist/number/branded-types/uint16.mjs +51 -45
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +66 -57
- package/dist/number/branded-types/uint32.d.mts.map +1 -1
- package/dist/number/branded-types/uint32.mjs +50 -45
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.d.mts +62 -66
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/int8.mjs +57 -51
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts +66 -59
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +57 -51
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +9 -9
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +7 -7
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/package.json +2 -1
- package/src/number/branded-types/finite-number.mts +47 -61
- package/src/number/branded-types/int.mts +40 -46
- package/src/number/branded-types/int16.mts +72 -60
- package/src/number/branded-types/int32.mts +72 -60
- package/src/number/branded-types/negative-finite-number.mts +78 -71
- package/src/number/branded-types/negative-finite-number.test.mts +4 -4
- package/src/number/branded-types/negative-int.mts +68 -60
- package/src/number/branded-types/negative-int.test.mts +5 -5
- package/src/number/branded-types/negative-safe-int.mts +66 -68
- package/src/number/branded-types/negative-safe-int.test.mts +4 -4
- package/src/number/branded-types/non-negative-finite-number.mts +81 -66
- package/src/number/branded-types/non-negative-int16.mts +72 -59
- package/src/number/branded-types/non-negative-int32.mts +72 -60
- package/src/number/branded-types/non-positive-finite-number.mts +71 -56
- package/src/number/branded-types/non-positive-finite-number.test.mts +7 -7
- package/src/number/branded-types/non-positive-int.mts +47 -147
- package/src/number/branded-types/non-positive-int.test.mts +7 -7
- package/src/number/branded-types/non-positive-safe-int.mts +63 -55
- package/src/number/branded-types/non-positive-safe-int.test.mts +7 -7
- package/src/number/branded-types/non-zero-finite-number.mts +62 -51
- package/src/number/branded-types/non-zero-int.mts +51 -38
- package/src/number/branded-types/non-zero-int16.mts +60 -55
- package/src/number/branded-types/non-zero-int32.mts +60 -56
- package/src/number/branded-types/non-zero-safe-int.mts +61 -56
- package/src/number/branded-types/non-zero-uint16.mts +60 -55
- package/src/number/branded-types/non-zero-uint32.mts +60 -55
- package/src/number/branded-types/positive-finite-number.mts +83 -65
- package/src/number/branded-types/positive-int.mts +54 -71
- package/src/number/branded-types/positive-int16.mts +69 -59
- package/src/number/branded-types/positive-int32.mts +69 -59
- package/src/number/branded-types/positive-safe-int.mts +73 -62
- package/src/number/branded-types/positive-uint16.mts +69 -59
- package/src/number/branded-types/positive-uint32.mts +69 -60
- package/src/number/branded-types/safe-int.mts +53 -67
- package/src/number/branded-types/safe-uint.mts +69 -59
- package/src/number/branded-types/uint.mts +73 -56
- package/src/number/branded-types/uint16.mts +67 -60
- package/src/number/branded-types/uint32.mts +67 -58
- package/src/number/enum/int8.mts +70 -73
- package/src/number/enum/int8.test.mts +7 -4
- package/src/number/enum/uint8.mts +74 -66
- package/src/number/enum/uint8.test.mts +7 -4
- package/src/number/refined-number-utils.mts +22 -19
|
@@ -3,18 +3,24 @@ import { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
|
3
3
|
export type PositiveFiniteNumber = TtfImported_PositiveFiniteNumber;
|
|
4
4
|
type ElementType = PositiveFiniteNumber;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Type guard that checks if a value is a positive finite number.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Returns `true` only for a finite value — never `NaN`, `Infinity`, or
|
|
9
|
+
* `-Infinity`.
|
|
10
|
+
*
|
|
11
|
+
* @param value - The value to check
|
|
12
|
+
* @returns `true` if the value is a positive finite number, `false` otherwise
|
|
10
13
|
*/
|
|
11
14
|
export declare const isPositiveFiniteNumber: (a: number) => a is TtfImported_PositiveFiniteNumber;
|
|
12
15
|
/**
|
|
13
|
-
* Casts a number to
|
|
16
|
+
* Casts a `number` to the `PositiveFiniteNumber` branded type.
|
|
17
|
+
*
|
|
18
|
+
* Validates that the value is a positive finite number and returns it with the
|
|
19
|
+
* `PositiveFiniteNumber` brand. Throws a `TypeError` otherwise.
|
|
14
20
|
*
|
|
15
|
-
* @param value The value to cast
|
|
16
|
-
* @returns The value as a PositiveFiniteNumber
|
|
17
|
-
* @throws {TypeError} If the value is not a positive finite number
|
|
21
|
+
* @param value - The value to cast
|
|
22
|
+
* @returns The value as a `PositiveFiniteNumber`
|
|
23
|
+
* @throws {TypeError} If the value is not a positive finite number
|
|
18
24
|
*/
|
|
19
25
|
export declare const asPositiveFiniteNumber: <N extends number>(x: N) => number & {
|
|
20
26
|
readonly "!=0": true;
|
|
@@ -30,118 +36,130 @@ export declare const asPositiveFiniteNumber: <N extends number>(x: N) => number
|
|
|
30
36
|
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
31
37
|
}> & N;
|
|
32
38
|
/**
|
|
33
|
-
* Namespace providing type-safe
|
|
34
|
-
*
|
|
39
|
+
* Namespace providing type-safe operations for the `PositiveFiniteNumber`
|
|
40
|
+
* branded type.
|
|
35
41
|
*
|
|
36
|
-
*
|
|
37
|
-
* results to MIN_VALUE, while ensuring results remain finite (excluding NaN and
|
|
38
|
-
* Infinity). This type is useful for representing quantities that must always
|
|
39
|
-
* be positive, such as probabilities, magnitudes, and physical measurements.
|
|
42
|
+
* The `PositiveFiniteNumber` type represents a positive finite number.
|
|
40
43
|
*/
|
|
41
44
|
export declare const PositiveFiniteNumber: {
|
|
42
45
|
/**
|
|
43
|
-
* Type guard
|
|
46
|
+
* Type guard that checks if a value is a positive finite number.
|
|
44
47
|
*
|
|
45
|
-
* @param value The value to check
|
|
46
|
-
* @returns `true` if the value is a positive finite number, `false`
|
|
47
|
-
*
|
|
48
|
+
* @param value - The value to check
|
|
49
|
+
* @returns `true` if the value is a positive finite number, `false` otherwise
|
|
50
|
+
* @see {@link isPositiveFiniteNumber} for usage examples
|
|
48
51
|
*/
|
|
49
52
|
readonly is: (a: number) => a is TtfImported_PositiveFiniteNumber;
|
|
50
53
|
/**
|
|
51
|
-
* The
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
+
* The smallest value representable as `PositiveFiniteNumber` (the lower
|
|
55
|
+
* saturation target of `fromNumber`). The domain is open at `0` (excluded),
|
|
56
|
+
* so this is `Number.MIN_VALUE` — the smallest positive double — rather than
|
|
57
|
+
* `0`.
|
|
54
58
|
*/
|
|
55
59
|
readonly MIN_VALUE: number;
|
|
56
60
|
/**
|
|
57
|
-
* Returns the
|
|
61
|
+
* Returns the smallest of the given positive finite numbers.
|
|
58
62
|
*
|
|
59
|
-
* @param
|
|
60
|
-
* @
|
|
61
|
-
* @returns The minimum value as a PositiveFiniteNumber.
|
|
63
|
+
* @param values - The positive finite numbers to compare (at least one required)
|
|
64
|
+
* @returns The smallest value as a `PositiveFiniteNumber`
|
|
62
65
|
*/
|
|
63
66
|
readonly min: (...values: readonly TtfImported_PositiveFiniteNumber[]) => TtfImported_PositiveFiniteNumber;
|
|
64
67
|
/**
|
|
65
|
-
* Returns the
|
|
68
|
+
* Returns the largest of the given positive finite numbers.
|
|
66
69
|
*
|
|
67
|
-
* @param
|
|
68
|
-
* @
|
|
69
|
-
* @returns The maximum value as a PositiveFiniteNumber.
|
|
70
|
+
* @param values - The positive finite numbers to compare (at least one required)
|
|
71
|
+
* @returns The largest value as a `PositiveFiniteNumber`
|
|
70
72
|
*/
|
|
71
73
|
readonly max: (...values: readonly TtfImported_PositiveFiniteNumber[]) => TtfImported_PositiveFiniteNumber;
|
|
72
74
|
/**
|
|
73
|
-
*
|
|
75
|
+
* Converts an arbitrary `number` into a `PositiveFiniteNumber`, saturating it
|
|
76
|
+
* into the range `[MIN_VALUE, MAX_VALUE]`.
|
|
74
77
|
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
78
|
+
* Unlike `asPositiveFiniteNumber`, this is total: out-of-range inputs are
|
|
79
|
+
* clamped to the nearest representable `PositiveFiniteNumber` instead of
|
|
80
|
+
* throwing.
|
|
81
|
+
*
|
|
82
|
+
* @param value - The value to convert
|
|
83
|
+
* @returns The value as a `PositiveFiniteNumber`
|
|
77
84
|
*/
|
|
78
|
-
readonly
|
|
85
|
+
readonly fromNumber: (x: number) => TtfImported_PositiveFiniteNumber;
|
|
79
86
|
/**
|
|
80
|
-
*
|
|
87
|
+
* Returns the greatest integer less than or equal to a positive finite
|
|
88
|
+
* number.
|
|
81
89
|
*
|
|
82
|
-
* @param
|
|
83
|
-
* @returns The
|
|
90
|
+
* @param a - The positive finite number value
|
|
91
|
+
* @returns The floored value as an integer
|
|
84
92
|
*/
|
|
85
93
|
readonly floor: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>>;
|
|
86
94
|
/**
|
|
87
|
-
*
|
|
95
|
+
* Returns the smallest integer greater than or equal to a positive finite
|
|
96
|
+
* number.
|
|
88
97
|
*
|
|
89
|
-
* @param
|
|
90
|
-
* @returns The
|
|
98
|
+
* @param a - The positive finite number value
|
|
99
|
+
* @returns The ceiled value as an integer
|
|
91
100
|
*/
|
|
92
101
|
readonly ceil: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;
|
|
93
102
|
/**
|
|
94
|
-
*
|
|
103
|
+
* Returns the value of a positive finite number rounded to the nearest
|
|
104
|
+
* integer.
|
|
95
105
|
*
|
|
96
|
-
* @param
|
|
97
|
-
* @returns The rounded value as
|
|
106
|
+
* @param a - The positive finite number value
|
|
107
|
+
* @returns The rounded value as an integer
|
|
98
108
|
*/
|
|
99
109
|
readonly round: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>>;
|
|
100
110
|
/**
|
|
101
|
-
* Generates a random PositiveFiniteNumber
|
|
111
|
+
* Generates a random `PositiveFiniteNumber` within the given range.
|
|
112
|
+
*
|
|
113
|
+
* The range is inclusive on both ends.
|
|
102
114
|
*
|
|
103
|
-
* @
|
|
115
|
+
* @param min - The minimum value (inclusive)
|
|
116
|
+
* @param max - The maximum value (inclusive)
|
|
117
|
+
* @returns A random `PositiveFiniteNumber` in `[min, max]`
|
|
104
118
|
*/
|
|
105
119
|
readonly random: (min?: TtfImported_PositiveFiniteNumber | undefined, max?: TtfImported_PositiveFiniteNumber | undefined) => TtfImported_PositiveFiniteNumber;
|
|
106
120
|
/**
|
|
107
|
-
* Raises a
|
|
121
|
+
* Raises `a` to the power `b`, returning `a ** b` as a
|
|
122
|
+
* `PositiveFiniteNumber`.
|
|
108
123
|
*
|
|
109
|
-
* @param a The base
|
|
110
|
-
* @param b The exponent
|
|
111
|
-
* @returns `a ** b`
|
|
124
|
+
* @param a - The base positive finite number
|
|
125
|
+
* @param b - The exponent positive finite number
|
|
126
|
+
* @returns `a ** b` as a `PositiveFiniteNumber`
|
|
112
127
|
*/
|
|
113
128
|
readonly pow: (x: TtfImported_PositiveFiniteNumber, y: TtfImported_PositiveFiniteNumber) => TtfImported_PositiveFiniteNumber;
|
|
114
129
|
/**
|
|
115
|
-
* Adds two
|
|
130
|
+
* Adds two positive finite numbers, returning `a + b` as a
|
|
131
|
+
* `PositiveFiniteNumber`.
|
|
116
132
|
*
|
|
117
|
-
* @param a The first
|
|
118
|
-
* @param b The second
|
|
119
|
-
* @returns `a
|
|
133
|
+
* @param a - The first positive finite number
|
|
134
|
+
* @param b - The second positive finite number
|
|
135
|
+
* @returns The sum of `a` and `b` as a `PositiveFiniteNumber`
|
|
120
136
|
*/
|
|
121
137
|
readonly add: (x: TtfImported_PositiveFiniteNumber, y: TtfImported_PositiveFiniteNumber) => TtfImported_PositiveFiniteNumber;
|
|
122
138
|
/**
|
|
123
|
-
* Subtracts
|
|
139
|
+
* Subtracts two positive finite numbers, returning `a - b` as a
|
|
140
|
+
* `PositiveFiniteNumber`.
|
|
124
141
|
*
|
|
125
|
-
* @param a The
|
|
126
|
-
* @param b The
|
|
127
|
-
* @returns `a
|
|
128
|
-
* MIN_VALUE).
|
|
142
|
+
* @param a - The first positive finite number
|
|
143
|
+
* @param b - The second positive finite number
|
|
144
|
+
* @returns The difference of `a` and `b` as a `PositiveFiniteNumber`
|
|
129
145
|
*/
|
|
130
146
|
readonly sub: (x: TtfImported_PositiveFiniteNumber, y: TtfImported_PositiveFiniteNumber) => TtfImported_PositiveFiniteNumber;
|
|
131
147
|
/**
|
|
132
|
-
* Multiplies two
|
|
148
|
+
* Multiplies two positive finite numbers, returning `a * b` as a
|
|
149
|
+
* `PositiveFiniteNumber`.
|
|
133
150
|
*
|
|
134
|
-
* @param a The first
|
|
135
|
-
* @param b The second
|
|
136
|
-
* @returns `a
|
|
151
|
+
* @param a - The first positive finite number
|
|
152
|
+
* @param b - The second positive finite number
|
|
153
|
+
* @returns The product of `a` and `b` as a `PositiveFiniteNumber`
|
|
137
154
|
*/
|
|
138
155
|
readonly mul: (x: TtfImported_PositiveFiniteNumber, y: TtfImported_PositiveFiniteNumber) => TtfImported_PositiveFiniteNumber;
|
|
139
156
|
/**
|
|
140
|
-
* Divides
|
|
157
|
+
* Divides two positive finite numbers, returning `a / b` as a
|
|
158
|
+
* `PositiveFiniteNumber`.
|
|
141
159
|
*
|
|
142
|
-
* @param a The dividend
|
|
143
|
-
* @param b The divisor
|
|
144
|
-
* @returns `a / b`
|
|
160
|
+
* @param a - The dividend
|
|
161
|
+
* @param b - The divisor (must be non-zero)
|
|
162
|
+
* @returns `a / b` as a `PositiveFiniteNumber`
|
|
145
163
|
*/
|
|
146
164
|
readonly div: (x: TtfImported_PositiveFiniteNumber, y: number & {
|
|
147
165
|
readonly "!=0": true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positive-finite-number.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-finite-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,IAAI,gCAAgC,EAE9D,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAEpE,KAAK,WAAW,GAAG,oBAAoB,CAAC;AAqExC
|
|
1
|
+
{"version":3,"file":"positive-finite-number.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-finite-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,IAAI,gCAAgC,EAE9D,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAEpE,KAAK,WAAW,GAAG,oBAAoB,CAAC;AAqExC;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,sDAAK,CAAC;AAEzC;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;MAAW,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;IAC/B;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;OAMG;wBA3HA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IA2HC;;;;;;OAMG;uBAxHA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IA0H3D;;;;;;OAMG;wBA3HA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IA2HC;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;;;;;;;;;;;;;CAEK,CAAC"}
|
|
@@ -5,8 +5,8 @@ const {
|
|
|
5
5
|
MIN_VALUE,
|
|
6
6
|
add,
|
|
7
7
|
castType,
|
|
8
|
-
clamp,
|
|
9
8
|
div,
|
|
9
|
+
fromNumber,
|
|
10
10
|
is,
|
|
11
11
|
max: max_,
|
|
12
12
|
min: min_,
|
|
@@ -39,108 +39,123 @@ const isPositiveFiniteNumber = is;
|
|
|
39
39
|
const asPositiveFiniteNumber = castType;
|
|
40
40
|
const PositiveFiniteNumber = {
|
|
41
41
|
/**
|
|
42
|
-
* Type guard
|
|
42
|
+
* Type guard that checks if a value is a positive finite number.
|
|
43
43
|
*
|
|
44
|
-
* @param value The value to check
|
|
45
|
-
* @returns `true` if the value is a positive finite number, `false`
|
|
46
|
-
*
|
|
44
|
+
* @param value - The value to check
|
|
45
|
+
* @returns `true` if the value is a positive finite number, `false` otherwise
|
|
46
|
+
* @see {@link isPositiveFiniteNumber} for usage examples
|
|
47
47
|
*/
|
|
48
48
|
is,
|
|
49
49
|
/**
|
|
50
|
-
* The
|
|
51
|
-
*
|
|
52
|
-
*
|
|
50
|
+
* The smallest value representable as `PositiveFiniteNumber` (the lower
|
|
51
|
+
* saturation target of `fromNumber`). The domain is open at `0` (excluded),
|
|
52
|
+
* so this is `Number.MIN_VALUE` — the smallest positive double — rather than
|
|
53
|
+
* `0`.
|
|
53
54
|
*/
|
|
54
55
|
MIN_VALUE,
|
|
55
56
|
/**
|
|
56
|
-
* Returns the
|
|
57
|
+
* Returns the smallest of the given positive finite numbers.
|
|
57
58
|
*
|
|
58
|
-
* @param
|
|
59
|
-
* @
|
|
60
|
-
* @returns The minimum value as a PositiveFiniteNumber.
|
|
59
|
+
* @param values - The positive finite numbers to compare (at least one required)
|
|
60
|
+
* @returns The smallest value as a `PositiveFiniteNumber`
|
|
61
61
|
*/
|
|
62
62
|
min: min_,
|
|
63
63
|
/**
|
|
64
|
-
* Returns the
|
|
64
|
+
* Returns the largest of the given positive finite numbers.
|
|
65
65
|
*
|
|
66
|
-
* @param
|
|
67
|
-
* @
|
|
68
|
-
* @returns The maximum value as a PositiveFiniteNumber.
|
|
66
|
+
* @param values - The positive finite numbers to compare (at least one required)
|
|
67
|
+
* @returns The largest value as a `PositiveFiniteNumber`
|
|
69
68
|
*/
|
|
70
69
|
max: max_,
|
|
71
70
|
/**
|
|
72
|
-
*
|
|
71
|
+
* Converts an arbitrary `number` into a `PositiveFiniteNumber`, saturating it
|
|
72
|
+
* into the range `[MIN_VALUE, MAX_VALUE]`.
|
|
73
|
+
*
|
|
74
|
+
* Unlike `asPositiveFiniteNumber`, this is total: out-of-range inputs are
|
|
75
|
+
* clamped to the nearest representable `PositiveFiniteNumber` instead of
|
|
76
|
+
* throwing.
|
|
73
77
|
*
|
|
74
|
-
* @param value The
|
|
75
|
-
* @returns The value
|
|
78
|
+
* @param value - The value to convert
|
|
79
|
+
* @returns The value as a `PositiveFiniteNumber`
|
|
76
80
|
*/
|
|
77
|
-
|
|
81
|
+
fromNumber,
|
|
78
82
|
/**
|
|
79
|
-
*
|
|
83
|
+
* Returns the greatest integer less than or equal to a positive finite
|
|
84
|
+
* number.
|
|
80
85
|
*
|
|
81
|
-
* @param
|
|
82
|
-
* @returns The
|
|
86
|
+
* @param a - The positive finite number value
|
|
87
|
+
* @returns The floored value as an integer
|
|
83
88
|
*/
|
|
84
89
|
floor,
|
|
85
90
|
/**
|
|
86
|
-
*
|
|
91
|
+
* Returns the smallest integer greater than or equal to a positive finite
|
|
92
|
+
* number.
|
|
87
93
|
*
|
|
88
|
-
* @param
|
|
89
|
-
* @returns The
|
|
94
|
+
* @param a - The positive finite number value
|
|
95
|
+
* @returns The ceiled value as an integer
|
|
90
96
|
*/
|
|
91
97
|
ceil,
|
|
92
98
|
/**
|
|
93
|
-
*
|
|
99
|
+
* Returns the value of a positive finite number rounded to the nearest
|
|
100
|
+
* integer.
|
|
94
101
|
*
|
|
95
|
-
* @param
|
|
96
|
-
* @returns The rounded value as
|
|
102
|
+
* @param a - The positive finite number value
|
|
103
|
+
* @returns The rounded value as an integer
|
|
97
104
|
*/
|
|
98
105
|
round,
|
|
99
106
|
/**
|
|
100
|
-
* Generates a random PositiveFiniteNumber
|
|
107
|
+
* Generates a random `PositiveFiniteNumber` within the given range.
|
|
108
|
+
*
|
|
109
|
+
* The range is inclusive on both ends.
|
|
101
110
|
*
|
|
102
|
-
* @
|
|
111
|
+
* @param min - The minimum value (inclusive)
|
|
112
|
+
* @param max - The maximum value (inclusive)
|
|
113
|
+
* @returns A random `PositiveFiniteNumber` in `[min, max]`
|
|
103
114
|
*/
|
|
104
115
|
random,
|
|
105
116
|
/**
|
|
106
|
-
* Raises a
|
|
117
|
+
* Raises `a` to the power `b`, returning `a ** b` as a
|
|
118
|
+
* `PositiveFiniteNumber`.
|
|
107
119
|
*
|
|
108
|
-
* @param a The base
|
|
109
|
-
* @param b The exponent
|
|
110
|
-
* @returns `a ** b`
|
|
120
|
+
* @param a - The base positive finite number
|
|
121
|
+
* @param b - The exponent positive finite number
|
|
122
|
+
* @returns `a ** b` as a `PositiveFiniteNumber`
|
|
111
123
|
*/
|
|
112
124
|
pow,
|
|
113
125
|
/**
|
|
114
|
-
* Adds two
|
|
126
|
+
* Adds two positive finite numbers, returning `a + b` as a
|
|
127
|
+
* `PositiveFiniteNumber`.
|
|
115
128
|
*
|
|
116
|
-
* @param a The first
|
|
117
|
-
* @param b The second
|
|
118
|
-
* @returns `a
|
|
129
|
+
* @param a - The first positive finite number
|
|
130
|
+
* @param b - The second positive finite number
|
|
131
|
+
* @returns The sum of `a` and `b` as a `PositiveFiniteNumber`
|
|
119
132
|
*/
|
|
120
133
|
add,
|
|
121
134
|
/**
|
|
122
|
-
* Subtracts
|
|
135
|
+
* Subtracts two positive finite numbers, returning `a - b` as a
|
|
136
|
+
* `PositiveFiniteNumber`.
|
|
123
137
|
*
|
|
124
|
-
* @param a The
|
|
125
|
-
* @param b The
|
|
126
|
-
* @returns `a
|
|
127
|
-
* MIN_VALUE).
|
|
138
|
+
* @param a - The first positive finite number
|
|
139
|
+
* @param b - The second positive finite number
|
|
140
|
+
* @returns The difference of `a` and `b` as a `PositiveFiniteNumber`
|
|
128
141
|
*/
|
|
129
142
|
sub,
|
|
130
143
|
/**
|
|
131
|
-
* Multiplies two
|
|
144
|
+
* Multiplies two positive finite numbers, returning `a * b` as a
|
|
145
|
+
* `PositiveFiniteNumber`.
|
|
132
146
|
*
|
|
133
|
-
* @param a The first
|
|
134
|
-
* @param b The second
|
|
135
|
-
* @returns `a
|
|
147
|
+
* @param a - The first positive finite number
|
|
148
|
+
* @param b - The second positive finite number
|
|
149
|
+
* @returns The product of `a` and `b` as a `PositiveFiniteNumber`
|
|
136
150
|
*/
|
|
137
151
|
mul,
|
|
138
152
|
/**
|
|
139
|
-
* Divides
|
|
153
|
+
* Divides two positive finite numbers, returning `a / b` as a
|
|
154
|
+
* `PositiveFiniteNumber`.
|
|
140
155
|
*
|
|
141
|
-
* @param a The dividend
|
|
142
|
-
* @param b The divisor
|
|
143
|
-
* @returns `a / b`
|
|
156
|
+
* @param a - The dividend
|
|
157
|
+
* @param b - The divisor (must be non-zero)
|
|
158
|
+
* @returns `a / b` as a `PositiveFiniteNumber`
|
|
144
159
|
*/
|
|
145
160
|
div
|
|
146
161
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positive-finite-number.mjs","sources":["../../../src/number/branded-types/positive-finite-number.mts"],"sourcesContent":["import {\n type PositiveInt,\n type PositiveFiniteNumber as TtfImported_PositiveFiniteNumber,\n type Uint,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type PositiveFiniteNumber = TtfImported_PositiveFiniteNumber;\n\ntype ElementType = PositiveFiniteNumber;\n\nconst typeNameInMessage = 'a positive finite number';\n\nconst {\n MIN_VALUE,\n add,\n castType,\n
|
|
1
|
+
{"version":3,"file":"positive-finite-number.mjs","sources":["../../../src/number/branded-types/positive-finite-number.mts"],"sourcesContent":["import {\n type PositiveInt,\n type PositiveFiniteNumber as TtfImported_PositiveFiniteNumber,\n type Uint,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type PositiveFiniteNumber = TtfImported_PositiveFiniteNumber;\n\ntype ElementType = PositiveFiniteNumber;\n\nconst typeNameInMessage = 'a positive finite number';\n\nconst {\n MIN_VALUE,\n add,\n castType,\n div,\n fromNumber,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<\n ElementType,\n number,\n number\n>({\n MIN_VALUE: Number.MIN_VALUE,\n MAX_VALUE: Number.MAX_VALUE,\n typeNameInMessage,\n} as const);\n\nconst floor = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.floor(\n x,\n ) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >;\n\nconst ceil = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.ceil(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nconst round = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.round(\n x,\n ) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >;\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>,\n PositiveInt\n>('=');\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >,\n Uint\n>('=');\n\n/**\n * Type guard that checks if a value is a positive finite number.\n *\n * Returns `true` only for a finite value — never `NaN`, `Infinity`, or\n * `-Infinity`.\n *\n * @param value - The value to check\n * @returns `true` if the value is a positive finite number, `false` otherwise\n */\nexport const isPositiveFiniteNumber = is;\n\n/**\n * Casts a `number` to the `PositiveFiniteNumber` branded type.\n *\n * Validates that the value is a positive finite number and returns it with the\n * `PositiveFiniteNumber` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `PositiveFiniteNumber`\n * @throws {TypeError} If the value is not a positive finite number\n */\nexport const asPositiveFiniteNumber = castType;\n\n/**\n * Namespace providing type-safe operations for the `PositiveFiniteNumber`\n * branded type.\n *\n * The `PositiveFiniteNumber` type represents a positive finite number.\n */\nexport const PositiveFiniteNumber = {\n /**\n * Type guard that checks if a value is a positive finite number.\n *\n * @param value - The value to check\n * @returns `true` if the value is a positive finite number, `false` otherwise\n * @see {@link isPositiveFiniteNumber} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `PositiveFiniteNumber` (the lower\n * saturation target of `fromNumber`). The domain is open at `0` (excluded),\n * so this is `Number.MIN_VALUE` — the smallest positive double — rather than\n * `0`.\n */\n MIN_VALUE,\n\n /**\n * Returns the smallest of the given positive finite numbers.\n *\n * @param values - The positive finite numbers to compare (at least one required)\n * @returns The smallest value as a `PositiveFiniteNumber`\n */\n min: min_,\n\n /**\n * Returns the largest of the given positive finite numbers.\n *\n * @param values - The positive finite numbers to compare (at least one required)\n * @returns The largest value as a `PositiveFiniteNumber`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into a `PositiveFiniteNumber`, saturating it\n * into the range `[MIN_VALUE, MAX_VALUE]`.\n *\n * Unlike `asPositiveFiniteNumber`, this is total: out-of-range inputs are\n * clamped to the nearest representable `PositiveFiniteNumber` instead of\n * throwing.\n *\n * @param value - The value to convert\n * @returns The value as a `PositiveFiniteNumber`\n */\n fromNumber,\n\n /**\n * Returns the greatest integer less than or equal to a positive finite\n * number.\n *\n * @param a - The positive finite number value\n * @returns The floored value as an integer\n */\n floor,\n\n /**\n * Returns the smallest integer greater than or equal to a positive finite\n * number.\n *\n * @param a - The positive finite number value\n * @returns The ceiled value as an integer\n */\n ceil,\n\n /**\n * Returns the value of a positive finite number rounded to the nearest\n * integer.\n *\n * @param a - The positive finite number value\n * @returns The rounded value as an integer\n */\n round,\n\n /**\n * Generates a random `PositiveFiniteNumber` within the given range.\n *\n * The range is inclusive on both ends.\n *\n * @param min - The minimum value (inclusive)\n * @param max - The maximum value (inclusive)\n * @returns A random `PositiveFiniteNumber` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The base positive finite number\n * @param b - The exponent positive finite number\n * @returns `a ** b` as a `PositiveFiniteNumber`\n */\n pow,\n\n /**\n * Adds two positive finite numbers, returning `a + b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The first positive finite number\n * @param b - The second positive finite number\n * @returns The sum of `a` and `b` as a `PositiveFiniteNumber`\n */\n add,\n\n /**\n * Subtracts two positive finite numbers, returning `a - b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The first positive finite number\n * @param b - The second positive finite number\n * @returns The difference of `a` and `b` as a `PositiveFiniteNumber`\n */\n sub,\n\n /**\n * Multiplies two positive finite numbers, returning `a * b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The first positive finite number\n * @param b - The second positive finite number\n * @returns The product of `a` and `b` as a `PositiveFiniteNumber`\n */\n mul,\n\n /**\n * Divides two positive finite numbers, returning `a / b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The dividend\n * @param b - The divisor (must be non-zero)\n * @returns `a / b` as a `PositiveFiniteNumber`\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof PositiveFiniteNumber,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'positive'\n >\n>('=');\n\nexpectType<\n typeof PositiveFiniteNumber,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<ElementType, 'positive'>\n>('<=');\n"],"names":[],"mappings":";;AAYA,MAAM,iBAAA,GAAoB,0BAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,UAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,iBAAA,CAI1C;AAAA,EACA,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAEV,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAKA,IAAA,CAAK,KAAA;AAAA,IACH;AAAA;AACF,CAAA;AAIF,MAAM,OAAO,CACX,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,KAAK,CAAC;AAAA,CAAA;AAEb,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAKA,IAAA,CAAK,KAAA;AAAA,IACH;AAAA;AACF,CAAA;AAyBK,MAAM,sBAAA,GAAyB;AAY/B,MAAM,sBAAA,GAAyB;AAQ/B,MAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQlC,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaL,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA;AACF;;;;"}
|