@step-wise/skill-setup 0.1.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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +191 -0
  3. package/dist/abstracts/SkillItemSetup.d.ts +13 -0
  4. package/dist/abstracts/SkillItemSetup.d.ts.map +1 -0
  5. package/dist/abstracts/SkillItemSetup.js +24 -0
  6. package/dist/abstracts/SkillListSetup.d.ts +14 -0
  7. package/dist/abstracts/SkillListSetup.d.ts.map +1 -0
  8. package/dist/abstracts/SkillListSetup.js +27 -0
  9. package/dist/abstracts/SkillSetup.d.ts +17 -0
  10. package/dist/abstracts/SkillSetup.d.ts.map +1 -0
  11. package/dist/abstracts/SkillSetup.js +12 -0
  12. package/dist/abstracts/index.d.ts +4 -0
  13. package/dist/abstracts/index.d.ts.map +1 -0
  14. package/dist/abstracts/index.js +3 -0
  15. package/dist/index.d.ts +4 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +3 -0
  18. package/dist/serialization.d.ts +5 -0
  19. package/dist/serialization.d.ts.map +1 -0
  20. package/dist/serialization.js +23 -0
  21. package/dist/setups/And.d.ts +14 -0
  22. package/dist/setups/And.d.ts.map +1 -0
  23. package/dist/setups/And.js +19 -0
  24. package/dist/setups/Or.d.ts +14 -0
  25. package/dist/setups/Or.d.ts.map +1 -0
  26. package/dist/setups/Or.js +19 -0
  27. package/dist/setups/Part.d.ts +19 -0
  28. package/dist/setups/Part.d.ts.map +1 -0
  29. package/dist/setups/Part.js +38 -0
  30. package/dist/setups/Pick.d.ts +21 -0
  31. package/dist/setups/Pick.d.ts.map +1 -0
  32. package/dist/setups/Pick.js +50 -0
  33. package/dist/setups/Repeat.d.ts +18 -0
  34. package/dist/setups/Repeat.d.ts.map +1 -0
  35. package/dist/setups/Repeat.js +26 -0
  36. package/dist/setups/Skill.d.ts +20 -0
  37. package/dist/setups/Skill.d.ts.map +1 -0
  38. package/dist/setups/Skill.js +40 -0
  39. package/dist/setups/index.d.ts +27 -0
  40. package/dist/setups/index.d.ts.map +1 -0
  41. package/dist/setups/index.js +10 -0
  42. package/dist/tsconfig.tsbuildinfo +1 -0
  43. package/package.json +48 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 Step-Wise
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,191 @@
1
+ # @step-wise/skill-setup
2
+
3
+ Describe which skills a learner needs to apply to complete an exercise or perform a larger skill. Setups can be combined, inspected, serialized, and converted into success-probability polynomials.
4
+
5
+
6
+ ## Installation
7
+
8
+ ```bash
9
+ npm install @step-wise/skill-setup
10
+ ```
11
+
12
+
13
+ ## Quick start
14
+
15
+ ```ts
16
+ import { and, or, part, repeat } from '@step-wise/skill-setup'
17
+
18
+ const setup = and(
19
+ 'addition',
20
+ or('multiplication', 'division'),
21
+ part('subtraction', 0.75),
22
+ repeat('checkAnswer', 2),
23
+ )
24
+
25
+ setup.getSkillList()
26
+ // ['addition', 'multiplication', 'division', 'subtraction', 'checkAnswer']
27
+
28
+ setup.toString()
29
+ // 'and("addition", or("multiplication", "division"), part("subtraction", 0.75), repeat("checkAnswer", 2))'
30
+
31
+ setup.isDeterministic()
32
+ // false
33
+ ```
34
+
35
+
36
+ ## Deterministic and stochastic setups
37
+
38
+ A setup describes which underlying skills are required to accomplish a task.
39
+
40
+ A **deterministic setup** (as used for exercises) always requires the same skills. For example, `and('addition', 'multiplication')` always requires both skills. Its eventual outcome may still be correct or incorrect, but the structure of the task is fixed.
41
+
42
+ A **stochastic setup** (as commonly used for skills) randomly determines part of that structure. For example, `pick(['addition', 'subtraction'])` chooses one of the two skills, while `part('checkAnswer', 0.5)` includes a check in half of the generated cases.
43
+
44
+ Call `setup.isDeterministic()` to distinguish the two.
45
+
46
+
47
+ ## Building setups
48
+
49
+ ### `skill(id)`
50
+
51
+ Creates a setup for one skill. Most APIs accept the identifier directly, so this factory is mainly useful when a standalone setup object is needed.
52
+
53
+ ```ts
54
+ import { skill } from '@step-wise/skill-setup'
55
+
56
+ const setup = skill('addition')
57
+ ```
58
+
59
+ Identifiers must be non-empty strings and may not consist only of whitespace.
60
+
61
+ ### `and(...setups)`
62
+
63
+ Requires every child setup to succeed.
64
+
65
+ ```ts
66
+ const setup = and('addition', 'multiplication')
67
+ ```
68
+
69
+ If the success probabilities are `a` and `m`, the combined probability is `a * m`.
70
+
71
+ ### `or(...setups)`
72
+
73
+ Succeeds when at least one child setup succeeds.
74
+
75
+ ```ts
76
+ const setup = or('factorization', 'quadraticFormula')
77
+ ```
78
+
79
+ For child probabilities `a` and `b`, the combined probability is `1 - (1 - a) * (1 - b)`.
80
+
81
+ Both `and` and `or` require at least one child.
82
+
83
+ ### `repeat(setup, count)`
84
+
85
+ Requires the same setup repeatedly. The count must be a positive integer.
86
+
87
+ ```ts
88
+ const setup = repeat('addition', 3)
89
+ // Equivalent probability model to and('addition', 'addition', 'addition')
90
+ ```
91
+
92
+ ### `pick(setups, count?, weights?)`
93
+
94
+ Selects a subset and requires every selected setup. The count defaults to `1` and may range from `1` through the number of supplied setups.
95
+
96
+ ```ts
97
+ const setup = pick(
98
+ ['addition', 'subtraction', 'multiplication'],
99
+ 2,
100
+ [1, 1, 2],
101
+ )
102
+ ```
103
+
104
+ Weights must be positive finite numbers. A subset's probability is proportional to the product of the weights of its selected items. In the example, subsets containing `multiplication` have twice the weight of the subset containing only `addition` and `subtraction`.
105
+
106
+ When every supplied setup is selected, `pick` is equivalent to `and` and is deterministic if all its children are deterministic.
107
+
108
+ ### `part(setup, probability?)`
109
+
110
+ Includes a setup with the given probability, which defaults to `0.5`. The probability must be between `0` and `1`, inclusive.
111
+
112
+ `part` must be used as a direct child of `and` or `or`, because its meaning depends on its parent:
113
+
114
+ ```ts
115
+ and('addition', part('multiplication', 0.6))
116
+ // 60% require both skills; 40% require only addition.
117
+
118
+ or('addition', part('multiplication', 0.6))
119
+ // Multiplication is offered as an alternative in 60% of cases.
120
+ ```
121
+
122
+ Calling `getPolynomial()` directly on an unparented `part` setup throws an error.
123
+
124
+
125
+ ## Inspecting a setup
126
+
127
+ Every factory returns a `SkillSetup` with the following public methods:
128
+
129
+ - `getSkillList()` returns unique skill identifiers in encounter order.
130
+ - `getSkillSet()` returns the same identifiers as a `Set`.
131
+ - `isDeterministic()` reports whether the required structure contains randomness.
132
+ - `toString()` returns a readable expression using the public factory syntax.
133
+ - `getPolynomial()` returns a sparse `{ terms, variables }` polynomial for calculating the combined success probability. See the [@step-wise/polynomials](https://www.npmjs.com/package/@step-wise/polynomials) package for further polynomial functions.
134
+ - `getPolynomialString()` returns a readable form of the probability polynomial.
135
+ - `serialize()` returns the setup's plain-data representation.
136
+
137
+ For example:
138
+
139
+ ```ts
140
+ const setup = and('addition', repeat('multiplication', 2))
141
+
142
+ setup.getPolynomialString()
143
+ // 'addition*multiplication^2'
144
+
145
+ setup.getPolynomial()
146
+ // {
147
+ // terms: [{ coefficient: 1, exponents: [1, 2] }],
148
+ // variables: ['addition', 'multiplication'],
149
+ // }
150
+ ```
151
+
152
+ Each exponent follows the corresponding entry in `variables`. Only nonzero terms are stored. Consumers that need to evaluate or manipulate the result can use `@step-wise/polynomials`.
153
+
154
+
155
+ ## Serialization
156
+
157
+ Use `serializeSetup` and `deserializeSetup` at storage or network boundaries:
158
+
159
+ ```ts
160
+ import {
161
+ and,
162
+ deserializeSetup,
163
+ repeat,
164
+ serializeSetup,
165
+ } from '@step-wise/skill-setup'
166
+
167
+ const setup = and('addition', repeat('multiplication', 2))
168
+ const stored = serializeSetup(setup)
169
+
170
+ // Store as JSON if desired.
171
+ const json = JSON.stringify(stored)
172
+ const restored = deserializeSetup(JSON.parse(json))
173
+
174
+ restored.toString()
175
+ // 'and("addition", repeat("multiplication", 2))'
176
+ ```
177
+
178
+ Serialized setups use stable type identifiers. Default `pick` and `part` options are omitted to keep the result compact. `deserializeSetup('addition')` is also supported as shorthand for a serialized single skill. Invalid serialized structures throw rather than creating partially valid setups.
179
+
180
+ TypeScript users can import types `SerializedSkillSetup` and `SkillSetupStorageValue` when defining storage interfaces.
181
+
182
+
183
+ ## Factory object
184
+
185
+ All factories are also available through `setupFactories`. This is useful when passing the complete factory collection to another module:
186
+
187
+ ```ts
188
+ import { setupFactories } from '@step-wise/skill-setup'
189
+
190
+ const setup = setupFactories.and('addition', setupFactories.repeat('multiplication', 2))
191
+ ```
@@ -0,0 +1,13 @@
1
+ import { type GenericSerializedSkillSetup, SkillSetup } from './SkillSetup.ts';
2
+ export type SkillItemStorageValue<TChild = GenericSerializedSkillSetup> = {
3
+ skill: TChild;
4
+ };
5
+ export declare function ensureSkillItemStorageValue(value: unknown): SkillItemStorageValue<unknown>;
6
+ export declare abstract class SkillItemSetup<TStorageValue extends SkillItemStorageValue = SkillItemStorageValue> extends SkillSetup<TStorageValue> {
7
+ readonly skill: SkillSetup;
8
+ constructor(skill: SkillSetup);
9
+ protected getSkillItemStorageValue(): SkillItemStorageValue;
10
+ isDeterministic(): boolean;
11
+ getSkillSet(): Set<string>;
12
+ }
13
+ //# sourceMappingURL=SkillItemSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillItemSetup.d.ts","sourceRoot":"","sources":["../../src/abstracts/SkillItemSetup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,2BAA2B,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE9E,MAAM,MAAM,qBAAqB,CAAC,MAAM,GAAG,2BAA2B,IAAI;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAI1F;AAED,8BAAsB,cAAc,CAAC,aAAa,SAAS,qBAAqB,GAAG,qBAAqB,CAAE,SAAQ,UAAU,CAAC,aAAa,CAAC;IAC1I,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAE1B,YAAY,KAAK,EAAE,UAAU,EAG5B;IAED,SAAS,CAAC,wBAAwB,IAAI,qBAAqB,CAE1D;IAEQ,eAAe,IAAI,OAAO,CAElC;IAEQ,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,CAElC;CACD"}
@@ -0,0 +1,24 @@
1
+ import { ensurePlainObject } from '@step-wise/js-utils';
2
+ import { SkillSetup } from './SkillSetup.js';
3
+ export function ensureSkillItemStorageValue(value) {
4
+ const storageValue = ensurePlainObject(value);
5
+ if (!Object.hasOwn(storageValue, 'skill'))
6
+ throw new TypeError(`Invalid skill item storage value: expected a "skill" property.`);
7
+ return { skill: storageValue.skill };
8
+ }
9
+ export class SkillItemSetup extends SkillSetup {
10
+ skill;
11
+ constructor(skill) {
12
+ super();
13
+ this.skill = skill;
14
+ }
15
+ getSkillItemStorageValue() {
16
+ return { skill: this.skill.serialize() };
17
+ }
18
+ isDeterministic() {
19
+ return this.skill.isDeterministic();
20
+ }
21
+ getSkillSet() {
22
+ return this.skill.getSkillSet();
23
+ }
24
+ }
@@ -0,0 +1,14 @@
1
+ import { type GenericSerializedSkillSetup, SkillSetup } from './SkillSetup.ts';
2
+ export type SkillListStorageValue<TChild = GenericSerializedSkillSetup> = {
3
+ skills: readonly TChild[];
4
+ };
5
+ export declare function ensureSkillListStorageValue(value: unknown): SkillListStorageValue<unknown>;
6
+ export declare abstract class SkillListSetup<TStorageValue extends SkillListStorageValue> extends SkillSetup<TStorageValue> {
7
+ readonly skills: readonly SkillSetup[];
8
+ constructor(...skills: SkillSetup[]);
9
+ protected getSkillListStorageValue(): SkillListStorageValue;
10
+ isDeterministic(): boolean;
11
+ toString(): string;
12
+ getSkillSet(): Set<string>;
13
+ }
14
+ //# sourceMappingURL=SkillListSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillListSetup.d.ts","sourceRoot":"","sources":["../../src/abstracts/SkillListSetup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,2BAA2B,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE9E,MAAM,MAAM,qBAAqB,CAAC,MAAM,GAAG,2BAA2B,IAAI;IAAE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAEvG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAG1F;AAED,8BAAsB,cAAc,CAAC,aAAa,SAAS,qBAAqB,CAAE,SAAQ,UAAU,CAAC,aAAa,CAAC;IAClH,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;IAEtC,YAAY,GAAG,MAAM,EAAE,UAAU,EAAE,EAIlC;IAED,SAAS,CAAC,wBAAwB,IAAI,qBAAqB,CAE1D;IAEQ,eAAe,IAAI,OAAO,CAElC;IAEQ,QAAQ,IAAI,MAAM,CAE1B;IAEQ,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,CAElC;CACD"}
@@ -0,0 +1,27 @@
1
+ import { ensureArray, ensurePlainObject, union } from '@step-wise/js-utils';
2
+ import { SkillSetup } from './SkillSetup.js';
3
+ export function ensureSkillListStorageValue(value) {
4
+ const storageValue = ensurePlainObject(value);
5
+ return { skills: ensureArray(storageValue.skills) };
6
+ }
7
+ export class SkillListSetup extends SkillSetup {
8
+ skills;
9
+ constructor(...skills) {
10
+ super();
11
+ if (skills.length === 0)
12
+ throw new Error(`Invalid skills list: expected at least one skill.`);
13
+ this.skills = skills;
14
+ }
15
+ getSkillListStorageValue() {
16
+ return { skills: this.skills.map(skill => skill.serialize()) };
17
+ }
18
+ isDeterministic() {
19
+ return this.skills.every(skill => skill.isDeterministic());
20
+ }
21
+ toString() {
22
+ return `${this.type.toLowerCase()}(${this.skills.map(skill => skill.toString()).join(', ')})`;
23
+ }
24
+ getSkillSet() {
25
+ return union(...this.skills.map(skill => skill.getSkillSet()));
26
+ }
27
+ }
@@ -0,0 +1,17 @@
1
+ import { type Polynomial } from '@step-wise/polynomials';
2
+ export type GenericSerializedSkillSetup<TStorageValue = unknown, TType extends string = string> = {
3
+ type: TType;
4
+ value: TStorageValue;
5
+ };
6
+ export declare abstract class SkillSetup<TStorageValue = unknown> {
7
+ abstract readonly type: string;
8
+ abstract toStorageValue(): TStorageValue;
9
+ serialize(): GenericSerializedSkillSetup<TStorageValue>;
10
+ abstract toString(): string;
11
+ abstract isDeterministic(): boolean;
12
+ abstract getSkillSet(): Set<string>;
13
+ getSkillList(): string[];
14
+ abstract getPolynomial(parent?: SkillSetup): Polynomial;
15
+ getPolynomialString(): string;
16
+ }
17
+ //# sourceMappingURL=SkillSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillSetup.d.ts","sourceRoot":"","sources":["../../src/abstracts/SkillSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAsB,MAAM,wBAAwB,CAAA;AAE5E,MAAM,MAAM,2BAA2B,CAAC,aAAa,GAAG,OAAO,EAAE,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAA;AAEvI,8BAAsB,UAAU,CAAC,aAAa,GAAG,OAAO;IACvD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAE9B,QAAQ,CAAC,cAAc,IAAI,aAAa,CAAA;IAExC,SAAS,IAAI,2BAA2B,CAAC,aAAa,CAAC,CAEtD;IAED,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAA;IAE3B,QAAQ,CAAC,eAAe,IAAI,OAAO,CAAA;IAEnC,QAAQ,CAAC,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;IAEnC,YAAY,IAAI,MAAM,EAAE,CAEvB;IAED,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;IAEvD,mBAAmB,IAAI,MAAM,CAE5B;CACD"}
@@ -0,0 +1,12 @@
1
+ import { polynomialToString } from '@step-wise/polynomials';
2
+ export class SkillSetup {
3
+ serialize() {
4
+ return { type: this.type, value: this.toStorageValue() };
5
+ }
6
+ getSkillList() {
7
+ return [...this.getSkillSet()];
8
+ }
9
+ getPolynomialString() {
10
+ return polynomialToString(this.getPolynomial());
11
+ }
12
+ }
@@ -0,0 +1,4 @@
1
+ export * from './SkillSetup.ts';
2
+ export * from './SkillListSetup.ts';
3
+ export * from './SkillItemSetup.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abstracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './SkillSetup.js';
2
+ export * from './SkillListSetup.js';
3
+ export * from './SkillItemSetup.js';
@@ -0,0 +1,4 @@
1
+ export { SkillSetup } from './abstracts/index.ts';
2
+ export { type SkillId, type SkillSetupLike, type SkillSetupStorageValue, type SerializedSkillSetup, ensureSetup, setupFactories, skill, and, or, repeat, pick, part, } from './setups/index.ts';
3
+ export * from './serialization.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,WAAW,EACX,cAAc,EACd,KAAK,EACL,GAAG,EACH,EAAE,EACF,MAAM,EACN,IAAI,EACJ,IAAI,GACJ,MAAM,mBAAmB,CAAA;AAC1B,cAAc,oBAAoB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { SkillSetup } from './abstracts/index.js';
2
+ export { ensureSetup, setupFactories, skill, and, or, repeat, pick, part, } from './setups/index.js';
3
+ export * from './serialization.js';
@@ -0,0 +1,5 @@
1
+ import { type SkillSetup } from './abstracts/index.ts';
2
+ import { type SerializedSkillSetup } from './setups/index.ts';
3
+ export declare function serializeSetup(setup: SkillSetup): SerializedSkillSetup;
4
+ export declare function deserializeSetup(setup: unknown): SkillSetup;
5
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,KAAK,oBAAoB,EAA4B,MAAM,mBAAmB,CAAA;AAEvF,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,oBAAoB,CAEtE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAe3D"}
@@ -0,0 +1,23 @@
1
+ import { ensurePlainObject } from '@step-wise/js-utils';
2
+ import { setupConstructors, skill } from './setups/index.js';
3
+ export function serializeSetup(setup) {
4
+ return setup.serialize();
5
+ }
6
+ export function deserializeSetup(setup) {
7
+ // Provide short-cut of interpreting strings as skills.
8
+ if (typeof setup === 'string')
9
+ return skill(setup);
10
+ // Check that the set-up is properly typed.
11
+ const serializedSetup = ensurePlainObject(setup);
12
+ const { type, value } = serializedSetup;
13
+ if (typeof type !== 'string')
14
+ throw new TypeError(`Invalid serialized skill setup: expected "type" to be a string, but received "${String(type)}".`);
15
+ if (!Object.hasOwn(serializedSetup, 'value'))
16
+ throw new TypeError(`Invalid serialized skill setup: expected a "value" property.`);
17
+ if (!(type in setupConstructors))
18
+ throw new TypeError(`Invalid skill setup type: received "${type}", but this type was not known.`);
19
+ // Try to set up the respective set-up.
20
+ const Type = setupConstructors[type];
21
+ const fromStorageValue = Type.fromStorageValue;
22
+ return fromStorageValue(value, deserializeSetup);
23
+ }
@@ -0,0 +1,14 @@
1
+ import { type Polynomial } from '@step-wise/polynomials';
2
+ import { type SkillListStorageValue, type GenericSerializedSkillSetup, SkillListSetup, SkillSetup } from '../abstracts/index.ts';
3
+ import { type SkillSetupLike } from './Skill.ts';
4
+ export type AndStorageValue = SkillListStorageValue;
5
+ export type SerializedAnd = GenericSerializedSkillSetup<AndStorageValue, 'And'>;
6
+ export declare class And extends SkillListSetup<AndStorageValue> {
7
+ readonly type = "And";
8
+ constructor(...skills: SkillSetupLike[]);
9
+ toStorageValue(): AndStorageValue;
10
+ static fromStorageValue(storageValue: SkillListStorageValue, deserialize: (setup: unknown) => SkillSetup): And;
11
+ getPolynomial(): Polynomial;
12
+ }
13
+ export declare const and: (...skills: SkillSetupLike[]) => And;
14
+ //# sourceMappingURL=And.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"And.d.ts","sourceRoot":"","sources":["../../src/setups/And.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,wBAAwB,CAAA;AAE7E,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,2BAA2B,EAA+B,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE7J,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,YAAY,CAAA;AAE7D,MAAM,MAAM,eAAe,GAAG,qBAAqB,CAAA;AACnD,MAAM,MAAM,aAAa,GAAG,2BAA2B,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;AAE/E,qBAAa,GAAI,SAAQ,cAAc,CAAC,eAAe,CAAC;IACvD,QAAQ,CAAC,IAAI,SAAQ;IAErB,YAAY,GAAG,MAAM,EAAE,cAAc,EAAE,EAEtC;IAEQ,cAAc,IAAI,eAAe,CAEzC;IAED,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,GAAG,CAE7G;IAEQ,aAAa,IAAI,UAAU,CAEnC;CACD;AAED,eAAO,MAAM,GAAG,cAAe,cAAc,EAAE,KAAG,GAAyB,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { multiplyPolynomials } from '@step-wise/polynomials';
2
+ import { ensureSkillListStorageValue, SkillListSetup } from '../abstracts/index.js';
3
+ import { ensureSetup } from './Skill.js';
4
+ export class And extends SkillListSetup {
5
+ type = 'And';
6
+ constructor(...skills) {
7
+ super(...skills.map(ensureSetup));
8
+ }
9
+ toStorageValue() {
10
+ return super.getSkillListStorageValue();
11
+ }
12
+ static fromStorageValue(storageValue, deserialize) {
13
+ return new And(...ensureSkillListStorageValue(storageValue).skills.map(skill => deserialize(skill)));
14
+ }
15
+ getPolynomial() {
16
+ return multiplyPolynomials(this.skills.map(skill => skill.getPolynomial(this)), this.getSkillList());
17
+ }
18
+ }
19
+ export const and = (...skills) => new And(...skills);
@@ -0,0 +1,14 @@
1
+ import { type Polynomial } from '@step-wise/polynomials';
2
+ import { type SkillListStorageValue, type GenericSerializedSkillSetup, SkillListSetup, SkillSetup } from '../abstracts/index.ts';
3
+ import { type SkillSetupLike } from './Skill.ts';
4
+ export type OrStorageValue = SkillListStorageValue;
5
+ export type SerializedOr = GenericSerializedSkillSetup<OrStorageValue, 'Or'>;
6
+ export declare class Or extends SkillListSetup<OrStorageValue> {
7
+ readonly type = "Or";
8
+ constructor(...skills: SkillSetupLike[]);
9
+ toStorageValue(): OrStorageValue;
10
+ static fromStorageValue(storageValue: SkillListStorageValue, deserialize: (setup: unknown) => SkillSetup): Or;
11
+ getPolynomial(): Polynomial;
12
+ }
13
+ export declare const or: (...skills: SkillSetupLike[]) => Or;
14
+ //# sourceMappingURL=Or.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Or.d.ts","sourceRoot":"","sources":["../../src/setups/Or.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,wBAAwB,CAAA;AAEjG,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,2BAA2B,EAA+B,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE7J,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,YAAY,CAAA;AAE7D,MAAM,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAClD,MAAM,MAAM,YAAY,GAAG,2BAA2B,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AAE5E,qBAAa,EAAG,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrD,QAAQ,CAAC,IAAI,QAAO;IAEpB,YAAY,GAAG,MAAM,EAAE,cAAc,EAAE,EAEtC;IAEQ,cAAc,IAAI,cAAc,CAExC;IAED,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,EAAE,CAE5G;IAEQ,aAAa,IAAI,UAAU,CAEnC;CACD;AAED,eAAO,MAAM,EAAE,cAAe,cAAc,EAAE,KAAG,EAAuB,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { oneMinusPolynomial, multiplyPolynomials } from '@step-wise/polynomials';
2
+ import { ensureSkillListStorageValue, SkillListSetup } from '../abstracts/index.js';
3
+ import { ensureSetup } from './Skill.js';
4
+ export class Or extends SkillListSetup {
5
+ type = 'Or';
6
+ constructor(...skills) {
7
+ super(...skills.map(ensureSetup));
8
+ }
9
+ toStorageValue() {
10
+ return super.getSkillListStorageValue();
11
+ }
12
+ static fromStorageValue(storageValue, deserialize) {
13
+ return new Or(...ensureSkillListStorageValue(storageValue).skills.map(skill => deserialize(skill)));
14
+ }
15
+ getPolynomial() {
16
+ return oneMinusPolynomial(multiplyPolynomials(this.skills.map(skill => oneMinusPolynomial(skill.getPolynomial(this))), this.getSkillList()));
17
+ }
18
+ }
19
+ export const or = (...skills) => new Or(...skills);
@@ -0,0 +1,19 @@
1
+ import { type Polynomial } from '@step-wise/polynomials';
2
+ import { type GenericSerializedSkillSetup, type SkillSetup, type SkillItemStorageValue, SkillItemSetup } from '../abstracts/index.ts';
3
+ import { type SkillSetupLike } from './Skill.ts';
4
+ export type PartStorageValue = SkillItemStorageValue & {
5
+ part?: number;
6
+ };
7
+ export type SerializedPart = GenericSerializedSkillSetup<PartStorageValue, 'Part'>;
8
+ export declare class Part extends SkillItemSetup<PartStorageValue> {
9
+ readonly type = "Part";
10
+ readonly part: number;
11
+ constructor(skill: SkillSetupLike, part?: number);
12
+ toStorageValue(): PartStorageValue;
13
+ static fromStorageValue(storageValue: PartStorageValue, deserialize: (setup: unknown) => SkillSetup): Part;
14
+ toString(): string;
15
+ isDeterministic(): boolean;
16
+ getPolynomial(parent?: SkillSetup): Polynomial;
17
+ }
18
+ export declare const part: (skill: SkillSetupLike, part?: number) => Part;
19
+ //# sourceMappingURL=Part.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Part.d.ts","sourceRoot":"","sources":["../../src/setups/Part.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAuC,MAAM,wBAAwB,CAAA;AAE7F,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,UAAU,EAAE,KAAK,qBAAqB,EAA+B,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAElK,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,YAAY,CAAA;AAI7D,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AACxE,MAAM,MAAM,cAAc,GAAG,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;AAElF,qBAAa,IAAK,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IACzD,QAAQ,CAAC,IAAI,UAAS;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,YAAY,KAAK,EAAE,cAAc,EAAE,IAAI,SAAM,EAI5C;IAEQ,cAAc,IAAI,gBAAgB,CAE1C;IAED,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,IAAI,CAGzG;IAEQ,QAAQ,IAAI,MAAM,CAE1B;IAEQ,eAAe,IAAI,OAAO,CAElC;IAEQ,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAKtD;CACD;AAED,eAAO,MAAM,IAAI,UAAW,cAAc,SAAS,MAAM,KAAG,IAA6B,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { ensureNumber } from '@step-wise/js-utils';
2
+ import { oneMinusPolynomial, scalePolynomial } from '@step-wise/polynomials';
3
+ import { ensureSkillItemStorageValue, SkillItemSetup } from '../abstracts/index.js';
4
+ import { ensureSetup } from './Skill.js';
5
+ import { And } from './And.js';
6
+ import { Or } from './Or.js';
7
+ export class Part extends SkillItemSetup {
8
+ type = 'Part';
9
+ part;
10
+ constructor(skill, part = 0.5) {
11
+ super(ensureSetup(skill));
12
+ this.part = ensureNumber(part, { nonNegative: true });
13
+ if (this.part > 1)
14
+ throw new RangeError(`Invalid skill part: expected a number between 0 and 1, but received "${this.part}".`);
15
+ }
16
+ toStorageValue() {
17
+ return { ...super.getSkillItemStorageValue(), ...(this.part !== 0.5 ? { part: this.part } : {}) };
18
+ }
19
+ static fromStorageValue(storageValue, deserialize) {
20
+ const { skill } = ensureSkillItemStorageValue(storageValue);
21
+ return new Part(deserialize(skill), storageValue.part);
22
+ }
23
+ toString() {
24
+ return `${this.type.toLowerCase()}(${this.skill.toString()}${this.part !== 0.5 ? `, ${this.part}` : ''})`;
25
+ }
26
+ isDeterministic() {
27
+ return this.part === 0 || (this.part === 1 && this.skill.isDeterministic());
28
+ }
29
+ getPolynomial(parent) {
30
+ const expression = this.skill.getPolynomial(this);
31
+ if (parent instanceof And)
32
+ return oneMinusPolynomial(scalePolynomial(oneMinusPolynomial(expression), this.part));
33
+ if (parent instanceof Or)
34
+ return scalePolynomial(expression, this.part);
35
+ throw new Error(`Invalid polynomial request: cannot determine the polynomial of a Part set-up with parent type "${parent?.type ?? 'none'}". An "And" or "Or" parent is required.`);
36
+ }
37
+ }
38
+ export const part = (skill, part) => new Part(skill, part);
@@ -0,0 +1,21 @@
1
+ import { type Polynomial } from '@step-wise/polynomials';
2
+ import { type GenericSerializedSkillSetup, type SkillSetup, type SkillListStorageValue, SkillListSetup } from '../abstracts/index.ts';
3
+ import { type SkillSetupLike } from './Skill.ts';
4
+ export type PickStorageValue = SkillListStorageValue & {
5
+ number?: number;
6
+ weights?: readonly number[];
7
+ };
8
+ export type SerializedPick = GenericSerializedSkillSetup<PickStorageValue, 'Pick'>;
9
+ export declare class Pick extends SkillListSetup<PickStorageValue> {
10
+ readonly type = "Pick";
11
+ readonly number: number;
12
+ readonly weights: readonly number[];
13
+ constructor(skills: readonly SkillSetupLike[], number?: number, weights?: readonly number[]);
14
+ toStorageValue(): PickStorageValue;
15
+ static fromStorageValue(storageValue: PickStorageValue, deserialize: (setup: unknown) => SkillSetup): Pick;
16
+ isDeterministic(): boolean;
17
+ toString(): string;
18
+ getPolynomial(): Polynomial;
19
+ }
20
+ export declare const pick: (skills: readonly SkillSetupLike[], number?: number, weights?: readonly number[]) => Pick;
21
+ //# sourceMappingURL=Pick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pick.d.ts","sourceRoot":"","sources":["../../src/setups/Pick.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAwD,MAAM,wBAAwB,CAAA;AAE9G,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,UAAU,EAAE,KAAK,qBAAqB,EAA+B,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAElK,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,YAAY,CAAA;AAE7D,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AACvG,MAAM,MAAM,cAAc,GAAG,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;AAElF,qBAAa,IAAK,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IACzD,QAAQ,CAAC,IAAI,UAAS;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IAEnC,YAAY,MAAM,EAAE,SAAS,cAAc,EAAE,EAAE,MAAM,SAAI,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,EAQrF;IAEQ,cAAc,IAAI,gBAAgB,CAM1C;IAED,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,IAAI,CAGzG;IAEQ,eAAe,IAAI,OAAO,CAElC;IAEQ,QAAQ,IAAI,MAAM,CAI1B;IAEQ,aAAa,IAAI,UAAU,CAYnC;CACD;AAED,eAAO,MAAM,IAAI,WAAY,SAAS,cAAc,EAAE,WAAW,MAAM,YAAY,SAAS,MAAM,EAAE,KAAG,IAAyC,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { ensureInteger, ensureNumberArray, forEachCombination, product } from '@step-wise/js-utils';
2
+ import { addPolynomials, multiplyPolynomials, scalePolynomial } from '@step-wise/polynomials';
3
+ import { ensureSkillListStorageValue, SkillListSetup } from '../abstracts/index.js';
4
+ import { ensureSetup } from './Skill.js';
5
+ export class Pick extends SkillListSetup {
6
+ type = 'Pick';
7
+ number;
8
+ weights;
9
+ constructor(skills, number = 1, weights) {
10
+ super(...skills.map(ensureSetup));
11
+ this.number = ensureInteger(number, { nonNegative: true, nonZero: true });
12
+ if (this.number > this.skills.length)
13
+ throw new RangeError(`Invalid Pick number: expected at most ${this.skills.length} picked skills, but received "${this.number}".`);
14
+ this.weights = ensureNumberArray(weights ?? this.skills.map(() => 1), { nonNegative: true, nonZero: true });
15
+ if (this.weights.length !== this.skills.length)
16
+ throw new Error(`Invalid Pick weights: expected ${this.skills.length} weights but received ${this.weights.length}.`);
17
+ }
18
+ toStorageValue() {
19
+ return {
20
+ ...super.getSkillListStorageValue(),
21
+ ...(this.number !== 1 ? { number: this.number } : {}),
22
+ ...(!this.weights.every(weight => weight === 1) ? { weights: this.weights } : {}),
23
+ };
24
+ }
25
+ static fromStorageValue(storageValue, deserialize) {
26
+ const { skills } = ensureSkillListStorageValue(storageValue);
27
+ return new Pick(skills.map(skill => deserialize(skill)), storageValue.number, storageValue.weights);
28
+ }
29
+ isDeterministic() {
30
+ return this.number === this.skills.length && super.isDeterministic();
31
+ }
32
+ toString() {
33
+ const showWeights = !this.weights.every(weight => weight === 1);
34
+ const showNumber = this.number !== 1 || showWeights;
35
+ return `${this.type.toLowerCase()}([${this.skills.map(skill => skill.toString()).join(', ')}]${showNumber ? `, ${this.number}` : ''}${showWeights ? `, [${this.weights.join(', ')}]` : ''})`;
36
+ }
37
+ getPolynomial() {
38
+ const skillList = this.getSkillList();
39
+ const expressions = [];
40
+ let sumOfWeights = 0;
41
+ // Walk through all combinations. For each combination, calculate the polynomial and its weight, and then calculate the weighted average.
42
+ forEachCombination(this.skills.length, this.number, (...option) => {
43
+ const weight = product(option.map(index => this.weights[index])); // Use a weight proportional to the product of the individual skill weights.
44
+ sumOfWeights += weight;
45
+ expressions.push(scalePolynomial(multiplyPolynomials(option.map(index => this.skills[index].getPolynomial(this)), skillList), weight));
46
+ });
47
+ return scalePolynomial(addPolynomials(expressions, skillList), 1 / sumOfWeights);
48
+ }
49
+ }
50
+ export const pick = (skills, number, weights) => new Pick(skills, number, weights);
@@ -0,0 +1,18 @@
1
+ import { type Polynomial } from '@step-wise/polynomials';
2
+ import { type GenericSerializedSkillSetup, type SkillItemStorageValue, SkillItemSetup, SkillSetup } from '../abstracts/index.ts';
3
+ import { type SkillSetupLike } from './Skill.ts';
4
+ export type RepeatStorageValue = SkillItemStorageValue & {
5
+ repeat: number;
6
+ };
7
+ export type SerializedRepeat = GenericSerializedSkillSetup<RepeatStorageValue, 'Repeat'>;
8
+ export declare class Repeat extends SkillItemSetup<RepeatStorageValue> {
9
+ readonly type = "Repeat";
10
+ readonly repeat: number;
11
+ constructor(skill: SkillSetupLike, repeat: number);
12
+ toStorageValue(): RepeatStorageValue;
13
+ static fromStorageValue(storageValue: RepeatStorageValue, deserialize: (setup: unknown) => SkillSetup): Repeat;
14
+ toString(): string;
15
+ getPolynomial(): Polynomial;
16
+ }
17
+ export declare const repeat: (skill: SkillSetupLike, repeat: number) => Repeat;
18
+ //# sourceMappingURL=Repeat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Repeat.d.ts","sourceRoot":"","sources":["../../src/setups/Repeat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAA0B,MAAM,wBAAwB,CAAA;AAEhF,OAAO,EAAE,KAAK,2BAA2B,EAAE,KAAK,qBAAqB,EAA+B,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE7J,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,YAAY,CAAA;AAE7D,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAC3E,MAAM,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;AAExF,qBAAa,MAAO,SAAQ,cAAc,CAAC,kBAAkB,CAAC;IAC7D,QAAQ,CAAC,IAAI,YAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,YAAY,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAGhD;IAEQ,cAAc,IAAI,kBAAkB,CAE5C;IAED,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,MAAM,CAG7G;IAEQ,QAAQ,IAAI,MAAM,CAE1B;IAEQ,aAAa,IAAI,UAAU,CAEnC;CACD;AAED,eAAO,MAAM,MAAM,UAAW,cAAc,UAAU,MAAM,KAAG,MAAmC,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { ensureInteger } from '@step-wise/js-utils';
2
+ import { raisePolynomialToPower } from '@step-wise/polynomials';
3
+ import { ensureSkillItemStorageValue, SkillItemSetup } from '../abstracts/index.js';
4
+ import { ensureSetup } from './Skill.js';
5
+ export class Repeat extends SkillItemSetup {
6
+ type = 'Repeat';
7
+ repeat;
8
+ constructor(skill, repeat) {
9
+ super(ensureSetup(skill));
10
+ this.repeat = ensureInteger(repeat, { nonNegative: true, nonZero: true });
11
+ }
12
+ toStorageValue() {
13
+ return { ...super.getSkillItemStorageValue(), repeat: this.repeat };
14
+ }
15
+ static fromStorageValue(storageValue, deserialize) {
16
+ const { skill } = ensureSkillItemStorageValue(storageValue);
17
+ return new Repeat(deserialize(skill), storageValue.repeat);
18
+ }
19
+ toString() {
20
+ return `${this.type.toLowerCase()}(${this.skill.toString()}, ${this.repeat})`;
21
+ }
22
+ getPolynomial() {
23
+ return raisePolynomialToPower(this.skill.getPolynomial(this), this.repeat);
24
+ }
25
+ }
26
+ export const repeat = (skill, repeat) => new Repeat(skill, repeat);
@@ -0,0 +1,20 @@
1
+ import { type Polynomial } from '@step-wise/polynomials';
2
+ import { type GenericSerializedSkillSetup, SkillSetup } from '../abstracts/index.ts';
3
+ export type SkillId = string;
4
+ export type SkillStorageValue = SkillId;
5
+ export type SerializedSkill = GenericSerializedSkillSetup<SkillStorageValue, 'Skill'>;
6
+ export declare class Skill extends SkillSetup<SkillStorageValue> {
7
+ readonly type = "Skill";
8
+ readonly skill: SkillId;
9
+ constructor(skill: SkillStorageValue);
10
+ toStorageValue(): SkillStorageValue;
11
+ static fromStorageValue(storageValue: SkillStorageValue): Skill;
12
+ toString(): string;
13
+ isDeterministic(): boolean;
14
+ getSkillSet(): Set<string>;
15
+ getPolynomial(): Polynomial;
16
+ }
17
+ export declare const skill: (skill: SkillStorageValue) => Skill;
18
+ export type SkillSetupLike = SkillSetup<unknown> | string;
19
+ export declare function ensureSetup(setup: SkillSetupLike): SkillSetup<unknown>;
20
+ //# sourceMappingURL=Skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skill.d.ts","sourceRoot":"","sources":["../../src/setups/Skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,wBAAwB,CAAA;AAE1E,OAAO,EAAE,KAAK,2BAA2B,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAEpF,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAC5B,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAA;AACvC,MAAM,MAAM,eAAe,GAAG,2BAA2B,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;AAErF,qBAAa,KAAM,SAAQ,UAAU,CAAC,iBAAiB,CAAC;IACvD,QAAQ,CAAC,IAAI,WAAU;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IAEvB,YAAY,KAAK,EAAE,iBAAiB,EAKnC;IAEQ,cAAc,IAAI,iBAAiB,CAE3C;IAED,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,iBAAiB,GAAG,KAAK,CAE9D;IAEQ,QAAQ,IAAI,MAAM,CAE1B;IAEQ,eAAe,IAAI,OAAO,CAElC;IAEQ,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,CAElC;IAEQ,aAAa,IAAI,UAAU,CAEnC;CACD;AAED,eAAO,MAAM,KAAK,UAAW,iBAAiB,KAAG,KAAyB,CAAA;AAG1E,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;AACzD,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,CAItE"}
@@ -0,0 +1,40 @@
1
+ import { createPolynomial } from '@step-wise/polynomials';
2
+ import { SkillSetup } from '../abstracts/index.js';
3
+ export class Skill extends SkillSetup {
4
+ type = 'Skill';
5
+ skill;
6
+ constructor(skill) {
7
+ super();
8
+ if (typeof skill !== 'string')
9
+ throw new TypeError(`Invalid skill identifier: expected a string, but received type "${typeof skill}".`);
10
+ if (skill.trim().length === 0)
11
+ throw new RangeError(`Invalid skill identifier: expected a non-empty string.`);
12
+ this.skill = skill;
13
+ }
14
+ toStorageValue() {
15
+ return this.skill;
16
+ }
17
+ static fromStorageValue(storageValue) {
18
+ return new Skill(storageValue);
19
+ }
20
+ toString() {
21
+ return `"${this.skill}"`;
22
+ }
23
+ isDeterministic() {
24
+ return true;
25
+ }
26
+ getSkillSet() {
27
+ return new Set([this.skill]);
28
+ }
29
+ getPolynomial() {
30
+ return createPolynomial([{ coefficient: 1, exponents: [1] }], [this.skill]);
31
+ }
32
+ }
33
+ export const skill = (skill) => new Skill(skill);
34
+ export function ensureSetup(setup) {
35
+ if (setup instanceof SkillSetup)
36
+ return setup;
37
+ if (typeof setup === 'string')
38
+ return new Skill(setup);
39
+ throw new Error(`Invalid skill: expected a skill or skill set-up, but received "${JSON.stringify(setup)}".`);
40
+ }
@@ -0,0 +1,27 @@
1
+ import { type SkillStorageValue, type SerializedSkill, Skill, skill } from './Skill.ts';
2
+ import { type AndStorageValue, type SerializedAnd, And, and } from './And.ts';
3
+ import { type OrStorageValue, type SerializedOr, Or, or } from './Or.ts';
4
+ import { type RepeatStorageValue, type SerializedRepeat, Repeat, repeat } from './Repeat.ts';
5
+ import { type PickStorageValue, type SerializedPick, Pick, pick } from './Pick.ts';
6
+ import { type PartStorageValue, type SerializedPart, Part, part } from './Part.ts';
7
+ export { type SkillId, type SkillSetupLike, ensureSetup } from './Skill.ts';
8
+ export type SkillSetupStorageValue = SkillStorageValue | AndStorageValue | OrStorageValue | RepeatStorageValue | PickStorageValue | PartStorageValue;
9
+ export type SerializedSkillSetup = SerializedSkill | SerializedAnd | SerializedOr | SerializedRepeat | SerializedPick | SerializedPart;
10
+ export { skill, and, or, repeat, pick, part };
11
+ export declare const setupConstructors: {
12
+ Skill: typeof Skill;
13
+ And: typeof And;
14
+ Or: typeof Or;
15
+ Repeat: typeof Repeat;
16
+ Pick: typeof Pick;
17
+ Part: typeof Part;
18
+ };
19
+ export declare const setupFactories: {
20
+ skill: typeof skill;
21
+ and: typeof and;
22
+ or: typeof or;
23
+ repeat: typeof repeat;
24
+ pick: typeof pick;
25
+ part: typeof part;
26
+ };
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/setups/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC7E,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AACxE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC5F,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAClF,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAElF,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE3E,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,eAAe,GAAG,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AACpJ,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAA;AACtI,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAC7C,eAAO,MAAM,iBAAiB;;;;;;;CAAyC,CAAA;AACvE,eAAO,MAAM,cAAc;;;;;;;CAAyC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { Skill, skill } from './Skill.js';
2
+ import { And, and } from './And.js';
3
+ import { Or, or } from './Or.js';
4
+ import { Repeat, repeat } from './Repeat.js';
5
+ import { Pick, pick } from './Pick.js';
6
+ import { Part, part } from './Part.js';
7
+ export { ensureSetup } from './Skill.js';
8
+ export { skill, and, or, repeat, pick, part };
9
+ export const setupConstructors = { Skill, And, Or, Repeat, Pick, Part };
10
+ export const setupFactories = { skill, and, or, repeat, pick, part };
@@ -0,0 +1 @@
1
+ {"version":"7.0.2","root":[79,[124,135]],"packageJsons":["../../../node_modules/@types/node/package.json","../../../node_modules/punycode/package.json","../../../node_modules/undici-types/package.json","../../js-utils/package.json","../../polynomials/package.json","../package.json"],"missingPackageJsons":["../../../node_modules/@types/assert/package.json","../../../node_modules/@types/assert/strict/package.json","../../../node_modules/@types/async_hooks/package.json","../../../node_modules/@types/buffer/package.json","../../../node_modules/@types/child_process/package.json","../../../node_modules/@types/cluster/package.json","../../../node_modules/@types/console/package.json","../../../node_modules/@types/constants/package.json","../../../node_modules/@types/crypto/package.json","../../../node_modules/@types/dgram/package.json","../../../node_modules/@types/diagnostics_channel/package.json","../../../node_modules/@types/dns/package.json","../../../node_modules/@types/dns/promises/package.json","../../../node_modules/@types/domain/package.json","../../../node_modules/@types/events/package.json","../../../node_modules/@types/fs/package.json","../../../node_modules/@types/fs/promises/package.json","../../../node_modules/@types/http/package.json","../../../node_modules/@types/http2/package.json","../../../node_modules/@types/https/package.json","../../../node_modules/@types/inspector/package.json","../../../node_modules/@types/inspector/promises/package.json","../../../node_modules/@types/module/package.json","../../../node_modules/@types/net/package.json","../../../node_modules/@types/node/assert/package.json","../../../node_modules/@types/node/compatibility/package.json","../../../node_modules/@types/node/dns/package.json","../../../node_modules/@types/node/fs/package.json","../../../node_modules/@types/node/readline/package.json","../../../node_modules/@types/node/stream/package.json","../../../node_modules/@types/node/timers/package.json","../../../node_modules/@types/node/web-globals/package.json","../../../node_modules/@types/os/package.json","../../../node_modules/@types/path/package.json","../../../node_modules/@types/path/posix/package.json","../../../node_modules/@types/path/win32/package.json","../../../node_modules/@types/perf_hooks/package.json","../../../node_modules/@types/process/package.json","../../../node_modules/@types/punycode/package.json","../../../node_modules/@types/querystring/package.json","../../../node_modules/@types/readline/package.json","../../../node_modules/@types/readline/promises/package.json","../../../node_modules/@types/repl/package.json","../../../node_modules/@types/stream/consumers/package.json","../../../node_modules/@types/stream/package.json","../../../node_modules/@types/stream/promises/package.json","../../../node_modules/@types/stream/web/package.json","../../../node_modules/@types/string_decoder/package.json","../../../node_modules/@types/timers/package.json","../../../node_modules/@types/timers/promises/package.json","../../../node_modules/@types/tls/package.json","../../../node_modules/@types/trace_events/package.json","../../../node_modules/@types/tty/package.json","../../../node_modules/@types/url/package.json","../../../node_modules/@types/util/package.json","../../../node_modules/@types/util/types/package.json","../../../node_modules/@types/v8/package.json","../../../node_modules/@types/vm/package.json","../../../node_modules/@types/wasi/package.json","../../../node_modules/@types/worker_threads/package.json","../../../node_modules/@types/zlib/package.json","../../../node_modules/assert/package.json","../../../node_modules/assert/strict/package.json","../../../node_modules/async_hooks/package.json","../../../node_modules/buffer/package.json","../../../node_modules/child_process/package.json","../../../node_modules/cluster/package.json","../../../node_modules/console/package.json","../../../node_modules/constants/package.json","../../../node_modules/crypto/package.json","../../../node_modules/dgram/package.json","../../../node_modules/diagnostics_channel/package.json","../../../node_modules/dns/package.json","../../../node_modules/dns/promises/package.json","../../../node_modules/domain/package.json","../../../node_modules/events/package.json","../../../node_modules/fs/package.json","../../../node_modules/fs/promises/package.json","../../../node_modules/http/package.json","../../../node_modules/http2/package.json","../../../node_modules/https/package.json","../../../node_modules/inspector/package.json","../../../node_modules/inspector/promises/package.json","../../../node_modules/module/package.json","../../../node_modules/net/package.json","../../../node_modules/os/package.json","../../../node_modules/path/package.json","../../../node_modules/path/posix/package.json","../../../node_modules/path/win32/package.json","../../../node_modules/perf_hooks/package.json","../../../node_modules/process/package.json","../../../node_modules/querystring/package.json","../../../node_modules/readline/package.json","../../../node_modules/readline/promises/package.json","../../../node_modules/repl/package.json","../../../node_modules/stream/consumers/package.json","../../../node_modules/stream/package.json","../../../node_modules/stream/promises/package.json","../../../node_modules/stream/web/package.json","../../../node_modules/string_decoder/package.json","../../../node_modules/timers/package.json","../../../node_modules/timers/promises/package.json","../../../node_modules/tls/package.json","../../../node_modules/trace_events/package.json","../../../node_modules/tty/package.json","../../../node_modules/url/package.json","../../../node_modules/util/package.json","../../../node_modules/util/types/package.json","../../../node_modules/v8/package.json","../../../node_modules/vm/package.json","../../../node_modules/wasi/package.json","../../../node_modules/worker_threads/package.json","../../../node_modules/zlib/package.json"],"fileNames":["lib.es5.d.ts","lib.es2015.d.ts","lib.es2016.d.ts","lib.es2017.d.ts","lib.es2018.d.ts","lib.es2019.d.ts","lib.es2020.d.ts","lib.es2021.d.ts","lib.es2022.d.ts","lib.es2023.d.ts","lib.dom.d.ts","lib.dom.iterable.d.ts","lib.dom.asynciterable.d.ts","lib.webworker.importscripts.d.ts","lib.scripthost.d.ts","lib.es2015.core.d.ts","lib.es2015.collection.d.ts","lib.es2015.generator.d.ts","lib.es2015.iterable.d.ts","lib.es2015.promise.d.ts","lib.es2015.proxy.d.ts","lib.es2015.reflect.d.ts","lib.es2015.symbol.d.ts","lib.es2015.symbol.wellknown.d.ts","lib.es2016.array.include.d.ts","lib.es2016.intl.d.ts","lib.es2017.arraybuffer.d.ts","lib.es2017.date.d.ts","lib.es2017.object.d.ts","lib.es2017.sharedmemory.d.ts","lib.es2017.string.d.ts","lib.es2017.intl.d.ts","lib.es2017.typedarrays.d.ts","lib.es2018.asyncgenerator.d.ts","lib.es2018.asynciterable.d.ts","lib.es2018.intl.d.ts","lib.es2018.promise.d.ts","lib.es2018.regexp.d.ts","lib.es2019.array.d.ts","lib.es2019.object.d.ts","lib.es2019.string.d.ts","lib.es2019.symbol.d.ts","lib.es2019.intl.d.ts","lib.es2020.bigint.d.ts","lib.es2020.date.d.ts","lib.es2020.promise.d.ts","lib.es2020.sharedmemory.d.ts","lib.es2020.string.d.ts","lib.es2020.symbol.wellknown.d.ts","lib.es2020.intl.d.ts","lib.es2020.number.d.ts","lib.es2021.promise.d.ts","lib.es2021.string.d.ts","lib.es2021.weakref.d.ts","lib.es2021.intl.d.ts","lib.es2022.array.d.ts","lib.es2022.error.d.ts","lib.es2022.intl.d.ts","lib.es2022.object.d.ts","lib.es2022.string.d.ts","lib.es2022.regexp.d.ts","lib.es2023.array.d.ts","lib.es2023.collection.d.ts","lib.es2023.intl.d.ts","lib.es2025.float16.d.ts","lib.esnext.disposable.d.ts","lib.decorators.d.ts","lib.decorators.legacy.d.ts","lib.es2023.full.d.ts","../../polynomials/dist/types.d.ts","../../polynomials/dist/checks.d.ts","../../polynomials/dist/creation.d.ts","../../polynomials/dist/conversion.d.ts","../../polynomials/dist/display.d.ts","../../polynomials/dist/restructuring.d.ts","../../polynomials/dist/comparison.d.ts","../../polynomials/dist/manipulation.d.ts","../../polynomials/dist/index.d.ts","../src/abstracts/skillsetup.ts","../../js-utils/dist/objects/checks.d.ts","../../js-utils/dist/objects/plainnesschecks.d.ts","../../js-utils/dist/objects/comparisons.d.ts","../../js-utils/dist/objects/nesting.d.ts","../../js-utils/dist/objects/creation.d.ts","../../js-utils/dist/objects/manipulation.d.ts","../../js-utils/dist/objects/index.d.ts","../../js-utils/dist/numbers/checks.d.ts","../../js-utils/dist/numbers/comparisons.d.ts","../../js-utils/dist/numbers/limiting.d.ts","../../js-utils/dist/numbers/rounding.d.ts","../../js-utils/dist/numbers/angles.d.ts","../../js-utils/dist/numbers/random.d.ts","../../js-utils/dist/numbers/index.d.ts","../../js-utils/dist/arrays/checks.d.ts","../../js-utils/dist/arrays/comparisons.d.ts","../../js-utils/dist/arrays/reading.d.ts","../../js-utils/dist/arrays/iteration.d.ts","../../js-utils/dist/arrays/finding.d.ts","../../js-utils/dist/arrays/creation.d.ts","../../js-utils/dist/arrays/manipulation.d.ts","../../js-utils/dist/arrays/shaping.d.ts","../../js-utils/dist/arrays/sorting.d.ts","../../js-utils/dist/arrays/random.d.ts","../../js-utils/dist/arrays/multidimensional.d.ts","../../js-utils/dist/arrays/index.d.ts","../../js-utils/dist/strings/checks.d.ts","../../js-utils/dist/strings/search.d.ts","../../js-utils/dist/strings/manipulation.d.ts","../../js-utils/dist/strings/creation.d.ts","../../js-utils/dist/strings/index.d.ts","../../js-utils/dist/functions/fundamentals.d.ts","../../js-utils/dist/functions/repeating.d.ts","../../js-utils/dist/functions/resolving.d.ts","../../js-utils/dist/functions/index.d.ts","../../js-utils/dist/sets/checks.d.ts","../../js-utils/dist/sets/manipulation.d.ts","../../js-utils/dist/sets/index.d.ts","../../js-utils/dist/errors/interpretationerror.d.ts","../../js-utils/dist/errors/index.d.ts","../../js-utils/dist/dates/checks.d.ts","../../js-utils/dist/dates/formatting.d.ts","../../js-utils/dist/dates/index.d.ts","../../js-utils/dist/index.d.ts","../src/abstracts/skilllistsetup.ts","../src/abstracts/skillitemsetup.ts","../src/abstracts/index.ts","../src/setups/skill.ts","../src/setups/and.ts","../src/setups/or.ts","../src/setups/repeat.ts","../src/setups/pick.ts","../src/setups/part.ts","../src/setups/index.ts","../src/serialization.ts","../src/index.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"16934abaab7026ac114da441aabea1a0","affectsGlobalScope":true,"impliedNodeFormat":1},"d4306fb2e47f74835e8674ffac07d76f","e437c5c1302869326c3bb93da85bbbcf","e4324975a566567b21d350615f1fc6ac","333b1b9a2a9ac3b8497dba5c63b5ba50","6cffacd662b6eb5fa7a36aa2ea366bfa","b4c34f9c23304dbef2d23698637ed638","e5cb86a5fc491796ecd1d2dd348d208f","feb6c6fb19cdb246a5d8acb36a6901c7","9443a7f109277ffaa79d893ed2549995",{"version":"aae8996e8b5684814785a42cbbefcd79","affectsGlobalScope":true,"impliedNodeFormat":1},"abad6dd56cc8caf095c165df8124d237","abad6dd56cc8caf095c165df8124d237",{"version":"2a9941db0809c9ad0e8837ed629b1dcc","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d051b93324f36bcc68d152a5ca0988cd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"926204c28cd3d073865348473ae28d2e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f25e42c801b2cb3cf2b39792006a9beb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6344b55f26a4e81d9608777dbfb877dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3c0ed28e53d3695b363e256ec1c023fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4c2761daba7f17141c25baa0821ac5da","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b87656acabd63e69379ff6ffcfe52fc7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"597469522da047a5af5222cc6989f405","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1708ea4d34dc37fadadc63ca01127e80","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"55d97a8c6fbf34a30450a7b1e5f7a298","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0ee05eb59426d33e374226d8dcfa708b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e347c14030993906efcfbb88915b6a05","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b0231263857c9b6a03641acdc9280ceb","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3b15c4a83b598cacb4067676e6f0abed","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b417d97b7934cef63b1889abec0bbfbf","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"09a6cf4032ebba60ce22a501e663f881","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2b056277dd138e8f5650fc04e20eaa8d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e22cc07e3f3cc242ba52fa3f8ea1fc58","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2c45da767a1bfbb220848df1bc4029e4","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b44c3e0fbaf2130cdcf6ac38b120ffa1","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b612fb5cf8e5d964b92063a75207632a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"02705151a5e1551b9162a9ed8ab763f7","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"41025e398be9215d32e4337335da8f0b","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"52684c2b1f353a5538e4f275182a54cd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6dedb6a4f90d1df3a6fbe5693e44886c","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ca3f36fe3562c07e0f0d71c2bebd3f6d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"409974d6129befbb8226ddd1c6558568","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4d9cfde2a1ae1b4925f1f9bc10848e5d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7e1daecc66dd564144e3bb1a0266b5fd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a8e1d9bb35fd0637f2f9fd2b2a54f2ec","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4f168501772a6543182765bfd5f2fbfe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a19c80aad1b2162103496f5ba293a732","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b69afa63cd5d059851c78adb2856ee09","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ae2fc5d954e9b0f5feee3d481b953c27","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1cfd3091a071d8b6feec15277643bafe","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1da2c1f258970fd3cc91184f69e91a9d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a0d87491913d843139e0c993650a3235","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4ef72aa378127e7b7abba915b0110b1e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3ec74c6a7d4463f0254db3a74cf75646","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"84c2bdfa470d075526cce6322d81b0b6","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0b3844c2b8c73e4e1ab91431411cad11","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"4fc71cf4a15b8d99675a31df77f26e07","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d1b49564ddaeca3df5b6dbae925d2242","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6a25be566d60ccfc2d6e8b7bfdeefa83","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8a20e27646985dfd58c57ca6566553dd","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9969f02ad3cdcbf4f709405cda44167f","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9c9be4792a7a4f42c15ae7360bf28779","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8cf777fe00349b71ee9c4b6f3fe7fd19","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"74f96bc192530c9723f572bfff3d3078","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1df91c56b25955c56387426f378173c5","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0219894bfe5042c7e1aa2d22e4a91ed0","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"be41035d7b941482a1e1ae6a5c5dcca5","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f64453cbf9671f28158677fa5c43967a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"33f317af5428801f944a478d2c1e38e5","affectsGlobalScope":true,"impliedNodeFormat":1},"e1c7e28ac89b8a663c388c275b41bf44",{"version":"31d509daa66ce2489b94bcd8746b4b0e","impliedNodeFormat":99},{"version":"abdf9fec62e086e2ee09f12f262ef089","impliedNodeFormat":99},{"version":"ab9864ab545be6c07f2a198e1255c63c","impliedNodeFormat":99},{"version":"7c2ca67b26ccf6464ef97dabe36b4360","impliedNodeFormat":99},{"version":"9deaf87d471d9faea3d94b2705850e54","impliedNodeFormat":99},{"version":"028b0dfbc78670a97d236aaaa4f33159","impliedNodeFormat":99},{"version":"ccd4e3a245e67caa589d93e789d0a2a6","impliedNodeFormat":99},{"version":"096250c296e3ca12b3dae43d6a6291e4","impliedNodeFormat":99},{"version":"ea50a96a56b8f4d68b7196ccf21064e7","impliedNodeFormat":99},{"version":"e71bb5b4d2c2b47b543e614781efb4d8","signature":"653ca0409bab24a744a4873f72b34bc2","impliedNodeFormat":99},{"version":"0a5f9ea1a2907d0c3acce959f667e7d6","impliedNodeFormat":99},{"version":"62064d4505a357a7b3bd5fc002f01a6c","impliedNodeFormat":99},{"version":"b261d377ba6cab61b65229f8926d6c96","impliedNodeFormat":99},{"version":"5192a8f4e703e7fde6730938025f5623","impliedNodeFormat":99},{"version":"be9bcaaed12642dcb4f4b544382c0358","impliedNodeFormat":99},{"version":"21ccea272ffdebf648e4836834ea03f0","impliedNodeFormat":99},{"version":"d270959207f8e0d77bc290cb9b9fd246","impliedNodeFormat":99},{"version":"0adefc42b494adacd96ce55e2f64f9da","impliedNodeFormat":99},{"version":"17e818460750c7024b6b3d9ef9d489ca","impliedNodeFormat":99},{"version":"4c488904ad7ff9227d0d8f3704a586f6","impliedNodeFormat":99},{"version":"af0629723a39c856ba0958eb355a5cbe","impliedNodeFormat":99},{"version":"81a34d18a0ae9698642df2775695856d","impliedNodeFormat":99},{"version":"de24a9130664ba61652244cd2a232aed","impliedNodeFormat":99},{"version":"22b5d13c1a4f6516b6d7983939a8afc8","impliedNodeFormat":99},{"version":"72eb493e0bdad7f4ce302f0dbcce2641","impliedNodeFormat":99},{"version":"8ea7ff3dda12c32e077979de0e96715a","impliedNodeFormat":99},{"version":"a72446394410a3b03a7944e1780db6d3","impliedNodeFormat":99},{"version":"ded14b0e81fbadee602d95eba42ff17f","impliedNodeFormat":99},{"version":"ecb00340e935f501e79ab8d899bc370e","impliedNodeFormat":99},{"version":"a087d7ff39aa2c3d8cc870d8f05110e3","impliedNodeFormat":99},{"version":"f1d1cd98c334c216129f02b5f2adf9ee","impliedNodeFormat":99},{"version":"ac9a7aeb0ced50c8f83b661dd3d07a81","impliedNodeFormat":99},{"version":"089d4dd21214ba138c00815377853c5a","impliedNodeFormat":99},{"version":"2e346c22cde3aa31556967609b18c3f1","impliedNodeFormat":99},{"version":"0c0bbfc7dc00995d89bd217b45988ebb","impliedNodeFormat":99},{"version":"3ce013a7452ce40a72df47bd8ec12c0d","impliedNodeFormat":99},{"version":"b96e5eb97d6ed420b3367ca1888799df","impliedNodeFormat":99},{"version":"fa30278ec533c6d335d9aa86c30a8e8c","impliedNodeFormat":99},{"version":"89eac0e3c015c350fe1ebac681a1a743","impliedNodeFormat":99},{"version":"34eeab91b34ead376cdf527ad00a7ca5","impliedNodeFormat":99},{"version":"c3dddbbb572f9063bc1dc3fc4a92eaf2","impliedNodeFormat":99},{"version":"78f92c2ed83abd1fad7a4bd2d60b303e","impliedNodeFormat":99},{"version":"ae7cbf0166aad0aa133e9822dc26111d","impliedNodeFormat":99},{"version":"2458cb653e64298b96bc887a530c517a","impliedNodeFormat":99},{"version":"8cdcb64a3be9d482f7122864d95a9397","impliedNodeFormat":99},{"version":"cca1fe32626ac20ce59f0cb719c8e76a","impliedNodeFormat":99},{"version":"a9132f160817b236f8ed6177f83d83f0","impliedNodeFormat":99},{"version":"c5bcd18cf7ef8e12a0b5622e135b7dd5","impliedNodeFormat":99},{"version":"e2cfa86440881bab6e1c64d446adc5e3","impliedNodeFormat":99},{"version":"1073ad741b156bbaa728b8ccc8445788","impliedNodeFormat":99},{"version":"4c8efa49ef555631b0239d6431361d61","impliedNodeFormat":99},{"version":"ab880af2d4e78f1be40ab8b6672342c4","impliedNodeFormat":99},{"version":"dd03d213f167f308786e240f22f88383","impliedNodeFormat":99},{"version":"7ae7b3c7d629106dbc4d3d9995cd61de","impliedNodeFormat":99},{"version":"7a123b3c114e681628fb8407d5783959","signature":"e88cc2b3aed444e18e063fe6c6dc1524","impliedNodeFormat":99},{"version":"520c4306ac77203cbc4de4f8cc04b26c","signature":"6cdac41d5942971cd07346655f0fa3fc","impliedNodeFormat":99},{"version":"ab2222a73727732012bed5a1131007ec","signature":"2be0ac78eaf7d887a27f776d8354e205","impliedNodeFormat":99},{"version":"839134a1cb2c0f9d6f0e3d699797d98b","signature":"7ec176f3241cc23fe2230ca13dd8ca42","impliedNodeFormat":99},{"version":"1016f854c3668c2633c0abf5db3178aa","signature":"138e1cfe6459c2b853221bcd2fd96d40","impliedNodeFormat":99},{"version":"12f6a1abcfbe3d570e6b8008f2ea1208","signature":"11c6d79e9612197b52da44a3dae519dc","impliedNodeFormat":99},{"version":"a323d0dd5d0d2851e97ebaf48c327b98","signature":"c1689d3331f67bb2fceb26e0a96a3acf","impliedNodeFormat":99},{"version":"dac2a21ea0dc1634044384dd276bfb3e","signature":"b1e04a8880743c7545ae942cbad9764f","impliedNodeFormat":99},{"version":"08011818cdf7a6713701ee4b90c09bf3","signature":"b4718ee924bf1c8860c6511203f2e1d5","impliedNodeFormat":99},{"version":"32508afa76a1d340228a9f279d473d0d","signature":"5fff58c838a68070e8f0d8156ddad649","impliedNodeFormat":99},{"version":"5f93329fd42c1644e21f820cca27d7d3","signature":"51b2c030552487410f55538f8c6f08e1","impliedNodeFormat":99},{"version":"378d86c9bd9b80b55ca1345092d844c7","signature":"ff6df1e407220ca167ea33abc4cc38db","impliedNodeFormat":99},{"version":"2514e9a2749c0fc18d2f478e9e1e641e","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6ae4c332ecb24e76c1e47c0e21d4663d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"69ee0752d1e70c56ca160360425752a9","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bf33440030f0a0fae7d1efd6c293a8d2","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9af0a7e3ef1c42cd066b9f8d365cc1ba","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7b772cebc7136c34fc77954aef70519d","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"9eca652586205dc5b07f9ba57b1c8500","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ec5f75939754ce94652189ec7d0d3058","affectsGlobalScope":true,"impliedNodeFormat":1},"49133c0dfbc32ab95668c3443dea49e5","85c2cf74d24d4069fac4686501a2d7e3","9f970a4ba4bb3ed6326d46b3ddab3f63","f444b82bb192c8ecc7c9a06cba5c1fba","75de66fc4824402123c0d694ccc0a085","db51f206bae5021bd84c7079251e08e9","fcd1a513c1e5802916fa602e8b8e64bc","aedc93367cdc148d7dd56ef6fd5ef308","8e2bc11d0328ba95e490a741c44a215d","d63481078bffe02fbaf6694a35815dc7","705645fe223430c696f47b708d592ca8","28d57c837c94adb42add03d499793cab","8c01a9bbae8449be21b3e018d59a74ac","44d3b7d58481743f4726cf411e667164","679024f8e9f58a112f4badf119c4d612","74d351e4ed233e82c6d74c444c1a6b86","94d8e37d28e92494f484dd9afe8f043c","79db245997e9261ae21e5f3d93e3493b","c3659054228b00c4e2a22d9ebea8b4f0","d7e5f7a0f1f883f28458f684106e7643","c2364011a80b6a9e3cc0e77895bad577","38da5c670190f4a35cbc204ca6c616bf","d95cc0eb29beed58f5ce72db21398f53","ecd53256b1ec7379c73316eaf392a69c","db5a9211b779628398011a5b8f5b8b5d","69c7bb9c3befe9ae37eed0e6a6310fee","1cba93fafccb7b2655f0e75229185e83","094ecadae30f65a82b77343dde77a666","f75df12d75dd783b03a0329b95abdb25","b438b08b2f0ed94a95a75c8990d9021b","f2becd2589591db92ab14e803eb8bdd5","8dec66ce34e6fe771e58a92b7068edc0","30f12c2660896a33bd3c3a126392c80a","0468c0ccd0ec7770b76481b165564d62","188234d616a4f50ed9b14c8f84a39f33","4c116bcf0a47ea8fbf4072f380925fa7","22111ccb71c0e95ff0796144b40eed2b","add85ec26ba695fc99c698dbec065f8c","5bfde23f96fc502b5413d772c35e1abf","b744265d8ad12b7d4d5c5dc35d18d44e","eff32168b8348b822afeed9cbf61afa7","acaa6ef6fcd5ba662929d6036121a616",{"version":"dd1cf1cc3aa21cd78b4869a44d98c6d9","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"292c9398a407b33b1d9c9812b673387a","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"45df94b3c51b898624bacc2bcd6d9eb2","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7d352f71d1b1bcc12c79dd0e4597537c","affectsGlobalScope":true,"impliedNodeFormat":1},"db11b80743ed5356b81d763a708788e6","39078ea063fcaf72bd3cca7e0d13d017","f81aa09811fa65ac6f354ab0018d3c38",{"version":"282318b178d190157a4deacb14f3040a","affectsGlobalScope":true,"impliedNodeFormat":1},"aafe512c4216100fd65028f9b2afce83","54c5c3dcfdb5f7cf5fbbccfff6ead3fa",{"version":"dc14f078230582a2f8fb2138bfcf4f85","affectsGlobalScope":true,"impliedNodeFormat":1},"b2b472cd0bf0f8d5f022e00ca1c401f4","370d966b810b687a9e58851208cb3d4c","39b3089f3df8d14e0f2ddac0479872d9","cc7a57e86f908c313649aea8d90377e1","5c271f10d8a9b9a1206bc82a4fe5b84d","fbe31979333ec391d8b59e8f42236e8e","6751c8c175fac6bbe7b935582cdfdca7",{"version":"a3f111d2a29b6cdd04fc4b41aa560c86","affectsGlobalScope":true,"impliedNodeFormat":1},"5f4ac576bcdc670a8489c881b23a2b17","a500e7362abeae2d2f1fefea525dc869","02a1ccf1ef65bfbf65865ac4ce346974","d589d01c82f6793f20d2f5c838462e3d","dbe700f7f1fa52fd220c7ee2c6617ebc","579675a2c3b0f8c532a82ad9cbd5d384","b2e8f93606aeb2dee2a4cc9272c56973",{"version":"a8e5d3e42303570b1114b6cd9ef9f38a","affectsGlobalScope":true,"impliedNodeFormat":1},"0003c8459d069181cc4856724fcf2832","c9053dbbe4fa2853f2d3f73b9a2fee81","4e458316a6083cbd2bba2fd29f674dd5",{"version":"3cccee1f2c106192d18ac4e08119f872","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"057189402e597cd50262b082723f21ff","affectsGlobalScope":true,"impliedNodeFormat":1},"6b26581aa2587701d570206a0db8c9ee","88a29e2aac8082c0910733950159e1ca","10282f14d9c2a5cbf3bcf2b1c8cebeaf","0f80958d77cd6301b43c1d7904e3e4bc","3bdc645524ab0d2f6795d3a008833bd7","deb50b47eb75a5566532a763fa1324fa","6e61cd09c2e15845909de3ed59a00b37","3e4ffe5f2733e0589b2612bd86f6cec3","c8206d568b54e5ea06131963eecd576a","15878f4f50c2e562c0768eb735c2aed5",{"version":"cb8f7733bee3d973c152a75fad9f6da6","affectsGlobalScope":true,"impliedNodeFormat":1},"dd404118e8bd70aff746f7d31e46270b","a0fa4618173795c74b488178ea77f951",{"version":"6b8649a280031d9e86955db721cfad87","affectsGlobalScope":true,"impliedNodeFormat":1},"4bc8f13c472858fb74f77388c0c5d885","75ab229142dad0ca2ff14d02d52f11f9","c72d2516d1e8910caca33c4dff75fcd4","f0231f36cb7117fbe9271ff19ef0f5f4",{"version":"8a642eed2a45ac7028479b6089a04842","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e6ddb6b86dc5d86e75ba797d5324346","affectsGlobalScope":true,"impliedNodeFormat":1},"701aef085585b152042aa216b06bb4b8","e9bc5b1de50e48fa9857b64091673883","9268959cff1006c82e6abbd73824db97",{"version":"8f1c048bd5761910f5ea340fe4d792cd","affectsGlobalScope":true,"impliedNodeFormat":1},"6b1f3649b0eabeaca20c778fcc5f270c","eb567c7b5824aab578f75bbccf9f4b05"],"fileIdsList":[[138,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,185,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[136,137,138,139,140,141,142,143,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,241,242],[138,185,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,185,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[138,150,153,156,157,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,153,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,153,157,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,147,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,151,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,149,150,153,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243],[138,147,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243],[138,149,153,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,144,145,146,148,152,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,153,162,170,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,145,151,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,153,179,180,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,145,148,153,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243],[138,144,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,147,148,149,151,152,153,154,155,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,180,181,182,183,184,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,153,172,175,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,153,162,163,164,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,151,153,163,165,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,152,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,145,147,153,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,153,157,163,165,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,157,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,151,153,156,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,145,149,153,162,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,153,172,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,165,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[138,147,153,179,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243],[93,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[94,95,96,97,98,99,100,101,102,103,104,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[86,96,98,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[98,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[120,121,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[118,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[111,112,113,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[105,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[86,93,105,110,114,117,119,122,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[87,88,89,90,91,92,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[80,81,82,83,84,85,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[115,116,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[106,107,108,109,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[70,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[70,71,72,73,74,75,76,77,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[79,124,125,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[79,123,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[78,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[126,133,134,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[123,126,133,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[78,126,127,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[127,128,129,130,131,132,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[78,123,126,127,128,129,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[78,123,126,127,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[78,126,138,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242]],"options":{"composite":true,"declaration":true,"declarationMap":true,"module":199,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"../src","skipLibCheck":true,"strict":true,"target":10,"tsBuildInfoFile":"./tsconfig.tsbuildinfo","esModuleInterop":true},"referencedMap":[[190,1],[191,2],[192,3],[138,4],[193,5],[194,6],[195,7],[136,8],[196,9],[197,10],[198,11],[199,12],[200,13],[201,14],[202,15],[203,16],[204,17],[205,18],[206,19],[139,8],[137,8],[207,20],[208,21],[209,22],[243,23],[210,24],[211,25],[212,26],[213,27],[214,28],[215,29],[216,30],[217,31],[218,32],[219,33],[220,34],[221,35],[222,36],[223,37],[224,38],[225,39],[227,40],[226,41],[228,42],[229,43],[230,44],[231,45],[232,46],[233,47],[234,48],[235,49],[236,50],[237,51],[238,52],[239,53],[240,54],[140,8],[141,8],[142,8],[143,8],[186,55],[187,8],[188,8],[189,8],[241,56],[242,57],[67,8],[68,8],[13,8],[11,8],[12,8],[17,8],[16,8],[2,8],[18,8],[19,8],[20,8],[21,8],[22,8],[23,8],[24,8],[25,8],[3,8],[26,8],[27,8],[4,8],[28,8],[32,8],[29,8],[30,8],[31,8],[33,8],[34,8],[35,8],[5,8],[36,8],[37,8],[38,8],[39,8],[6,8],[43,8],[40,8],[41,8],[42,8],[44,8],[7,8],[45,8],[50,8],[51,8],[46,8],[47,8],[48,8],[49,8],[8,8],[55,8],[52,8],[53,8],[54,8],[56,8],[9,8],[57,8],[58,8],[59,8],[61,8],[60,8],[62,8],[63,8],[10,8],[69,8],[64,8],[65,8],[1,8],[66,8],[15,8],[14,8],[162,58],[174,59],[159,60],[175,8],[184,61],[150,62],[151,63],[149,8],[183,64],[178,65],[182,66],[153,67],[171,68],[152,69],[181,70],[147,71],[148,65],[154,59],[155,8],[161,66],[158,59],[145,72],[185,73],[176,74],[165,75],[164,59],[166,76],[169,77],[163,78],[167,79],[179,64],[156,80],[157,81],[170,82],[146,8],[173,83],[172,59],[160,81],[168,84],[177,8],[144,8],[180,85],[94,86],[95,8],[99,8],[98,8],[105,87],[97,8],[100,8],[104,88],[103,8],[96,8],[101,89],[102,8],[120,8],[121,8],[122,90],[119,91],[118,8],[111,8],[114,92],[112,93],[113,8],[123,94],[91,8],[87,8],[88,8],[93,95],[89,8],[92,8],[90,8],[80,8],[82,8],[84,8],[86,96],[85,8],[83,8],[81,8],[115,8],[117,97],[116,8],[106,8],[109,8],[110,98],[108,8],[107,8],[71,99],[76,99],[73,99],[72,99],[74,99],[78,100],[77,99],[75,99],[70,8],[126,101],[125,102],[124,102],[79,103],[135,104],[134,105],[128,106],[133,107],[129,106],[132,108],[131,109],[130,109],[127,110]],"latestChangedDtsFile":"./index.d.ts"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@step-wise/skill-setup",
3
+ "version": "0.1.0",
4
+ "description": "Describe and combine the skills required to complete educational exercises.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/HildoBijl/stepwise.git",
9
+ "directory": "packages/skill-setup"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/HildoBijl/stepwise/issues"
13
+ },
14
+ "homepage": "https://github.com/HildoBijl/stepwise/tree/main/packages/skill-setup#readme",
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "engines": {
19
+ "node": ">=24.12.0"
20
+ },
21
+ "type": "module",
22
+ "main": "./dist/index.js",
23
+ "types": "./dist/index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.js"
28
+ }
29
+ },
30
+ "files": [
31
+ "dist",
32
+ "README.md",
33
+ "LICENSE"
34
+ ],
35
+ "scripts": {
36
+ "build": "tsc -b tsconfig.build.json",
37
+ "watch": "tsc -b tsconfig.build.json --watch",
38
+ "test": "vitest run",
39
+ "test:watch": "vitest"
40
+ },
41
+ "dependencies": {
42
+ "@step-wise/polynomials": "^0.1.0",
43
+ "@step-wise/js-utils": "^0.1.0"
44
+ },
45
+ "devDependencies": {
46
+ "vitest": "^5.0.0"
47
+ }
48
+ }